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