package com.zy.asrs.wms.system.entity; import com.baomidou.mybatisplus.annotation.*; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.zy.asrs.common.domain.enums.LoginSystemType; import com.zy.asrs.framework.common.Cools; import com.zy.asrs.framework.common.SpringUtils; import com.zy.asrs.wms.system.service.*; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import net.sf.jsqlparser.expression.LongValue; 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 hostId; /** * 状态 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 User(String username,String password,String nickname,String avatar,String code,Integer sex,String phone,String email,Integer emailVerified,Long deptId,String realName,String idCard,String birthday,String introduction,Long hostId,Integer status,Integer deleted,Date createTime,Long createBy,Date updateTime,Long updateBy,String memo) { this.username = username; this.password = password; this.nickname = nickname; this.avatar = avatar; this.code = code; this.sex = sex; this.phone = phone; this.email = email; this.emailVerified = emailVerified; this.deptId = deptId; this.realName = realName; this.idCard = idCard; this.birthday = birthday; this.introduction = introduction; this.hostId = hostId; this.status = status; this.deleted = deleted; this.createTime = createTime; this.createBy = createBy; this.updateTime = updateTime; this.updateBy = updateBy; this.memo = memo; } // User user = new User( // null, // 账号[非空] // null, // 密码 // null, // 昵称 // null, // 头像 // null, // 工号 // null, // 性别 // null, // 手机号 // null, // 邮箱 // null, // 邮箱验证 // null, // 所属部门 // null, // 真实姓名 // null, // 身份证号 // null, // 出生日期 // null, // 个人简介 // null, // 所属机构 // null, // 状态 // null, // 是否删除 // null, // 添加时间 // null, // 添加人员 // null, // 修改时间 // null, // 修改人员 // null // 备注 // ); 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 getHostId$(){ HostService service = SpringUtils.getBean(HostService.class); Host host = service.getById(this.hostId); if (!Cools.isEmpty(host)){ return String.valueOf(host.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 getDeleted$(){ if (null == this.deleted){ return null; } switch (this.deleted){ case 1: return "是"; case 0: return "否"; default: return String.valueOf(this.deleted); } } 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 Long getHostId() { boolean root = false; UserRoleService userRoleService = SpringUtils.getBean(UserRoleService.class); UserLoginService userLoginService = SpringUtils.getBean(UserLoginService.class); List roles = userRoleService.listByUserId(this.id); for (Role role : roles) { if (role.getId() == 1) { root = true; break; } } if (root) { UserLogin userLogin = userLoginService.superFindByUserId(this.id, String.valueOf(LoginSystemType.WMS)); if (userLogin != null) { return userLogin.getHostId(); } } return this.hostId; } }