/**
 * 结果
 */

import extend from './extend.js';
import ResultData from './resultData.js';

/**
 * 结果类
 */
class result {
    /**
     * 获取结果数据
     * @param {object} data - 结果对象数据
     * @param {boolean} data.success 成功标记
     * @param {string} data.message 消息
     * @param {number} data.statusCode 状态码
     * @param {any} data.data 数据
     * @returns {ResultData} 结果数据类
     */
    get(data) {
        let errMsg = data.errMsg;
        let res = new ResultData({
            message: '',
            statusCode: data.statusCode
        });
        if (extend.isNull(data)) {
            res.success = false;
            res.message = '不是对象！';
        } else if (extend.isBool(data.success)) {
            if (data.success) {
                res.success = data.success;
                if (extend.isNull(data.data)) {
                    res.success = false;
                    res.message = '没有数据！';
                } else {
                    res.success = true;
                    res.data = data.data;
                }
            } else {
                res.success = false;
                res.message = data.message || '';
            }
        } else if (extend.isNull(data.data)) {
            res.success = false;
            res.message = '没有数据！';
        } else {
            if (extend.isBool(data.data.success)) {
                res.success = data.data.success;
            } else if (extend.isBool(data.data.Success)) {
                res.success = data.data.Success;
            } else if (extend.isNumber(data.data.code)) {
                res.success = data.data.code === 200;
            } else if (data.statusCode === 200) {
                res.success = true;
            } else {
                res.success = false;
            }

            if (res.success) {
                if (!extend.isNull(data.data.Result)) {
                    res.data = data.data.Result;
                } else if (!extend.isNull(data.data.Data)) {
                    res.data = data.data.Data;
                } else if (!extend.isNull(data.data.data)) {
                    res.data = data.data.data;
                } else {
                    res.data = data.data;
                }
            } else {
                if (extend.isString(data.data.Message)) {
                    res.message = data.data.Message;
                } else if (extend.isString(data.data.message)) {
                    res.message = data.data.message;
                } else if (extend.isString(data.data.msg)) {
                    res.message = data.data.msg;
                } else if (extend.isString(data.data.errMsg)) {
                    res.message = data.data.errMsg;
                }
                if (extend.isEmptyString(res.message)) {
                    res.message = errMsg;
                }
            }
        }
        return res;
    }
}

/**
 * 结果类
 */
export default new result();