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.CrmDealer;

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

/**
 * CRM经销商视图对象 crm_dealer
 *
 * @author hzhub
 */
@Data
@AutoMapper(target = CrmDealer.class)
public class CrmDealerVo implements Serializable {

    @Serial
    private static final long serialVersionUID = 1L;

    /**
     * 经销商ID
     */
    private Long dealerId;

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

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

    /**
     * 经销商名称
     */
    private String dealerName;

    /**
     * 经销商编码
     */
    private String dealerCode;

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

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

    /**
     * 省
     */
    private String province;

    /**
     * 市
     */
    private String city;

    /**
     * 经销商等级
     */
    private String level;

    /**
     * 经销商等级名称（翻译）
     */
    @Translation(type = TransConstant.DICT_TYPE_TO_LABEL, mapper = "level", other = "crm_dealer_level")
    private String levelName;

    /**
     * 生命周期
     */
    private String lifecycle;

    /**
     * 生命周期名称（翻译）
     */
    @Translation(type = TransConstant.DICT_TYPE_TO_LABEL, mapper = "lifecycle", other = "crm_lifecycle")
    private String lifecycleName;

    /**
     * 签约时间
     */
    private Date signedAt;

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

    /**
     * 团队规模
     */
    private Integer teamSize;

    /**
     * 累计订单金额
     */
    private BigDecimal totalOrderAmount;

    /**
     * 累计回款金额
     */
    private BigDecimal totalPaymentAmount;

    /**
     * 活跃评分
     */
    private BigDecimal activityScore;

    /**
     * 风险评分
     */
    private BigDecimal riskScore;

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

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

    /**
     * 来源线索ID
     */
    private Long sourceLeadId;

    /**
     * 创建人
     */
    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;
}