云
2 天以前 87733eb3623593da247c051593d64b8ff9e1d3a4
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
package cn.iocoder.yudao.module.crm.controller.admin.customer.vo.customer;
 
import cn.iocoder.yudao.framework.common.validation.InEnum;
import cn.iocoder.yudao.framework.common.validation.Mobile;
import cn.iocoder.yudao.framework.common.validation.Telephone;
import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat;
import cn.iocoder.yudao.module.crm.enums.customer.CrmCustomerLevelEnum;
import cn.iocoder.yudao.module.crm.framework.operatelog.core.CrmCustomerIndustryParseFunction;
import cn.iocoder.yudao.module.crm.framework.operatelog.core.CrmCustomerLevelParseFunction;
import cn.iocoder.yudao.module.crm.framework.operatelog.core.CrmCustomerSourceParseFunction;
import cn.iocoder.yudao.module.crm.framework.operatelog.core.SysAreaParseFunction;
import com.mzt.logapi.starter.annotation.DiffLogField;
import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.Email;
import jakarta.validation.constraints.NotEmpty;
import jakarta.validation.constraints.NotNull;
import jakarta.validation.constraints.Size;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
 
import java.time.LocalDateTime;
 
import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
import static cn.iocoder.yudao.module.crm.enums.DictTypeConstants.CRM_CUSTOMER_INDUSTRY;
 
@Schema(description = "管理后台 - CRM 客户新增/修改 Request VO")
@Data
public class CrmCustomerSaveReqVO {
 
    @Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "13563")
    private Long id;
 
    @Schema(description = "客户名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "赵六")
    @DiffLogField(name = "客户名称")
    @NotEmpty(message = "客户名称不能为空")
    private String name;
 
    @Schema(description = "社会信用代码", example = "91320600MA1XXXXXXX")
    @DiffLogField(name = "社会信用代码")
    @Size(max = 64, message = "社会信用代码长度不能超过 64 个字符")
    private String socialCreditCode;
 
    @Schema(description = "身份证号", example = "320602199001011234")
    @DiffLogField(name = "身份证号")
    @Size(max = 32, message = "身份证号长度不能超过 32 个字符")
    private String idCardNo;
 
    @Schema(description = "客户姓名", example = "张三")
    @DiffLogField(name = "客户姓名")
    @Size(max = 64, message = "客户姓名长度不能超过 64 个字符")
    private String customerName;
 
    @Schema(description = "备案流水号", example = "BA2026000001")
    @DiffLogField(name = "备案流水号")
    @Size(max = 64, message = "备案流水号长度不能超过 64 个字符")
    private String filingSerialNo;
 
    @Schema(description = "银行账户名称", example = "南通某某农业有限公司")
    @DiffLogField(name = "银行账户名称")
    @Size(max = 128, message = "银行账户名称长度不能超过 128 个字符")
    private String bankAccountName;
 
    @Schema(description = "所属区域", example = "南通")
    @DiffLogField(name = "所属区域")
    @Size(max = 64, message = "所属区域长度不能超过 64 个字符")
    private String region;
 
    @Schema(description = "所属上级经销商编号", example = "1024")
    @DiffLogField(name = "所属上级经销商编号")
    private Long parentDealerId;
 
    @Schema(description = "下次联系时间")
    @DiffLogField(name = "下次联系时间")
    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
    private LocalDateTime contactNextTime;
 
    @Schema(description = "负责人的用户编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "13563")
    @NotNull(message = "负责人的用户编号不能为空")
    private Long ownerUserId;
 
    @Schema(description = "手机", example = "18000000000")
    @DiffLogField(name = "手机")
    @Mobile
    private String mobile;
 
    @Schema(description = "电话", example = "18000000000")
    @DiffLogField(name = "电话")
    @Telephone
    private String telephone;
 
    @Schema(description = "QQ", example = "123456789")
    @DiffLogField(name = "QQ")
    @Size(max = 20, message = "QQ长度不能超过 20 个字符")
    private String qq;
 
    @Schema(description = "微信", example = "123456789")
    @DiffLogField(name = "微信")
    @Size(max = 255, message = "微信长度不能超过 255 个字符")
    private String wechat;
 
    @Schema(description = "邮箱", example = "123456789@qq.com")
    @DiffLogField(name = "邮箱")
    @Email(message = "邮箱格式不正确")
    @Size(max = 255, message = "邮箱长度不能超过 255 个字符")
    private String email;
 
    @Schema(description = "地区编号", example = "20158")
    @DiffLogField(name = "地区编号", function = SysAreaParseFunction.NAME)
    private Integer areaId;
 
    @Schema(description = "详细地址", example = "北京市海淀区")
    @DiffLogField(name = "详细地址")
    private String detailAddress;
 
    @Schema(description = "所属行业", example = "1")
    @DiffLogField(name = "所属行业", function = CrmCustomerIndustryParseFunction.NAME)
    @DictFormat(CRM_CUSTOMER_INDUSTRY)
    private Integer industryId;
 
    @Schema(description = "客户等级", example = "2")
    @DiffLogField(name = "客户等级", function = CrmCustomerLevelParseFunction.NAME)
    @InEnum(CrmCustomerLevelEnum.class)
    private Integer level;
 
    @Schema(description = "客户来源", example = "3")
    @DiffLogField(name = "客户来源", function = CrmCustomerSourceParseFunction.NAME)
    private Integer source;
 
    @Schema(description = "备注", example = "随便")
    @DiffLogField(name = "备注")
    private String remark;
 
}