package org.hzhub.crm.domain;

import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import org.hzhub.common.tenant.core.TenantEntity;

import java.math.BigDecimal;
import java.util.Date;

/**
 * CRM线索对象 crm_lead
 *
 * @author hzhub
 */
@Data
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
@TableName("crm_lead")
public class CrmLead extends TenantEntity {

    /**
     * 线索ID
     */
    @TableId(value = "lead_id", type = IdType.ASSIGN_ID)
    private Long leadId;

    /**
     * ERP客户编码（可选）
     */
    private String customerCode;

    /**
     * 公司名称
     */
    private String companyName;

    /**
     * 联系人
     */
    private String contactName;

    /**
     * 手机号
     */
    private String mobile;

    /**
     * 微信号
     */
    private String wechat;

    /**
     * 省
     */
    private String province;

    /**
     * 市
     */
    private String city;

    /**
     * 区域ID（关联 sys_dept）
     */
    private Long regionId;

    /**
     * 来源类型（字典：crm_lead_source）
     */
    private String sourceType;

    /**
     * 活动名称
     */
    private String activityName;

    /**
     * 推荐人
     */
    private String referrerName;

    /**
     * 行业（字典：crm_industry）
     */
    private String industry;

    /**
     * 公司规模（字典：crm_scale）
     */
    private String companyScale;

    /**
     * 门店数
     */
    private Integer storeCount;

    /**
     * AI意向等级（字典：crm_intent_level）
     */
    private String intentLevel;

    /**
     * AI评分
     */
    private BigDecimal aiScore;

    /**
     * 风险等级（字典：crm_risk_level）
     */
    private String riskLevel;

    /**
     * 负责人（关联 sys_user）
     */
    private Long ownerUserId;

    /**
     * 状态（字典：crm_lead_status）
     */
    private String leadStatus;

    /**
     * 转化经销商ID
     */
    private Long convertedDealerId;

    /**
     * 下次跟进时间
     */
    private Date nextFollowTime;

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

    /**
     * 删除标志（0代表存在 1代表删除）
     */
    @TableLogic
    private Integer delFlag;

    public CrmLead(Long leadId) {
        this.leadId = leadId;
    }
}