package com.jeequan.jeepay.core.entity;

import com.alibaba.fastjson.JSONObject;
import com.jeequan.jeepay.core.model.BaseModel;
import com.jeequan.jeepay.core.model.Capability;
import com.jeequan.jeepay.core.model.MchExtInfo;
import lombok.Data;
import lombok.experimental.Accessors;

import java.util.Date;
import java.util.List;

/**
 * <p>
 * 商户应用表
 * </p>
 *
 * @author [mybatis plus generator]
 * @since 2021-06-15
 */
@Data
@Accessors(chain = true)
public class MchApp extends BaseModel {

    public static final String SIGN_TYPE_MD5 = "MD5";
    public static final String SIGN_TYPE_RSA2 = "RSA2";

    private static final long serialVersionUID=1L;

    /**
     * 应用ID
     */
    private String appId;

    /**
     * 应用名称
     */
    private String appName;

    /**
     * 商户号
     */
    private String mchNo;

    /**
     * 服务商号
     */
    private String agentNo;

    /**
     * 顶级服务商号
     */
    private String topAgentNo;

    /**
     * 是否默认: 0-否、 1-是（api接口未显式指定应用则使用默认应用）
     */
    private Byte defaultFlag;

    /**
     * 应用状态: 0-停用, 1-正常
     */
    private Byte state;

    /**
     * 轮询绑定状态。0 - 未开通；1 - 已开通自动绑定；2 - 不开通自动绑定
     */
    private int pollingBindState;

    /**
     * 支持的加签方式: MD5、 RSA2（若使用系统测试或者app必须支持MD5）
     */
    private String appSignType;

    /**
     * 应用公钥（RSA2）
     */
    private String appRsa2PublicKey;

    /**
     * 应用私钥(MD5)
     */
    private String appSecret;

    /**
     * 备注
     */
    private String remark;

    /**
     * 创建者用户ID
     */
    private Long createdUid;

    /**
     * 创建者姓名
     */
    private String createdBy;

    /**
     * 创建时间
     */
    private Date createdAt;

    /**
     * 更新时间
     */
    private Date updatedAt;
    /**
     * 应用功能
     */
    private List<Capability> capabilities;

    /**
     * 开通需求
     */
    private List<Capability> preCapabilities;
    /**
     * 是否开通轮询
     */
    private String turnsPay;

    /**
     * 0: 线下，
     * 1: 线上
     * 2: 专属
     */
    private Integer range;

    /**
     * 是否支持API,
     * 0: 不支持
     * 1: 支持
     */
    private Integer apiFlag;

    /**
     * 应用的功能code，前端保存的时候传递该参数
     */
    private List<String> capabilityCodeList;

    /**
     * 应用信息
     */
    private List<MchExtInfo> information;

    private String mccCode;

    private List<JSONObject> qualificationList;

    /**
     * 预开通的方案
     */
    private String predicOpenPackage;

    /**
     * 预开通的产品
     */
    private String predicOpenProduct;
}
