package com.project.common.core.domain.entity; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableLogic; import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.annotation.JsonInclude; import com.project.common.annotation.Excel; import com.project.common.annotation.Excel.Type; import com.project.common.annotation.Excels; import com.project.common.annotation.Sensitive; import com.project.common.xss.Xss; import lombok.Data; import lombok.NoArgsConstructor; import org.apache.commons.lang3.builder.ToStringBuilder; import org.apache.commons.lang3.builder.ToStringStyle; import javax.validation.constraints.Size; import java.io.Serializable; import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; /** * 用户对象 sys_user * * @author project */ @Data @NoArgsConstructor public class SysUser implements Serializable { private static final long serialVersionUID = 1L; /** 用户ID */ @TableId("user_id") private Long userId; /** 部门ID */ private Long deptId; /** 用户账号 */ private String userName; /** 用户类型(00系统用户,01执法用户,02企业用户) */ private String userType; /** 用户等级 */ @Sensitive(type = Sensitive.SensitiveType.DEFAULT) private String nickName; /** 用户邮箱 */ private String email; /** 手机号码 */ @Sensitive(type = Sensitive.SensitiveType.PHONE) private String phonenumber; /** openid */ private String wxOpenid; /** 用户性别 */ private String sex; /** 用户头像 */ private String avatar; /** 密码 */ private String password; /** 帐号状态(0正常 1停用) */ private String status; /** 删除标志(0代表存在 2代表删除) */ @TableLogic(value = "0",delval = "1") private String delFlag; /** 最后登录IP */ private String loginIp; /** 最后登录时间 */ private Date loginDate; private String createBy; /** 创建时间 */ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private Date createTime; /** 更新者 */ private String updateBy; /** 更新时间 */ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private Date updateTime; /** 备注 */ private String remark; /** 备注 */ private String recommendUser; /** 所属执法机构 */ private String recommendPhone; /** 生日 */ private String birthday; //省 private String province; //市 private String city; //区 private String area; /** 请求参数 */ @JsonInclude(JsonInclude.Include.NON_EMPTY) @TableField(exist = false) private Map params; public Map getParams() { if (params == null) { params = new HashMap<>(); } return params; } /** 部门对象 */ @Excels({ @Excel(name = "部门名称", targetAttr = "deptName", type = Type.EXPORT), @Excel(name = "部门负责人", targetAttr = "leader", type = Type.EXPORT) }) @TableField(exist = false) private SysDept dept; /** 角色对象 */ @TableField(exist = false) private List roles; /** 角色组 */ @TableField(exist = false) private Long[] roleIds; /** 岗位组 */ @TableField(exist = false) private Long[] postIds; /** 角色ID */ @TableField(exist = false) private Long roleId; public SysUser(Long userId) { this.userId = userId; } public boolean isAdmin() { return isAdmin(this.userId); } public static boolean isAdmin(Long userId) { return userId != null && 1L == userId; } @Xss(message = "用户昵称不能包含脚本字符") public String getNickName() { return nickName; } @Xss(message = "用户账号不能包含脚本字符") public String getUserName() { return userName; } @Size(min = 0, max = 11, message = "手机号码长度不能超过11个字符") public String getPhonenumber() { return phonenumber; } @Override public String toString() { return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) .append("userId", getUserId()) .append("deptId", getDeptId()) .append("userName", getUserName()) .append("nickName", getNickName()) .append("email", getEmail()) .append("phonenumber", getPhonenumber()) .append("sex", getSex()) .append("avatar", getAvatar()) .append("password", getPassword()) .append("status", getStatus()) .append("delFlag", getDelFlag()) .append("loginIp", getLoginIp()) .append("loginDate", getLoginDate()) .append("createBy", getCreateBy()) .append("createTime", getCreateTime()) .append("updateBy", getUpdateBy()) .append("updateTime", getUpdateTime()) .append("remark", getRemark()) .append("dept", getDept()) .toString(); } }