package com.pusong.business.domain.bo;

import com.pusong.business.domain.PsCustomInfo;
import com.pusong.common.core.validate.AddGroup;
import com.pusong.common.core.validate.EditGroup;
import com.pusong.common.core.validate.QueryGroup;
import com.pusong.common.mybatis.core.domain.BaseEntity;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import lombok.EqualsAndHashCode;
import jakarta.validation.constraints.*;
import org.hibernate.validator.constraints.Length;

import java.util.List;

/**
 * 客户基本信息业务对象 ps_custom_info
 *
 * @author Lion Li
 * @date 2024-07-25
 */
@Data
@EqualsAndHashCode
@AutoMapper(target = PsCustomInfo.class)
public class PsCustomInfoBo  {
    /**
     * 类型 1客户列表 2黑名单 3公海
     */
    @NotNull(message = "类型不能为空", groups = { QueryGroup.class })
    private Integer type;
    /**
     * 
     */
    @NotNull(message = "不能为空", groups = { EditGroup.class })
    private Long id;

    /**
     * 客户名称
     */
    @NotBlank(message = "客户名称不能为空",groups = { EditGroup.class, AddGroup.class })
    @Length(max = 50)
    private String customName;
    /**
     * 客户电话客户电话(多个用英文逗号分割)
     */
    @NotBlank(message = "客户电话客户电话",groups = { EditGroup.class, AddGroup.class })
    @Length(max = 500)
    private String customMobile;

    /**
     * 客户来源
     */
    @NotBlank(message = "客户来源不能为空")
    private String customSource;


    /**
     * 所属销售经理
     */
    @NotNull(message = "所属客户经理名称不能为空")
    private String customManagerName;

    /**
     * 客户级别
     */
    @NotBlank(message = "客户级别不能为空")
    private String customLevel;

    /**
     * 公司名称
     */
    @NotNull(message = "公司名称")
    private String companyName;
    /**
     * 介绍人-仅支持本司内客户
     */
    private Long customIntroducer;
    /**
     * 介绍人-仅支持本司内客户
     */
    private String customIntroducerName;

    /**
     * 颜色
     */
    private String color;
    /**
     * 是否已生成合同（1是0否）
     */
    private Integer haveContract;
    /**
     * 客户状态包含
     */
    private List<String> inCustomStatus;
    /**
     * 客户状态不包含
     */
    private List<String> notCustomStatus;
    /**
     * 拉黑标识 1是0否
     */
    private String black;
    /**
     * 报价信息
     */
    private List<PsCustomPriceBo> priceBos;


    /**
     * 回访信息
     */
    private List<PsCustomCallbackBo> callbackBos;

    /**
     * 公司信息集合（修改客户信息时使用）
     */
    private List<PsCompanyInfoBo> companyInfoBos;
    /**
     * 删除的公司id集合（修改客户信息时使用）
     */
    private List<Long> companyIds;
}
