From 96ab48396cd167a0a86521b186934e2aa3fa21b5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=96=AF=E7=8B=82=E7=9A=84=E7=8B=AE=E5=AD=90Li?= <15040126243@163.com> Date: Wed, 29 Nov 2023 10:24:16 +0800 Subject: [PATCH 1/8] =?UTF-8?q?update=20=E4=BC=98=E5=8C=96=20=E9=87=8D?= =?UTF-8?q?=E6=9E=84=20LoginHelper=20=E5=B0=86=E6=9C=AC=E5=9C=B0=E5=AD=98?= =?UTF-8?q?=E5=82=A8=E4=BB=A3=E7=A0=81=E6=93=8D=E4=BD=9C=E5=B0=81=E8=A3=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/satoken/utils/LoginHelper.java | 53 +++++++++++-------- 1 file changed, 30 insertions(+), 23 deletions(-) diff --git a/ruoyi-common/ruoyi-common-satoken/src/main/java/org/dromara/common/satoken/utils/LoginHelper.java b/ruoyi-common/ruoyi-common-satoken/src/main/java/org/dromara/common/satoken/utils/LoginHelper.java index 97b7041a2..f20a505aa 100644 --- a/ruoyi-common/ruoyi-common-satoken/src/main/java/org/dromara/common/satoken/utils/LoginHelper.java +++ b/ruoyi-common/ruoyi-common-satoken/src/main/java/org/dromara/common/satoken/utils/LoginHelper.java @@ -15,6 +15,7 @@ import org.dromara.common.core.domain.model.LoginUser; import org.dromara.common.core.enums.UserType; import java.util.Set; +import java.util.function.Supplier; /** * 登录鉴权助手 @@ -36,6 +37,7 @@ public class LoginHelper { public static final String USER_KEY = "userId"; public static final String DEPT_KEY = "deptId"; public static final String CLIENT_KEY = "clientid"; + public static final String TENANT_ADMIN_KEY = "isTenantAdmin"; /** * 登录系统 基于 设备类型 @@ -62,17 +64,13 @@ public class LoginHelper { * 获取用户(多级缓存) */ public static LoginUser getLoginUser() { - LoginUser loginUser = (LoginUser) SaHolder.getStorage().get(LOGIN_USER_KEY); - if (loginUser != null) { - return loginUser; - } - SaSession session = StpUtil.getSession(); - if (ObjectUtil.isNull(session)) { - return null; - } - loginUser = (LoginUser) session.get(LOGIN_USER_KEY); - SaHolder.getStorage().set(LOGIN_USER_KEY, loginUser); - return loginUser; + return (LoginUser) getStorageIfAbsentSet(LOGIN_USER_KEY, () -> { + SaSession session = StpUtil.getSession(); + if (ObjectUtil.isNull(session)) { + return null; + } + return session.get(LOGIN_USER_KEY); + }); } /** @@ -109,17 +107,7 @@ public class LoginHelper { } private static Object getExtra(String key) { - Object obj; - try { - obj = SaHolder.getStorage().get(key); - if (ObjectUtil.isNull(obj)) { - obj = StpUtil.getExtra(key); - SaHolder.getStorage().set(key, obj); - } - } catch (Exception e) { - return null; - } - return obj; + return getStorageIfAbsentSet(key, () -> StpUtil.getExtra(key)); } /** @@ -162,7 +150,26 @@ public class LoginHelper { } public static boolean isTenantAdmin() { - return isTenantAdmin(getLoginUser().getRolePermission()); + Object value = getStorageIfAbsentSet(TENANT_ADMIN_KEY, () -> { + return isTenantAdmin(getLoginUser().getRolePermission()); + }); + return Convert.toBool(value); } + public static boolean isLogin() { + return getLoginUser() != null; + } + + public static Object getStorageIfAbsentSet(String key, Supplier handle) { + try { + Object obj = SaHolder.getStorage().get(key); + if (ObjectUtil.isNull(obj)) { + obj = handle.get(); + SaHolder.getStorage().set(key, obj); + } + return obj; + } catch (Exception e) { + return null; + } + } } From 87981fb80c70e4e90a09c02949a5e67758a8e302 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=96=AF=E7=8B=82=E7=9A=84=E7=8B=AE=E5=AD=90Li?= <15040126243@163.com> Date: Wed, 29 Nov 2023 10:24:55 +0800 Subject: [PATCH 2/8] =?UTF-8?q?update=20=E4=BC=98=E5=8C=96=20=E4=BD=BF?= =?UTF-8?q?=E7=94=A8=E7=99=BB=E5=BD=95=E7=94=A8=E6=88=B7=E5=88=A4=E6=96=AD?= =?UTF-8?q?=E6=98=AF=E5=90=A6=E7=99=BB=E5=BD=95=20=E6=8F=90=E9=AB=98?= =?UTF-8?q?=E6=95=88=E7=8E=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dromara/system/service/impl/SysSensitiveServiceImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysSensitiveServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysSensitiveServiceImpl.java index 05eb4300b..5f4d121b1 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysSensitiveServiceImpl.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysSensitiveServiceImpl.java @@ -23,7 +23,7 @@ public class SysSensitiveServiceImpl implements SensitiveService { */ @Override public boolean isSensitive(String roleKey, String perms) { - if (!StpUtil.isLogin()) { + if (!LoginHelper.isLogin()) { return true; } boolean roleExist = StringUtils.isNotBlank(roleKey); From a6fc191df265da002d9353f83944cabba2f1da53 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=96=AF=E7=8B=82=E7=9A=84=E7=8B=AE=E5=AD=90Li?= <15040126243@163.com> Date: Wed, 29 Nov 2023 12:18:26 +0800 Subject: [PATCH 3/8] =?UTF-8?q?update=20=E4=BC=98=E5=8C=96=20=E5=88=A0?= =?UTF-8?q?=E9=99=A4=E6=97=A0=E7=94=A8=E4=BE=9D=E8=B5=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ruoyi-common/ruoyi-common-core/pom.xml | 6 ------ 1 file changed, 6 deletions(-) diff --git a/ruoyi-common/ruoyi-common-core/pom.xml b/ruoyi-common/ruoyi-common-core/pom.xml index 33f9f7fc4..ad37e90db 100644 --- a/ruoyi-common/ruoyi-common-core/pom.xml +++ b/ruoyi-common/ruoyi-common-core/pom.xml @@ -66,12 +66,6 @@ hutool-extra - - cn.hutool - hutool-json - provided - - org.projectlombok lombok From 183e39f1cd59c80bf56ecdf159319d811b9dbc52 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=96=AF=E7=8B=82=E7=9A=84=E7=8B=AE=E5=AD=90Li?= <15040126243@163.com> Date: Wed, 29 Nov 2023 15:27:46 +0800 Subject: [PATCH 4/8] =?UTF-8?q?update=20=E4=BC=98=E5=8C=96=20=E5=88=A0?= =?UTF-8?q?=E9=99=A4=E6=97=A0=E7=94=A8=E6=B3=A8=E8=A7=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/org/dromara/web/controller/AuthController.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/ruoyi-admin/src/main/java/org/dromara/web/controller/AuthController.java b/ruoyi-admin/src/main/java/org/dromara/web/controller/AuthController.java index 728e1b274..d0d79316e 100644 --- a/ruoyi-admin/src/main/java/org/dromara/web/controller/AuthController.java +++ b/ruoyi-admin/src/main/java/org/dromara/web/controller/AuthController.java @@ -52,7 +52,6 @@ import java.util.concurrent.TimeUnit; */ @Slf4j @SaIgnore -@Validated @RequiredArgsConstructor @RestController @RequestMapping("/auth") @@ -76,7 +75,7 @@ public class AuthController { */ @ApiEncrypt @PostMapping("/login") - public R login(@Validated @RequestBody String body) { + public R login(@RequestBody String body) { LoginBody loginBody = JsonUtils.parseObject(body, LoginBody.class); ValidatorUtils.validate(loginBody); // 授权类型和客户端id From be1398137a49c88195b903773399bfd030346102 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=96=AF=E7=8B=82=E7=9A=84=E7=8B=AE=E5=AD=90Li?= <15040126243@163.com> Date: Wed, 29 Nov 2023 16:08:56 +0800 Subject: [PATCH 5/8] =?UTF-8?q?update=20=E4=BC=98=E5=8C=96=20=E6=9B=B4?= =?UTF-8?q?=E6=96=B0=E7=94=A8=E6=88=B7=E5=BC=82=E5=B8=B8=E6=8F=90=E7=A4=BA?= =?UTF-8?q?=20=E4=BD=BF=E7=94=A8=E7=99=BB=E5=BD=95=E8=B4=A6=E5=8F=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../system/controller/system/SysProfileController.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysProfileController.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysProfileController.java index 0d776d30e..f9c4b3d31 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysProfileController.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysProfileController.java @@ -62,11 +62,12 @@ public class SysProfileController extends BaseController { @PutMapping public R updateProfile(@RequestBody SysUserProfileBo profile) { SysUserBo user = BeanUtil.toBean(profile, SysUserBo.class); + String username = LoginHelper.getUsername(); if (StringUtils.isNotEmpty(user.getPhonenumber()) && !userService.checkPhoneUnique(user)) { - return R.fail("修改用户'" + user.getUserName() + "'失败,手机号码已存在"); + return R.fail("修改用户'" + username + "'失败,手机号码已存在"); } if (StringUtils.isNotEmpty(user.getEmail()) && !userService.checkEmailUnique(user)) { - return R.fail("修改用户'" + user.getUserName() + "'失败,邮箱账号已存在"); + return R.fail("修改用户'" + username + "'失败,邮箱账号已存在"); } user.setUserId(LoginHelper.getUserId()); if (userService.updateUserProfile(user) > 0) { From d131a833ab2421026a7256ff74955256ac593629 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=96=AF=E7=8B=82=E7=9A=84=E7=8B=AE=E5=AD=90Li?= <15040126243@163.com> Date: Wed, 29 Nov 2023 16:09:20 +0800 Subject: [PATCH 6/8] =?UTF-8?q?fix=20=E4=BF=AE=E5=A4=8D=20token=20?= =?UTF-8?q?=E5=A4=B1=E6=95=88=E5=90=8E=20=E7=99=BB=E5=BD=95=E8=8E=B7?= =?UTF-8?q?=E5=8F=96=E7=94=A8=E6=88=B7null=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/org/dromara/web/service/SysLoginService.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/ruoyi-admin/src/main/java/org/dromara/web/service/SysLoginService.java b/ruoyi-admin/src/main/java/org/dromara/web/service/SysLoginService.java index ef5335fc7..37802b7f0 100644 --- a/ruoyi-admin/src/main/java/org/dromara/web/service/SysLoginService.java +++ b/ruoyi-admin/src/main/java/org/dromara/web/service/SysLoginService.java @@ -97,6 +97,9 @@ public class SysLoginService { public void logout() { try { LoginUser loginUser = LoginHelper.getLoginUser(); + if (ObjectUtil.isNull(loginUser)) { + return; + } if (TenantHelper.isEnable() && LoginHelper.isSuperAdmin()) { // 超级管理员 登出清除动态租户 TenantHelper.clearDynamic(); From cb9a3c36e6b03a97a767a49d1ede6855b3512e4f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=96=AF=E7=8B=82=E7=9A=84=E7=8B=AE=E5=AD=90Li?= <15040126243@163.com> Date: Thu, 30 Nov 2023 11:28:52 +0800 Subject: [PATCH 7/8] =?UTF-8?q?fix=20=E4=BF=AE=E5=A4=8D=20session=20?= =?UTF-8?q?=E5=A4=9A=E8=B4=A6=E5=8F=B7=E5=85=B1=E7=94=A8=E8=A6=86=E7=9B=96?= =?UTF-8?q?=E9=97=AE=E9=A2=98=20=E6=94=B9=E4=B8=BA=20tokenSession=20?= =?UTF-8?q?=E7=8B=AC=E7=AB=8B=E5=AD=98=E5=82=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/org/dromara/common/satoken/utils/LoginHelper.java | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/ruoyi-common/ruoyi-common-satoken/src/main/java/org/dromara/common/satoken/utils/LoginHelper.java b/ruoyi-common/ruoyi-common-satoken/src/main/java/org/dromara/common/satoken/utils/LoginHelper.java index f20a505aa..2406ba904 100644 --- a/ruoyi-common/ruoyi-common-satoken/src/main/java/org/dromara/common/satoken/utils/LoginHelper.java +++ b/ruoyi-common/ruoyi-common-satoken/src/main/java/org/dromara/common/satoken/utils/LoginHelper.java @@ -57,7 +57,7 @@ public class LoginHelper { model.setExtra(TENANT_KEY, loginUser.getTenantId()) .setExtra(USER_KEY, loginUser.getUserId()) .setExtra(DEPT_KEY, loginUser.getDeptId())); - StpUtil.getSession().set(LOGIN_USER_KEY, loginUser); + StpUtil.getTokenSession().set(LOGIN_USER_KEY, loginUser); } /** @@ -65,7 +65,7 @@ public class LoginHelper { */ public static LoginUser getLoginUser() { return (LoginUser) getStorageIfAbsentSet(LOGIN_USER_KEY, () -> { - SaSession session = StpUtil.getSession(); + SaSession session = StpUtil.getTokenSession(); if (ObjectUtil.isNull(session)) { return null; } @@ -77,8 +77,7 @@ public class LoginHelper { * 获取用户基于token */ public static LoginUser getLoginUser(String token) { - Object loginId = StpUtil.getLoginIdByToken(token); - SaSession session = StpUtil.getSessionByLoginId(loginId); + SaSession session = StpUtil.getTokenSessionByToken(token); if (ObjectUtil.isNull(session)) { return null; } From 7dde869eba95ac4091898295875ee738151f687f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=96=AF=E7=8B=82=E7=9A=84=E7=8B=AE=E5=AD=90Li?= <15040126243@163.com> Date: Thu, 30 Nov 2023 13:13:50 +0800 Subject: [PATCH 8/8] =?UTF-8?q?add=20=E6=96=B0=E5=A2=9E=20=E7=BF=BB?= =?UTF-8?q?=E8=AF=91=E7=BB=84=E4=BB=B6=20=E7=94=A8=E6=88=B7=E6=98=B5?= =?UTF-8?q?=E7=A7=B0=E7=BF=BB=E8=AF=91=E5=AE=9E=E7=8E=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/core/constant/CacheNames.java | 5 ++++ .../common/core/service/UserService.java | 8 ++++++ .../translation/constant/TransConstant.java | 5 ++++ .../core/impl/NicknameTranslationImpl.java | 27 +++++++++++++++++++ ...ot.autoconfigure.AutoConfiguration.imports | 1 + .../service/impl/SysUserServiceImpl.java | 8 ++++++ 6 files changed, 54 insertions(+) create mode 100644 ruoyi-common/ruoyi-common-translation/src/main/java/org/dromara/common/translation/core/impl/NicknameTranslationImpl.java diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/constant/CacheNames.java b/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/constant/CacheNames.java index c3425d0aa..86ab80ed0 100644 --- a/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/constant/CacheNames.java +++ b/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/constant/CacheNames.java @@ -40,6 +40,11 @@ public interface CacheNames { */ String SYS_USER_NAME = "sys_user_name#30d"; + /** + * 用户名称 + */ + String SYS_NICKNAME = "sys_nickname#30d"; + /** * 部门 */ diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/service/UserService.java b/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/service/UserService.java index 554e506d5..d6b312a64 100644 --- a/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/service/UserService.java +++ b/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/service/UserService.java @@ -15,4 +15,12 @@ public interface UserService { */ String selectUserNameById(Long userId); + /** + * 通过用户ID查询用户账户 + * + * @param userId 用户ID + * @return 用户账户 + */ + String selectNicknameById(Long userId); + } diff --git a/ruoyi-common/ruoyi-common-translation/src/main/java/org/dromara/common/translation/constant/TransConstant.java b/ruoyi-common/ruoyi-common-translation/src/main/java/org/dromara/common/translation/constant/TransConstant.java index 25df1c9fc..c084ea1a0 100644 --- a/ruoyi-common/ruoyi-common-translation/src/main/java/org/dromara/common/translation/constant/TransConstant.java +++ b/ruoyi-common/ruoyi-common-translation/src/main/java/org/dromara/common/translation/constant/TransConstant.java @@ -12,6 +12,11 @@ public interface TransConstant { */ String USER_ID_TO_NAME = "user_id_to_name"; + /** + * 用户id转用户名称 + */ + String USER_ID_TO_NICKNAME = "user_id_to_nickname"; + /** * 部门id转名称 */ diff --git a/ruoyi-common/ruoyi-common-translation/src/main/java/org/dromara/common/translation/core/impl/NicknameTranslationImpl.java b/ruoyi-common/ruoyi-common-translation/src/main/java/org/dromara/common/translation/core/impl/NicknameTranslationImpl.java new file mode 100644 index 000000000..ac65f5afc --- /dev/null +++ b/ruoyi-common/ruoyi-common-translation/src/main/java/org/dromara/common/translation/core/impl/NicknameTranslationImpl.java @@ -0,0 +1,27 @@ +package org.dromara.common.translation.core.impl; + +import lombok.AllArgsConstructor; +import org.dromara.common.core.service.UserService; +import org.dromara.common.translation.annotation.TranslationType; +import org.dromara.common.translation.constant.TransConstant; +import org.dromara.common.translation.core.TranslationInterface; + +/** + * 用户名称翻译实现 + * + * @author may + */ +@AllArgsConstructor +@TranslationType(type = TransConstant.USER_ID_TO_NICKNAME) +public class NicknameTranslationImpl implements TranslationInterface { + + private final UserService userService; + + @Override + public String translation(Object key, String other) { + if (key instanceof Long id) { + return userService.selectNicknameById(id); + } + return null; + } +} diff --git a/ruoyi-common/ruoyi-common-translation/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/ruoyi-common/ruoyi-common-translation/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports index 45844e014..ad40205ed 100644 --- a/ruoyi-common/ruoyi-common-translation/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports +++ b/ruoyi-common/ruoyi-common-translation/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports @@ -3,3 +3,4 @@ org.dromara.common.translation.core.impl.DeptNameTranslationImpl org.dromara.common.translation.core.impl.DictTypeTranslationImpl org.dromara.common.translation.core.impl.OssUrlTranslationImpl org.dromara.common.translation.core.impl.UserNameTranslationImpl +org.dromara.common.translation.core.impl.NicknameTranslationImpl diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysUserServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysUserServiceImpl.java index 8e097b2f4..7ee19e851 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysUserServiceImpl.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysUserServiceImpl.java @@ -536,4 +536,12 @@ public class SysUserServiceImpl implements ISysUserService, UserService { .select(SysUser::getUserName).eq(SysUser::getUserId, userId)); return ObjectUtil.isNull(sysUser) ? null : sysUser.getUserName(); } + + @Override + @Cacheable(cacheNames = CacheNames.SYS_NICKNAME, key = "#userId") + public String selectNicknameById(Long userId) { + SysUser sysUser = baseMapper.selectOne(new LambdaQueryWrapper() + .select(SysUser::getNickName).eq(SysUser::getUserId, userId)); + return ObjectUtil.isNull(sysUser) ? null : sysUser.getNickName(); + } }