From a49ed727b64a7a4ef31276c9b379f742e63f5485 Mon Sep 17 00:00:00 2001
From: 疯狂的狮子Li <15040126243@163.com>
Date: 星期六, 18 二月 2023 23:40:57 +0800
Subject: [PATCH] update 优化 翻译组件 支持返回值泛型 支持多种类型数据翻译(例如: 根据主键翻译成对象)

---
 ruoyi-common/ruoyi-common-translation/src/main/java/com/ruoyi/common/translation/core/TranslationInterface.java         |    7 ++++---
 ruoyi-common/ruoyi-common-translation/src/main/java/com/ruoyi/common/translation/core/impl/OssUrlTranslationImpl.java   |    2 +-
 ruoyi-common/ruoyi-common-translation/src/main/java/com/ruoyi/common/translation/core/handler/TranslationHandler.java   |    8 ++++----
 ruoyi-common/ruoyi-common-translation/src/main/java/com/ruoyi/common/translation/core/impl/DictTypeTranslationImpl.java |    2 +-
 ruoyi-common/ruoyi-common-translation/src/main/java/com/ruoyi/common/translation/config/TranslationConfig.java          |    6 +++---
 ruoyi-common/ruoyi-common-translation/src/main/java/com/ruoyi/common/translation/core/impl/DeptNameTranslationImpl.java |    2 +-
 ruoyi-common/ruoyi-common-translation/src/main/java/com/ruoyi/common/translation/core/impl/UserNameTranslationImpl.java |    2 +-
 7 files changed, 15 insertions(+), 14 deletions(-)

diff --git a/ruoyi-common/ruoyi-common-translation/src/main/java/com/ruoyi/common/translation/config/TranslationConfig.java b/ruoyi-common/ruoyi-common-translation/src/main/java/com/ruoyi/common/translation/config/TranslationConfig.java
index b7d3c71..a9aefe5 100644
--- a/ruoyi-common/ruoyi-common-translation/src/main/java/com/ruoyi/common/translation/config/TranslationConfig.java
+++ b/ruoyi-common/ruoyi-common-translation/src/main/java/com/ruoyi/common/translation/config/TranslationConfig.java
@@ -24,15 +24,15 @@
 public class TranslationConfig {
 
     @Autowired
-    private List<TranslationInterface> list;
+    private List<TranslationInterface<?>> list;
 
     @Autowired
     private ObjectMapper objectMapper;
 
     @PostConstruct
     public void init() {
-        Map<String, TranslationInterface> map = new HashMap<>(list.size());
-        for (TranslationInterface trans : list) {
+        Map<String, TranslationInterface<?>> map = new HashMap<>(list.size());
+        for (TranslationInterface<?> trans : list) {
             if (trans.getClass().isAnnotationPresent(TranslationType.class)) {
                 TranslationType annotation = trans.getClass().getAnnotation(TranslationType.class);
                 map.put(annotation.type(), trans);
diff --git a/ruoyi-common/ruoyi-common-translation/src/main/java/com/ruoyi/common/translation/core/TranslationInterface.java b/ruoyi-common/ruoyi-common-translation/src/main/java/com/ruoyi/common/translation/core/TranslationInterface.java
index f325c3e..b860ae4 100644
--- a/ruoyi-common/ruoyi-common-translation/src/main/java/com/ruoyi/common/translation/core/TranslationInterface.java
+++ b/ruoyi-common/ruoyi-common-translation/src/main/java/com/ruoyi/common/translation/core/TranslationInterface.java
@@ -5,13 +5,14 @@
  *
  * @author Lion Li
  */
-public interface TranslationInterface {
+public interface TranslationInterface<T> {
 
     /**
      * 缈昏瘧
      *
-     * @param key 闇�瑕佽缈昏瘧鐨勯敭(涓嶄负绌�)
+     * @param key   闇�瑕佽缈昏瘧鐨勯敭(涓嶄负绌�)
+     * @param other 鍏朵粬鍙傛暟
      * @return 杩斿洖閿搴旂殑鍊�
      */
-    String translation(Object key, String other);
+    T translation(Object key, String other);
 }
diff --git a/ruoyi-common/ruoyi-common-translation/src/main/java/com/ruoyi/common/translation/core/handler/TranslationHandler.java b/ruoyi-common/ruoyi-common-translation/src/main/java/com/ruoyi/common/translation/core/handler/TranslationHandler.java
index 69a2e45..fcd122c 100644
--- a/ruoyi-common/ruoyi-common-translation/src/main/java/com/ruoyi/common/translation/core/handler/TranslationHandler.java
+++ b/ruoyi-common/ruoyi-common-translation/src/main/java/com/ruoyi/common/translation/core/handler/TranslationHandler.java
@@ -29,13 +29,13 @@
     /**
      * 鍏ㄥ眬缈昏瘧瀹炵幇绫绘槧灏勫櫒
      */
-    public static final Map<String, TranslationInterface> TRANSLATION_MAPPER = new ConcurrentHashMap<>();
+    public static final Map<String, TranslationInterface<?>> TRANSLATION_MAPPER = new ConcurrentHashMap<>();
 
     private Translation translation;
 
     @Override
     public void serialize(Object value, JsonGenerator gen, SerializerProvider serializers) throws IOException {
-        TranslationInterface trans = TRANSLATION_MAPPER.get(translation.type());
+        TranslationInterface<?> trans = TRANSLATION_MAPPER.get(translation.type());
         if (ObjectUtil.isNotNull(trans)) {
             // 濡傛灉鏄犲皠瀛楁涓嶄负绌� 鍒欏彇鏄犲皠瀛楁鐨勫��
             if (StringUtils.isNotBlank(translation.mapper())) {
@@ -46,8 +46,8 @@
                 gen.writeNull();
                 return;
             }
-            String result = trans.translation(value, translation.other());
-            gen.writeString(result);
+            Object result = trans.translation(value, translation.other());
+            gen.writeObject(result);
         } else {
             gen.writeObject(value);
         }
diff --git a/ruoyi-common/ruoyi-common-translation/src/main/java/com/ruoyi/common/translation/core/impl/DeptNameTranslationImpl.java b/ruoyi-common/ruoyi-common-translation/src/main/java/com/ruoyi/common/translation/core/impl/DeptNameTranslationImpl.java
index 17b3314..1e983e6 100644
--- a/ruoyi-common/ruoyi-common-translation/src/main/java/com/ruoyi/common/translation/core/impl/DeptNameTranslationImpl.java
+++ b/ruoyi-common/ruoyi-common-translation/src/main/java/com/ruoyi/common/translation/core/impl/DeptNameTranslationImpl.java
@@ -15,7 +15,7 @@
 @Component
 @AllArgsConstructor
 @TranslationType(type = TransConstant.DEPT_ID_TO_NAME)
-public class DeptNameTranslationImpl implements TranslationInterface {
+public class DeptNameTranslationImpl implements TranslationInterface<String> {
 
     private final DeptService deptService;
 
diff --git a/ruoyi-common/ruoyi-common-translation/src/main/java/com/ruoyi/common/translation/core/impl/DictTypeTranslationImpl.java b/ruoyi-common/ruoyi-common-translation/src/main/java/com/ruoyi/common/translation/core/impl/DictTypeTranslationImpl.java
index 4ad816b..4c450ce 100644
--- a/ruoyi-common/ruoyi-common-translation/src/main/java/com/ruoyi/common/translation/core/impl/DictTypeTranslationImpl.java
+++ b/ruoyi-common/ruoyi-common-translation/src/main/java/com/ruoyi/common/translation/core/impl/DictTypeTranslationImpl.java
@@ -16,7 +16,7 @@
 @Component
 @AllArgsConstructor
 @TranslationType(type = TransConstant.DICT_TYPE_TO_LABEL)
-public class DictTypeTranslationImpl implements TranslationInterface {
+public class DictTypeTranslationImpl implements TranslationInterface<String> {
 
     private final DictService dictService;
 
diff --git a/ruoyi-common/ruoyi-common-translation/src/main/java/com/ruoyi/common/translation/core/impl/OssUrlTranslationImpl.java b/ruoyi-common/ruoyi-common-translation/src/main/java/com/ruoyi/common/translation/core/impl/OssUrlTranslationImpl.java
index 02eff57..410cc23 100644
--- a/ruoyi-common/ruoyi-common-translation/src/main/java/com/ruoyi/common/translation/core/impl/OssUrlTranslationImpl.java
+++ b/ruoyi-common/ruoyi-common-translation/src/main/java/com/ruoyi/common/translation/core/impl/OssUrlTranslationImpl.java
@@ -15,7 +15,7 @@
 @Component
 @AllArgsConstructor
 @TranslationType(type = TransConstant.OSS_ID_TO_URL)
-public class OssUrlTranslationImpl implements TranslationInterface {
+public class OssUrlTranslationImpl implements TranslationInterface<String> {
 
     private final OssService ossService;
 
diff --git a/ruoyi-common/ruoyi-common-translation/src/main/java/com/ruoyi/common/translation/core/impl/UserNameTranslationImpl.java b/ruoyi-common/ruoyi-common-translation/src/main/java/com/ruoyi/common/translation/core/impl/UserNameTranslationImpl.java
index dbb71dc..a20993e 100644
--- a/ruoyi-common/ruoyi-common-translation/src/main/java/com/ruoyi/common/translation/core/impl/UserNameTranslationImpl.java
+++ b/ruoyi-common/ruoyi-common-translation/src/main/java/com/ruoyi/common/translation/core/impl/UserNameTranslationImpl.java
@@ -15,7 +15,7 @@
 @Component
 @AllArgsConstructor
 @TranslationType(type = TransConstant.USER_ID_TO_NAME)
-public class UserNameTranslationImpl implements TranslationInterface {
+public class UserNameTranslationImpl implements TranslationInterface<String> {
 
     private final UserService userService;
 

--
Gitblit v1.9.3