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; /** *
* 用户表 *
* * @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