package com.example.demo.domain.entity; import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import lombok.Data; import lombok.NoArgsConstructor; import org.springframework.security.core.GrantedAuthority; import org.springframework.security.core.authority.SimpleGrantedAuthority; import org.springframework.security.core.userdetails.UserDetails; import java.io.Serializable; import java.util.*; @Data @NoArgsConstructor @JsonIgnoreProperties(ignoreUnknown = true) public class Admin implements UserDetails, Serializable { private static final long serialVersionUID = 1L; private Integer id; // 主键ID private String adminName; // 用户姓名 private String account; // 账号 private String password; // 密码 private String machineId; // 机器码,限两个 private Byte adminStatus; // 状态(启用/不启用) private String market; // 地区 private String postiton; // 职位 private String remark; // 备注 @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai") private Date createTime; // 创建时间 @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai") private Date updateTime; // 更新时间 private Integer roleId; @Override @JsonIgnore public Collection getAuthorities() { Set authorities = new HashSet<>(); Optional.ofNullable(postiton) .map(Integer::valueOf) .ifPresent(permValue -> { switch (permValue) { case 1: authorities.add(new SimpleGrantedAuthority("ROLE_SUPER_ADMIN")); break; case 2: authorities.add(new SimpleGrantedAuthority("ROLE_ADMIN")); break; case 3: authorities.add(new SimpleGrantedAuthority("ROLE_AUDITORS")); break; case 5: authorities.add(new SimpleGrantedAuthority("Branch_Manager")); break; default: // 可以添加默认角色或处理未知权限 break; } }); return authorities; } @Override public String getUsername() { return account; } @Override @JsonIgnore public boolean isAccountNonExpired() { return true; // 默认账户未过期 } @Override @JsonIgnore public boolean isAccountNonLocked() { return true; // 默认账户未锁定 } @Override @JsonIgnore public boolean isCredentialsNonExpired() { return true; // 默认凭证未过期 } @Override @JsonIgnore public boolean isEnabled() { return adminStatus != null && adminStatus == 1; } }