package org.hzhub.crm.domain.vo;

import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import org.hzhub.common.sensitive.annotation.Sensitive;
import org.hzhub.common.sensitive.core.SensitiveStrategy;
import org.hzhub.common.translation.annotation.Translation;
import org.hzhub.common.translation.constant.TransConstant;
import org.hzhub.crm.domain.CrmLead;

import java.io.Serial;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;

/**
 * CRM线索视图对象 crm_lead
 *
 * @author hzhub
 */
@Data
@AutoMapper(target = CrmLead.class)
public class CrmLeadVo implements Serializable {

    @Serial
    private static final long serialVersionUID = 1L;

    /**
     * 线索ID
     */
    private Long leadId;

    /**
     * 租户ID
     */
    private String tenantId;

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

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

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

    /**
     * 手机号（列表查询时脱敏）
     */
    @Sensitive(strategy = SensitiveStrategy.PHONE)
    private String mobile;

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

    /**
     * 省
     */
    private String province;

    /**
     * 市
     */
    private String city;

    /**
     * 区域ID
     */
    private Long regionId;

    /**
     * 区域名称（翻译）
     */
    @Translation(type = TransConstant.DEPT_ID_TO_NAME, mapper = "regionId")
    private String regionName;

    /**
     * 来源类型
     */
    private String sourceType;

    /**
     * 来源类型名称（翻译）
     */
    @Translation(type = TransConstant.DICT_TYPE_TO_LABEL, mapper = "sourceType", other = "crm_lead_source")
    private String sourceTypeName;

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

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

    /**
     * 行业
     */
    private String industry;

    /**
     * 行业名称（翻译）
     */
    @Translation(type = TransConstant.DICT_TYPE_TO_LABEL, mapper = "industry", other = "crm_industry")
    private String industryName;

    /**
     * 公司规模
     */
    private String companyScale;

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

    /**
     * AI意向等级
     */
    private String intentLevel;

    /**
     * AI意向等级名称（翻译）
     */
    @Translation(type = TransConstant.DICT_TYPE_TO_LABEL, mapper = "intentLevel", other = "crm_intent_level")
    private String intentLevelName;

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

    /**
     * 风险等级
     */
    private String riskLevel;

    /**
     * 风险等级名称（翻译）
     */
    @Translation(type = TransConstant.DICT_TYPE_TO_LABEL, mapper = "riskLevel", other = "crm_risk_level")
    private String riskLevelName;

    /**
     * 负责人ID
     */
    private Long ownerUserId;

    /**
     * 负责人姓名（翻译）
     */
    @Translation(type = TransConstant.USER_ID_TO_NAME, mapper = "ownerUserId")
    private String ownerUserName;

    /**
     * 状态
     */
    private String leadStatus;

    /**
     * 状态名称（翻译）
     */
    @Translation(type = TransConstant.DICT_TYPE_TO_LABEL, mapper = "leadStatus", other = "crm_lead_status")
    private String leadStatusName;

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

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

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

    /**
     * 创建人
     */
    private Long createBy;

    /**
     * 创建人姓名（翻译）
     */
    @Translation(type = TransConstant.USER_ID_TO_NAME, mapper = "createBy")
    private String createByName;

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

    /**
     * 更新人
     */
    private Long updateBy;

    /**
     * 更新人姓名（翻译）
     */
    @Translation(type = TransConstant.USER_ID_TO_NAME, mapper = "updateBy")
    private String updateByName;

    /**
     * 更新时间
     */
    private Date updateTime;
}