package cn.iocoder.hake.module.agent.dal.dataobject.agent;

import lombok.*;

import java.time.LocalDate;

import com.baomidou.mybatisplus.annotation.*;
import cn.iocoder.hake.framework.mybatis.core.dataobject.BaseDO;

/**
 * 代理商管理 DO
 *
 * @author hake
 */
@TableName("agent_info")
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class AgentDO extends BaseDO {

    /**
     * 代理商唯一标识（自增ID，建议用雪花算法确保分布式系统唯一性）
     */
    @TableId
    private Long id;
    /**
     * 代理商登陆名
     */
    private String agentName;
    /**
     * 代理商编码（系统自动生成，格式如"AGT+日期+序号"，用于业务标识）
     */
    private String agentCode;
    /**
     * 代理商全称（需与营业执照一致）
     */
    private String agentNickname;
    /**
     * 代理商简称（用于日常展示）
     */
    private String agentShortNickname;
    /**
     * 审核状态（枚举：0-禁用;1-未认证；2-待审核；3-审核中；4-审核驳回；05-启用；）
     */
    private Integer status;
    /**
     * 是否允许发展下级代理：0-否；1-是
     */
    private Integer childAgentFlag;
    /**
     * 是否允许发展下级商户：0-否；1-是
     */
    private Integer childMchFlag;
    /**
     * 是否发送开通提醒：0-否；1-是
     */
    private Integer informFlag;
    /**
     * 代理商类型（枚举：1-个人代理；2-企业代理）
     */
    private Integer agentType;
    /**
     * 代理商等级（枚举：1-一级；2-二级）
     */
    private Integer agentLevel;
    /**
     * 上级代理商ID（自关联agent_id，用于多级代理体系，无上级则为空）
     */
    private Long parentAgentId;
    /**
     * 主要联系人（日常对接人）
     */
    private String contactPerson;
    /**
     * 联系电话（必填，用于系统通知和业务沟通）
     */
    private String contactPhone;
    /**
     * 联系邮箱（用于合同发送、对账通知等）
     */
    private String contactEmail;
    /**
     * 联系人或法人身份证人像面照片的URL路径
     */
    private String cardFrontPhoto;
    /**
     * 联系人或法人身份证国徽面照片的URL路径；与上一字段关联，需同时上传
     */
    private String cardReversePhoto;
    /**
     * 联系人或法人手持承诺函照片的URL路径
     */
    private String commitmentPhoto;
    /**
     * 营业执照照片的URL路径
     */
    private String businessLicensePhoto;
    /**
     * 开户许可证照片的URL路径
     */
    private String bankAccountPermit;
    /**
     * 合作状态（枚举：0-待合作；1-合作中；2-暂停合作；3-终止合作）
     */
    private Integer cooperationStatus;
    /**
     * 收款账户类型（枚举：1 - 银行卡；2 - 支付宝；3 - 微信支付）
     */
    private Integer receiveAccountType;
    /**
     * 账户姓名（需与证件姓名一致，用于收款账户实名校验）
     */
    private String accountName;
    /**
     * 支付宝账号（当receive_account_type=2时必填，格式为手机号或邮箱）
     */
    private String alipayAccount;
    /**
     * 开户银行名称（当receive_account_type=1时必填，如 "中国工商银行"）
     */
    private String bankName;
    /**
     * 收款账号（银行卡号或对公账户号，当receive_account_type=1时必填）
     */
    private String bankAccount;
    /**
     * 开户行支行名称（当receive_account_type=1时必填，如 "北京朝阳支行"）
     */
    private String bankBranch;
    /**
     * 签约日期（合同签订时间）
     */
    private LocalDate signDate;

    /**
     * 这是审核备注信息
     */
    private String auditRemark;

}