439 lines
7.8 KiB
Java
Raw Normal View History

2024-01-23 16:42:27 +08:00
package com.ics.admin.domain;
import com.baomidou.mybatisplus.annotation.IEnum;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ics.admin.handler.BannerImageHandler;
import com.ics.common.core.domain.BaseEntity;
2024-03-08 08:33:31 +08:00
import com.ics.system.domain.User;
2024-01-23 16:42:27 +08:00
import lombok.Data;
import javax.validation.constraints.NotBlank;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
/**
* 客户管理对象 ics_customer
*
* @author zzm
* @date 2021-03-29
*/
@Data
@TableName("ics_customer")
public class Customer extends BaseEntity<Customer> {
private static final long serialVersionUID = 1L;
/**
* 最大Banner图片数量
*/
public static final int MAX_BANNER_IMAGE_SIZE = 6;
/**
* 客户名称
*/
@NotBlank(message = "客户名称不能为空")
private String name;
/**
* 简称
*/
private String shortName;
/**
* 企业头像
*/
private String headImg;
/**
* 照片墙
*/
@TableField(typeHandler = BannerImageHandler.class)
private List<BannerImage> bannerImages = new ArrayList<>();
/**
* 客户类型
*/
private Type type;
/**
* 客户类型
*/
public enum Type implements IEnum<Integer> {
/**
* 公司
*/
COMPANY("公司", 0),
/**
* 个人
*/
PERSON("个人", 1);
private String name;
private int value;
Type(String name, int value) {
this.name = name;
this.value = value;
}
@Override
public Integer getValue() {
return this.value;
}
public String getName() {
return this.name;
}
public static Type parse(Integer value) {
for (Type type : values()) {
if (type.getValue().equals(value)) {
return type;
}
}
return null;
}
}
/**
* 客户状态
*/
private CustomerStatus customerStatus;
/**
* 客户类型
*/
public enum CustomerStatus implements IEnum<Integer> {
/**
* 潜在客户
*/
POTENTIAL("潜在客户", 0),
/**
* 意向客户
*/
PURPOSE("意向客户", 1),
/**
* 成交客户
*/
DEAL("成交客户", 2),
/**
* 流失客户
*/
LOSE("流失客户", 3);
private String name;
private int value;
CustomerStatus(String name, int value) {
this.name = name;
this.value = value;
}
@Override
public Integer getValue() {
return this.value;
}
public String getName() {
return this.name;
}
public static CustomerStatus parse(Integer value) {
for (CustomerStatus customerStatus : values()) {
if (customerStatus.getValue().equals(value)) {
return customerStatus;
}
}
return null;
}
}
/**
* 所属行业
*/
private String sector;
/**
* 所属国家
*/
private String country;
/**
* 过程管理
*/
private Process process;
2024-03-26 16:18:45 +08:00
@TableField(exist = false)
private Integer count;
@TableField(exist = false)
private Integer sumNum;
2024-01-23 16:42:27 +08:00
/**
* 过程管理
*/
public enum Process implements IEnum<Integer> {
/**
* 初次拜访
*/
FIRST_VISIT("初次拜访", 0),
/**
* 需求引导分析
*/
NEED_GUID("需求引导分析", 1),
/**
* 竞争阶段
*/
COMPETE("竞争阶段", 2),
/**
* 预定阶段
*/
PREDETERMINE("预定阶段", 3),
/**
* 合同阶段
*/
CONTRACT("合同阶段", 4);
private String name;
private int value;
Process(String name, int value) {
this.name = name;
this.value = value;
}
@Override
public Integer getValue() {
return this.value;
}
public String getName() {
return this.name;
}
public static Process parse(Integer value) {
for (Process process : values()) {
if (process.getValue().equals(value)) {
return process;
}
}
return null;
}
}
/**
* 联系人
*/
private String contacts;
/**
* 联系电话
*/
private String phone;
/**
* 邮箱
*/
private String email;
/**
* 统一信用代码
*/
private String creditNo;
/**
* 通讯地址
*/
private String mailAddress;
/**
* 邮编
*/
private String postalCode;
/**
* 渠道分类
*/
private ChannelType channelType;
/**
* 渠道分类
*/
public enum ChannelType implements IEnum<Integer> {
/**
* 中介公司
*/
AGENT("中介公司", 0),
/**
* 广告
*/
AD("广告", 1),
/**
* 自开发渠道
*/
MY_CHANNEL("自开发渠道", 2),
/**
* 合作推荐
*/
COOPERATE("合作推荐", 3);
private String name;
private int value;
ChannelType(String name, int value) {
this.name = name;
this.value = value;
}
@Override
public Integer getValue() {
return this.value;
}
public String getName() {
return this.name;
}
public static ChannelType parse(Integer value) {
for (ChannelType channelType : values()) {
if (channelType.getValue().equals(value)) {
return channelType;
}
}
return null;
}
}
/**
* 渠道名称
*/
private String channelName;
2024-03-29 08:55:47 +08:00
private String buildId;
2024-03-29 08:55:47 +08:00
private String roomId;
private Long buildingId;
2024-03-29 08:55:47 +08:00
@TableField(exist = false)
private String roomName;
2024-01-23 16:42:27 +08:00
/**
* 是否黑名单(0-1-)
*/
private Boolean isBlacklist;
/**
* 客户备注
*/
private String remark;
/**
* 工商注册号
*/
private String regNo;
/**
* 经营状态
*/
private String status;
/**
* 组织机构代码
*/
private String orgNo;
/**
* 法人名
*/
private String operName;
/**
* 公司类型(企业性质)
*/
private String econKind;
/**
* 成立日期
*/
2024-03-29 08:55:47 +08:00
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
2024-01-23 16:42:27 +08:00
private Date startDate;
/**
* 登记机关
*/
2024-03-29 08:55:47 +08:00
// @NotBlank(message = "登记机关不能为空")
2024-01-23 16:42:27 +08:00
private String belongOrg;
/**
* 注册资金
*/
private String registCapi;
/**
* 注销日期
*/
2024-03-29 08:55:47 +08:00
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date endDate;
2024-01-23 16:42:27 +08:00
/**
* 注册地址
*/
2024-03-29 08:55:47 +08:00
// @NotBlank(message = "注册地址不能为空")
2024-01-23 16:42:27 +08:00
private String address;
/**
* 经营范围
*/
private String scope;
2024-03-29 08:55:47 +08:00
private Long parkId;
2024-01-23 16:42:27 +08:00
/**
* 关联园区
*/
@TableField(exist = false)
2024-01-23 16:42:27 +08:00
private Park park;
2024-03-08 08:33:31 +08:00
@TableField(exist = false)
private User user;
@TableField(exist = false)
private List<Long> buildingDetailIds;
@TableField(exist = false)
private List<Long> roomIds;
@TableField(exist = false)
private String tenantName;
@TableField(exist = false)
private String buildingName;
2024-01-23 16:42:27 +08:00
}