From 4451c170c8cb81496c71a0a4a550294d7d76dd45 Mon Sep 17 00:00:00 2001 From: "Ray.Hao" <1490493387@qq.com> Date: Wed, 2 Apr 2025 09:49:53 +0800 Subject: [PATCH] =?UTF-8?q?refactor:=20=E8=8E=B7=E5=8F=96=E7=94=A8?= =?UTF-8?q?=E6=88=B7=E8=AE=A4=E8=AF=81=E5=87=AD=E8=AF=81=E4=BF=A1=E6=81=AF?= =?UTF-8?q?=E6=96=B9=E6=B3=95=E5=91=BD=E5=90=8D=E5=90=88=E7=90=86=E8=B0=83?= =?UTF-8?q?=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../sms/SmsAuthenticationProvider.java | 10 ++-- .../wechat/WechatAuthenticationProvider.java | 14 ++--- .../core/security/model/SysUserDetails.java | 4 +- ...dentials.java => UserAuthCredentials.java} | 2 +- .../service/SysUserDetailsService.java | 8 +-- .../boot/system/service/UserService.java | 14 ++--- .../system/service/impl/UserServiceImpl.java | 53 +++++++++---------- .../resources/mapper/system/UserMapper.xml | 2 +- 8 files changed, 53 insertions(+), 54 deletions(-) rename src/main/java/com/youlai/boot/core/security/model/{AuthCredentials.java => UserAuthCredentials.java} (95%) diff --git a/src/main/java/com/youlai/boot/core/security/extension/sms/SmsAuthenticationProvider.java b/src/main/java/com/youlai/boot/core/security/extension/sms/SmsAuthenticationProvider.java index 553d6d6c..74c98cda 100644 --- a/src/main/java/com/youlai/boot/core/security/extension/sms/SmsAuthenticationProvider.java +++ b/src/main/java/com/youlai/boot/core/security/extension/sms/SmsAuthenticationProvider.java @@ -5,7 +5,7 @@ import cn.hutool.core.util.StrUtil; import com.youlai.boot.common.constant.RedisConstants; import com.youlai.boot.core.security.exception.CaptchaValidationException; import com.youlai.boot.core.security.model.SysUserDetails; -import com.youlai.boot.core.security.model.AuthCredentials; +import com.youlai.boot.core.security.model.UserAuthCredentials; import com.youlai.boot.system.service.UserService; import lombok.extern.slf4j.Slf4j; import org.springframework.data.redis.core.RedisTemplate; @@ -49,14 +49,14 @@ public class SmsAuthenticationProvider implements AuthenticationProvider { String inputVerifyCode = (String) authentication.getCredentials(); // 根据手机号获取用户信息 - AuthCredentials authCredentials = userService.getAuthCredentialsByMobile(mobile); + UserAuthCredentials userAuthCredentials = userService.getAuthCredentialsByMobile(mobile); - if (authCredentials == null) { + if (userAuthCredentials == null) { throw new UsernameNotFoundException("用户不存在"); } // 检查用户状态是否有效 - if (ObjectUtil.notEqual(authCredentials.getStatus(), 1)) { + if (ObjectUtil.notEqual(userAuthCredentials.getStatus(), 1)) { throw new DisabledException("用户已被禁用"); } @@ -72,7 +72,7 @@ public class SmsAuthenticationProvider implements AuthenticationProvider { } // 构建认证后的用户详情信息 - SysUserDetails userDetails = new SysUserDetails(authCredentials); + SysUserDetails userDetails = new SysUserDetails(userAuthCredentials); // 创建已认证的 SmsAuthenticationToken return SmsAuthenticationToken.authenticated( diff --git a/src/main/java/com/youlai/boot/core/security/extension/wechat/WechatAuthenticationProvider.java b/src/main/java/com/youlai/boot/core/security/extension/wechat/WechatAuthenticationProvider.java index 15e9a329..4c8b1c61 100644 --- a/src/main/java/com/youlai/boot/core/security/extension/wechat/WechatAuthenticationProvider.java +++ b/src/main/java/com/youlai/boot/core/security/extension/wechat/WechatAuthenticationProvider.java @@ -5,7 +5,7 @@ import cn.binarywang.wx.miniapp.bean.WxMaJscode2SessionResult; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import com.youlai.boot.core.security.model.SysUserDetails; -import com.youlai.boot.core.security.model.AuthCredentials; +import com.youlai.boot.core.security.model.UserAuthCredentials; import com.youlai.boot.system.service.UserService; import lombok.extern.slf4j.Slf4j; import me.chanjar.weixin.common.error.WxErrorException; @@ -63,27 +63,27 @@ public class WechatAuthenticationProvider implements AuthenticationProvider { } // 根据微信 OpenID 查询用户信息 - AuthCredentials authCredentials = userService.getAuthCredentialsByOpenId(openId); + UserAuthCredentials userAuthCredentials = userService.getAuthCredentialsByOpenId(openId); - if (authCredentials == null) { + if (userAuthCredentials == null) { // TODO: 用户不存在则注册,这里需要获取用户手机号并与现有用户绑定 userService.registerOrBindWechatUser(openId); // 再次查询用户信息,确保用户注册成功 - authCredentials = userService.getAuthCredentialsByOpenId(openId); - if (authCredentials == null) { + userAuthCredentials = userService.getAuthCredentialsByOpenId(openId); + if (userAuthCredentials == null) { throw new UsernameNotFoundException("用户注册失败,请稍后重试"); } } // 检查用户状态是否有效 - if (ObjectUtil.notEqual(authCredentials.getStatus(), 1)) { + if (ObjectUtil.notEqual(userAuthCredentials.getStatus(), 1)) { throw new DisabledException("用户已被禁用"); } // 这里因为已经根据 code 从微信小程序获取到 openid 不需要再经过系统认证,所以直接生成 // 构建认证后的用户详情信息 - SysUserDetails userDetails = new SysUserDetails(authCredentials); + SysUserDetails userDetails = new SysUserDetails(userAuthCredentials); // 创建已认证的 WeChatAuthenticationToken return WechatAuthenticationToken.authenticated( diff --git a/src/main/java/com/youlai/boot/core/security/model/SysUserDetails.java b/src/main/java/com/youlai/boot/core/security/model/SysUserDetails.java index 5a86ca97..4037bc8c 100644 --- a/src/main/java/com/youlai/boot/core/security/model/SysUserDetails.java +++ b/src/main/java/com/youlai/boot/core/security/model/SysUserDetails.java @@ -64,9 +64,9 @@ public class SysUserDetails implements UserDetails { /** * 构造函数:根据用户认证信息初始化用户详情对象 * - * @param user 用户认证信息对象 {@link AuthCredentials} + * @param user 用户认证信息对象 {@link UserAuthCredentials} */ - public SysUserDetails(AuthCredentials user) { + public SysUserDetails(UserAuthCredentials user) { this.userId = user.getUserId(); this.username = user.getUsername(); this.password = user.getPassword(); diff --git a/src/main/java/com/youlai/boot/core/security/model/AuthCredentials.java b/src/main/java/com/youlai/boot/core/security/model/UserAuthCredentials.java similarity index 95% rename from src/main/java/com/youlai/boot/core/security/model/AuthCredentials.java rename to src/main/java/com/youlai/boot/core/security/model/UserAuthCredentials.java index 951adcd8..aa064ee2 100644 --- a/src/main/java/com/youlai/boot/core/security/model/AuthCredentials.java +++ b/src/main/java/com/youlai/boot/core/security/model/UserAuthCredentials.java @@ -10,7 +10,7 @@ import java.util.Set; * @since 2022/10/22 */ @Data -public class AuthCredentials { +public class UserAuthCredentials { /** * 用户ID diff --git a/src/main/java/com/youlai/boot/core/security/service/SysUserDetailsService.java b/src/main/java/com/youlai/boot/core/security/service/SysUserDetailsService.java index e664af94..86b70db8 100644 --- a/src/main/java/com/youlai/boot/core/security/service/SysUserDetailsService.java +++ b/src/main/java/com/youlai/boot/core/security/service/SysUserDetailsService.java @@ -1,7 +1,7 @@ package com.youlai.boot.core.security.service; import com.youlai.boot.core.security.model.SysUserDetails; -import com.youlai.boot.core.security.model.AuthCredentials; +import com.youlai.boot.core.security.model.UserAuthCredentials; import com.youlai.boot.system.service.UserService; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; @@ -33,11 +33,11 @@ public class SysUserDetailsService implements UserDetailsService { @Override public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException { try { - AuthCredentials authCredentials = userService.getAuthCredentialsByUsername(username); - if (authCredentials == null) { + UserAuthCredentials userAuthCredentials = userService.getAuthCredentialsByUsername(username); + if (userAuthCredentials == null) { throw new UsernameNotFoundException(username); } - return new SysUserDetails(authCredentials); + return new SysUserDetails(userAuthCredentials); } catch (Exception e) { // 记录异常日志 log.error("认证异常:{}", e.getMessage()); diff --git a/src/main/java/com/youlai/boot/system/service/UserService.java b/src/main/java/com/youlai/boot/system/service/UserService.java index 619f9d16..1ddd2c12 100644 --- a/src/main/java/com/youlai/boot/system/service/UserService.java +++ b/src/main/java/com/youlai/boot/system/service/UserService.java @@ -3,7 +3,7 @@ package com.youlai.boot.system.service; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.service.IService; import com.youlai.boot.common.model.Option; -import com.youlai.boot.core.security.model.AuthCredentials; +import com.youlai.boot.core.security.model.UserAuthCredentials; import com.youlai.boot.system.model.dto.CurrentUserDTO; import com.youlai.boot.system.model.dto.UserExportDTO; import com.youlai.boot.system.model.entity.User; @@ -69,10 +69,10 @@ public interface UserService extends IService { * 根据用户名获取认证信息 * * @param username 用户名 - * @return {@link AuthCredentials} + * @return {@link UserAuthCredentials} */ - AuthCredentials getAuthCredentialsByUsername(String username); + UserAuthCredentials getAuthCredentialsByUsername(String username); /** @@ -166,10 +166,10 @@ public interface UserService extends IService { * 根据 openid 获取用户认证信息 * * @param username 用户名 - * @return {@link AuthCredentials} + * @return {@link UserAuthCredentials} */ - AuthCredentials getAuthCredentialsByOpenId(String username); + UserAuthCredentials getAuthCredentialsByOpenId(String username); /** * 根据微信 OpenID 注册或绑定用户 @@ -182,9 +182,9 @@ public interface UserService extends IService { * 根据手机号获取用户认证信息 * * @param mobile 手机号 - * @return {@link AuthCredentials} + * @return {@link UserAuthCredentials} */ - AuthCredentials getAuthCredentialsByMobile(String mobile); + UserAuthCredentials getAuthCredentialsByMobile(String mobile); } diff --git a/src/main/java/com/youlai/boot/system/service/impl/UserServiceImpl.java b/src/main/java/com/youlai/boot/system/service/impl/UserServiceImpl.java index 37d8c0c8..d950ffa9 100644 --- a/src/main/java/com/youlai/boot/system/service/impl/UserServiceImpl.java +++ b/src/main/java/com/youlai/boot/system/service/impl/UserServiceImpl.java @@ -22,7 +22,7 @@ import com.youlai.boot.system.converter.UserConverter; import com.youlai.boot.system.enums.DictCodeEnum; import com.youlai.boot.system.mapper.UserMapper; import com.youlai.boot.system.model.bo.UserBO; -import com.youlai.boot.core.security.model.AuthCredentials; +import com.youlai.boot.core.security.model.UserAuthCredentials; import com.youlai.boot.system.model.dto.CurrentUserDTO; import com.youlai.boot.system.model.dto.UserExportDTO; import com.youlai.boot.system.model.entity.DictItem; @@ -189,57 +189,57 @@ public class UserServiceImpl extends ServiceImpl implements Us } /** - * 根据用户名获取认证信息 + * 根据用户名获取认证凭证信息 * * @param username 用户名 - * @return 用户认证信息 {@link AuthCredentials} + * @return 用户认证凭证信息 {@link UserAuthCredentials} */ @Override - public AuthCredentials getAuthCredentialsByUsername(String username) { - AuthCredentials authCredentials = this.baseMapper.getAuthCredentialsByUsername(username); - if (authCredentials != null) { - Set roles = authCredentials.getRoles(); + public UserAuthCredentials getAuthCredentialsByUsername(String username) { + UserAuthCredentials userAuthCredentials = this.baseMapper.getAuthCredentialsByUsername(username); + if (userAuthCredentials != null) { + Set roles = userAuthCredentials.getRoles(); // 获取最大范围的数据权限 Integer dataScope = roleService.getMaximumDataScope(roles); - authCredentials.setDataScope(dataScope); + userAuthCredentials.setDataScope(dataScope); } - return authCredentials; + return userAuthCredentials; } /** * 根据 openid 获取用户认证信息 * - * @param openid 微信 - * @return {@link AuthCredentials} + * @param openid 微信 OpenId + * @return {@link UserAuthCredentials} */ @Override - public AuthCredentials getAuthCredentialsByOpenId(String openid) { - AuthCredentials authCredentials = this.baseMapper.getAuthCredentialsByOpenId(openid); - if (authCredentials != null) { - Set roles = authCredentials.getRoles(); + public UserAuthCredentials getAuthCredentialsByOpenId(String openid) { + UserAuthCredentials userAuthCredentials = this.baseMapper.getAuthCredentialsByOpenId(openid); + if (userAuthCredentials != null) { + Set roles = userAuthCredentials.getRoles(); // 获取最大范围的数据权限 Integer dataScope = roleService.getMaximumDataScope(roles); - authCredentials.setDataScope(dataScope); + userAuthCredentials.setDataScope(dataScope); } - return authCredentials; + return userAuthCredentials; } /** - * 根据手机号获取用户认证信息 + * 根据手机号获取用户认证凭证信息 * * @param mobile 手机号 - * @return {@link AuthCredentials} + * @return {@link UserAuthCredentials} */ @Override - public AuthCredentials getAuthCredentialsByMobile(String mobile) { - AuthCredentials authCredentials = this.baseMapper.getAuthCredentialsByMobile(mobile); - if (authCredentials != null) { - Set roles = authCredentials.getRoles(); + public UserAuthCredentials getAuthCredentialsByMobile(String mobile) { + UserAuthCredentials userAuthCredentials = this.baseMapper.getAuthCredentialsByMobile(mobile); + if (userAuthCredentials != null) { + Set roles = userAuthCredentials.getRoles(); // 获取最大范围的数据权限 Integer dataScope = roleService.getMaximumDataScope(roles); - authCredentials.setDataScope(dataScope); + userAuthCredentials.setDataScope(dataScope); } - return authCredentials; + return userAuthCredentials; } @@ -286,7 +286,7 @@ public class UserServiceImpl extends ServiceImpl implements Us List exportUsers = this.baseMapper.listExportUsers(queryParams); if (CollectionUtil.isNotEmpty(exportUsers)) { - //获取角色的字典数据 + //获取性别的字典项 Map genderMap = dictItemService.list( new LambdaQueryWrapper().eq(DictItem::getDictCode, DictCodeEnum.GENDER.getValue()) @@ -372,7 +372,6 @@ public class UserServiceImpl extends ServiceImpl implements Us return this.updateById(entity); } - /** * 修改用户密码 * diff --git a/src/main/resources/mapper/system/UserMapper.xml b/src/main/resources/mapper/system/UserMapper.xml index 314b00f3..751147da 100644 --- a/src/main/resources/mapper/system/UserMapper.xml +++ b/src/main/resources/mapper/system/UserMapper.xml @@ -119,7 +119,7 @@ - +