package com.zhongshu.card.client.model.dahua;

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.util.List;

@Data
@AllArgsConstructor
@NoArgsConstructor
public class ApplyQryResponseModel extends BaseResponseModel {

    /**
     * epId
     */
    @Schema(description = "epId")
    private String accesser_acct;

    /**
     * 签约流水号
     */
    @Schema(description = "签约流水号")
    private String ums_reg_id;
    /**
     * 入网状态
     * 00：签约中
     * 01：签约成功（中间状态）
     * 02：入网审核中（人工审核流程）
     * 03：入网成功（最终成功状态）
     * 04：入网失败
     * 05：对公账户待验证或异常（对公账户状态）
     * 06：风控审核中（系统审核状态）
     * 11：短信签生成合同成功（短信签约流程）
     * 18：资料填写中（前端流程状态）
     * 28：资料验证失败
     * 31：冻结账户
     * 32：客服视频核验中（可再次调用签约接口）
     * 33：客服视频核验失败（可再次调用签约接口）
     * 34：待客户经理补充材料（等待客户经理处理工单）
     * 35：DM已冻结
     * <p>
     * 99：其它错误
     */
    @Schema(description = "入网状态 00：签约中 01：签约成功（中间状态） 02：入网审核中（人工审核流程） 03：入网成功（最终成功状态） 04：入网失败 05：对公账户待验证或异常（对公账户状态） 06：风控审核中（系统审核状态） 11：短信签生成合同成功（短信签约流程） 18：资料填写中（前端流程状态） 28：资料验证失败 31：冻结账户 32：客服视频核验中（可再次调用签约接口） 33：客服视频核验失败（可再次调用签约接口） 34：待客户经理补充材料（等待客户经理处理工单） 35：DM已冻结\n" +
            "99：其它错误")
    private String apply_status;

    /**
     * 状态消息
     * 00：签约中
     * 01：签约成功（中间状态）
     * 02：入网审核中（人工审核流程）
     * 03：入网成功（最终成功状态）
     * 04：入网失败
     * 05：对公账户待验证或异常（对公账户状态）
     * 06：风控审核中（系统审核状态）
     * 11：短信签生成合同成功（短信签约流程）
     * 18：资料填写中（前端流程状态）
     * 28：资料验证失败
     * 31：冻结账户
     * 32：客服视频核验中（可再次调用签约接口）
     * 33：客服视频核验失败（可再次调用签约接口）
     * 34：待客户经理补充材料（等待客户经理处理工单）
     * 35：DM已冻结
     * <p>
     * 99：其它错误
     */
    @Schema(description = "状态消息 00：签约中 01：签约成功（中间状态） 02：入网审核中（人工审核流程） 03：入网成功（最终成功状态） 04：入网失败 05：对公账户待验证或异常（对公账户状态） 06：风控审核中（系统审核状态） 11：短信签生成合同成功（短信签约流程） 18：资料填写中（前端流程状态） 28：资料验证失败 31：冻结账户 32：客服视频核验中（可再次调用签约接口） 33：客服视频核验失败（可再次调用签约接口） 34：待客户经理补充材料（等待客户经理处理工单） 35：DM已冻结\n" +
            "99：其它错误")
    private String apply_status_msg;

    /**
     * 商户号
     */
    @Schema(description = "商户号,入网成功时返回")
    private String mer_no;

    /**
     * 企业号 对于入网成功且开通泛账户的商户，返回企业号，此返回参数非实时更新
     */
    @Schema(description = "企业号 ")
    private String company_no;

    /**
     * 失败原因 协议退回原因
     */
    @Schema(description = "失败原因")
    private String fail_reason;

    /**
     * 商户多应用信息
     * mapp_no;
     * term_app_no_list;
     * card_type_fee_list;  费率 card_fee ； 卡种card_type
     * isPayable;
     * contract_state;
     * contract_state_msg;
     * wechatPayRecordMchntNo;
     * aliPayRecordMchntNo;
     */
    @Schema(description = "商户多应用信息")
    private List<MappInfoList> mapp_info_list;

    /**
     * C扫B多应用商户号是否可支付
     * "00","可支付"
     * "01","不可支付，商户信息同步失败"
     * "02","网付平台接口未响应"03","apply_status非03入网成功状态"
     * "04","没有开通C扫B多应用商户号或者B扫C商户号"
     * "05","不可支付，T表同步中，在30分钟内"
     * "06","网付接口查询不到此商户号"
     */
    @Schema(description = "C扫B多应用商户号是否可支付 00:可支付 01:不可支付，商户信息同步失败 02:网付平台接口未响应03:apply_status非03入网成功状态 04:没有开通C扫B多应用商户号或者B扫C商户号 05:不可支付，T表同步中，在30分钟内 06:网付接口查询不到此商户号")
    private String isPayable;
    /**
     * 短信签合同状态
     * 100：生成合同成功
     * 101：生成合同失败
     * 102：发送合同成功
     * 103：发送合同失败
     * 104：签署合同成功
     * 106：签署合同失败
     * 107：甲方签署合同成功
     * 108：甲方签署合同失败
     * 109：标记合同生效成功
     * 110：标记合同生效失败
     * 111：撤销合同成功
     * 112：撤销合同失败
     * 113：签署合同超时
     */
    @Schema(description = "短信签合同状态 100：生成合同成功 101：生成合同失败 102：发送合同成功 103：发送合同失败 104：签署合同成功 106：签署合同失败 107：甲方签署合同成功 108：甲方签署合同失败 109：标记合同生效成功 110：标记合同生效失败 111：撤销合同成功 112：撤销合同失败 113：签署合同超时")
    private String contract_state;

    /**
     * 短信签合同描述
     * 100：生成合同成功
     * 101：生成合同失败
     * 102：发送合同成功
     * 103：发送合同失败
     * 104：签署合同成功
     * 106：签署合同失败
     * 107：甲方签署合同成功
     * 108：甲方签署合同失败
     * 109：标记合同生效成功
     * 110：标记合同生效失败
     * 111：撤销合同成功
     * 112：撤销合同失败
     * 113：签署合同超时
     */
    @Schema(description = "短信签合同描述 100：生成合同成功 101：生成合同失败 102：发送合同成功 103：发送合同失败 104：签署合同成功 106：签署合同失败 107：甲方签署合同成功 108：甲方签署合同失败 109：标记合同生效成功 110：标记合同生效失败 111：撤销合同成功 112：撤销合同失败 113：签署合同超时")
    private String contract_state_msg;


    /**
     * 微信备案商户号
     */
    @Schema(description = "微信备案商户号")
    private String wechatPayRecordMchntNo;

    /**
     * 支付宝备案商户号
     */
    @Schema(description = "支付宝备案商户号")
    private String aliPayRecordMchntNo;

    /**
     * 银联云闪付备案商户号
     */
    @Schema(description = "银联云闪付备案商户号")
    private String unionPayRecordMchntNo;


    /**
     * 主从关系绑定结果
     */
    @Schema(description = "主从关系绑定结果")
    private String merMsRelation;

    /**
     * 数字人民币钱包集合
     * mappNo 商户号
     * dcepStatus 进件状态
     * 0=未进件
     * 1=进件失败
     * 2=进行中
     * 3进件成功
     * walletId 钱包ID
     * submchnt_info_list 分店列表，submchntId 分店id :submchntName 门店全称  submchntBriefName 门店简称term_app_no_list多应用终端号列表
     */
    private String dcepInfoList;

    @Data
    @AllArgsConstructor
    @NoArgsConstructor
    public class MappInfoList {

        @Schema(description = "多应用商户号")
        private String mapp_no;

        @Schema(description = "多应用终端号列表")
        private String term_app_no_list;

        @Schema(description = "业务类型ID")
        private String apptype_id;

        @Schema(description = "卡种费率列表")
        private List<CardTypeFeeLis> card_type_fee_list;


    }

    @Data
    @AllArgsConstructor
    class CardTypeFeeLis {

        @Schema(description = "卡种")
        private String card_type;

        @Schema(description = "费率")
        private String card_fee;

    }

    @Data
    @AllArgsConstructor
    class DcepInfoList {
        @Schema(description = "商户号")
        private String mappNo;

        /**
         * \n" +
         *                 "1=进件失败\n" +
         *                 "2=进行中\n" +
         *                 "3进件成功\n
         */
        @Schema(description = "进件状态 0=未进件")
        private String dcepStatus;

        @Schema(description = "钱包ID")
        private String walletId;

        @Schema(description = "分店列表")
        private List<SubmchntInfoList> submchnt_info_list;

    }

    @Data
    @AllArgsConstructor
    class SubmchntInfoList {

        @Schema(description = "分店Id")
        private String submchntId;

        @Schema(description = "门店全称")
        private String submchntName;

        @Schema(description = "门店简称")
        private String submchntBriefName;

        @Schema(description = "多应用终端号列表")
        private String term_app_no_list;

    }

}
