kongzy
2024-07-12 28aaf2ffa1dbb860a292ba330a7e9362e60e7832
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
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
package com.gkhy.assess.system.domain;
 
import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.gkhy.assess.common.domain.BaseEntity;
import com.gkhy.assess.common.validate.AgencyGroup;
import com.gkhy.assess.common.validate.ExpertGroup;
import com.gkhy.assess.common.validate.MonitorGroup;
import com.gkhy.assess.system.domain.vo.PersonProjectVO;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
import lombok.experimental.Accessors;
import org.hibernate.validator.constraints.Length;
 
import javax.validation.Valid;
import javax.validation.constraints.Max;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Pattern;
import java.time.LocalDateTime;
import java.util.List;
 
import static com.fasterxml.jackson.annotation.JsonInclude.Include.NON_NULL;
 
/**
 * <p>
 * 用户表
 * </p>
 *
 * @author kzy
 * @since 2023-10-17 14:26:29
 */
@Getter
@Setter
@TableName("sys_user")
@ApiModel(value = "SysUser对象", description = "用户表")
@Accessors(chain = true)
@JsonInclude(NON_NULL)
public class SysUser extends BaseEntity {
 
    private static final long serialVersionUID = 1L;
 
    @TableId(value = "id", type = IdType.AUTO)
    private Long id;
 
    @NotBlank(message = "用户名不能为空")
    @ApiModelProperty(value = "用户名",required = true)
    @Length(min=5,max=16,message = "用户名长度需要在{min}和{max}之间")
    @Pattern(regexp = "^[A-Za-z0-9]+$",message = "用户名只能由英文字母或者数字组成!")
    @TableField("username")
    private String username;
 
    @Length(min = 0, max = 20, message = "用户昵称/姓名不能超过20个字符")
    @ApiModelProperty("用户昵称/姓名")
    @TableField("name")
    private String name;
 
    @ApiModelProperty("用户身份(0代表监管用户,1代表机构用户,2代表专家用户)")
    @TableField("identity")
    private Integer identity;
 
    @NotNull(message = "用户类型不能为空",groups ={MonitorGroup.class} )
    @ApiModelProperty("用户类型(0代表工作人员,1代表领导,默认0)监管用户")
    @TableField("user_type")
    private Integer userType;
 
    @ApiModelProperty("邮箱")
    @TableField("email")
    private String email;
 
    @NotBlank(message = "手机号码不能为空")
    @Length(min = 11, max = 11, message = "手机号只能为11位")
    @Pattern(regexp = "^[1][3,4,5,6,7,8,9][0-9]{9}$",message = "手机号码有误!")
    @ApiModelProperty(value = "手机号码",required = true)
    @TableField("phone")
    private String phone;
 
    @ApiModelProperty("用户性别(0男,1女,2未知,默认2)")
    @TableField("sex")
    private Integer sex;
 
    @ApiModelProperty("头像路径")
    @TableField("avatar")
    private String avatar;
 
    /**
     * 密码生成规则:md5(用户名+密码+盐)
     */
    @NotBlank(message = "密码不能为空")
    @ApiModelProperty(value = "密码(base64)",required = true)
    @TableField("password")
    private String password;
 
    @ApiModelProperty("盐加密")
    @TableField("salt")
    private String salt;
 
    @ApiModelProperty("账号状态(0正常,1停用,默认0)")
    @TableField("status")
    private Integer status;
 
    @ApiModelProperty("删除标志(0代表存在,1代表删除,默认0)")
    @TableField("del_flag")
    private Integer delFlag;
 
    @NotBlank(message = "管辖区域不能为空",groups ={MonitorGroup.class} )
    @ApiModelProperty("管辖区域")
    @TableField("manage_region")
    private String manageRegion;
 
    @ApiModelProperty("机构id")
    @TableField("agency_id")
    private Long agencyId;
 
    @NotNull(message = "专家类型不能为空",groups ={ExpertGroup.class} )
    @ApiModelProperty("专家类型(专家用户)(1安全评价,2检验检测)")
    @TableField("expert_type")
    private Integer expertType;
 
 
//    @ApiModelProperty("社保一致性(0代表相同,1代表不同,默认0)")
//    @TableField("social_same")
//    private Integer socialSame;
 
    @NotBlank(message = "职务不能为空",groups ={ExpertGroup.class} )
    @ApiModelProperty("职务")
    @TableField("post")
    private String post;
 
    @NotBlank(message = "职称不能为空",groups ={ExpertGroup.class} )
    @ApiModelProperty("职称")
    @TableField("job_title")
    private String jobTitle;
 
    @NotBlank(message = "专业方向不能为空",groups ={ExpertGroup.class} )
    @ApiModelProperty("专业方向,新增时传(json字符串{'专业id':'证书编号1','专业id':'证书编号2'}),查询时传字典id")
    @TableField("major")
    private String major;
 
    @ApiModelProperty("审批状态(0暂存,1审核中,2审批通过,3审批驳回,4已作废 默认1)")
    @TableField("state")
    private Integer state;
 
    @ApiModelProperty("最后登录ip")
    @TableField("login_ip")
    private String loginIp;
 
    @ApiModelProperty("最后登录时间")
    @TableField("login_date")
    private LocalDateTime loginDate;
 
    @ApiModelProperty("密码最后更新时间")
    @TableField("pwd_update_date")
    private LocalDateTime pwdUpdateDate;
 
    @Version
    @ApiModelProperty("乐观锁")
    @TableField("version")
    private Integer version;
 
    @ApiModelProperty("证书编号,多个证书,逗号隔开")
    @TableField("certificate_no")
    private String certificateNo;
 
    @ApiModelProperty("近期证件照路径")
    @TableField("id_photo")
    private String idPhoto;
 
    @ApiModelProperty("评价师等级")
    @TableField("level")
    private String level;
 
    @Valid
    @NotNull(message = "机构不能为空",groups ={AgencyGroup.class} )
    @ApiModelProperty("机构对象,只限创建机构用户传参")
    @TableField(exist = false)
    private SysAgency agency;
 
 
    @ApiModelProperty("社保照片路径列表,创建专家传参")
    @TableField(exist = false)
    private List<SysAttach> socialAttach;
 
    @ApiModelProperty("医保照片路径列表,创建专家传参")
    @TableField(exist = false)
    private List<SysAttach> medicalAttach;
 
    @ApiModelProperty("工资照片路径列表,创建专家传参")
    @TableField(exist = false)
    private List<SysAttach> salaryAttach;
 
    @ApiModelProperty("专业列表")
    @TableField(exist = false)
    List<String> majorNames;
 
    @ApiModelProperty("汇总项目信息")
    @TableField(exist = false)
    private PersonProjectVO personProjectVO;
 
    @ApiModelProperty("机构名称")
    @TableField(exist = false)
    private String agencyName;
 
}