Преглед изворни кода

update 优化 优化rpc查询实现 减少rpc调用次数

疯狂的狮子Li пре 7 месеци
родитељ
комит
c6b4014eab

+ 4 - 0
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);
     }

+ 22 - 2
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<String> {
     @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<String> 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;
     }

+ 10 - 1
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<String> {
 
     @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);
     }
 }