package com.vincent.rsf.server.system.entity; import com.baomidou.mybatisplus.annotation.*; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.vincent.rsf.framework.common.Cools; import com.vincent.rsf.framework.common.SpringUtils; import com.vincent.rsf.server.system.service.DeptService; import com.vincent.rsf.server.system.service.TenantService; import com.vincent.rsf.server.system.service.UserRoleService; import com.vincent.rsf.server.system.service.UserService; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import org.springframework.format.annotation.DateTimeFormat; import org.springframework.security.core.userdetails.UserDetails; import java.io.Serializable; import java.text.SimpleDateFormat; import java.util.Date; import java.util.List; @Data @TableName("sys_user") public class User implements Serializable, UserDetails { private static final long serialVersionUID = 1L; /** * ID */ @ApiModelProperty(value= "ID") @TableId(value = "id", type = IdType.AUTO) private Long id; /** * 账号 */ @ApiModelProperty(value= "账号") private String username; /** * 密码 */ @ApiModelProperty(value= "密码") private String password; /** * 昵称 */ @ApiModelProperty(value= "昵称") private String nickname; /** * 头像 */ @ApiModelProperty(value= "头像") private String avatar; /** * 工号 */ @ApiModelProperty(value= "工号") private String code; /** * 性别 0: 未知 1: 男 2: 女 */ @ApiModelProperty(value= "性别 0: 未知 1: 男 2: 女 ") private Integer sex; /** * 手机号 */ @ApiModelProperty(value= "手机号") private String phone; /** * 邮箱 */ @ApiModelProperty(value= "邮箱") private String email; /** * 邮箱验证 0: 否 1: 是 */ @ApiModelProperty(value= "邮箱验证 0: 否 1: 是 ") private Integer emailVerified; /** * 所属部门 */ @ApiModelProperty(value= "所属部门") private Long deptId; /** * 真实姓名 */ @ApiModelProperty(value= "真实姓名") private String realName; /** * 身份证号 */ @ApiModelProperty(value= "身份证号") private String idCard; /** * 出生日期 */ @ApiModelProperty(value= "出生日期") private String birthday; /** * 个人简介 */ @ApiModelProperty(value= "个人简介") private String introduction; /** * 所属机构 */ @ApiModelProperty(value= "所属机构") private Long tenantId; /** * 状态 1: 正常 0: 禁用 */ @ApiModelProperty(value= "状态 1: 正常 0: 禁用 ") private Integer status; /** * 是否删除 1: 是 0: 否 */ @ApiModelProperty(value= "是否删除 1: 是 0: 否 ") @TableLogic private Integer deleted; /** * 添加时间 */ @ApiModelProperty(value= "添加时间") @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") private Date createTime; /** * 添加人员 */ @ApiModelProperty(value= "添加人员") private Long createBy; /** * 修改时间 */ @ApiModelProperty(value= "修改时间") @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") private Date updateTime; /** * 修改人员 */ @ApiModelProperty(value= "修改人员") private Long updateBy; /** * 备注 */ @ApiModelProperty(value= "备注") private String memo; @TableField(exist = false) private Long[] roleIds; @TableField(exist = false) private List roles; @TableField(exist = false) private List authorities; public User() {} public String getSex$(){ if (null == this.sex){ return null; } switch (this.sex){ case 0: return "未知"; case 1: return "男"; case 2: return "女"; default: return String.valueOf(this.sex); } } public String getEmailVerified$(){ if (null == this.emailVerified){ return null; } switch (this.emailVerified){ case 0: return "否"; case 1: return "是"; default: return String.valueOf(this.emailVerified); } } public String getDeptId$(){ DeptService service = SpringUtils.getBean(DeptService.class); Dept dept = service.getById(this.deptId); if (!Cools.isEmpty(dept)){ return String.valueOf(dept.getName()); } return null; } public String getTenantId$(){ TenantService service = SpringUtils.getBean(TenantService.class); Tenant tenant = service.getById(this.tenantId); if (!Cools.isEmpty(tenant)){ return String.valueOf(tenant.getName()); } return null; } public String getStatus$(){ if (null == this.status){ return null; } switch (this.status){ case 1: return "正常"; case 0: return "禁用"; default: return String.valueOf(this.status); } } public String getCreateTime$(){ if (Cools.isEmpty(this.createTime)){ return ""; } return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.createTime); } public String getCreateBy$(){ UserService service = SpringUtils.getBean(UserService.class); User user = service.getById(this.createBy); if (!Cools.isEmpty(user)){ return String.valueOf(user.getNickname()); } return null; } public String getUpdateTime$(){ if (Cools.isEmpty(this.updateTime)){ return ""; } return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.updateTime); } public String getUpdateBy$(){ UserService service = SpringUtils.getBean(UserService.class); User user = service.getById(this.updateBy); if (!Cools.isEmpty(user)){ return String.valueOf(user.getNickname()); } return null; } public Long[] getRoleIds() { return this.roleIds; } public Long[] getUserRoleIds() { UserRoleService service = SpringUtils.getBean(UserRoleService.class); List list = service.list(new LambdaQueryWrapper().eq(UserRole::getUserId, this.id)); return list.stream().map(UserRole::getRoleId).toArray(Long[]::new); } @Override public boolean isAccountNonExpired() { return true; } @Override public boolean isAccountNonLocked() { return this.status != null && this.status == 1; } @Override public boolean isCredentialsNonExpired() { return true; } @Override public boolean isEnabled() { return true; } public Boolean getStatusBool(){ if (null == this.status){ return null; } switch (this.status){ case 1: return true; case 0: return false; default: return null; } } }