package com.jiayue.passback.util;

import cn.hutool.json.JSONObject;

/**
 * 返回json结果记录
 *
 * @author zcl
 * @version 1.0
 * @since 2023/3/28 16:22
 */

public class JsonResultUtil {

    /** 状态码 */
    public static final String CODE_TAG = "code";

    /** 返回内容 */
    public static final String MSG_TAG = "msg";

    /** 数据对象 */
    public static final String DATA_TAG = "data";

    /** 数据对象 */
    public static final String DESC_TAG = "desc";

    /**
     * 状态类型
     */
    public enum Type
    {
        /** 成功 */
        success("1","success"),
        /** 忽略 */
        ignore("666","ignore"),
        /** 警告 */
        warn("301","warn"),
        /** 失败 */
        failure("0","failure"),
        /** 错误 */
        error("-1","error");

        private final String value;
        private final String msg;

        Type(String value , String msg)
        {
            this.value = value;
            this.msg = msg;
        }

        public String value()
        {
            return this.value;
        }

        public String msg()
        {
            return this.msg;
        }
    }

//    /**
//     * 存入code和msg
//     *
//     * @param type 状态类型
//     */
//    public static JSONObject jsonResult(Type type)
//    {
//        JSONObject result = new JSONObject();
//        result.set(CODE_TAG,type.value);
//        result.set(MSG_TAG,type.msg);
//        return result;
//    }

    /**
     * 存入code、data
     *
     * @param type 状态类型
     * @param data 数据对象
     */
    public static JSONObject jsonResult(Type type, Object data)
    {
        JSONObject result = new JSONObject();
        result.set(CODE_TAG, type.value);
        result.set(MSG_TAG, type.msg);
        if (data != null) {
            result.set(DATA_TAG, data);
        }
        return result;
    }

    /**
     * 获取带描述的结果
     * @param type
     * @param desc
     * @return
     */
    public static JSONObject jsonResultsDesc(Type type, String desc)
    {
        JSONObject result = new JSONObject();
        result.set(CODE_TAG, type.value);
        result.set(MSG_TAG, type.msg);
        result.set(DESC_TAG, desc);
        return result;
    }

    /**
     * 返回成功消息
     *
     * @return 成功消息
     */
    public static JSONObject success()
    {
        return success(null);
    }

    /**
     * 返回成功数据
     *
     * @return 成功消息
     */
    public static JSONObject success(Object data)
    {
        return jsonResult(Type.success, data);
    }

    /**
     * 返回警告消息
     *
     * @return 警告消息
     */
    public static JSONObject warn()
    {
        return warn(null);
    }

    /**
     * 返回警告消息
     *
     * @param data 数据对象
     * @return 警告消息
     */
    public static JSONObject warn(Object data)
    {
        return jsonResult(Type.warn, data);
    }

    /**
     * 返回错误消息
     *
     * @return
     */
    public static JSONObject error()
    {
        return error(null);
    }

    /**
     * 返回错误消息
     *
     * @param data 数据对象
     * @return 警告消息
     */
    public static JSONObject error(Object data)
    {
        return jsonResult(Type.error,data);
    }

    /**
     * 返回错误消息
     *
     * @return
     */
    public static JSONObject failure()
    {
        return failure(null);
    }

    /**
     * 返回错误消息
     *
     * @param data 数据对象
     * @return 警告消息
     */
    public static JSONObject failure(Object data)
    {
        return jsonResult(Type.failure,data);
    }

    /**
     * 返回错误信息内容
     *
     * @return
     */
    public static JSONObject failureDesc(String desc)
    {
        return jsonResultsDesc(Type.failure,desc);
    }
}
