diff --git a/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/service/SysDataScopeService.java b/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/service/SysDataScopeService.java index 4543579cb..b4f2ea6ee 100644 --- a/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/service/SysDataScopeService.java +++ b/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/service/SysDataScopeService.java @@ -1,7 +1,9 @@ package org.dromara.common.mybatis.service; import org.apache.dubbo.config.annotation.DubboReference; +import org.dromara.common.core.constant.CacheNames; import org.dromara.system.api.RemoteDataScopeService; +import org.springframework.cache.annotation.Cacheable; import org.springframework.stereotype.Service; /** @@ -24,6 +26,7 @@ public class SysDataScopeService { * @param roleId 角色ID * @return 返回角色的自定义权限语句,如果没有找到则返回 null */ + @Cacheable(cacheNames = CacheNames.SYS_ROLE_CUSTOM, key = "#roleId", condition = "#roleId != null") public String getRoleCustom(Long roleId) { return remoteDataScopeService.getRoleCustom(roleId); } @@ -34,6 +37,7 @@ public class SysDataScopeService { * @param deptId 部门ID * @return 返回部门及其下级的权限语句,如果没有找到则返回 null */ + @Cacheable(cacheNames = CacheNames.SYS_DEPT_AND_CHILD, key = "#deptId", condition = "#deptId != null") public String getDeptAndChild(Long deptId) { return remoteDataScopeService.getDeptAndChild(deptId); } 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 index fa53c3943..dd38c02c7 100644 --- 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 @@ -1,12 +1,19 @@ package org.dromara.common.translation.core.impl; +import cn.hutool.core.convert.Convert; import lombok.AllArgsConstructor; import org.apache.dubbo.config.annotation.DubboReference; +import org.dromara.common.core.constant.CacheNames; +import org.dromara.common.core.utils.StringUtils; +import org.dromara.common.redis.utils.CacheUtils; import org.dromara.common.translation.annotation.TranslationType; import org.dromara.common.translation.constant.TransConstant; import org.dromara.common.translation.core.TranslationInterface; import org.dromara.system.api.RemoteUserService; +import java.util.ArrayList; +import java.util.List; + /** * 用户昵称翻译实现 * @@ -22,9 +29,22 @@ public class NicknameTranslationImpl implements TranslationInterface { @Override public String translation(Object key, String other) { if (key instanceof Long id) { - return remoteUserService.selectNicknameByIds(id.toString()); + String nickname = CacheUtils.get(CacheNames.SYS_NICKNAME, key); + if (StringUtils.isNotBlank(nickname)) { + return nickname; + } + return remoteUserService.selectNicknameById(id); } else if (key instanceof String ids) { - return remoteUserService.selectNicknameByIds(ids); + List list = new ArrayList<>(); + for (Long id : StringUtils.splitTo(ids, Convert::toLong)) { + String nickname = CacheUtils.get(CacheNames.SYS_NICKNAME, key); + if (StringUtils.isNotBlank(nickname)) { + list.add(nickname); + } else { + list.add(remoteUserService.selectNicknameById(id)); + } + } + return StringUtils.joinComma(list); } return null; } diff --git a/ruoyi-common/ruoyi-common-translation/src/main/java/org/dromara/common/translation/core/impl/UserNameTranslationImpl.java b/ruoyi-common/ruoyi-common-translation/src/main/java/org/dromara/common/translation/core/impl/UserNameTranslationImpl.java index c44230283..8d46e2a50 100644 --- a/ruoyi-common/ruoyi-common-translation/src/main/java/org/dromara/common/translation/core/impl/UserNameTranslationImpl.java +++ b/ruoyi-common/ruoyi-common-translation/src/main/java/org/dromara/common/translation/core/impl/UserNameTranslationImpl.java @@ -1,5 +1,9 @@ package org.dromara.common.translation.core.impl; +import cn.hutool.core.convert.Convert; +import org.dromara.common.core.constant.CacheNames; +import org.dromara.common.core.utils.StringUtils; +import org.dromara.common.redis.utils.CacheUtils; import org.dromara.common.translation.annotation.TranslationType; import org.dromara.common.translation.constant.TransConstant; import org.dromara.common.translation.core.TranslationInterface; @@ -21,6 +25,11 @@ public class UserNameTranslationImpl implements TranslationInterface { @Override public String translation(Object key, String other) { - return remoteUserService.selectUserNameById((Long) key); + Long userId = Convert.toLong(key); + String username = CacheUtils.get(CacheNames.SYS_USER_NAME, userId); + if (StringUtils.isNotBlank(username)) { + return username; + } + return remoteUserService.selectUserNameById(userId); } }