1、system服务国际化相关表免校验租户、token配置;2、system服务枚举相关国际化处理;3、system服务资金管理easyexcel导出表头国际化处理;

This commit is contained in:
gaoqr
2025-11-21 16:08:21 +08:00
parent cafdc15fad
commit ff71a6afbb
55 changed files with 472 additions and 629 deletions
@@ -0,0 +1,14 @@
package com.cf.imes.framework.common.constants;
/**
* 国际化资源包常量
*
* @author Gqr
* @since 2025/11/21 11:33
*/
public final class ResourceBundleConstants {
/**
* 枚举资源包
*/
public static final String MESSAGE_ENUM_PATH = "message_enum";
}
@@ -0,0 +1,40 @@
package com.cf.imes.framework.common.util.i18n.core.util;
import lombok.extern.slf4j.Slf4j;
import java.text.MessageFormat;
import java.util.Locale;
import java.util.ResourceBundle;
/**
* 国际化资源包工具类
*
* @author Gqr
* @since 2025/11/21 11:16
*/
@Slf4j
public class ResourceBundleUtils {
/**
* 获取国际化资源值
*
* @param baseName 资源包位置
* @param key i18n key
* @param defaultMessage 没有获取到资源描述返回的缺省值
* @param locale 语种
* @param args 占位符数组
* @return
*/
public static String getMessage(String baseName, String key, String defaultMessage, Locale locale, Object args) {
try {
ResourceBundle messageEnum = ResourceBundle.getBundle(baseName, locale);
if (messageEnum != null) {
String i18nMessage = messageEnum.getString(key);
return MessageFormat.format(i18nMessage, args);
}
} catch (Exception e) {
log.error("[ResourceBundleUtils][getMessage]异常", e);
}
return defaultMessage;
}
}
@@ -1,14 +1,13 @@
package com.cf.imes.framework.common.validation;
import cn.hutool.core.collection.CollUtil;
import com.cf.imes.framework.common.constants.ResourceBundleConstants;
import com.cf.imes.framework.common.core.IntArrayValuable;
import com.cf.imes.framework.common.util.i18n.core.util.ResourceBundleUtils;
import jakarta.validation.ConstraintValidator;
import jakarta.validation.ConstraintValidatorContext;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.MessageSource;
import org.springframework.context.i18n.LocaleContextHolder;
import org.springframework.stereotype.Component;
import java.util.Arrays;
import java.util.Collection;
@@ -17,14 +16,10 @@ import java.util.List;
import java.util.Locale;
import java.util.stream.Collectors;
@Component
public class InEnumCollectionValidator implements ConstraintValidator<InEnum, Collection<Integer>> {
private List<Integer> values;
@Autowired
private MessageSource messageSource;
@Override
public void initialize(InEnum annotation) {
IntArrayValuable[] values = annotation.value().getEnumConstants();
@@ -41,14 +36,15 @@ public class InEnumCollectionValidator implements ConstraintValidator<InEnum, Co
if (CollUtil.containsAll(values, list)) {
return true;
}
String defaultConstraintMessageTemplate = context.getDefaultConstraintMessageTemplate();
Locale locale = LocaleContextHolder.getLocale();
String message = messageSource.getMessage(defaultConstraintMessageTemplate, new Object[]{CollUtil.join(list, ",")}, locale);
defaultConstraintMessageTemplate = ResourceBundleUtils.getMessage(ResourceBundleConstants.MESSAGE_ENUM_PATH, defaultConstraintMessageTemplate, defaultConstraintMessageTemplate, locale, CollUtil.join(list, ","));;
// 校验不通过,自定义提示语句(因为,注解上的 value 是枚举类,无法获得枚举类的实际值)
context.disableDefaultConstraintViolation(); // 禁用默认的 message 的值
context.buildConstraintViolationWithTemplate(message).addConstraintViolation(); // 重新添加错误提示语句
context.buildConstraintViolationWithTemplate(defaultConstraintMessageTemplate).addConstraintViolation(); // 重新添加错误提示语句
return false;
}
}
@@ -1,13 +1,12 @@
package com.cf.imes.framework.common.validation;
import com.cf.imes.framework.common.constants.ResourceBundleConstants;
import com.cf.imes.framework.common.core.IntArrayValuable;
import com.cf.imes.framework.common.util.i18n.core.util.ResourceBundleUtils;
import jakarta.validation.ConstraintValidator;
import jakarta.validation.ConstraintValidatorContext;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.MessageSource;
import org.springframework.context.i18n.LocaleContextHolder;
import org.springframework.stereotype.Component;
import java.util.Arrays;
import java.util.Collections;
@@ -15,14 +14,10 @@ import java.util.List;
import java.util.Locale;
import java.util.stream.Collectors;
@Component
public class InEnumValidator implements ConstraintValidator<InEnum, Integer> {
private List<Integer> values;
@Autowired
private MessageSource messageSource;
@Override
public void initialize(InEnum annotation) {
IntArrayValuable[] values = annotation.value().getEnumConstants();
@@ -45,12 +40,12 @@ public class InEnumValidator implements ConstraintValidator<InEnum, Integer> {
}
String defaultConstraintMessageTemplate = context.getDefaultConstraintMessageTemplate();
Locale locale = LocaleContextHolder.getLocale();
String message = messageSource.getMessage(defaultConstraintMessageTemplate, new Object[]{values.toString()}, locale);
defaultConstraintMessageTemplate = ResourceBundleUtils.getMessage(ResourceBundleConstants.MESSAGE_ENUM_PATH, defaultConstraintMessageTemplate, defaultConstraintMessageTemplate, locale, values.toString());
// 校验不通过,自定义提示语句(因为,注解上的 value 是枚举类,无法获得枚举类的实际值)
context.disableDefaultConstraintViolation(); // 禁用默认的 message 的值
context.buildConstraintViolationWithTemplate(message).addConstraintViolation(); // 重新添加错误提示语句
context.buildConstraintViolationWithTemplate(defaultConstraintMessageTemplate).addConstraintViolation(); // 重新添加错误提示语句
return false;
}
}
@@ -28,7 +28,7 @@ public @interface InScope {
*/
Class<? extends IntArrayValuable> value();
String message() default "{desc}不合法";
String message() default "inScope.message";
String desc() default "";
@@ -1,13 +1,17 @@
package com.cf.imes.framework.common.validation;
import cn.hutool.core.collection.CollUtil;
import com.cf.imes.framework.common.constants.ResourceBundleConstants;
import com.cf.imes.framework.common.core.IntArrayValuable;
import com.cf.imes.framework.common.util.i18n.core.util.ResourceBundleUtils;
import jakarta.validation.ConstraintValidator;
import jakarta.validation.ConstraintValidatorContext;
import org.springframework.context.i18n.LocaleContextHolder;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.Locale;
import java.util.stream.Collectors;
/**
@@ -40,12 +44,14 @@ public class InScopeValidator implements ConstraintValidator<InScope, List<Integ
if (values.containsAll(integers)) {
return true;
}
String defaultConstraintMessageTemplate = constraintValidatorContext.getDefaultConstraintMessageTemplate();
Locale locale = LocaleContextHolder.getLocale();
String descValue = ResourceBundleUtils.getMessage(ResourceBundleConstants.MESSAGE_ENUM_PATH, desc, desc, locale, null);
defaultConstraintMessageTemplate = ResourceBundleUtils.getMessage(ResourceBundleConstants.MESSAGE_ENUM_PATH, defaultConstraintMessageTemplate, defaultConstraintMessageTemplate, locale, descValue);;
// 校验不通过,自定义提示语句(因为,注解上的 value 是枚举类,无法获得枚举类的实际值)
constraintValidatorContext.disableDefaultConstraintViolation(); // 禁用默认的 message 的值
constraintValidatorContext.buildConstraintViolationWithTemplate(constraintValidatorContext.getDefaultConstraintMessageTemplate()
.replace("{desc}", desc)).addConstraintViolation(); // 重新添加错误提示语句
constraintValidatorContext.buildConstraintViolationWithTemplate(defaultConstraintMessageTemplate).addConstraintViolation(); // 重新添加错误提示语句
return false;
}
}