package com.psbc.cpsp.entity.enums;

import java.text.MessageFormat;

import static com.psbc.cpsp.entity.config.ResponsePrefixConfig.preFix;
import static com.psbc.cpsp.entity.constant.ResponseConstant.BUSINESS_ERROR;
import static com.psbc.cpsp.entity.constant.ResponseConstant.BUSINESS_LOGIC;



/**
 * 业务类错误-Y
 * 说明：业务/人为错误，处理人为业务人员/用户  例举：密码 权限 风控等
 * 格式：一级分类代码 + 系统号 + 二级分类代码 + 6位响应码，描述需与二级分类代码匹配
 * 二级分类从ResponseConstant中引用
 */
public enum BusiErrRespCodeEnum implements BaseRespCodeInterFace {


    /**
     * 业务类错误-Y,业务逻辑-BL, 业务异常，交易映射相关配置有误
     */
    TX_RELATION_INFO_CONFIG_ERROR(BUSINESS_ERROR + preFix + BUSINESS_LOGIC + "820022", "业务异常-交易映射相关配置有误"),
    /**
     * 业务异常，文件下载执行失败
     */
    FILE_DOWNLOAD_ERROR(BUSINESS_ERROR + preFix + BUSINESS_LOGIC + "85T016", "文件下载失败：{0}");


    /**
     * 智慧园区16位响应码-枚举编码
     */
    private final String code;
    /**
     * 响应描述信息
     */
    private final String desc;


    @Override
    public String getCode() {
        return code;
    }

    @Override
    public String getDesc() {
        return desc;
    }

    BusiErrRespCodeEnum(String code, String desc) {
        this.code = code;
        this.desc = desc;
    }

    /**
     * 获取描述具体信息
     *
     * @param args 参数信息
     * @return 描述具体信息
     */
    @Override
    public String getDesc(String... args) {
        if (args == null) {
            return desc;
        }

        return MessageFormat.format(desc, args);
    }
}
