package com.ozs.da.constant;

import com.ozs.da.entity.ReturnData;

import java.util.HashMap;

/**
 * @author 许明
 * @version 1.0.0 创建于 2019/3/5
 **/
public final class StatusCode {

    /**
     * 请求成功
     */
    public static final String SUCCESS = "1";
    /**
     * 请求失败
     */
    public static final String FAILURE = "-1";


    ///////////////////////////////////////获取呼叫的录音状态码//////////////////////////////////////////
    /*
     0    录音地址尚未生成，查询不到                 ------>      100000
    -1    传入参数不合法                           ------>      100001
    -2    错误的企业ID                             ------>      100002
    -3    错误的坐席工号                           ------>      100003
    -4    错误的坐席密码                           ------>      100004
    -5    没有查到适合条件的记录                    ------>      100005
    -7    企业尚未配置RecordFTPServer配置项        ------>      100007
    -8    查询录音文件地址异常                     ------>      100008
     */
    /**
     * 录音地址尚未生成，查询不到
     */
    public static final String AUDIO_ADRESS_NOT_EXIST = "100000";
    /**
     * 传入参数不合法
     */
    public static final String AUDIO_PARAMS_ERROR = "100001";
    /**
     * 错误的企业ID
     */
    public static final String AUDIO_ENTID_ERROR = "100002";
    /**
     * 错误的坐席工号
     */
    public static final String AUDIO_AGENTID_ERROR = "100003";
    /**
     * 错误的坐席密码
     */
    public static final String AUDIO_PASSWD_ERROR = "100004";
    /**
     * 没有查到适合条件的记录
     */
    public static final String AUDIO_NO_DATA = "100005";
    /**
     * 企业尚未配置RecordFTPServer配置项
     */
    public static final String AUDIO_NO_FTP_CONFIG = "100007";
    /**
     * 查询录音文件地址异常
     */
    public static final String AUDIO_ADDRESS_ERROR = "100008";

    /**
     * 还未生成话单
     */
    public static final String BILL_NOT_EXIST = "100009";


    /*
     * 大有外呼平台权限相关的 100101～100121
     */

    /**
     * 权限不允许
     */
    public static final String NO_AUTH = "100101";
    /**
     * 令牌异常
     */
    public static final String TOKEN_ERROR = "100102";
    /**
     * 令牌配置异常
     */
    public static final String TOKEN_EXPIRE_TIME_NULL = "100103";
    /**
     * 令牌超时
     */
    public static final String TOKEN_EXPIRE_TIMEOUT = "100104";
    /**
     * 令牌被篡改
     */
    public static final String TOKEN_ALTERED = "100105";

    /*
     * 校验错误码 100200～100400
     */
    /**
     * 用户名、密码或企业编号错误.
     */
    public static final String USER_PASSWD_ENTNO_ERROR = "100200";
    /**
     * 用户不存在
     */
    public static final String USER_NOT_EXIST = "100201";
    /**
     * 用户已登录
     */
    public static final String USER_ONLINE = "100207";
    /**
     * 用户所属企业失效
     */
    public static final String USER_ENT_CLOSE = "100208";


    /**
     * 获取编码信息错误
     */
    public static final String GET_CODE_ERROR = "100202";
    /**
     * 获取任务详情错误
     */
    public static final String GET_TASK_DETAIL_ERROR = "100203";

    /**
     * 登录信息异常
     */
    public static final String USER_INFO_ERROR = "100204";
    /**
     * 请求参数错误
     */
    public static final String PARAMS_ERROR = "100205";
    /**
     * 操作失败，分配的流水号数大于可分配的流水号
     */
    public static final String FLOWNO_OVERFLOW_ERROR = "100206";
    /**
     * 操作失败，分配的流水号数大于可分配的流水号
     */
    public static final String NOT_SORT = "100250";


    /**
     * 企业id已存在
     */
    public static final String ENTERPRISE_NO_EXIST = "100251";
    /**
     * 部门编号已存在
     */
    public static final String DEPT_NO_EXIST = "100252";
    /**
     * 用户已存在
     */
    public static final String USER_EXIST = "100253";
    /**
     * 部门修改冲突
     */
    public static final String DEPT_EDIT_COMFLICT = "100254";

    /**
     * 华云科技认证失败
     */
    public static final String HUA_YUN_AUTH_FAILURE = "100255";
    /**
     * 坐席信息错误（华云登录信息为空）
     */
    public static final String HUA_YUN_LOGIN_INFO_IS_NULL = "100256";

    /**
     * 流水号错误
     * （华云md5加密手机号没有对应的真实手机号）
     */
    public static final String HUA_YUN_FLOWNO_ERROR = "100257";


    /**
     *
     */
    private static final HashMap<String, String> codeMsg = new HashMap<String, String>() {
        {
            put(SUCCESS, "请求成功.");
            put(FAILURE, "请求失败.");

            //获取呼叫的录音状态码
            put(AUDIO_ADRESS_NOT_EXIST, "录音地址尚未生成，查询不到.");
            put(AUDIO_PARAMS_ERROR, "传入参数不合法.");
            put(AUDIO_ENTID_ERROR, "错误的企业ID.");
            put(AUDIO_AGENTID_ERROR, "错误的坐席工号.");
            put(AUDIO_PASSWD_ERROR, "错误的坐席密码.");
            put(AUDIO_NO_DATA, "没有查到适合条件的记录.");
            put(AUDIO_NO_FTP_CONFIG, "企业尚未配置RecordFTPServer配置项.");
            put(AUDIO_ADDRESS_ERROR, "查询录音文件地址异常.");
            /**
             * 话单
             */
            put(BILL_NOT_EXIST, "还未生成话单.");
            /**
             * 权限系统状态码
             */
            put(NO_AUTH, "权限不允许.");
            put(TOKEN_ERROR, "令牌异常.");
            put(TOKEN_EXPIRE_TIME_NULL, "令牌配置异常.");
            put(TOKEN_EXPIRE_TIMEOUT, "令牌超时.");
            put(TOKEN_ALTERED, "令牌被篡改.");
            put(USER_ONLINE, "用户已登录.");
            put(USER_ENT_CLOSE, "用户所属企业失效.");

            /*
             * 校验错误码
             */
            put(USER_PASSWD_ENTNO_ERROR, "用户名、密码或企业编号错误.");
            put(USER_NOT_EXIST, "用户不存在.");
            put(GET_CODE_ERROR, "获取编码信息错误.");
            put(GET_TASK_DETAIL_ERROR, "获取任务详情错误.");
            put(USER_INFO_ERROR, "登录信息异常.");
            put(PARAMS_ERROR, "请求参数错误.");
            put(FLOWNO_OVERFLOW_ERROR, "操作失败，分配的流水号数大于可分配的流水号.");
            put(NOT_SORT, "非排序字段");
            put(ENTERPRISE_NO_EXIST, "企业id已存在");
            put(DEPT_NO_EXIST, "企业id已存在");
            put(USER_EXIST, "用户已存在");
            put(DEPT_EDIT_COMFLICT, "部门修改冲突");
            /**
             * 华云科技错误码
             */
            put(HUA_YUN_AUTH_FAILURE, "华云科技认证失败");
            put(HUA_YUN_LOGIN_INFO_IS_NULL, "坐席信息错误");
            put(HUA_YUN_FLOWNO_ERROR, "流水号错误");
        }

    };

    public static ReturnData audioApiErrorCode(String code) {
        switch (code) {
            case "0":
                return new ReturnData(AUDIO_ADRESS_NOT_EXIST, getMsg(AUDIO_ADRESS_NOT_EXIST));
            case "-1":
                return new ReturnData(AUDIO_PARAMS_ERROR, getMsg(AUDIO_PARAMS_ERROR));
            case "-2":
                return new ReturnData(AUDIO_ENTID_ERROR, getMsg(AUDIO_ENTID_ERROR));
            case "-3":
                return new ReturnData(AUDIO_AGENTID_ERROR, getMsg(AUDIO_AGENTID_ERROR));
            case "-4":
                return new ReturnData(AUDIO_PASSWD_ERROR, getMsg(AUDIO_PASSWD_ERROR));
            case "-5":
                return new ReturnData(AUDIO_NO_DATA, getMsg(AUDIO_NO_DATA));
            case "-7":
                return new ReturnData(AUDIO_NO_FTP_CONFIG, getMsg(AUDIO_NO_FTP_CONFIG));
            case "-8":
                return new ReturnData(AUDIO_ADDRESS_ERROR, getMsg(AUDIO_ADDRESS_ERROR));
            default:
                return new ReturnData(FAILURE, getMsg(FAILURE));

        }
    }


    /**
     * 根据状态码获取提示信息.
     *
     * @param code 状态吗
     * @return 返回状态码对应的提示信息
     */
    public static String getMsg(String code) {
        return codeMsg.get(code);
    }


}
