package com.fs.crm.domain;

import java.math.BigDecimal;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fs.common.annotation.Excel;
import com.fs.common.core.domain.BaseEntity;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.Pattern;

/**
 * 客户对象 crm_customer
 *
 * @author fs
 * @date 2022-12-21
 */
public class CrmCustomer extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** $column.columnComment */
    private Long customerId;

    /** 组织机构代码 */
    @Excel(name = "组织机构代码")
    private String customerCode;

    /** 客户名称 */
    @Excel(name = "客户名称")
    private String customerName;

    /** 手机 */
    @Excel(name = "手机")
    @NotBlank(message = "手机号不能为空")
//    @Pattern(regexp="^1[3456789]\\d{9}$",message="手机号格式不正确")
    private String mobile;

    /** 流量来源 */
    @Excel(name = "流量来源")
    private String trafficSource;

    /** 性别 */
    @Excel(name = "性别")
    private Integer sex;

    /** $column.columnComment */
    @Excel(name = "微信")
    private String weixin;

    /** 关联用户ID */
    @Excel(name = "关联用户ID")
    private Long userId;

    /** 创建人ID */
    @Excel(name = "创建人ID")
    private Long createUserId;

    /** 当前认领用户 */
    @Excel(name = "当前认领用户")
    private Long receiveUserId;

    /** 认领ID */
    @Excel(name = "认领ID")
    private Long customerUserId;

    /** 省市区 */
    @Excel(name = "省市区")
    private String address;

    private String cityIds;

    /** 定位信息 */
    @Excel(name = "定位信息")
    private String location;

    /** 详细地址 */
    @Excel(name = "详细地址")
    private String detailAddress;

    /** 地理位置经度 */
    @Excel(name = "地理位置经度")
    private String lng;

    /** 地理位置维度 */
    @Excel(name = "地理位置维度")
    private String lat;

    /** 客户状态  0锁定 1 正常 */
    @Excel(name = "客户状态  0锁定 1 正常")
    private Integer status;

    /** 1 已认领 0未认领 */
    @Excel(name = "1 已认领 0未认领")
    private Integer isReceive;

    /** 0 手动导入 1 自动导入 */
    @Excel(name = "导入类型")
    private Integer importType;



    /** 所属部门ID */
    @Excel(name = "所属部门ID")
    private Long deptId;

    /** 是否删除 */
    @Excel(name = "是否删除")
    private Integer isDel;

    /** 客户类型 */
    @Excel(name = "客户类型")
    private Integer customerType;

    /** 最后一次跟进时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "最后一次跟进时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date receiveTime;

    /** 入公海时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "入公海时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date poolTime;

    /** $column.columnComment */
    @Excel(name = "公司id")
    private Long companyId;

    /** 是否为线索客户 */
    @Excel(name = "是否为线索客户")
    private Integer isLine;

    /** 客户来源 */
    @Excel(name = "客户来源")
    private Integer source;

    /** 标签 */
    @Excel(name = "标签")
    private String tags;

    private String extJson;

    @Excel(name = "跟进阶段")
    private Integer visitStatus;

    @Excel(name = "进线日期")
    private String registerDate;
    private String registerLinkUrl;
    private String registerDesc;
    @Excel(name = "进线客户填写日期")
    private String registerSubmitTime;

    /** 流量平台线索归属账号 */
    private String thirdAccount;

    /** 流量平台线索Id */
    private String clueId;

    private Integer isPool;

    private String registerType;

    private BigDecimal payMoney;

    private Integer buyCount;

    private String sourceCode;

    private String pushTime;
    private String qwName;
    private String pushCode;
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date visitTime;


    public String getQwName() {
        return qwName;
    }

    public void setQwName(String qwName) {
        this.qwName = qwName;
    }

    public static long getSerialVersionUID() {
        return serialVersionUID;
    }

    public Long getCustomerId() {
        return customerId;
    }

    public void setCustomerId(Long customerId) {
        this.customerId = customerId;
    }

    public String getCustomerCode() {
        return customerCode;
    }

    public void setCustomerCode(String customerCode) {
        this.customerCode = customerCode;
    }

    public String getCustomerName() {
        return customerName;
    }

    public void setCustomerName(String customerName) {
        this.customerName = customerName;
    }

    public String getMobile() {
        return mobile;
    }

    public void setMobile(String mobile) {
        this.mobile = mobile;
    }

    public Integer getSex() {
        return sex;
    }

    public void setSex(Integer sex) {
        this.sex = sex;
    }

    public String getWeixin() {
        return weixin;
    }

    public void setWeixin(String weixin) {
        this.weixin = weixin;
    }

    public Long getUserId() {
        return userId;
    }

    public void setUserId(Long userId) {
        this.userId = userId;
    }

    public Long getCreateUserId() {
        return createUserId;
    }

    public void setCreateUserId(Long createUserId) {
        this.createUserId = createUserId;
    }

    public Long getReceiveUserId() {
        return receiveUserId;
    }

    public void setReceiveUserId(Long receiveUserId) {
        this.receiveUserId = receiveUserId;
    }

    public Long getCustomerUserId() {
        return customerUserId;
    }

    public void setCustomerUserId(Long customerUserId) {
        this.customerUserId = customerUserId;
    }

    public String getAddress() {
        return address;
    }

    public void setAddress(String address) {
        this.address = address;
    }

    public String getCityIds() {
        return cityIds;
    }

    public void setCityIds(String cityIds) {
        this.cityIds = cityIds;
    }

    public String getLocation() {
        return location;
    }

    public void setLocation(String location) {
        this.location = location;
    }

    public String getDetailAddress() {
        return detailAddress;
    }

    public void setDetailAddress(String detailAddress) {
        this.detailAddress = detailAddress;
    }

    public String getLng() {
        return lng;
    }

    public void setLng(String lng) {
        this.lng = lng;
    }

    public String getLat() {
        return lat;
    }

    public void setLat(String lat) {
        this.lat = lat;
    }

    public Integer getStatus() {
        return status;
    }

    public void setStatus(Integer status) {
        this.status = status;
    }

    public Integer getIsReceive() {
        return isReceive;
    }

    public void setIsReceive(Integer isReceive) {
        this.isReceive = isReceive;
    }

    public Long getDeptId() {
        return deptId;
    }

    public void setDeptId(Long deptId) {
        this.deptId = deptId;
    }

    public Integer getIsDel() {
        return isDel;
    }

    public void setIsDel(Integer isDel) {
        this.isDel = isDel;
    }

    public Integer getCustomerType() {
        return customerType;
    }

    public void setCustomerType(Integer customerType) {
        this.customerType = customerType;
    }

    public Date getReceiveTime() {
        return receiveTime;
    }

    public void setReceiveTime(Date receiveTime) {
        this.receiveTime = receiveTime;
    }

    public Date getPoolTime() {
        return poolTime;
    }

    public void setPoolTime(Date poolTime) {
        this.poolTime = poolTime;
    }

    public Long getCompanyId() {
        return companyId;
    }

    public void setCompanyId(Long companyId) {
        this.companyId = companyId;
    }

    public Integer getIsLine() {
        return isLine;
    }

    public void setIsLine(Integer isLine) {
        this.isLine = isLine;
    }

    public Integer getSource() {
        return source;
    }

    public void setSource(Integer source) {
        this.source = source;
    }

    public String getTags() {
        return tags;
    }

    public void setTags(String tags) {
        this.tags = tags;
    }

    public String getExtJson() {
        return extJson;
    }

    public void setExtJson(String extJson) {
        this.extJson = extJson;
    }

    public Integer getVisitStatus() {
        return visitStatus;
    }

    public void setVisitStatus(Integer visitStatus) {
        this.visitStatus = visitStatus;
    }

    public String getRegisterDate() {
        return registerDate;
    }

    public void setRegisterDate(String registerDate) {
        this.registerDate = registerDate;
    }

    public String getRegisterLinkUrl() {
        return registerLinkUrl;
    }

    public void setRegisterLinkUrl(String registerLinkUrl) {
        this.registerLinkUrl = registerLinkUrl;
    }

    public String getRegisterDesc() {
        return registerDesc;
    }

    public void setRegisterDesc(String registerDesc) {
        this.registerDesc = registerDesc;
    }

    public String getRegisterSubmitTime() {
        return registerSubmitTime;
    }

    public void setRegisterSubmitTime(String registerSubmitTime) {
        this.registerSubmitTime = registerSubmitTime;
    }

    public Integer getIsPool() {
        return isPool;
    }

    public void setIsPool(Integer isPool) {
        this.isPool = isPool;
    }

    public String getRegisterType() {
        return registerType;
    }

    public void setRegisterType(String registerType) {
        this.registerType = registerType;
    }

    public BigDecimal getPayMoney() {
        return payMoney;
    }

    public void setPayMoney(BigDecimal payMoney) {
        this.payMoney = payMoney;
    }

    public Integer getBuyCount() {
        return buyCount;
    }

    public void setBuyCount(Integer buyCount) {
        this.buyCount = buyCount;
    }

    public String getSourceCode() {
        return sourceCode;
    }

    public void setSourceCode(String sourceCode) {
        this.sourceCode = sourceCode;
    }

    public String getPushTime() {
        return pushTime;
    }

    public void setPushTime(String pushTime) {
        this.pushTime = pushTime;
    }

    public String getPushCode() {
        return pushCode;
    }

    public void setPushCode(String pushCode) {
        this.pushCode = pushCode;
    }

    public Date getVisitTime() {
        return visitTime;
    }

    public void setVisitTime(Date visitTime) {
        this.visitTime = visitTime;
    }

    public String getTrafficSource() {  return trafficSource;}

    public void setTrafficSource(String trafficSource) { this.trafficSource = trafficSource;}

    public Integer getImportType() {
        return importType;
    }

    public void setImportType(Integer importType) {
        this.importType = importType;
    }

    public String getThirdAccount() {
        return thirdAccount;
    }

    public void setThirdAccount(String thirdAccount) {
        this.thirdAccount = thirdAccount;
    }

    public String getClueId() {
        return clueId;
    }

    public void setClueId(String clueId) {
        this.clueId = clueId;
    }

}
