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