package com.jeequan.jeepay.db.entity;


import com.baomidou.mybatisplus.annotation.*;
import com.jeequan.jeepay.core.constants.CS;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;

import java.util.Date;

@Data
@SuperBuilder(toBuilder = true)
@NoArgsConstructor
@AllArgsConstructor
@TableName("t_isv_user_conn")
public class IsvUserConnEntity {

    @TableId(type = IdType.AUTO)
    private Integer id;

    @TableField("isv_no")
    private String isvNo;

    /**
     * @since 2024.04.03
     * 冗余商户与服务商的关联关系，方便后续操作
     */
    @TableField("agent_no")
    private String agentNo;

    @TableField("info_type")
    private String infoType;

    @TableField("info_id")
    private String infoId;

    private int sort;

    /**
     * 是否可使用，主要针对商户入网
     * <p>
     * @since 2024-01-06
     * 当该参数为0时，该渠道关联关系即为无效
     * <ol>
     *     <li>当前关联用户类型为普通用户，那么他无法再使用该渠道配置参数进行商户入网</li>
     *     <li>当前关联用户类型为服务商(原服务商)，那么他无法给他的下级服务商(原服务商)、普通用户修改配置信息</li>
     * </ol>
     * 当该参数为1时候，以上限制全无
     */
    private Integer status;

    /**
     * 是否可配置
     * <p>
     * @since 2024-01-06
     * <br/>
     * 当该参数为0时候，他的下级代理不会自动继承该渠道关联；
     * <br/>
     * 当改参数为1时候，他的下级代理，商户等会自动继承该关联信息
     * </p>
     */
    private int configStatus;

    private String remark;

    @TableField("created_uid")
    private Long createdUid;

    @TableField("created_by")
    private String createdBy;

    @TableField(fill = FieldFill.INSERT)
    private Date createdAt;

    public static final Integer STATUS_ENABLED = (int) CS.YES;

    public static final Integer STATUS_DISABLED = (int )CS.NO;

    public static IsvUserConnEntity create(String infoType, String infoId, String isvNo, int configStatus, int status) {
        return IsvUserConnEntity.builder()
                .infoType(infoType)
                .infoId(infoId)
                .isvNo(isvNo)
                .configStatus(configStatus)
                .status(status)
                .build();
    }
}
