package com.gxwebsoft.credit.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import java.time.LocalDateTime;
import com.baomidou.mybatisplus.annotation.TableLogic;
import java.io.Serializable;

import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;

/**
 * 小程序端客户
 *
 * @author 科技小王子
 * @since 2026-03-16 20:59:17
 */
@Data
@EqualsAndHashCode(callSuper = false)
@Schema(name = "CreditMpCustomer对象", description = "小程序端客户")
public class CreditMpCustomer implements Serializable {
    private static final long serialVersionUID = 1L;

    @Schema(description = "ID")
    @TableId(value = "id", type = IdType.AUTO)
    private Integer id;

    @Schema(description = "拖欠方")
    private String toUser;

    @Schema(description = "拖欠金额")
    private String price;

    @Schema(description = "拖欠年数")
    private String years;

    @Schema(description = "链接")
    private String url;

    @Schema(description = "状态")
    private String statusTxt;

    @Schema(description = "企业ID")
    private Integer companyId;

    @Schema(description = "所在省份")
    private String province;

    @Schema(description = "所在城市")
    private String city;

    @Schema(description = "所在辖区")
    private String region;

    @Schema(description = "文件路径")
    private String files;

    @Schema(description = "是否有数据")
    private Boolean hasData;

    @Schema(description = "步骤, 0未受理1已受理2材料提交3合同签订4执行回款5完结")
    private Integer step;

    @Schema(description = "备注")
    private String comments;

    @Schema(description = "是否推荐")
    private Integer recommend;

    @Schema(description = "排序(数字越小越靠前)")
    private Integer sortNumber;

    @Schema(description = "状态, 0未受理, 1已受理")
    private Integer status;

    @Schema(description = "是否删除, 0否, 1是")
    @TableLogic
    private Integer deleted;

    @Schema(description = "用户ID")
    private Integer userId;

    @Schema(description = "用户昵称")
    @TableField(exist = false)
    private String nickname;

    @Schema(description = "用户手机号")
    @TableField(exist = false)
    private String phone;

    @Schema(description = "用户头像")
    @TableField(exist = false)
    private String avatar;

    @Schema(description = "真实姓名")
    @TableField(exist = false)
    private String realName;

    @Schema(description = "租户id")
    private Integer tenantId;

    @Schema(description = "创建时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime createTime;

    @Schema(description = "修改时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime updateTime;

    // 第1步：案件受理字段
    @Schema(description = "第1步是否已提交")
    private Integer followStep1Submitted;

    @Schema(description = "第1步提交时间")
    private String followStep1SubmittedAt;

    @Schema(description = "第1步联系人")
    private String followStep1Contact;

    @Schema(description = "第1步联系电话")
    private String followStep1Phone;

    @Schema(description = "第1步电话录音URL")
    private String followStep1AudioUrl;

    @Schema(description = "第1步电话录音文件名")
    private String followStep1AudioName;

    @Schema(description = "第1步短信截图JSON")
    private String followStep1SmsShots;

    @Schema(description = "第1步电话沟通截图JSON")
    private String followStep1CallShots;

    @Schema(description = "第1步沟通情况")
    private String followStep1Remark;

    @Schema(description = "第1步意向(无意向/有意向)")
    private String followStep1Intention;

    @Schema(description = "第1步沟通次数")
    private Integer followStep1CommunicationCount;

    @Schema(description = "第1步是否需要审核")
    private Integer followStep1NeedApproval;

    @Schema(description = "第1步是否审核通过")
    private Integer followStep1Approved;

    @Schema(description = "第1步审核时间")
    private String followStep1ApprovedAt;

    @Schema(description = "第1步审核人ID")
    private Long followStep1ApprovedBy;

    // 第2步：材料准备字段
    @Schema(description = "第2步是否已提交")
    private Integer followStep2Submitted;

    @Schema(description = "第2步提交时间")
    private String followStep2SubmittedAt;

    @Schema(description = "第2步是否需要审核")
    private Integer followStep2NeedApproval;

    @Schema(description = "第2步是否审核通过")
    private Integer followStep2Approved;

    @Schema(description = "第2步审核时间")
    private String followStep2ApprovedAt;

    @Schema(description = "第2步审核人ID")
    private Long followStep2ApprovedBy;

    // 第3步：案件办理字段
    @Schema(description = "第3步是否已提交")
    private Integer followStep3Submitted;

    @Schema(description = "第3步提交时间")
    private String followStep3SubmittedAt;

    @Schema(description = "第3步是否需要审核")
    private Integer followStep3NeedApproval;

    @Schema(description = "第3步是否审核通过")
    private Integer followStep3Approved;

    @Schema(description = "第3步审核时间")
    private String followStep3ApprovedAt;

    @Schema(description = "第3步审核人ID")
    private Long followStep3ApprovedBy;

    // 第4步：送达签收字段
    @Schema(description = "第4步是否已提交")
    private Integer followStep4Submitted;

    @Schema(description = "第4步提交时间")
    private String followStep4SubmittedAt;

    @Schema(description = "第4步是否需要审核")
    private Integer followStep4NeedApproval;

    @Schema(description = "第4步是否审核通过")
    private Integer followStep4Approved;

    @Schema(description = "第4步审核时间")
    private String followStep4ApprovedAt;

    @Schema(description = "第4步审核人ID")
    private Long followStep4ApprovedBy;

    // 第5步：合同签订字段
    @Schema(description = "第5步是否已提交")
    private Integer followStep5Submitted;

    @Schema(description = "第5步提交时间")
    private String followStep5SubmittedAt;

    @Schema(description = "第5步合同信息JSON数组")
    private String followStep5Contracts;

    @Schema(description = "第5步是否需要审核")
    private Integer followStep5NeedApproval;

    @Schema(description = "第5步是否审核通过")
    private Integer followStep5Approved;

    @Schema(description = "第5步审核时间")
    private String followStep5ApprovedAt;

    @Schema(description = "第5步审核人ID")
    private Long followStep5ApprovedBy;

    // 第6步：订单回款字段
    @Schema(description = "第6步是否已提交")
    private Integer followStep6Submitted;

    @Schema(description = "第6步提交时间")
    private String followStep6SubmittedAt;

    @Schema(description = "第6步财务录入的回款记录JSON数组")
    private String followStep6PaymentRecords;

    @Schema(description = "第6步预计回款JSON数组")
    private String followStep6ExpectedPayments;

    @Schema(description = "第6步是否需要审核")
    private Integer followStep6NeedApproval;

    @Schema(description = "第6步是否审核通过")
    private Integer followStep6Approved;

    @Schema(description = "第6步审核时间")
    private String followStep6ApprovedAt;

    @Schema(description = "第6步审核人ID")
    private Long followStep6ApprovedBy;

    // 第7步：电话回访字段
    @Schema(description = "第7步是否已提交")
    private Integer followStep7Submitted;

    @Schema(description = "第7步提交时间")
    private String followStep7SubmittedAt;

    @Schema(description = "第7步回访记录JSON数组")
    private String followStep7VisitRecords;

    @Schema(description = "第7步是否需要审核")
    private Integer followStep7NeedApproval;

    @Schema(description = "第7步是否审核通过")
    private Integer followStep7Approved;

    @Schema(description = "第7步审核时间")
    private String followStep7ApprovedAt;

    @Schema(description = "第7步审核人ID")
    private Long followStep7ApprovedBy;

    // 流程结束字段
    @Schema(description = "流程是否已结束")
    private Integer followProcessEnded;

    @Schema(description = "流程结束时间")
    private String followProcessEndTime;

    @Schema(description = "流程结束原因")
    private String followProcessEndReason;

}
