package com.vincent.rsf.server.system.entity; 
 | 
  
 | 
import com.baomidou.mybatisplus.annotation.*; 
 | 
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; 
 | 
import com.fasterxml.jackson.annotation.JsonFormat; 
 | 
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") 
 | 
    @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss",timezone = "GMT+8") 
 | 
    private Date createTime; 
 | 
  
 | 
    /** 
 | 
     * 添加人员 
 | 
     */ 
 | 
    @ApiModelProperty(value= "添加人员") 
 | 
    private Long createBy; 
 | 
  
 | 
    /** 
 | 
     * 修改时间 
 | 
     */ 
 | 
    @ApiModelProperty(value= "修改时间") 
 | 
    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") 
 | 
    @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss",timezone = "GMT+8") 
 | 
    private Date updateTime; 
 | 
  
 | 
    /** 
 | 
     * 修改人员 
 | 
     */ 
 | 
    @ApiModelProperty(value= "修改人员") 
 | 
    private Long updateBy; 
 | 
  
 | 
    /** 
 | 
     * 备注 
 | 
     */ 
 | 
    @ApiModelProperty(value= "备注") 
 | 
    private String memo; 
 | 
  
 | 
    @TableField(exist = false) 
 | 
    private Long[] roleIds; 
 | 
  
 | 
    @TableField(exist = false) 
 | 
    private List<Role> roles; 
 | 
  
 | 
    @TableField(exist = false) 
 | 
    private List<Menu> 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<UserRole> list = service.list(new LambdaQueryWrapper<UserRole>().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; 
 | 
        } 
 | 
    } 
 | 
  
 | 
  
 | 
  
 | 
} 
 |