diff --git a/ruoyi-common/ruoyi-common-translation/src/main/java/org/dromara/common/translation/core/handler/TranslationJsonFieldProcessor.java b/ruoyi-common/ruoyi-common-translation/src/main/java/org/dromara/common/translation/core/handler/TranslationJsonFieldProcessor.java index abb93bcaf..56385b490 100644 --- a/ruoyi-common/ruoyi-common-translation/src/main/java/org/dromara/common/translation/core/handler/TranslationJsonFieldProcessor.java +++ b/ruoyi-common/ruoyi-common-translation/src/main/java/org/dromara/common/translation/core/handler/TranslationJsonFieldProcessor.java @@ -26,12 +26,26 @@ import java.util.Set; @Order(0) public class TranslationJsonFieldProcessor implements JsonFieldProcessor { + /** + * 响应增强上下文中保存待批量翻译数据的属性键。 + */ private static final String ATTR_BATCHES = TranslationJsonFieldProcessor.class.getName() + ".batches"; + /** + * 响应增强上下文中保存批量翻译结果的属性键。 + */ private static final String ATTR_RESULTS = TranslationJsonFieldProcessor.class.getName() + ".results"; + /** + * 翻译类型与翻译实现映射。 + */ private final Map> translationMap; + /** + * 构造翻译响应处理器。 + * + * @param translations 翻译实现列表 + */ public TranslationJsonFieldProcessor(List> translations) { Map> map = new LinkedHashMap<>(translations.size()); for (TranslationInterface t : translations) { @@ -43,6 +57,12 @@ public class TranslationJsonFieldProcessor implements JsonFieldProcessor { this.translationMap = Collections.unmodifiableMap(map); } + /** + * 收集字段上的翻译注解和原始值,供后续批量翻译使用。 + * + * @param fieldContext 字段上下文 + * @param context 响应增强上下文 + */ @Override public void collect(JsonFieldContext fieldContext, JsonEnhancementContext context) { Translation translation = fieldContext.getAnnotation(Translation.class); @@ -58,6 +78,11 @@ public class TranslationJsonFieldProcessor implements JsonFieldProcessor { .add(sourceValue); } + /** + * 根据收集到的原始值执行批量翻译,并将翻译结果写入响应增强上下文。 + * + * @param context 响应增强上下文 + */ @Override public void prepare(JsonEnhancementContext context) { Map> batches = context.getAttribute(ATTR_BATCHES); @@ -80,6 +105,14 @@ public class TranslationJsonFieldProcessor implements JsonFieldProcessor { context.setAttribute(ATTR_RESULTS, results); } + /** + * 处理单个字段的翻译值,优先使用批量翻译结果,缺失时回退到单值翻译。 + * + * @param fieldContext 字段上下文 + * @param value 当前字段值 + * @param context 响应增强上下文 + * @return 翻译后的字段值 + */ @Override public Object process(JsonFieldContext fieldContext, Object value, JsonEnhancementContext context) { Translation translation = fieldContext.getAnnotation(Translation.class); @@ -110,6 +143,12 @@ public class TranslationJsonFieldProcessor implements JsonFieldProcessor { } } + /** + * 获取或创建待批量翻译数据映射。 + * + * @param context 响应增强上下文 + * @return 待批量翻译数据映射 + */ private Map> getOrCreateBatches(JsonEnhancementContext context) { Map> batches = context.getAttribute(ATTR_BATCHES); if (batches == null) { @@ -119,6 +158,13 @@ public class TranslationJsonFieldProcessor implements JsonFieldProcessor { return batches; } + /** + * 解析翻译原始值。 + * + * @param fieldContext 字段上下文 + * @param translation 翻译注解 + * @return 翻译原始值 + */ private Object resolveSourceValue(JsonFieldContext fieldContext, Translation translation) { if (StringUtils.isNotBlank(translation.mapper())) { return ReflectUtils.invokeGetter(fieldContext.owner(), translation.mapper()); @@ -126,10 +172,22 @@ public class TranslationJsonFieldProcessor implements JsonFieldProcessor { return fieldContext.value(); } + /** + * 根据翻译类型获取翻译实现。 + * + * @param type 翻译类型 + * @return 翻译实现 + */ private TranslationInterface getTranslation(String type) { return translationMap.get(type); } + /** + * 批量翻译分组键。 + * + * @param type 翻译类型 + * @param other 额外参数 + */ private record TranslationBatchKey(String type, String other) { } diff --git a/ruoyi-common/ruoyi-common-translation/src/main/java/org/dromara/common/translation/core/impl/DeptNameTranslationImpl.java b/ruoyi-common/ruoyi-common-translation/src/main/java/org/dromara/common/translation/core/impl/DeptNameTranslationImpl.java index 1ebfa8de9..b5c968973 100644 --- a/ruoyi-common/ruoyi-common-translation/src/main/java/org/dromara/common/translation/core/impl/DeptNameTranslationImpl.java +++ b/ruoyi-common/ruoyi-common-translation/src/main/java/org/dromara/common/translation/core/impl/DeptNameTranslationImpl.java @@ -39,6 +39,13 @@ public class DeptNameTranslationImpl implements TranslationInterface { return null; } + /** + * 批量将部门 ID 翻译为部门名称。 + * + * @param keys 部门 ID 集合 + * @param other 额外参数 + * @return 部门 ID 与部门名称映射 + */ @Override public Map translationBatch(Set keys, String other) { Set deptIds = collectLongIds(keys); @@ -53,6 +60,13 @@ public class DeptNameTranslationImpl implements TranslationInterface { return result; } + /** + * 根据原始键构建部门名称翻译值。 + * + * @param source 原始键 + * @param deptNames 部门 ID 与部门名称映射 + * @return 部门名称 + */ private String buildValue(Object source, Map deptNames) { if (source instanceof String ids) { return joinMappedValues(ids, deptNames::get); diff --git a/ruoyi-common/ruoyi-common-translation/src/main/java/org/dromara/common/translation/core/impl/DictTypeTranslationImpl.java b/ruoyi-common/ruoyi-common-translation/src/main/java/org/dromara/common/translation/core/impl/DictTypeTranslationImpl.java index 799d5f9f1..f0d964ac4 100644 --- a/ruoyi-common/ruoyi-common-translation/src/main/java/org/dromara/common/translation/core/impl/DictTypeTranslationImpl.java +++ b/ruoyi-common/ruoyi-common-translation/src/main/java/org/dromara/common/translation/core/impl/DictTypeTranslationImpl.java @@ -39,6 +39,13 @@ public class DictTypeTranslationImpl implements TranslationInterface { return null; } + /** + * 批量根据字典类型和字典值翻译显示标签。 + * + * @param keys 字典值集合 + * @param other 字典类型 + * @return 字典值与字典标签映射 + */ @Override public Map translationBatch(Set keys, String other) { if (keys.isEmpty() || StringUtils.isBlank(other)) { diff --git a/ruoyi-common/ruoyi-common-translation/src/main/java/org/dromara/common/translation/core/impl/NicknameTranslationImpl.java b/ruoyi-common/ruoyi-common-translation/src/main/java/org/dromara/common/translation/core/impl/NicknameTranslationImpl.java index 05c63f3ba..7fa4d23fa 100644 --- a/ruoyi-common/ruoyi-common-translation/src/main/java/org/dromara/common/translation/core/impl/NicknameTranslationImpl.java +++ b/ruoyi-common/ruoyi-common-translation/src/main/java/org/dromara/common/translation/core/impl/NicknameTranslationImpl.java @@ -39,6 +39,13 @@ public class NicknameTranslationImpl implements TranslationInterface { return null; } + /** + * 批量将用户 ID 翻译为用户昵称。 + * + * @param keys 用户 ID 集合 + * @param other 额外参数 + * @return 用户 ID 与用户昵称映射 + */ @Override public Map translationBatch(Set keys, String other) { Set userIds = collectLongIds(keys); @@ -53,6 +60,13 @@ public class NicknameTranslationImpl implements TranslationInterface { return result; } + /** + * 根据原始键构建用户昵称翻译值。 + * + * @param source 原始键 + * @param userNames 用户 ID 与用户昵称映射 + * @return 用户昵称 + */ private String buildValue(Object source, Map userNames) { if (source instanceof String ids) { return joinMappedValues(ids, userNames::get); diff --git a/ruoyi-common/ruoyi-common-translation/src/main/java/org/dromara/common/translation/core/impl/OssUrlTranslationImpl.java b/ruoyi-common/ruoyi-common-translation/src/main/java/org/dromara/common/translation/core/impl/OssUrlTranslationImpl.java index a0c012d1e..ca7f2314c 100644 --- a/ruoyi-common/ruoyi-common-translation/src/main/java/org/dromara/common/translation/core/impl/OssUrlTranslationImpl.java +++ b/ruoyi-common/ruoyi-common-translation/src/main/java/org/dromara/common/translation/core/impl/OssUrlTranslationImpl.java @@ -42,6 +42,13 @@ public class OssUrlTranslationImpl implements TranslationInterface { return null; } + /** + * 批量将 OSS ID 翻译为访问地址。 + * + * @param keys OSS ID 集合 + * @param other 额外参数 + * @return OSS ID 与访问地址映射 + */ @Override public Map translationBatch(Set keys, String other) { Set ossIds = collectLongIds(keys); @@ -57,6 +64,13 @@ public class OssUrlTranslationImpl implements TranslationInterface { return result; } + /** + * 根据原始键构建 OSS 地址翻译值。 + * + * @param source 原始键 + * @param ossUrls OSS ID 与访问地址映射 + * @return OSS 访问地址 + */ private String buildValue(Object source, Map ossUrls) { if (source instanceof String ids) { return joinMappedValues(ids, ossUrls::get); diff --git a/ruoyi-common/ruoyi-common-translation/src/main/java/org/dromara/common/translation/core/impl/UserNameTranslationImpl.java b/ruoyi-common/ruoyi-common-translation/src/main/java/org/dromara/common/translation/core/impl/UserNameTranslationImpl.java index 11b3eb0bd..4b7d5a05f 100644 --- a/ruoyi-common/ruoyi-common-translation/src/main/java/org/dromara/common/translation/core/impl/UserNameTranslationImpl.java +++ b/ruoyi-common/ruoyi-common-translation/src/main/java/org/dromara/common/translation/core/impl/UserNameTranslationImpl.java @@ -36,6 +36,13 @@ public class UserNameTranslationImpl implements TranslationInterface { return userService.selectUserNameById(Convert.toLong(key)); } + /** + * 批量将用户 ID 翻译为用户名。 + * + * @param keys 用户 ID 集合 + * @param other 额外参数 + * @return 用户 ID 与用户名映射 + */ @Override public Map translationBatch(Set keys, String other) { Set userIds = collectLongIds(keys); @@ -50,6 +57,13 @@ public class UserNameTranslationImpl implements TranslationInterface { return result; } + /** + * 根据原始键构建用户名翻译值。 + * + * @param source 原始键 + * @param userNames 用户 ID 与用户名映射 + * @return 用户名 + */ private String buildValue(Object source, Map userNames) { if (source instanceof String ids) { return joinMappedValues(ids, userNames::get); diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/CategoryNameTranslationImpl.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/CategoryNameTranslationImpl.java index 212f2baeb..365b2da24 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/CategoryNameTranslationImpl.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/CategoryNameTranslationImpl.java @@ -29,11 +29,25 @@ public class CategoryNameTranslationImpl implements TranslationInterface private final IFlwCategoryService flwCategoryService; + /** + * 将流程分类 ID 翻译为分类名称。 + * + * @param key 流程分类 ID + * @param other 额外参数 + * @return 流程分类名称 + */ @Override public String translation(Object key, String other) { return flwCategoryService.selectCategoryNameById(Convert.toLong(key)); } + /** + * 批量将流程分类 ID 翻译为分类名称。 + * + * @param keys 流程分类 ID 集合 + * @param other 额外参数 + * @return 流程分类 ID 与分类名称映射 + */ @Override public Map translationBatch(Set keys, String other) { Set categoryIds = collectLongIds(keys); @@ -48,6 +62,13 @@ public class CategoryNameTranslationImpl implements TranslationInterface return result; } + /** + * 根据原始键构建流程分类名称翻译值。 + * + * @param source 原始键 + * @param categoryNames 流程分类 ID 与分类名称映射 + * @return 流程分类名称 + */ private String buildValue(Object source, Map categoryNames) { if (source instanceof String ids) { return joinMappedValues(ids, categoryNames::get);