From 79b847f9a4c5baa54865b36b30e3da694f02aa35 Mon Sep 17 00:00:00 2001 From: Odboy Date: Mon, 29 Dec 2025 23:12:01 +0800 Subject: [PATCH] =?UTF-8?q?fix(system):=20=E4=BF=AE=E5=A4=8D=E9=87=8D?= =?UTF-8?q?=E6=9E=84=E5=AF=BC=E8=87=B4=E7=94=A8=E6=88=B7=E8=AE=A4=E8=AF=81?= =?UTF-8?q?=E5=A4=B1=E8=B4=A5=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../system/dal/model/SystemUserJwtVo.java | 76 ++++++++++--------- .../core/handler/UserDetailsHandler.java | 54 +++++++------ .../system/service/SystemUserService.java | 46 +++++++---- .../system/dal/model/SystemUserJwtVo.java | 3 +- .../core/handler/UserDetailsHandler.java | 4 +- .../system/service/SystemUserService.java | 4 + 6 files changed, 106 insertions(+), 81 deletions(-) diff --git a/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/dal/model/SystemUserJwtVo.java b/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/dal/model/SystemUserJwtVo.java index 4f8de448..53d69c63 100644 --- a/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/dal/model/SystemUserJwtVo.java +++ b/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/dal/model/SystemUserJwtVo.java @@ -15,7 +15,6 @@ */ package cn.odboy.system.dal.model; -import cn.odboy.system.dal.dataobject.SystemUserTb; import com.alibaba.fastjson2.annotation.JSONField; import io.swagger.annotations.ApiModelProperty; import java.util.List; @@ -29,47 +28,50 @@ import org.springframework.security.core.userdetails.UserDetails; @AllArgsConstructor public class SystemUserJwtVo implements UserDetails { - @ApiModelProperty(value = "用户") private final SystemUserTb user; - @ApiModelProperty(value = "数据权限") private final List dataScopes; - @ApiModelProperty(value = "角色") private final List authorities; + @ApiModelProperty(value = "用户") + private final SystemUserVo user; + @ApiModelProperty(value = "数据权限") + private final List dataScopes; + @ApiModelProperty(value = "角色") + private final List authorities; - public Set getRoles() { - return authorities.stream().map(SystemRoleCodeVo::getAuthority).collect(Collectors.toSet()); - } + public Set getRoles() { + return authorities.stream().map(SystemRoleCodeVo::getAuthority).collect(Collectors.toSet()); + } - @Override - @JSONField(serialize = false) - public String getPassword() { - return user.getPassword(); - } + @Override + @JSONField(serialize = false) + public String getPassword() { + return user.getPassword(); + } - @Override - @JSONField(serialize = false) - public String getUsername() { - return user.getUsername(); - } + @Override + @JSONField(serialize = false) + public String getUsername() { + return user.getUsername(); + } - @Override - @JSONField(serialize = false) - public boolean isAccountNonExpired() { - return true; - } + @Override + @JSONField(serialize = false) + public boolean isAccountNonExpired() { + return true; + } - @Override - @JSONField(serialize = false) - public boolean isAccountNonLocked() { - return true; - } + @Override + @JSONField(serialize = false) + public boolean isAccountNonLocked() { + return true; + } - @Override - @JSONField(serialize = false) - public boolean isCredentialsNonExpired() { - return true; - } + @Override + @JSONField(serialize = false) + public boolean isCredentialsNonExpired() { + return true; + } - @Override - @JSONField(serialize = false) - public boolean isEnabled() { - return user.getEnabled(); - } + @Override + @JSONField(serialize = false) + public boolean isEnabled() { + return user.getEnabled(); + } } diff --git a/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/framework/permission/core/handler/UserDetailsHandler.java b/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/framework/permission/core/handler/UserDetailsHandler.java index f5d235be..d7519022 100644 --- a/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/framework/permission/core/handler/UserDetailsHandler.java +++ b/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/framework/permission/core/handler/UserDetailsHandler.java @@ -13,13 +13,12 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package cn.odboy.system.framework.permission.core.handler; import cn.odboy.framework.exception.BadRequestException; -import cn.odboy.system.dal.dataobject.SystemUserTb; import cn.odboy.system.dal.model.SystemRoleCodeVo; import cn.odboy.system.dal.model.SystemUserJwtVo; +import cn.odboy.system.dal.model.SystemUserVo; import cn.odboy.system.dal.redis.SystemUserInfoDAO; import cn.odboy.system.service.SystemDataService; import cn.odboy.system.service.SystemRoleService; @@ -36,30 +35,35 @@ import org.springframework.stereotype.Service; @Slf4j @Service("userDetailsService") public class UserDetailsHandler implements UserDetailsService { - @Autowired private SystemRoleService systemRoleService; - @Autowired private SystemUserService systemUserService; - @Autowired private SystemDataService systemDataService; - @Autowired private SystemUserInfoDAO systemUserInfoDAO; - @Override - public SystemUserJwtVo loadUserByUsername(String username) { - SystemUserJwtVo userJwtVo = systemUserInfoDAO.getUserLoginInfoByUserName(username); - if (userJwtVo == null) { - SystemUserTb user = systemUserService.getUserByUsername(username); - if (user == null) { - throw new BadRequestException("用户不存在"); - } else { - if (!user.getEnabled()) { - throw new BadRequestException("账号未激活"); - } - // 获取用户的权限 - List authorities = systemRoleService.buildUserRolePermissions(user); - // 初始化JwtUserDto - userJwtVo = new SystemUserJwtVo(user, systemDataService.queryDeptIdByArgs(user), authorities); - // 添加缓存数据 - systemUserInfoDAO.saveUserLoginInfoByUserName(username, userJwtVo); - } + @Autowired + private SystemRoleService systemRoleService; + @Autowired + private SystemUserService systemUserService; + @Autowired + private SystemDataService systemDataService; + @Autowired + private SystemUserInfoDAO systemUserInfoDAO; + + @Override + public SystemUserJwtVo loadUserByUsername(String username) { + SystemUserJwtVo userJwtVo = systemUserInfoDAO.getUserLoginInfoByUserName(username); + if (userJwtVo == null) { + SystemUserVo user = systemUserService.getUserVoByUsername(username); + if (user == null) { + throw new BadRequestException("用户不存在"); + } else { + if (!user.getEnabled()) { + throw new BadRequestException("账号未激活"); } - return userJwtVo; + // 获取用户的权限 + List authorities = systemRoleService.buildUserRolePermissions(user); + // 初始化JwtUserDto + userJwtVo = new SystemUserJwtVo(user, systemDataService.queryDeptIdByArgs(user), authorities); + // 添加缓存数据 + systemUserInfoDAO.saveUserLoginInfoByUserName(username, userJwtVo); + } } + return userJwtVo; + } } diff --git a/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/service/SystemUserService.java b/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/service/SystemUserService.java index 23bd7c87..62d32455 100644 --- a/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/service/SystemUserService.java +++ b/cutejava-springboot3/cutejava-module-system/src/main/java/cn/odboy/system/service/SystemUserService.java @@ -66,17 +66,28 @@ import org.springframework.web.multipart.MultipartFile; @Service public class SystemUserService { - @Autowired private SystemUserMapper systemUserMapper; - @Autowired private SystemUserJobService systemUserJobService; - @Autowired private SystemUserRoleService systemUserRoleService; - @Autowired private SystemUserInfoDAO systemUserInfoDAO; - @Autowired private SystemUserOnlineInfoDAO systemUserOnlineInfoDAO; - @Autowired private KitFileLocalUploadHelper fileUploadPathHelper; - @Autowired private SystemUserJobMapper systemUserJobMapper; - @Autowired private SystemUserRoleMapper systemUserRoleMapper; - @Autowired private SystemJobMapper systemJobMapper; - @Autowired private SystemRoleMapper systemRoleMapper; - @Autowired private SystemDeptMapper systemDeptMapper; + @Autowired + private SystemUserMapper systemUserMapper; + @Autowired + private SystemUserJobService systemUserJobService; + @Autowired + private SystemUserRoleService systemUserRoleService; + @Autowired + private SystemUserInfoDAO systemUserInfoDAO; + @Autowired + private SystemUserOnlineInfoDAO systemUserOnlineInfoDAO; + @Autowired + private KitFileLocalUploadHelper fileUploadPathHelper; + @Autowired + private SystemUserJobMapper systemUserJobMapper; + @Autowired + private SystemUserRoleMapper systemUserRoleMapper; + @Autowired + private SystemJobMapper systemJobMapper; + @Autowired + private SystemRoleMapper systemRoleMapper; + @Autowired + private SystemDeptMapper systemDeptMapper; /** * 新增用户 @@ -401,12 +412,13 @@ public class SystemUserService { wrapper.in(SystemUserTb::getDeptId, args.getDeptIds()); } if (StrUtil.isNotBlank(args.getBlurry())) { - wrapper.and(w -> w.like(SystemUserTb::getUsername, args.getBlurry()).or() - .like(SystemUserTb::getNickName, args.getBlurry()).or() - .like(SystemUserTb::getEmail, args.getBlurry())); + wrapper.and(w -> w.like(SystemUserTb::getUsername, args.getBlurry()) + .or().like(SystemUserTb::getNickName, args.getBlurry()) + .or().like(SystemUserTb::getEmail, args.getBlurry())); } if (CollUtil.isNotEmpty(args.getCreateTime()) && args.getCreateTime().size() >= 2) { - wrapper.between(SystemUserTb::getCreateTime, args.getCreateTime().get(0), args.getCreateTime().get(1)); + wrapper.between(SystemUserTb::getCreateTime, args.getCreateTime().get(0), + args.getCreateTime().get(1)); } } wrapper.orderByDesc(SystemUserTb::getCreateTime); @@ -461,6 +473,10 @@ public class SystemUserService { return systemUserMapper.selectOne(wrapper); } + public SystemUserVo getUserVoByUsername(String username) { + return this.convertToUserVo(this.getUserByUsername(username)); + } + public long countUserByDeptIds(Set deptIds) { LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); wrapper.in(SystemUserTb::getDeptId, deptIds); diff --git a/cutejava/cutejava-module-system/src/main/java/cn/odboy/system/dal/model/SystemUserJwtVo.java b/cutejava/cutejava-module-system/src/main/java/cn/odboy/system/dal/model/SystemUserJwtVo.java index 6e7a22df..dbbd3545 100644 --- a/cutejava/cutejava-module-system/src/main/java/cn/odboy/system/dal/model/SystemUserJwtVo.java +++ b/cutejava/cutejava-module-system/src/main/java/cn/odboy/system/dal/model/SystemUserJwtVo.java @@ -15,7 +15,6 @@ */ package cn.odboy.system.dal.model; -import cn.odboy.system.dal.dataobject.SystemUserTb; import com.alibaba.fastjson2.annotation.JSONField; import io.swagger.annotations.ApiModelProperty; import java.util.List; @@ -30,7 +29,7 @@ import org.springframework.security.core.userdetails.UserDetails; public class SystemUserJwtVo implements UserDetails { @ApiModelProperty(value = "用户") - private final SystemUserTb user; + private final SystemUserVo user; @ApiModelProperty(value = "数据权限") private final List dataScopes; @ApiModelProperty(value = "角色") diff --git a/cutejava/cutejava-module-system/src/main/java/cn/odboy/system/framework/permission/core/handler/UserDetailsHandler.java b/cutejava/cutejava-module-system/src/main/java/cn/odboy/system/framework/permission/core/handler/UserDetailsHandler.java index ca8a6d09..1c0c0e27 100644 --- a/cutejava/cutejava-module-system/src/main/java/cn/odboy/system/framework/permission/core/handler/UserDetailsHandler.java +++ b/cutejava/cutejava-module-system/src/main/java/cn/odboy/system/framework/permission/core/handler/UserDetailsHandler.java @@ -16,9 +16,9 @@ package cn.odboy.system.framework.permission.core.handler; import cn.odboy.framework.exception.BadRequestException; -import cn.odboy.system.dal.dataobject.SystemUserTb; import cn.odboy.system.dal.model.SystemRoleCodeVo; import cn.odboy.system.dal.model.SystemUserJwtVo; +import cn.odboy.system.dal.model.SystemUserVo; import cn.odboy.system.dal.redis.SystemUserInfoDAO; import cn.odboy.system.service.SystemDataService; import cn.odboy.system.service.SystemRoleService; @@ -49,7 +49,7 @@ public class UserDetailsHandler implements UserDetailsService { public SystemUserJwtVo loadUserByUsername(String username) { SystemUserJwtVo userJwtVo = systemUserInfoDAO.getUserLoginInfoByUserName(username); if (userJwtVo == null) { - SystemUserTb user = systemUserService.getUserByUsername(username); + SystemUserVo user = systemUserService.getUserVoByUsername(username); if (user == null) { throw new BadRequestException("用户不存在"); } else { diff --git a/cutejava/cutejava-module-system/src/main/java/cn/odboy/system/service/SystemUserService.java b/cutejava/cutejava-module-system/src/main/java/cn/odboy/system/service/SystemUserService.java index 2aa9b7bf..218a94f9 100644 --- a/cutejava/cutejava-module-system/src/main/java/cn/odboy/system/service/SystemUserService.java +++ b/cutejava/cutejava-module-system/src/main/java/cn/odboy/system/service/SystemUserService.java @@ -473,6 +473,10 @@ public class SystemUserService { return systemUserMapper.selectOne(wrapper); } + public SystemUserVo getUserVoByUsername(String username) { + return this.convertToUserVo(this.getUserByUsername(username)); + } + public long countUserByDeptIds(Set deptIds) { LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); wrapper.in(SystemUserTb::getDeptId, deptIds);