package com.jeequan.jeepay.db.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.jeequan.jeepay.core.constants.CS;
import com.jeequan.jeepay.core.exception.BizException;
import com.jeequan.jeepay.core.model.BaseModel;
import com.jeequan.jeepay.core.model.params.IsvParams;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;

import java.io.Serializable;
import java.util.Date;

/**
 * <p>
 * 支付接口配置参数表
 * </p>
 *
 * @author [mybatis plus generator]
 * @since 2021-04-27
 */
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@TableName("t_pay_interface_config")
public class PayInterfaceConfig extends BaseModel implements Serializable {

    public static LambdaQueryWrapper<PayInterfaceConfig> gw(){
        return new LambdaQueryWrapper<>();
    }

    private static final long serialVersionUID=1L;

    /**
     * ID
     */
    @TableId(value = "id", type = IdType.AUTO)
    private Long id;

    /**
     * 关联支付配置表中的id, 即t_pay_interface_config_alternative表的id
     */
    private Long altId;

    /**
     * 账号类型: 参考： SYS_ROLE_TYPE
     */
    private String infoType;

    /**
     * 服务商号/商户号/应用ID
     */
    private String infoId;

    /**
     * 支付接口代码
     */
    private String ifCode;

    /**
     * 接口配置参数,json字符串
     */
    private String ifParams;

    /**
     * 状态: 0-停用, 1-启用
     */
    private Byte state;

    /**
     * 是否开启进件: 0-关闭, 1-开启
     * @Deprecated 当前字段暂不使用。
     */
    private Byte isOpenApplyment;

    /**
     * 是否开启对账: 0-关闭, 1-开启
     */
    private Byte isCheckBill;

    /**
     * 对账过滤子商户号
     */
    private String ignoreCheckBillMchNos;

    /**
     * 提现配置，JSON字符串
     */
    private String cashoutParams;

    /**
     * 进件特殊参数，JSON字符串
     */
    private String applymentExtParams;

    /**
     * oauth2的选择， 空表示使用默认配置条目
     */
    private String oauth2InfoId;

    /**
     * 佣金结算周期（仅服务商配置， 用于服务商的佣金提现周期）
     */
    private Integer settHoldDay;

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

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

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

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

    /**
     * 更新者用户ID
     */
    private Long updatedUid;

    /**
     * 更新者姓名
     */
    private String updatedBy;

    /**
     * 更新时间
     */
    private Date updatedAt;

    /**
     * 通道类型：多个用英文逗号隔开   0专属通道；1线下通道；2线上通道
     */
    private String channelTypes;

    /**
     * 是否支持分账 0:否 1：是
     */
    private Byte isDivision;

    /**
     * 判断渠道是否支持分账
     */
    public void preCheckDivision() {
        if(this.getIsDivision() == null || CS.NO == this.getIsDivision()){
            throw new BizException("当前渠道不支持分账，无法创建分账方");
        }
    }
}
