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/handler/TranslationHandler.java |   15 ++++++++++-----
 1 files changed, 10 insertions(+), 5 deletions(-)

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 0a8f1b3..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,22 +29,27 @@
     /**
      * 鍏ㄥ眬缈昏瘧瀹炵幇绫绘槧灏勫櫒
      */
-    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())) {
                 value = ReflectUtils.invokeGetter(gen.getCurrentValue(), translation.mapper());
             }
-            String result = trans.translation(value, translation.other());
-            gen.writeString(StringUtils.isNotBlank(result) ? result : value.toString());
+            // 濡傛灉涓� null 鐩存帴鍐欏嚭
+            if (ObjectUtil.isNull(value)) {
+                gen.writeNull();
+                return;
+            }
+            Object result = trans.translation(value, translation.other());
+            gen.writeObject(result);
         } else {
-            gen.writeString(value.toString());
+            gen.writeObject(value);
         }
     }
 

--
Gitblit v1.9.3