Browse Source

fix i18n messages bug

main
wangshaoping 1 year ago
parent
commit
67aabaf761
  1. 3
      io.sc.platform.core.frontend/package.json
  2. 2
      io.sc.platform.core.frontend/src/platform/PConst.ts
  3. 2
      io.sc.platform.core.frontend/src/platform/layout/sub-layout/Main.vue
  4. 5
      io.sc.platform.core.frontend/src/platform/plugin/manager/ConfigureManager.ts
  5. 4
      io.sc.platform.core.frontend/template-project/package.json
  6. 47
      io.sc.platform.core/src/main/java/io/sc/platform/core/autoconfigure/MessageSourceAutoConfiguration.java
  7. 50
      io.sc.platform.core/src/main/java/io/sc/platform/core/enums/Language.java
  8. 6
      io.sc.platform.core/src/main/java/io/sc/platform/core/i18n/MessageSourceBaseName.java
  9. 24
      io.sc.platform.core/src/main/java/io/sc/platform/core/service/MessageSourceService.java
  10. 35
      io.sc.platform.core/src/main/java/io/sc/platform/core/service/impl/MessageSourceServiceImpl.java
  11. 9
      io.sc.platform.lcdp/src/main/java/io/sc/platform/lcdp/configure/vo/Configure.java
  12. 22
      io.sc.platform.mvc/src/main/java/io/sc/platform/mvc/controller/I18nMessageController.java
  13. 13
      io.sc.platform.mvc/src/main/java/io/sc/platform/mvc/controller/IndexWebController.java
  14. 1
      io.sc.platform.mvc/src/main/resources/META-INF/platform/plugins/messages.json
  15. 4
      io.sc.platform.mvc/src/main/resources/META-INF/platform/plugins/security.json
  16. 2
      io.sc.platform.orm.api/src/main/java/io/sc/platform/orm/api/enums/BooleanTrueFalse.java
  17. 2
      io.sc.platform.orm.api/src/main/java/io/sc/platform/orm/api/enums/BooleanYesNo.java
  18. 2
      io.sc.platform.orm.api/src/main/java/io/sc/platform/orm/api/enums/DataComeFrom.java
  19. 2
      io.sc.platform.orm.api/src/main/java/io/sc/platform/orm/api/exception/ActionNotSupportException.java
  20. 2
      io.sc.platform.orm.api/src/main/java/io/sc/platform/orm/api/exception/CreateException.java
  21. 2
      io.sc.platform.orm.api/src/main/java/io/sc/platform/orm/api/exception/CreateNullObjectException.java
  22. 2
      io.sc.platform.orm.api/src/main/java/io/sc/platform/orm/api/exception/CreateNullPrimaryKeyException.java
  23. 2
      io.sc.platform.orm.api/src/main/java/io/sc/platform/orm/api/exception/CreateObjectAlreadyExistsException.java
  24. 2
      io.sc.platform.orm.api/src/main/java/io/sc/platform/orm/api/exception/DeleteException.java
  25. 2
      io.sc.platform.orm.api/src/main/java/io/sc/platform/orm/api/exception/DeleteNullObjectException.java
  26. 2
      io.sc.platform.orm.api/src/main/java/io/sc/platform/orm/api/exception/DeleteNullPrimaryKeyCollectionException.java
  27. 2
      io.sc.platform.orm.api/src/main/java/io/sc/platform/orm/api/exception/DeleteNullPrimaryKeyException.java
  28. 2
      io.sc.platform.orm.api/src/main/java/io/sc/platform/orm/api/exception/DeleteObjectNotExistsException.java
  29. 2
      io.sc.platform.orm.api/src/main/java/io/sc/platform/orm/api/exception/DeleteOperateNotAllowedException.java
  30. 2
      io.sc.platform.orm.api/src/main/java/io/sc/platform/orm/api/exception/UpdateException.java
  31. 2
      io.sc.platform.orm.api/src/main/java/io/sc/platform/orm/api/exception/UpdateNullNewObjectException.java
  32. 2
      io.sc.platform.orm.api/src/main/java/io/sc/platform/orm/api/exception/UpdateNullNewObjectPrimaryKeyException.java
  33. 2
      io.sc.platform.orm.api/src/main/java/io/sc/platform/orm/api/exception/UpdateNullOldObjectPrimaryKeyException.java
  34. 2
      io.sc.platform.orm.api/src/main/java/io/sc/platform/orm/api/exception/UpdateObjectAlreadyExistsException.java
  35. 2
      io.sc.platform.orm.api/src/main/java/io/sc/platform/orm/api/exception/UpdateOldObjectNotExistsException.java
  36. 2
      io.sc.platform.orm.api/src/main/java/io/sc/platform/orm/api/exception/UserNewPasswordAndConfirmNewPasswordNotMatchException.java
  37. 2
      io.sc.platform.orm.api/src/main/java/io/sc/platform/orm/api/exception/UserNewPasswordEmptyException.java
  38. 2
      io.sc.platform.orm.api/src/main/java/io/sc/platform/orm/api/exception/UserRawPasswordEmptyException.java
  39. 2
      io.sc.platform.orm.api/src/main/java/io/sc/platform/orm/api/exception/UserRawPasswordNotMatchException.java
  40. 4
      io.sc.platform.orm.api/src/main/java/io/sc/platform/orm/api/vo/AuditorVo.java
  41. 5
      io.sc.platform.orm.api/src/main/java/io/sc/platform/orm/api/vo/BaseVo.java
  42. 2
      io.sc.platform.orm.api/src/main/java/io/sc/platform/orm/api/vo/CorporationAuditorVo.java
  43. 5
      io.sc.platform.orm.api/src/main/java/io/sc/platform/orm/vo/BaseVo.java
  44. 6
      io.sc.platform.orm.api/src/main/resources/META-INF/platform/plugins/messages.json
  45. 11
      io.sc.platform.orm.api/src/main/resources/io/sc/platform/orm/api/i18n/enum.properties
  46. 11
      io.sc.platform.orm.api/src/main/resources/io/sc/platform/orm/api/i18n/enum_tw_CN.properties
  47. 11
      io.sc.platform.orm.api/src/main/resources/io/sc/platform/orm/api/i18n/enum_zh_CN.properties
  48. 35
      io.sc.platform.orm.api/src/main/resources/io/sc/platform/orm/api/i18n/exception.properties
  49. 36
      io.sc.platform.orm.api/src/main/resources/io/sc/platform/orm/api/i18n/exception_tw_CN.properties
  50. 36
      io.sc.platform.orm.api/src/main/resources/io/sc/platform/orm/api/i18n/exception_zh_CN.properties
  51. 2
      io.sc.platform.orm/src/main/java/io/sc/platform/orm/entity/AuditorEntity.java
  52. 22
      io.sc.platform.orm/src/main/java/io/sc/platform/orm/service/support/DaoExceptionProvider.java
  53. 6
      io.sc.platform.orm/src/main/resources/META-INF/platform/plugins/messages.json
  54. 11
      io.sc.platform.orm/src/main/resources/io/sc/platform/orm/jpa/i18n/enum.properties
  55. 11
      io.sc.platform.orm/src/main/resources/io/sc/platform/orm/jpa/i18n/enum_tw_CN.properties
  56. 11
      io.sc.platform.orm/src/main/resources/io/sc/platform/orm/jpa/i18n/enum_zh_CN.properties
  57. 36
      io.sc.platform.orm/src/main/resources/io/sc/platform/orm/jpa/i18n/messages.properties
  58. 37
      io.sc.platform.orm/src/main/resources/io/sc/platform/orm/jpa/i18n/messages_tw_CN.properties
  59. 37
      io.sc.platform.orm/src/main/resources/io/sc/platform/orm/jpa/i18n/messages_zh_CN.properties
  60. 2
      io.sc.platform.system.api/src/main/java/io/sc/platform/system/api/corporation/CorporationVo.java
  61. 2
      io.sc.platform.system.api/src/main/java/io/sc/platform/system/api/dictionary/DictionaryVo.java
  62. 2
      io.sc.platform.system.api/src/main/java/io/sc/platform/system/api/ds/DsVo.java
  63. 11
      io.sc.platform.system/src/main/java/io/sc/platform/system/autoconfigure/MessageSourceAutoConfiguration.java
  64. 61
      io.sc.platform.system/src/main/java/io/sc/platform/system/autoconfigure/support/CompositeMessageSource.java
  65. 99
      io.sc.platform.system/src/main/java/io/sc/platform/system/autoconfigure/support/DatabaseMessageSource.java
  66. 19
      io.sc.platform.system/src/main/java/io/sc/platform/system/i18n/controller/I18nController.java
  67. 9
      io.sc.platform.system/src/main/java/io/sc/platform/system/i18n/jpa/entity/I18nEntity.java
  68. 5
      io.sc.platform.system/src/main/java/io/sc/platform/system/i18n/jpa/repository/I18nRepository.java
  69. 28
      io.sc.platform.system/src/main/java/io/sc/platform/system/i18n/service/I18nService.java
  70. 151
      io.sc.platform.system/src/main/java/io/sc/platform/system/i18n/service/impl/I18nServiceImpl.java
  71. 2
      io.sc.platform.system/src/main/java/io/sc/platform/system/menu/converter/MenuEntityVoConverter.java
  72. 3
      io.sc.platform.system/src/main/resources/META-INF/platform/plugins/security.json

3
io.sc.platform.core.frontend/package.json

@ -1,12 +1,11 @@
{
"name": "platform-core",
"version": "8.1.12",
"version": "8.1.13",
"description": "前端核心包,用于快速构建前端的脚手架",
"//main": "库的主文件",
"main": "dist/platform-core.js",
"//files": "打包时需要包含的文件列表",
"files": [
"src",
"template-project/*.*",
"template-project/public",
"template-project/src",

2
io.sc.platform.core.frontend/src/platform/PConst.ts

@ -57,7 +57,7 @@ class PConst {
/**
* API URL
*/
static API_I18N_MESSAGES_URL: string = '/api/system/i18n/getI18nMessages';
static API_I18N_MESSAGES_URL: string = '/api/mvc/i18n/getI18nMessages';
/**
* API URL

2
io.sc.platform.core.frontend/src/platform/layout/sub-layout/Main.vue

@ -55,7 +55,7 @@
shrink
outside-arrows
mobile-arrows
:indicator-color="'primary'"
indicator-color="transparent"
:breakpoint="1000000"
dense
active-bg-color="primary"

5
io.sc.platform.core.frontend/src/platform/plugin/manager/ConfigureManager.ts

@ -38,15 +38,10 @@ class ConfigureManager {
*/
public static updateAppConfigure(configure: ConfigureType) {
if (configure) {
const $t = i18n.global.t;
// 更新 gc 响应式变量
if (gc !== configure) {
Tools.mergeObject(gc, configure);
}
// 设置网页标题
Tools.setTitile($t('application.title'));
// 设置网页图标
Tools.setFavicon(gc.theme.favicon);
// 更新 quasar 的 brand 颜色

4
io.sc.platform.core.frontend/template-project/package.json

@ -1,6 +1,6 @@
{
"name": "platform-core",
"version": "8.1.12",
"version": "8.1.13",
"description": "前端核心包,用于快速构建前端的脚手架",
"private": false,
"keywords": [],
@ -77,7 +77,7 @@
"luckyexcel": "1.0.1",
"mockjs": "1.1.0",
"pinia": "2.1.7",
"platform-core": "8.1.12",
"platform-core": "8.1.13",
"quasar": "2.13.0",
"react-dnd-html5-backend": "16.0.1",
"tailwindcss": "3.3.5",

47
io.sc.platform.core/src/main/java/io/sc/platform/core/autoconfigure/MessageSourceAutoConfiguration.java

@ -1,6 +1,7 @@
package io.sc.platform.core.autoconfigure;
import io.sc.platform.core.plugins.PluginManager;
import io.sc.platform.core.i18n.MessageSourceBaseName;
import io.sc.platform.core.i18n.PlatformResourceBundleMessageSource;
import org.springframework.boot.autoconfigure.AutoConfigureBefore;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.boot.autoconfigure.condition.SearchStrategy;
@ -11,11 +12,8 @@ import org.springframework.context.MessageSource;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.support.AbstractApplicationContext;
import org.springframework.context.support.ResourceBundleMessageSource;
import java.time.Duration;
import java.util.ArrayList;
import java.util.List;
/**
* 国际化消息源自动配置类
@ -35,43 +33,18 @@ public class MessageSourceAutoConfiguration {
@Bean
@ConditionalOnMissingBean
public MessageSource messageSource(MessageSourceProperties messageSourceProperties){
ResourceBundleMessageSource resourceBundleMessageSource = new ResourceBundleMessageSource();
resourceBundleMessageSource.setBasenames(getBasenames());
PlatformResourceBundleMessageSource messageSource = new PlatformResourceBundleMessageSource();
messageSource.setBasenames(MessageSourceBaseName.getBaseNames(messageSourceProperties.getBasename()));
if (messageSourceProperties.getEncoding() != null) {
resourceBundleMessageSource.setDefaultEncoding(messageSourceProperties.getEncoding().name());
messageSource.setDefaultEncoding(messageSourceProperties.getEncoding().name());
}
resourceBundleMessageSource.setAlwaysUseMessageFormat(messageSourceProperties.isAlwaysUseMessageFormat());
resourceBundleMessageSource.setUseCodeAsDefaultMessage(messageSourceProperties.isUseCodeAsDefaultMessage());
resourceBundleMessageSource.setFallbackToSystemLocale(messageSourceProperties.isFallbackToSystemLocale());
messageSource.setAlwaysUseMessageFormat(messageSourceProperties.isAlwaysUseMessageFormat());
messageSource.setUseCodeAsDefaultMessage(messageSourceProperties.isUseCodeAsDefaultMessage());
messageSource.setFallbackToSystemLocale(messageSourceProperties.isFallbackToSystemLocale());
Duration cacheDuration = messageSourceProperties.getCacheDuration();
if (cacheDuration != null) {
resourceBundleMessageSource.setCacheMillis(cacheDuration.toMillis());
messageSource.setCacheMillis(cacheDuration.toMillis());
}
return resourceBundleMessageSource;
}
private String[] getBasenames(){
List<String> result =new ArrayList<>();
List<io.sc.platform.core.plugins.item.Message> messages = PluginManager.getInstance().getMessages();
if(messages!=null && !messages.isEmpty()){
List<String> baseNames =new ArrayList<>();
//包含 include
messages.forEach(message -> {
List<String> includes =message.getIncludes();
if(includes!=null && !includes.isEmpty()){
includes.forEach(include -> baseNames.add(include.replace('/', '.')));
}
});
//排除 exclude
messages.forEach(message -> {
List<String> excludes =message.getExcludes();
if(excludes!=null && !excludes.isEmpty()){
excludes.forEach(exclude -> baseNames.remove(exclude.replace('/', '.')) );
}
});
result.addAll(baseNames);
}
return result.toArray(new String[]{});
return messageSource;
}
}

50
io.sc.platform.core/src/main/java/io/sc/platform/core/enums/Language.java

@ -0,0 +1,50 @@
package io.sc.platform.core.enums;
import java.util.Locale;
/**
* 语言枚举类
*/
public enum Language {
en, /* 英文 */
zh_CN, /* 简体中文 */
tw_CN; /* 繁体中文*/
/**
* 获取默认语言
* @return 默认语言
*/
public static Language getDefault(){
return Language.zh_CN;
}
/**
* 是否存在字符串语言对应的语言枚举
* @param lang 语言
* @return 是否存在字符串语言对应的语言枚举
*/
public static boolean exists(String lang){
for(Language language : Language.values()){
if(language.toString().equalsIgnoreCase(lang)){
return true;
}
}
return false;
}
/**
* 获取语言枚举对应的区域对象
* @return 区域对象
*/
public Locale getLocale(){
switch (this){
case en:
return new Locale("en");
case zh_CN:
return new Locale("zh","CN");
case tw_CN:
return new Locale("tw","CN");
}
return null;
}
}

6
io.sc.platform.core/src/main/java/io/sc/platform/core/autoconfigure/support/MessageSourceBaseNameUtil.java → io.sc.platform.core/src/main/java/io/sc/platform/core/i18n/MessageSourceBaseName.java

@ -1,16 +1,14 @@
package io.sc.platform.core.autoconfigure.support;
package io.sc.platform.core.i18n;
import io.sc.platform.core.plugins.PluginManager;
import org.springframework.util.StringUtils;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import static org.springframework.util.StringUtils.commaDelimitedListToStringArray;
import static org.springframework.util.StringUtils.trimAllWhitespace;
public class MessageSourceBaseNameUtil {
public class MessageSourceBaseName {
public static String[] getBaseNames(String basename){
List<String> result =new ArrayList<String>();
//首先加载在 application.properties 中配置的 spring.messages.basename 列表

24
io.sc.platform.core/src/main/java/io/sc/platform/core/service/MessageSourceService.java

@ -0,0 +1,24 @@
package io.sc.platform.core.service;
import io.sc.platform.core.enums.Language;
import java.util.Map;
/**
* 消息源服务接口
*/
public interface MessageSourceService {
/**
* 获取一个或多个多语言消息键的所有多语言消息
* @param messageKeys 消息 key
* @return 所有多语言消息(key:语言,value:对应区域的多语言消息文本)
*/
public Map<Language, Map<String, String>> getMessages(String... messageKeys);
/**
* 获取某个语言的所有多语言消息
* @param lang 语言
* @return 某个语言的所有多语言消息(key:消息键,value:消息文本)
*/
public Map<String,String> getMessages(Language lang);
}

35
io.sc.platform.core/src/main/java/io/sc/platform/core/service/impl/MessageSourceServiceImpl.java

@ -0,0 +1,35 @@
package io.sc.platform.core.service.impl;
import io.sc.platform.core.enums.Language;
import io.sc.platform.core.i18n.PlatformMessageSource;
import io.sc.platform.core.service.MessageSourceService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.MessageSource;
import org.springframework.stereotype.Service;
import java.util.Collections;
import java.util.Map;
@Service
public class MessageSourceServiceImpl implements MessageSourceService {
@Autowired
private MessageSource messageSource;
@Override
public Map<Language, Map<String, String>> getMessages(String... messageKeys) {
if(PlatformMessageSource.class.isAssignableFrom(messageSource.getClass())){
PlatformMessageSource pMessageSource =(PlatformMessageSource)messageSource;
return pMessageSource.getMessages(messageKeys);
}
return Collections.emptyMap();
}
@Override
public Map<String, String> getMessages(Language lang) {
if(PlatformMessageSource.class.isAssignableFrom(messageSource.getClass())){
PlatformMessageSource pMessageSource =(PlatformMessageSource)messageSource;
return pMessageSource.getMessages(lang);
}
return Collections.emptyMap();
}
}

9
io.sc.platform.lcdp/src/main/java/io/sc/platform/lcdp/configure/vo/Configure.java

@ -4,18 +4,9 @@ import java.util.HashMap;
import java.util.Map;
public class Configure {
private Map<String, Map<String,String>> i18nMessages =new HashMap<>();
private Setting setting =new Setting();
private Theme theme =new Theme();
public Map<String, Map<String, String>> getI18nMessages() {
return i18nMessages;
}
public void setI18nMessages(Map<String, Map<String, String>> i18nMessages) {
this.i18nMessages = i18nMessages;
}
public Setting getSetting() {
return setting;
}

22
io.sc.platform.mvc/src/main/java/io/sc/platform/mvc/controller/I18nMessageController.java

@ -0,0 +1,22 @@
package io.sc.platform.mvc.controller;
import io.sc.platform.core.enums.Language;
import io.sc.platform.core.service.MessageSourceService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.Map;
@RestController
@RequestMapping("/api/mvc/i18n")
public class I18nMessageController {
@Autowired private MessageSourceService messageSourceService;
@GetMapping(value={"getI18nMessages/{lang}","getI18nMessages"})
public Map<String,String> getI18nMessages(@PathVariable(name = "lang",required = false) Language language) throws Exception{
return messageSourceService.getMessages(language==null? Language.getDefault():language);
}
}

13
io.sc.platform.mvc/src/main/java/io/sc/platform/mvc/controller/IndexWebController.java

@ -1,21 +1,12 @@
package io.sc.platform.mvc.controller;
import java.util.Map;
import io.sc.platform.mvc.service.FrontEndService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import io.sc.platform.mvc.service.SystemParameterService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext;
import org.springframework.stereotype.Controller;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.servlet.ModelAndView;
import io.sc.platform.core.util.ReflectUtil;
import io.sc.platform.mvc.service.SystemParameterService;
import javax.servlet.http.HttpServletRequest;
/**
@ -25,12 +16,10 @@ import javax.servlet.http.HttpServletRequest;
@RequestMapping
public class IndexWebController {
@Autowired private SystemParameterService systemParameterService;
@Autowired private FrontEndService frontEndService;
@RequestMapping(value={"","/","index.html"})
public ModelAndView index(HttpServletRequest request) {
ModelAndView mv =new ModelAndView(systemParameterService.getParameter("parameter.system.indexPageTemplate"));
mv.addObject("remoteEntries",frontEndService.getRemoteEntries(request).values());
return mv;
}
}

1
io.sc.platform.mvc/src/main/resources/META-INF/platform/plugins/messages.json

@ -1,6 +1,5 @@
{
"includes":[
"io/sc/platform/mvc/i18n/app-configure",
"io/sc/platform/mvc/i18n/messages"
]
}

4
io.sc.platform.mvc/src/main/resources/META-INF/platform/plugins/security.json

@ -1,5 +1,7 @@
{
"permitPatterns":[
"/api/mvc/frontend/regist"
"/api/mvc/frontend/regist",
"/api/mvc/i18n/getI18nMessages",
"/api/mvc/i18n/getI18nMessages/**/*"
]
}

2
io.sc.platform.orm.api/src/main/java/io/sc/platform/orm/enums/BooleanTrueFalse.java → io.sc.platform.orm.api/src/main/java/io/sc/platform/orm/api/enums/BooleanTrueFalse.java

@ -1,4 +1,4 @@
package io.sc.platform.orm.enums;
package io.sc.platform.orm.api.enums;
/**
* 真假枚举

2
io.sc.platform.orm.api/src/main/java/io/sc/platform/orm/enums/BooleanYesNo.java → io.sc.platform.orm.api/src/main/java/io/sc/platform/orm/api/enums/BooleanYesNo.java

@ -1,4 +1,4 @@
package io.sc.platform.orm.enums;
package io.sc.platform.orm.api.enums;
/**
* 是否枚举

2
io.sc.platform.orm.api/src/main/java/io/sc/platform/orm/enums/DataComeFrom.java → io.sc.platform.orm.api/src/main/java/io/sc/platform/orm/api/enums/DataComeFrom.java

@ -1,4 +1,4 @@
package io.sc.platform.orm.enums;
package io.sc.platform.orm.api.enums;
/**
* 数据来源枚举

2
io.sc.platform.orm/src/main/java/io/sc/platform/orm/exception/ActionNotSupportException.java → io.sc.platform.orm.api/src/main/java/io/sc/platform/orm/api/exception/ActionNotSupportException.java

@ -1,4 +1,4 @@
package io.sc.platform.orm.exception;
package io.sc.platform.orm.api.exception;
public class ActionNotSupportException extends RuntimeException{
private static final long serialVersionUID = -2376232220565051356L;

2
io.sc.platform.orm/src/main/java/io/sc/platform/orm/exception/CreateException.java → io.sc.platform.orm.api/src/main/java/io/sc/platform/orm/api/exception/CreateException.java

@ -1,4 +1,4 @@
package io.sc.platform.orm.exception;
package io.sc.platform.orm.api.exception;
public class CreateException extends RuntimeException{
private static final long serialVersionUID = 6327567975334882388L;

2
io.sc.platform.orm/src/main/java/io/sc/platform/orm/exception/CreateNullObjectException.java → io.sc.platform.orm.api/src/main/java/io/sc/platform/orm/api/exception/CreateNullObjectException.java

@ -1,4 +1,4 @@
package io.sc.platform.orm.exception;
package io.sc.platform.orm.api.exception;
public class CreateNullObjectException extends RuntimeException{
private static final long serialVersionUID = 7162890682941862977L;

2
io.sc.platform.orm/src/main/java/io/sc/platform/orm/exception/CreateNullPrimaryKeyException.java → io.sc.platform.orm.api/src/main/java/io/sc/platform/orm/api/exception/CreateNullPrimaryKeyException.java

@ -1,4 +1,4 @@
package io.sc.platform.orm.exception;
package io.sc.platform.orm.api.exception;
public class CreateNullPrimaryKeyException extends RuntimeException{
private static final long serialVersionUID = -6200176923805221532L;

2
io.sc.platform.orm/src/main/java/io/sc/platform/orm/exception/CreateObjectAlreadyExistsException.java → io.sc.platform.orm.api/src/main/java/io/sc/platform/orm/api/exception/CreateObjectAlreadyExistsException.java

@ -1,4 +1,4 @@
package io.sc.platform.orm.exception;
package io.sc.platform.orm.api.exception;
public class CreateObjectAlreadyExistsException extends RuntimeException{
private static final long serialVersionUID = 1313545420420338988L;

2
io.sc.platform.orm/src/main/java/io/sc/platform/orm/exception/DeleteException.java → io.sc.platform.orm.api/src/main/java/io/sc/platform/orm/api/exception/DeleteException.java

@ -1,4 +1,4 @@
package io.sc.platform.orm.exception;
package io.sc.platform.orm.api.exception;
public class DeleteException extends RuntimeException{
private static final long serialVersionUID = 2475497975087435465L;

2
io.sc.platform.orm/src/main/java/io/sc/platform/orm/exception/DeleteNullObjectException.java → io.sc.platform.orm.api/src/main/java/io/sc/platform/orm/api/exception/DeleteNullObjectException.java

@ -1,4 +1,4 @@
package io.sc.platform.orm.exception;
package io.sc.platform.orm.api.exception;
public class DeleteNullObjectException extends RuntimeException{
private static final long serialVersionUID = 4178891750306919714L;

2
io.sc.platform.orm/src/main/java/io/sc/platform/orm/exception/DeleteNullPrimaryKeyCollectionException.java → io.sc.platform.orm.api/src/main/java/io/sc/platform/orm/api/exception/DeleteNullPrimaryKeyCollectionException.java

@ -1,4 +1,4 @@
package io.sc.platform.orm.exception;
package io.sc.platform.orm.api.exception;
public class DeleteNullPrimaryKeyCollectionException extends RuntimeException{
private static final long serialVersionUID = 6514944008068047687L;

2
io.sc.platform.orm/src/main/java/io/sc/platform/orm/exception/DeleteNullPrimaryKeyException.java → io.sc.platform.orm.api/src/main/java/io/sc/platform/orm/api/exception/DeleteNullPrimaryKeyException.java

@ -1,4 +1,4 @@
package io.sc.platform.orm.exception;
package io.sc.platform.orm.api.exception;
public class DeleteNullPrimaryKeyException extends RuntimeException{
private static final long serialVersionUID = 3995371230625815559L;

2
io.sc.platform.orm/src/main/java/io/sc/platform/orm/exception/DeleteObjectNotExistsException.java → io.sc.platform.orm.api/src/main/java/io/sc/platform/orm/api/exception/DeleteObjectNotExistsException.java

@ -1,4 +1,4 @@
package io.sc.platform.orm.exception;
package io.sc.platform.orm.api.exception;
public class DeleteObjectNotExistsException extends RuntimeException{
private static final long serialVersionUID = -7460531748929099864L;

2
io.sc.platform.orm/src/main/java/io/sc/platform/orm/exception/DeleteOperateNotAllowedException.java → io.sc.platform.orm.api/src/main/java/io/sc/platform/orm/api/exception/DeleteOperateNotAllowedException.java

@ -1,4 +1,4 @@
package io.sc.platform.orm.exception;
package io.sc.platform.orm.api.exception;
public class DeleteOperateNotAllowedException extends RuntimeException{
private static final long serialVersionUID = -7460531748929099864L;

2
io.sc.platform.orm/src/main/java/io/sc/platform/orm/exception/UpdateException.java → io.sc.platform.orm.api/src/main/java/io/sc/platform/orm/api/exception/UpdateException.java

@ -1,4 +1,4 @@
package io.sc.platform.orm.exception;
package io.sc.platform.orm.api.exception;
public class UpdateException extends RuntimeException{
private static final long serialVersionUID = -6484958597393057086L;

2
io.sc.platform.orm/src/main/java/io/sc/platform/orm/exception/UpdateNullNewObjectException.java → io.sc.platform.orm.api/src/main/java/io/sc/platform/orm/api/exception/UpdateNullNewObjectException.java

@ -1,4 +1,4 @@
package io.sc.platform.orm.exception;
package io.sc.platform.orm.api.exception;
public class UpdateNullNewObjectException extends RuntimeException{
private static final long serialVersionUID = -8491571801343921880L;

2
io.sc.platform.orm/src/main/java/io/sc/platform/orm/exception/UpdateNullNewObjectPrimaryKeyException.java → io.sc.platform.orm.api/src/main/java/io/sc/platform/orm/api/exception/UpdateNullNewObjectPrimaryKeyException.java

@ -1,4 +1,4 @@
package io.sc.platform.orm.exception;
package io.sc.platform.orm.api.exception;
public class UpdateNullNewObjectPrimaryKeyException extends RuntimeException{
private static final long serialVersionUID = 1758275796806445567L;

2
io.sc.platform.orm/src/main/java/io/sc/platform/orm/exception/UpdateNullOldObjectPrimaryKeyException.java → io.sc.platform.orm.api/src/main/java/io/sc/platform/orm/api/exception/UpdateNullOldObjectPrimaryKeyException.java

@ -1,4 +1,4 @@
package io.sc.platform.orm.exception;
package io.sc.platform.orm.api.exception;
public class UpdateNullOldObjectPrimaryKeyException extends RuntimeException{
private static final long serialVersionUID = 5400526349323784149L;

2
io.sc.platform.orm/src/main/java/io/sc/platform/orm/exception/UpdateObjectAlreadyExistsException.java → io.sc.platform.orm.api/src/main/java/io/sc/platform/orm/api/exception/UpdateObjectAlreadyExistsException.java

@ -1,4 +1,4 @@
package io.sc.platform.orm.exception;
package io.sc.platform.orm.api.exception;
public class UpdateObjectAlreadyExistsException extends RuntimeException{
private static final long serialVersionUID = -8558161810796596070L;

2
io.sc.platform.orm/src/main/java/io/sc/platform/orm/exception/UpdateOldObjectNotExistsException.java → io.sc.platform.orm.api/src/main/java/io/sc/platform/orm/api/exception/UpdateOldObjectNotExistsException.java

@ -1,4 +1,4 @@
package io.sc.platform.orm.exception;
package io.sc.platform.orm.api.exception;
public class UpdateOldObjectNotExistsException extends RuntimeException{
private static final long serialVersionUID = -638088355927239753L;

2
io.sc.platform.orm/src/main/java/io/sc/platform/orm/exception/UserNewPasswordAndConfirmNewPasswordNotMatchException.java → io.sc.platform.orm.api/src/main/java/io/sc/platform/orm/api/exception/UserNewPasswordAndConfirmNewPasswordNotMatchException.java

@ -1,4 +1,4 @@
package io.sc.platform.orm.exception;
package io.sc.platform.orm.api.exception;
public class UserNewPasswordAndConfirmNewPasswordNotMatchException extends Exception{
private static final long serialVersionUID = 4969390107861857771L;

2
io.sc.platform.orm/src/main/java/io/sc/platform/orm/exception/UserNewPasswordEmptyException.java → io.sc.platform.orm.api/src/main/java/io/sc/platform/orm/api/exception/UserNewPasswordEmptyException.java

@ -1,4 +1,4 @@
package io.sc.platform.orm.exception;
package io.sc.platform.orm.api.exception;
public class UserNewPasswordEmptyException extends Exception{
private static final long serialVersionUID = 8166920368692817004L;

2
io.sc.platform.orm/src/main/java/io/sc/platform/orm/exception/UserRawPasswordEmptyException.java → io.sc.platform.orm.api/src/main/java/io/sc/platform/orm/api/exception/UserRawPasswordEmptyException.java

@ -1,4 +1,4 @@
package io.sc.platform.orm.exception;
package io.sc.platform.orm.api.exception;
public class UserRawPasswordEmptyException extends Exception{
private static final long serialVersionUID = 8166920368692817004L;

2
io.sc.platform.orm/src/main/java/io/sc/platform/orm/exception/UserRawPasswordNotMatchException.java → io.sc.platform.orm.api/src/main/java/io/sc/platform/orm/api/exception/UserRawPasswordNotMatchException.java

@ -1,4 +1,4 @@
package io.sc.platform.orm.exception;
package io.sc.platform.orm.api.exception;
public class UserRawPasswordNotMatchException extends Exception{
private static final long serialVersionUID = 8166920368692817004L;

4
io.sc.platform.orm.api/src/main/java/io/sc/platform/orm/vo/AuditorVo.java → io.sc.platform.orm.api/src/main/java/io/sc/platform/orm/api/vo/AuditorVo.java

@ -1,7 +1,7 @@
package io.sc.platform.orm.vo;
package io.sc.platform.orm.api.vo;
import com.fasterxml.jackson.annotation.JsonPropertyOrder;
import io.sc.platform.orm.enums.DataComeFrom;
import io.sc.platform.orm.api.enums.DataComeFrom;
import java.util.Date;

5
io.sc.platform.orm.api/src/main/java/io/sc/platform/orm/api/vo/BaseVo.java

@ -0,0 +1,5 @@
package io.sc.platform.orm.api.vo;
public class BaseVo {
}

2
io.sc.platform.orm.api/src/main/java/io/sc/platform/orm/vo/CorporationAuditorVo.java → io.sc.platform.orm.api/src/main/java/io/sc/platform/orm/api/vo/CorporationAuditorVo.java

@ -1,4 +1,4 @@
package io.sc.platform.orm.vo;
package io.sc.platform.orm.api.vo;
/**
* 多法人审计实体 VO

5
io.sc.platform.orm.api/src/main/java/io/sc/platform/orm/vo/BaseVo.java

@ -1,5 +0,0 @@
package io.sc.platform.orm.vo;
public class BaseVo {
}

6
io.sc.platform.orm.api/src/main/resources/META-INF/platform/plugins/messages.json

@ -0,0 +1,6 @@
{
"includes":[
"io/sc/platform/orm/api/i18n/enum",
"io/sc/platform/orm/api/i18n/exception"
]
}

11
io.sc.platform.orm.api/src/main/resources/io/sc/platform/orm/api/i18n/enum.properties

@ -0,0 +1,11 @@
# \u8868\u8FBE\u771F\u5047\u7684 Boolean \u679A\u4E3E
io.sc.platform.orm.api.enums.BooleanTrueFalse.TRUE=True
io.sc.platform.orm.api.enums.BooleanTrueFalse.FALSE=False
# \u8868\u8FBE\u662F\u5426\u7684 Boolean \u679A\u4E3E
io.sc.platform.orm.api.enums.BooleanYesNo.TRUE=Yes
io.sc.platform.orm.api.enums.BooleanYesNo.FALSE=No
# \u6570\u636E\u6765\u6E90\u679A\u4E3E
io.sc.platform.orm.api.enums.DataComeFrom.MANUAL=Manual
io.sc.platform.orm.api.enums.DataComeFrom.AUTO=Auto

11
io.sc.platform.orm.api/src/main/resources/io/sc/platform/orm/api/i18n/enum_tw_CN.properties

@ -0,0 +1,11 @@
# \u8868\u8FBE\u771F\u5047\u7684 Boolean \u679A\u4E3E
io.sc.platform.orm.api.enums.BooleanTrueFalse.TRUE=\u771F
io.sc.platform.orm.api.enums.BooleanTrueFalse.FALSE=\u5047
# \u8868\u8FBE\u662F\u5426\u7684 Boolean \u679A\u4E3E
io.sc.platform.orm.api.enums.BooleanYesNo.TRUE=\u662F
io.sc.platform.orm.api.enums.BooleanYesNo.FALSE=\u5426
# \u6570\u636E\u6765\u6E90\u679A\u4E3E
io.sc.platform.orm.api.enums.DataComeFrom.MANUAL=\u4EBA\u5DE5
io.sc.platform.orm.api.enums.DataComeFrom.AUTO=\u81EA\u52D5\u5C0E\u5165

11
io.sc.platform.orm.api/src/main/resources/io/sc/platform/orm/api/i18n/enum_zh_CN.properties

@ -0,0 +1,11 @@
# \u8868\u8FBE\u771F\u5047\u7684 Boolean \u679A\u4E3E
io.sc.platform.orm.api.enums.BooleanTrueFalse.TRUE=\u771F
io.sc.platform.orm.api.enums.BooleanTrueFalse.FALSE=\u5047
# \u8868\u8FBE\u662F\u5426\u7684 Boolean \u679A\u4E3E
io.sc.platform.orm.api.enums.BooleanYesNo.TRUE=\u662F
io.sc.platform.orm.api.enums.BooleanYesNo.FALSE=\u5426
# \u6570\u636E\u6765\u6E90\u679A\u4E3E
io.sc.platform.orm.api.enums.DataComeFrom.MANUAL=\u4EBA\u5DE5
io.sc.platform.orm.api.enums.DataComeFrom.AUTO=\u81EA\u52A8\u5BFC\u5165

35
io.sc.platform.orm.api/src/main/resources/io/sc/platform/orm/api/i18n/exception.properties

@ -0,0 +1,35 @@
io.sc.platform.orm.exception.CreateException=Create Failed!
io.sc.platform.orm.exception.CreateNullObjectException=Create Failed,the New Object is Null!
io.sc.platform.orm.exception.CreateNullPrimaryKeyException=Create Failed,the New Object's Primary Key is Null!
io.sc.platform.orm.exception.CreateObjectAlreadyExistsException=Create Failed,The New Object already Exists!
io.sc.platform.orm.exception.UpdateException=Update Failed!
io.sc.platform.orm.exception.UpdateNullOldObjectPrimaryKeyException=Update Failed,the Old Object's Primary Key is Null!
io.sc.platform.orm.exception.UpdateNullNewObjectPrimaryKeyException=Update Failed,the New Object's Primary Key is Null!
io.sc.platform.orm.exception.UpdateNullNewObjectException=Update Failed,the New Object is Null!
io.sc.platform.orm.exception.UpdateOldObjectNotExistsException=Update Failed,the Old Object Not Exists!
io.sc.platform.orm.exception.UpdateObjectAlreadyExistsException=Update Failed,The New Object already Exists!
io.sc.platform.orm.exception.DeleteException=Delete Failed!
io.sc.platform.orm.exception.DeleteObjectNotExistsException=Delete Failed,the Object will be deleted Not Exists!
io.sc.platform.orm.exception.DeleteOperateNotAllowedException=Delete Failed, the Object was reserved by system!
io.sc.platform.orm.exception.DeleteNullObjectException=Delete Failed,the Object will be deleted is Null!
io.sc.platform.orm.exception.DeleteNullPrimaryKeyCollectionException=Delete Failed,the Primary Key Collection which will be deleted is Empty!
io.sc.platform.orm.exception.DeleteNullPrimaryKeyException=Delete Failed,the Primary Key which will be deleted is Empty!
io.sc.platform.orm.exception.UserRawPasswordEmptyException=Raw Password Not allow Empty!
io.sc.platform.orm.exception.UserRawPasswordNotMatchException=Raw Password Error!
io.sc.platform.orm.exception.UserNewPasswordAndConfirmNewPasswordNotMatchException=The New Password and Confirm New Password NOT same!
io.sc.platform.orm.exception.UserNewPasswordEmptyException=The New Password Not allow Empty!
io.sc.platform.core.audit.AuditLogAction.ADD=Add
io.sc.platform.core.audit.AuditLogAction.REMOVE=Remove
io.sc.platform.core.audit.AuditLogAction.UPDATE=Update
io.sc.platform.core.audit.AuditLogAction.QUERY=Query
io.sc.platform.core.audit.AuditLogAction.FIND_ONE=Find One
io.sc.platform.core.audit.AuditLogAction.EXPORT=Export
io.sc.platform.core.audit.AuditLogAction.LOGIN=Login
io.sc.platform.core.audit.AuditLogAction.LOGOUT=Logout
io.sc.platform.core.audit.AuditLogStatus.SUCCESS=Success
io.sc.platform.core.audit.AuditLogStatus.FAILED=Failed

36
io.sc.platform.orm.api/src/main/resources/io/sc/platform/orm/api/i18n/exception_tw_CN.properties

@ -0,0 +1,36 @@
io.sc.platform.orm.exception.CreateException=\u65B0\u589E\u64CD\u4F5C\u5931\u6557!
io.sc.platform.orm.exception.CreateNullObjectException=\u65B0\u589E\u64CD\u4F5C\u5931\u6557,\u65B0\u589E\u5C0D\u8C61\u70BA\u7A7A!
io.sc.platform.orm.exception.CreateNullPrimaryKeyException=\u65B0\u589E\u64CD\u4F5C\u5931\u6557,\u65B0\u589E\u5C0D\u8C61\u7684\u4E3B\u9375(\u552F\u4E00\u6A19\u8B58\u65B0\u589E\u5C0D\u8C61,\u5982\u5C0D\u8C61\u7684\u540D\u7A31)\u70BA\u7A7A!
io.sc.platform.orm.exception.CreateObjectAlreadyExistsException=\u65B0\u589E\u64CD\u4F5C\u5931\u6557,\u7CFB\u7D71\u4E2D\u5DF2\u7D93\u5B58\u5728\u8A72\u5C0D\u8C61!
io.sc.platform.orm.exception.UpdateException=\u66F4\u65B0\u64CD\u4F5C\u5931\u6557!
io.sc.platform.orm.exception.UpdateNullOldObjectPrimaryKeyException=\u66F4\u65B0\u64CD\u4F5C\u5931\u6557,\u88AB\u66F4\u65B0\u5C0D\u8C61\u7684\u4E3B\u9375(\u552F\u4E00\u6A19\u8B58\u65B0\u589E\u5C0D\u8C61,\u5982\u5C0D\u8C61\u7684\u540D\u7A31)\u70BA\u7A7A!
io.sc.platform.orm.exception.UpdateNullNewObjectPrimaryKeyException=\u66F4\u65B0\u64CD\u4F5C\u5931\u6557,\u66F4\u65B0\u5BF9\u8C61\u7684\u4E3B\u952E(\u552F\u4E00\u6A19\u8B58\u65B0\u589E\u5C0D\u8C61,\u5982\u5C0D\u8C61\u7684\u540D\u7A31)\u70BA\u7A7A!
io.sc.platform.orm.exception.UpdateNullNewObjectException=\u66F4\u65B0\u64CD\u4F5C\u5931\u6557,\u66F4\u65B0\u5BF9\u8C61\u70BA\u7A7A!
io.sc.platform.orm.exception.UpdateOldObjectNotExistsException=\u66F4\u65B0\u64CD\u4F5C\u5931\u6557,\u88AB\u66F4\u65B0\u7684\u5BF9\u8C61\u4E0D\u5B58\u5728!
io.sc.platform.orm.exception.UpdateObjectAlreadyExistsException=\u66F4\u65B0\u64CD\u4F5C\u5931\u6557,\u7CFB\u7D71\u4E2D\u5DF2\u7D93\u5B58\u5728\u8A72\u5C0D\u8C61!
io.sc.platform.orm.exception.DeleteException=\u522A\u9664\u64CD\u4F5C\u5931\u6557!
io.sc.platform.orm.exception.DeleteObjectNotExistsException=\u522A\u9664\u64CD\u4F5C\u5931\u6557,\u88AB\u522A\u9664\u5C0D\u8C61\u4E0D\u5B58\u5728!
io.sc.platform.orm.exception.DeleteOperateNotAllowedException=\u522A\u9664\u64CD\u4F5C\u5931\u6557,\u6B64\u8A18\u9304\u70BA\u7CFB\u7D71\u4FDD\u7559\u8A18\u9304,\u7121\u6CD5\u5220\u9664!
io.sc.platform.orm.exception.DeleteNullObjectException=\u522A\u9664\u64CD\u4F5C\u5931\u6557,\u88AB\u522A\u9664\u5C0D\u8C61\u70BA\u7A7A!
io.sc.platform.orm.exception.DeleteNullPrimaryKeyCollectionException=\u522A\u9664\u64CD\u4F5C\u5931\u6557,\u88AB\u522A\u9664\u5C0D\u8C61\u7684\u4E3B\u952E(\u552F\u4E00\u6807\u8BC6\u65B0\u589E\u5BF9\u8C61,\u5982\u5BF9\u8C61\u7684\u540D\u79F0)\u96C6\u5408\u70BA\u7A7A!
io.sc.platform.orm.exception.DeleteNullPrimaryKeyException=\u522A\u9664\u64CD\u4F5C\u5931\u6557,\u88AB\u522A\u9664\u5C0D\u8C61\u7684\u4E3B\u952E(\u552F\u4E00\u6807\u8BC6\u65B0\u589E\u5BF9\u8C61,\u5982\u5BF9\u8C61\u7684\u540D\u7A31)\u70BA\u7A7A!
io.sc.platform.orm.exception.UserRawPasswordEmptyException=\u7528\u6236\u767B\u9304"\u539F\u5BC6\u78BC"\u4E0D\u5141\u8A31\u70BA\u7A7A!
io.sc.platform.orm.exception.UserRawPasswordNotMatchException=\u7528\u6236\u767B\u9304"\u539F\u5BC6\u78BC"\u932F\u8AA4!
io.sc.platform.orm.exception.UserNewPasswordAndConfirmNewPasswordNotMatchException=\u7528\u6236\u767B\u9304"\u65B0\u5BC6\u78BC"\u548C"\u65B0\u5BC6\u78BC\u78BA\u8A8D"\u4E0D\u4E00\u81F4!
io.sc.platform.orm.exception.UserNewPasswordEmptyException=\u7528\u6236\u767B\u9304"\u65B0\u5BC6\u78BC"\u4E0D\u5141\u8A31\u70BA\u7A7A!
io.sc.platform.core.audit.AuditLogAction.ADD=\u65B0\u589E
io.sc.platform.core.audit.AuditLogAction.REMOVE=\u522A\u9664
io.sc.platform.core.audit.AuditLogAction.UPDATE=\u66F4\u65B0
io.sc.platform.core.audit.AuditLogAction.QUERY=\u67E5\u8A62
io.sc.platform.core.audit.AuditLogAction.FIND_ONE=\u67E5\u627E\u55AE\u500B\u8A18\u9304
io.sc.platform.core.audit.AuditLogAction.EXPORT=\u5C0E\u51FA
io.sc.platform.core.audit.AuditLogAction.LOGIN=\u767B\u9304
io.sc.platform.core.audit.AuditLogAction.LOGOUT=\u9000\u51FA
io.sc.platform.core.audit.AuditLogStatus.SUCCESS=\u6210\u529F
io.sc.platform.core.audit.AuditLogStatus.FAILED=\u5931\u6557

36
io.sc.platform.orm.api/src/main/resources/io/sc/platform/orm/api/i18n/exception_zh_CN.properties

@ -0,0 +1,36 @@
io.sc.platform.orm.exception.CreateException=\u65B0\u589E\u64CD\u4F5C\u5931\u8D25!
io.sc.platform.orm.exception.CreateNullObjectException=\u65B0\u589E\u64CD\u4F5C\u5931\u8D25,\u65B0\u589E\u5BF9\u8C61\u4E3A\u7A7A!
io.sc.platform.orm.exception.CreateNullPrimaryKeyException=\u65B0\u589E\u64CD\u4F5C\u5931\u8D25,\u65B0\u589E\u5BF9\u8C61\u7684\u4E3B\u952E(\u552F\u4E00\u6807\u8BC6\u65B0\u589E\u5BF9\u8C61,\u5982\u5BF9\u8C61\u7684\u540D\u79F0)\u4E3A\u7A7A!
io.sc.platform.orm.exception.CreateObjectAlreadyExistsException=\u65B0\u589E\u64CD\u4F5C\u5931\u8D25,\u7CFB\u7EDF\u4E2D\u5DF2\u7ECF\u5B58\u5728\u8BE5\u5BF9\u8C61!
io.sc.platform.orm.exception.UpdateException=\u66F4\u65B0\u64CD\u4F5C\u5931\u8D25!
io.sc.platform.orm.exception.UpdateNullOldObjectPrimaryKeyException=\u66F4\u65B0\u5931\u8D25,\u88AB\u66F4\u65B0\u5BF9\u8C61\u7684\u4E3B\u952E(\u552F\u4E00\u6807\u8BC6\u65B0\u589E\u5BF9\u8C61,\u5982\u5BF9\u8C61\u7684\u540D\u79F0)\u4E3A\u7A7A!
io.sc.platform.orm.exception.UpdateNullNewObjectPrimaryKeyException=\u66F4\u65B0\u5931\u8D25,\u66F4\u65B0\u5BF9\u8C61\u7684\u4E3B\u952E(\u552F\u4E00\u6807\u8BC6\u65B0\u589E\u5BF9\u8C61,\u5982\u5BF9\u8C61\u7684\u540D\u79F0)\u4E3A\u7A7A!
io.sc.platform.orm.exception.UpdateNullNewObjectException=\u66F4\u65B0\u5931\u8D25,\u66F4\u65B0\u5BF9\u8C61\u4E3A\u7A7A!
io.sc.platform.orm.exception.UpdateOldObjectNotExistsException=\u66F4\u65B0\u5931\u8D25,\u88AB\u66F4\u65B0\u7684\u5BF9\u8C61\u4E0D\u5B58\u5728!
io.sc.platform.orm.exception.UpdateObjectAlreadyExistsException=\u66F4\u65B0\u5931\u8D25,\u7CFB\u7EDF\u4E2D\u5DF2\u7ECF\u5B58\u5728\u8BE5\u5BF9\u8C61!
io.sc.platform.orm.exception.DeleteException=\u5220\u9664\u64CD\u4F5C\u5931\u8D25!
io.sc.platform.orm.exception.DeleteObjectNotExistsException=\u5220\u9664\u64CD\u4F5C\u5931\u8D25,\u88AB\u5220\u9664\u5BF9\u8C61\u4E0D\u5B58\u5728!
io.sc.platform.orm.exception.DeleteOperateNotAllowedException=\u5220\u9664\u64CD\u4F5C\u5931\u8D25,\u6B64\u8BB0\u5F55\u4E3A\u7CFB\u7EDF\u4FDD\u7559\u8BB0\u5F55,\u65E0\u6CD5\u5220\u9664!
io.sc.platform.orm.exception.DeleteNullObjectException=\u5220\u9664\u64CD\u4F5C\u5931\u8D25,\u88AB\u5220\u9664\u5BF9\u8C61\u4E3A\u7A7A!
io.sc.platform.orm.exception.DeleteNullPrimaryKeyCollectionException=\u5220\u9664\u64CD\u4F5C\u5931\u8D25,\u88AB\u5220\u9664\u5BF9\u8C61\u7684\u4E3B\u952E(\u552F\u4E00\u6807\u8BC6\u65B0\u589E\u5BF9\u8C61,\u5982\u5BF9\u8C61\u7684\u540D\u79F0)\u96C6\u5408\u4E3A\u7A7A!
io.sc.platform.orm.exception.DeleteNullPrimaryKeyException=\u5220\u9664\u64CD\u4F5C\u5931\u8D25,\u88AB\u5220\u9664\u5BF9\u8C61\u7684\u4E3B\u952E(\u552F\u4E00\u6807\u8BC6\u65B0\u589E\u5BF9\u8C61,\u5982\u5BF9\u8C61\u7684\u540D\u79F0)\u4E3A\u7A7A!
io.sc.platform.orm.exception.UserRawPasswordEmptyException=\u7528\u6237\u767B\u5F55"\u539F\u5BC6\u7801"\u4E0D\u5141\u8BB8\u4E3A\u7A7A!
io.sc.platform.orm.exception.UserRawPasswordNotMatchException=\u7528\u6237\u767B\u5F55"\u539F\u5BC6\u7801"\u9519\u8BEF!
io.sc.platform.orm.exception.UserNewPasswordAndConfirmNewPasswordNotMatchException=\u7528\u6237\u767B\u5F55"\u65B0\u5BC6\u7801"\u548C"\u65B0\u5BC6\u7801\u786E\u8BA4"\u4E0D\u4E00\u81F4!
io.sc.platform.orm.exception.UserNewPasswordEmptyException=\u7528\u6237\u767B\u5F55"\u65B0\u5BC6\u7801"\u4E0D\u5141\u8BB8\u4E3A\u7A7A!
io.sc.platform.core.audit.AuditLogAction.ADD=\u65B0\u589E
io.sc.platform.core.audit.AuditLogAction.REMOVE=\u5220\u9664
io.sc.platform.core.audit.AuditLogAction.UPDATE=\u66F4\u65B0
io.sc.platform.core.audit.AuditLogAction.QUERY=\u67E5\u8BE2
io.sc.platform.core.audit.AuditLogAction.FIND_ONE=\u67E5\u627E\u5355\u4E2A\u8BB0\u5F55
io.sc.platform.core.audit.AuditLogAction.EXPORT=\u5BFC\u51FA
io.sc.platform.core.audit.AuditLogAction.LOGIN=\u767B\u5F55
io.sc.platform.core.audit.AuditLogAction.LOGOUT=\u9000\u51FA
io.sc.platform.core.audit.AuditLogStatus.SUCCESS=\u6210\u529F
io.sc.platform.core.audit.AuditLogStatus.FAILED=\u5931\u8D25

2
io.sc.platform.orm/src/main/java/io/sc/platform/orm/entity/AuditorEntity.java

@ -1,7 +1,7 @@
package io.sc.platform.orm.entity;
import com.fasterxml.jackson.annotation.JsonProperty;
import io.sc.platform.orm.enums.DataComeFrom;
import io.sc.platform.orm.api.enums.DataComeFrom;
import org.springframework.data.annotation.CreatedBy;
import org.springframework.data.annotation.CreatedDate;
import org.springframework.data.annotation.LastModifiedBy;

22
io.sc.platform.orm/src/main/java/io/sc/platform/orm/service/support/DaoExceptionProvider.java

@ -2,17 +2,17 @@ package io.sc.platform.orm.service.support;
import java.io.Serializable;
import io.sc.platform.orm.exception.CreateNullObjectException;
import io.sc.platform.orm.exception.CreateObjectAlreadyExistsException;
import io.sc.platform.orm.exception.DeleteNullObjectException;
import io.sc.platform.orm.exception.DeleteNullPrimaryKeyCollectionException;
import io.sc.platform.orm.exception.DeleteNullPrimaryKeyException;
import io.sc.platform.orm.exception.DeleteObjectNotExistsException;
import io.sc.platform.orm.exception.DeleteOperateNotAllowedException;
import io.sc.platform.orm.exception.UpdateNullNewObjectException;
import io.sc.platform.orm.exception.UpdateNullOldObjectPrimaryKeyException;
import io.sc.platform.orm.exception.UpdateObjectAlreadyExistsException;
import io.sc.platform.orm.exception.UpdateOldObjectNotExistsException;
import io.sc.platform.orm.api.exception.CreateNullObjectException;
import io.sc.platform.orm.api.exception.CreateObjectAlreadyExistsException;
import io.sc.platform.orm.api.exception.DeleteNullObjectException;
import io.sc.platform.orm.api.exception.DeleteNullPrimaryKeyCollectionException;
import io.sc.platform.orm.api.exception.DeleteNullPrimaryKeyException;
import io.sc.platform.orm.api.exception.DeleteObjectNotExistsException;
import io.sc.platform.orm.api.exception.DeleteOperateNotAllowedException;
import io.sc.platform.orm.api.exception.UpdateNullNewObjectException;
import io.sc.platform.orm.api.exception.UpdateNullOldObjectPrimaryKeyException;
import io.sc.platform.orm.api.exception.UpdateObjectAlreadyExistsException;
import io.sc.platform.orm.api.exception.UpdateOldObjectNotExistsException;
public interface DaoExceptionProvider<T,ID extends Serializable> {
/**

6
io.sc.platform.orm/src/main/resources/META-INF/platform/plugins/messages.json

@ -1,6 +0,0 @@
{
"includes":[
"io/sc/platform/orm/jpa/i18n/enum",
"io/sc/platform/orm/jpa/i18n/messages"
]
}

11
io.sc.platform.orm/src/main/resources/io/sc/platform/orm/jpa/i18n/enum.properties

@ -1,11 +0,0 @@
# \u8868\u8FBE\u771F\u5047\u7684 Boolean \u679A\u4E3E
org.wsp.framework.jpa.enums.BooleanTrueFalse.TRUE=True
org.wsp.framework.jpa.enums.BooleanTrueFalse.FALSE=False
# \u8868\u8FBE\u662F\u5426\u7684 Boolean \u679A\u4E3E
org.wsp.framework.jpa.enums.BooleanYesNo.TRUE=Yes
org.wsp.framework.jpa.enums.BooleanYesNo.FALSE=No
# \u6570\u636E\u6765\u6E90\u679A\u4E3E
org.wsp.framework.jpa.enums.DataComeFrom.MANUAL=Manual
org.wsp.framework.jpa.enums.DataComeFrom.AUTO=Auto

11
io.sc.platform.orm/src/main/resources/io/sc/platform/orm/jpa/i18n/enum_tw_CN.properties

@ -1,11 +0,0 @@
# \u8868\u8FBE\u771F\u5047\u7684 Boolean \u679A\u4E3E
org.wsp.framework.jpa.enums.BooleanTrueFalse.TRUE=\u771F
org.wsp.framework.jpa.enums.BooleanTrueFalse.FALSE=\u5047
# \u8868\u8FBE\u662F\u5426\u7684 Boolean \u679A\u4E3E
org.wsp.framework.jpa.enums.BooleanYesNo.TRUE=\u662F
org.wsp.framework.jpa.enums.BooleanYesNo.FALSE=\u5426
# \u6570\u636E\u6765\u6E90\u679A\u4E3E
org.wsp.framework.jpa.enums.DataComeFrom.MANUAL=\u4EBA\u5DE5
org.wsp.framework.jpa.enums.DataComeFrom.AUTO=\u81EA\u52D5\u5C0E\u5165

11
io.sc.platform.orm/src/main/resources/io/sc/platform/orm/jpa/i18n/enum_zh_CN.properties

@ -1,11 +0,0 @@
# \u8868\u8FBE\u771F\u5047\u7684 Boolean \u679A\u4E3E
org.wsp.framework.jpa.enums.BooleanTrueFalse.TRUE=\u771F
org.wsp.framework.jpa.enums.BooleanTrueFalse.FALSE=\u5047
# \u8868\u8FBE\u662F\u5426\u7684 Boolean \u679A\u4E3E
org.wsp.framework.jpa.enums.BooleanYesNo.TRUE=\u662F
org.wsp.framework.jpa.enums.BooleanYesNo.FALSE=\u5426
# \u6570\u636E\u6765\u6E90\u679A\u4E3E
org.wsp.framework.jpa.enums.DataComeFrom.MANUAL=\u4EBA\u5DE5
org.wsp.framework.jpa.enums.DataComeFrom.AUTO=\u81EA\u52A8\u5BFC\u5165

36
io.sc.platform.orm/src/main/resources/io/sc/platform/orm/jpa/i18n/messages.properties

@ -1,36 +0,0 @@
org.wsp.framework.jpa.exception.CreateException=Create Failed!
org.wsp.framework.jpa.exception.CreateNullObjectException=Create Failed,the New Object is Null!
org.wsp.framework.jpa.exception.CreateNullPrimaryKeyException=Create Failed,the New Object's Primary Key is Null!
org.wsp.framework.jpa.exception.CreateObjectAlreadyExistsException=Create Failed,The New Object already Exists!
org.wsp.framework.jpa.exception.UpdateException=Update Failed!
org.wsp.framework.jpa.exception.UpdateNullOldObjectPrimaryKeyException=Update Failed,the Old Object's Primary Key is Null!
org.wsp.framework.jpa.exception.UpdateNullNewObjectPrimaryKeyException=Update Failed,the New Object's Primary Key is Null!
org.wsp.framework.jpa.exception.UpdateNullNewObjectException=Update Failed,the New Object is Null!
org.wsp.framework.jpa.exception.UpdateOldObjectNotExistsException=Update Failed,the Old Object Not Exists!
org.wsp.framework.jpa.exception.UpdateObjectAlreadyExistsException=Update Failed,The New Object already Exists!
org.wsp.framework.jpa.exception.DeleteException=Delete Failed!
org.wsp.framework.jpa.exception.DeleteObjectNotExistsException=Delete Failed,the Object will be deleted Not Exists!
org.wsp.framework.jpa.exception.DeleteOperateNotAllowedException=Delete Failed, the Object was reserved by system!
org.wsp.framework.jpa.exception.DeleteNullObjectException=Delete Failed,the Object will be deleted is Null!
org.wsp.framework.jpa.exception.DeleteNullPrimaryKeyCollectionException=Delete Failed,the Primary Key Collection which will be deleted is Empty!
org.wsp.framework.jpa.exception.DeleteNullPrimaryKeyException=Delete Failed,the Primary Key which will be deleted is Empty!
org.wsp.framework.jpa.exception.UserRawPasswordEmptyException=Raw Password Not allow Empty!
org.wsp.framework.jpa.exception.UserRawPasswordNotMatchException=Raw Password Error!
org.wsp.framework.jpa.exception.UserNewPasswordAndConfirmNewPasswordNotMatchException=The New Password and Confirm New Password NOT same!
org.wsp.framework.jpa.exception.UserNewPasswordEmptyException=The New Password Not allow Empty!
org.wsp.framework.jpa.model.access.support.AccessType.ADD=Add
org.wsp.framework.jpa.model.access.support.AccessType.REMOVE=Remove
org.wsp.framework.jpa.model.access.support.AccessType.UPDATE=Update
org.wsp.framework.jpa.model.access.support.AccessType.QUERY=Query
org.wsp.framework.jpa.model.access.support.AccessType.FIND_ONE=Find One
org.wsp.framework.jpa.model.access.support.AccessType.EXPORT=Export
org.wsp.framework.jpa.model.access.support.AccessType.LOGIN=Login
org.wsp.framework.jpa.model.access.support.AccessType.LOGOUT=Logout
org.wsp.framework.jpa.model.access.support.AccessStatus.SUCCESS=Success
org.wsp.framework.jpa.model.access.support.AccessStatus.FAILED=Failed
org.wsp.framework.jpa.model.access.support.AccessStatus.EXCEPTION=Exception

37
io.sc.platform.orm/src/main/resources/io/sc/platform/orm/jpa/i18n/messages_tw_CN.properties

@ -1,37 +0,0 @@
org.wsp.framework.jpa.exception.CreateException=\u65B0\u589E\u64CD\u4F5C\u5931\u6557!
org.wsp.framework.jpa.exception.CreateNullObjectException=\u65B0\u589E\u64CD\u4F5C\u5931\u6557,\u65B0\u589E\u5C0D\u8C61\u70BA\u7A7A!
org.wsp.framework.jpa.exception.CreateNullPrimaryKeyException=\u65B0\u589E\u64CD\u4F5C\u5931\u6557,\u65B0\u589E\u5C0D\u8C61\u7684\u4E3B\u9375(\u552F\u4E00\u6A19\u8B58\u65B0\u589E\u5C0D\u8C61,\u5982\u5C0D\u8C61\u7684\u540D\u7A31)\u70BA\u7A7A!
org.wsp.framework.jpa.exception.CreateObjectAlreadyExistsException=\u65B0\u589E\u64CD\u4F5C\u5931\u6557,\u7CFB\u7D71\u4E2D\u5DF2\u7D93\u5B58\u5728\u8A72\u5C0D\u8C61!
org.wsp.framework.jpa.exception.UpdateException=\u66F4\u65B0\u64CD\u4F5C\u5931\u6557!
org.wsp.framework.jpa.exception.UpdateNullOldObjectPrimaryKeyException=\u66F4\u65B0\u64CD\u4F5C\u5931\u6557,\u88AB\u66F4\u65B0\u5C0D\u8C61\u7684\u4E3B\u9375(\u552F\u4E00\u6A19\u8B58\u65B0\u589E\u5C0D\u8C61,\u5982\u5C0D\u8C61\u7684\u540D\u7A31)\u70BA\u7A7A!
org.wsp.framework.jpa.exception.UpdateNullNewObjectPrimaryKeyException=\u66F4\u65B0\u64CD\u4F5C\u5931\u6557,\u66F4\u65B0\u5BF9\u8C61\u7684\u4E3B\u952E(\u552F\u4E00\u6A19\u8B58\u65B0\u589E\u5C0D\u8C61,\u5982\u5C0D\u8C61\u7684\u540D\u7A31)\u70BA\u7A7A!
org.wsp.framework.jpa.exception.UpdateNullNewObjectException=\u66F4\u65B0\u64CD\u4F5C\u5931\u6557,\u66F4\u65B0\u5BF9\u8C61\u70BA\u7A7A!
org.wsp.framework.jpa.exception.UpdateOldObjectNotExistsException=\u66F4\u65B0\u64CD\u4F5C\u5931\u6557,\u88AB\u66F4\u65B0\u7684\u5BF9\u8C61\u4E0D\u5B58\u5728!
org.wsp.framework.jpa.exception.UpdateObjectAlreadyExistsException=\u66F4\u65B0\u64CD\u4F5C\u5931\u6557,\u7CFB\u7D71\u4E2D\u5DF2\u7D93\u5B58\u5728\u8A72\u5C0D\u8C61!
org.wsp.framework.jpa.exception.DeleteException=\u522A\u9664\u64CD\u4F5C\u5931\u6557!
org.wsp.framework.jpa.exception.DeleteObjectNotExistsException=\u522A\u9664\u64CD\u4F5C\u5931\u6557,\u88AB\u522A\u9664\u5C0D\u8C61\u4E0D\u5B58\u5728!
org.wsp.framework.jpa.exception.DeleteOperateNotAllowedException=\u522A\u9664\u64CD\u4F5C\u5931\u6557,\u6B64\u8A18\u9304\u70BA\u7CFB\u7D71\u4FDD\u7559\u8A18\u9304,\u7121\u6CD5\u5220\u9664!
org.wsp.framework.jpa.exception.DeleteNullObjectException=\u522A\u9664\u64CD\u4F5C\u5931\u6557,\u88AB\u522A\u9664\u5C0D\u8C61\u70BA\u7A7A!
org.wsp.framework.jpa.exception.DeleteNullPrimaryKeyCollectionException=\u522A\u9664\u64CD\u4F5C\u5931\u6557,\u88AB\u522A\u9664\u5C0D\u8C61\u7684\u4E3B\u952E(\u552F\u4E00\u6807\u8BC6\u65B0\u589E\u5BF9\u8C61,\u5982\u5BF9\u8C61\u7684\u540D\u79F0)\u96C6\u5408\u70BA\u7A7A!
org.wsp.framework.jpa.exception.DeleteNullPrimaryKeyException=\u522A\u9664\u64CD\u4F5C\u5931\u6557,\u88AB\u522A\u9664\u5C0D\u8C61\u7684\u4E3B\u952E(\u552F\u4E00\u6807\u8BC6\u65B0\u589E\u5BF9\u8C61,\u5982\u5BF9\u8C61\u7684\u540D\u7A31)\u70BA\u7A7A!
org.wsp.framework.jpa.exception.UserRawPasswordEmptyException=\u7528\u6236\u767B\u9304"\u539F\u5BC6\u78BC"\u4E0D\u5141\u8A31\u70BA\u7A7A!
org.wsp.framework.jpa.exception.UserRawPasswordNotMatchException=\u7528\u6236\u767B\u9304"\u539F\u5BC6\u78BC"\u932F\u8AA4!
org.wsp.framework.jpa.exception.UserNewPasswordAndConfirmNewPasswordNotMatchException=\u7528\u6236\u767B\u9304"\u65B0\u5BC6\u78BC"\u548C"\u65B0\u5BC6\u78BC\u78BA\u8A8D"\u4E0D\u4E00\u81F4!
org.wsp.framework.jpa.exception.UserNewPasswordEmptyException=\u7528\u6236\u767B\u9304"\u65B0\u5BC6\u78BC"\u4E0D\u5141\u8A31\u70BA\u7A7A!
org.wsp.framework.jpa.model.access.support.AccessType.ADD=\u65B0\u589E
org.wsp.framework.jpa.model.access.support.AccessType.REMOVE=\u522A\u9664
org.wsp.framework.jpa.model.access.support.AccessType.UPDATE=\u66F4\u65B0
org.wsp.framework.jpa.model.access.support.AccessType.QUERY=\u67E5\u8A62
org.wsp.framework.jpa.model.access.support.AccessType.FIND_ONE=\u67E5\u627E\u55AE\u500B\u8A18\u9304
org.wsp.framework.jpa.model.access.support.AccessType.EXPORT=\u5C0E\u51FA
org.wsp.framework.jpa.model.access.support.AccessType.LOGIN=\u767B\u9304
org.wsp.framework.jpa.model.access.support.AccessType.LOGOUT=\u9000\u51FA
org.wsp.framework.jpa.model.access.support.AccessStatus.SUCCESS=\u6210\u529F
org.wsp.framework.jpa.model.access.support.AccessStatus.FAILED=\u5931\u6557
org.wsp.framework.jpa.model.access.support.AccessStatus.EXCEPTION=\u9055\u4F8B

37
io.sc.platform.orm/src/main/resources/io/sc/platform/orm/jpa/i18n/messages_zh_CN.properties

@ -1,37 +0,0 @@
org.wsp.framework.jpa.exception.CreateException=\u65b0\u589e\u64cd\u4f5c\u5931\u8d25!
org.wsp.framework.jpa.exception.CreateNullObjectException=\u65b0\u589e\u64cd\u4f5c\u5931\u8d25,\u65b0\u589e\u5bf9\u8c61\u4e3a\u7a7a!
org.wsp.framework.jpa.exception.CreateNullPrimaryKeyException=\u65b0\u589e\u64cd\u4f5c\u5931\u8d25,\u65b0\u589e\u5bf9\u8c61\u7684\u4e3b\u952e(\u552f\u4e00\u6807\u8bc6\u65b0\u589e\u5bf9\u8c61,\u5982\u5bf9\u8c61\u7684\u540d\u79f0)\u4e3a\u7a7a!
org.wsp.framework.jpa.exception.CreateObjectAlreadyExistsException=\u65b0\u589e\u64cd\u4f5c\u5931\u8d25,\u7cfb\u7edf\u4e2d\u5df2\u7ecf\u5b58\u5728\u8be5\u5bf9\u8c61!
org.wsp.framework.jpa.exception.UpdateException=\u66f4\u65b0\u64cd\u4f5c\u5931\u8d25!
org.wsp.framework.jpa.exception.UpdateNullOldObjectPrimaryKeyException=\u66f4\u65b0\u5931\u8d25,\u88ab\u66f4\u65b0\u5bf9\u8c61\u7684\u4e3b\u952e(\u552f\u4e00\u6807\u8bc6\u65b0\u589e\u5bf9\u8c61,\u5982\u5bf9\u8c61\u7684\u540d\u79f0)\u4e3a\u7a7a!
org.wsp.framework.jpa.exception.UpdateNullNewObjectPrimaryKeyException=\u66f4\u65b0\u5931\u8d25,\u66f4\u65b0\u5bf9\u8c61\u7684\u4e3b\u952e(\u552f\u4e00\u6807\u8bc6\u65b0\u589e\u5bf9\u8c61,\u5982\u5bf9\u8c61\u7684\u540d\u79f0)\u4e3a\u7a7a!
org.wsp.framework.jpa.exception.UpdateNullNewObjectException=\u66f4\u65b0\u5931\u8d25,\u66f4\u65b0\u5bf9\u8c61\u4e3a\u7a7a!
org.wsp.framework.jpa.exception.UpdateOldObjectNotExistsException=\u66f4\u65b0\u5931\u8d25,\u88ab\u66f4\u65b0\u7684\u5bf9\u8c61\u4e0d\u5b58\u5728!
org.wsp.framework.jpa.exception.UpdateObjectAlreadyExistsException=\u66f4\u65b0\u5931\u8d25,\u7cfb\u7edf\u4e2d\u5df2\u7ecf\u5b58\u5728\u8be5\u5bf9\u8c61!
org.wsp.framework.jpa.exception.DeleteException=\u5220\u9664\u64cd\u4f5c\u5931\u8d25!
org.wsp.framework.jpa.exception.DeleteObjectNotExistsException=\u5220\u9664\u64cd\u4f5c\u5931\u8d25,\u88ab\u5220\u9664\u5bf9\u8c61\u4e0d\u5b58\u5728!
org.wsp.framework.jpa.exception.DeleteOperateNotAllowedException=\u5220\u9664\u64cd\u4f5c\u5931\u8d25,\u6b64\u8bb0\u5f55\u4e3a\u7cfb\u7edf\u4fdd\u7559\u8bb0\u5f55,\u65e0\u6cd5\u5220\u9664!
org.wsp.framework.jpa.exception.DeleteNullObjectException=\u5220\u9664\u64cd\u4f5c\u5931\u8d25,\u88ab\u5220\u9664\u5bf9\u8c61\u4e3a\u7a7a!
org.wsp.framework.jpa.exception.DeleteNullPrimaryKeyCollectionException=\u5220\u9664\u64cd\u4f5c\u5931\u8d25,\u88ab\u5220\u9664\u5bf9\u8c61\u7684\u4e3b\u952e(\u552f\u4e00\u6807\u8bc6\u65b0\u589e\u5bf9\u8c61,\u5982\u5bf9\u8c61\u7684\u540d\u79f0)\u96c6\u5408\u4e3a\u7a7a!
org.wsp.framework.jpa.exception.DeleteNullPrimaryKeyException=\u5220\u9664\u64cd\u4f5c\u5931\u8d25,\u88ab\u5220\u9664\u5bf9\u8c61\u7684\u4e3b\u952e(\u552f\u4e00\u6807\u8bc6\u65b0\u589e\u5bf9\u8c61,\u5982\u5bf9\u8c61\u7684\u540d\u79f0)\u4e3a\u7a7a!
org.wsp.framework.jpa.exception.UserRawPasswordEmptyException=\u7528\u6237\u767b\u5f55"\u539f\u5bc6\u7801"\u4e0d\u5141\u8bb8\u4e3a\u7a7a!
org.wsp.framework.jpa.exception.UserRawPasswordNotMatchException=\u7528\u6237\u767b\u5f55"\u539f\u5bc6\u7801"\u9519\u8bef!
org.wsp.framework.jpa.exception.UserNewPasswordAndConfirmNewPasswordNotMatchException=\u7528\u6237\u767b\u5f55"\u65b0\u5bc6\u7801"\u548c"\u65b0\u5bc6\u7801\u786e\u8ba4"\u4e0d\u4e00\u81f4!
org.wsp.framework.jpa.exception.UserNewPasswordEmptyException=\u7528\u6237\u767b\u5f55"\u65b0\u5bc6\u7801"\u4e0d\u5141\u8bb8\u4e3a\u7a7a!
org.wsp.framework.jpa.model.access.support.AccessType.ADD=\u65b0\u589e
org.wsp.framework.jpa.model.access.support.AccessType.REMOVE=\u5220\u9664
org.wsp.framework.jpa.model.access.support.AccessType.UPDATE=\u66f4\u65b0
org.wsp.framework.jpa.model.access.support.AccessType.QUERY=\u67e5\u8be2
org.wsp.framework.jpa.model.access.support.AccessType.FIND_ONE=\u67e5\u627e\u5355\u4e2a\u8bb0\u5f55
org.wsp.framework.jpa.model.access.support.AccessType.EXPORT=\u5bfc\u51fa
org.wsp.framework.jpa.model.access.support.AccessType.LOGIN=\u767b\u5f55
org.wsp.framework.jpa.model.access.support.AccessType.LOGOUT=\u9000\u51fa
org.wsp.framework.jpa.model.access.support.AccessStatus.SUCCESS=\u6210\u529f
org.wsp.framework.jpa.model.access.support.AccessStatus.FAILED=\u5931\u8d25
org.wsp.framework.jpa.model.access.support.AccessStatus.EXCEPTION=\u8fdd\u4f8b

2
io.sc.platform.system.api/src/main/java/io/sc/platform/system/api/corporation/CorporationVo.java

@ -1,7 +1,7 @@
package io.sc.platform.system.api.corporation;
import com.fasterxml.jackson.annotation.JsonPropertyOrder;
import io.sc.platform.orm.vo.AuditorVo;
import io.sc.platform.orm.api.vo.AuditorVo;
@JsonPropertyOrder({

2
io.sc.platform.system.api/src/main/java/io/sc/platform/system/api/dictionary/DictionaryVo.java

@ -1,6 +1,6 @@
package io.sc.platform.system.api.dictionary;
import io.sc.platform.orm.vo.AuditorVo;
import io.sc.platform.orm.api.vo.AuditorVo;
public class DictionaryVo extends AuditorVo {
private String id;

2
io.sc.platform.system.api/src/main/java/io/sc/platform/system/api/ds/DsVo.java

@ -1,6 +1,6 @@
package io.sc.platform.system.api.ds;
import io.sc.platform.orm.vo.AuditorVo;
import io.sc.platform.orm.api.vo.AuditorVo;
public class DsVo extends AuditorVo {
private String id;

11
io.sc.platform.system/src/main/java/io/sc/platform/system/autoconfigure/MessageSourceAutoConfiguration.java

@ -1,6 +1,7 @@
package io.sc.platform.system.autoconfigure;
import io.sc.platform.core.autoconfigure.support.MessageSourceBaseNameUtil;
import io.sc.platform.core.i18n.MessageSourceBaseName;
import io.sc.platform.core.i18n.PlatformResourceBundleMessageSource;
import io.sc.platform.system.autoconfigure.support.CompositeMessageSource;
import io.sc.platform.system.autoconfigure.support.DatabaseMessageSource;
import io.sc.platform.system.i18n.jpa.repository.I18nRepository;
@ -40,8 +41,8 @@ public class MessageSourceAutoConfiguration {
@Bean
@ConditionalOnMissingBean
public MessageSource messageSource(MessageSourceProperties messageSourceProperties){
ResourceBundleMessageSource resourceBundleMessageSource = new ResourceBundleMessageSource();
resourceBundleMessageSource.setBasenames(MessageSourceBaseNameUtil.getBaseNames(messageSourceProperties.getBasename()));
PlatformResourceBundleMessageSource resourceBundleMessageSource = new PlatformResourceBundleMessageSource();
resourceBundleMessageSource.setBasenames(MessageSourceBaseName.getBaseNames(messageSourceProperties.getBasename()));
if (messageSourceProperties.getEncoding() != null) {
resourceBundleMessageSource.setDefaultEncoding(messageSourceProperties.getEncoding().name());
}
@ -54,8 +55,8 @@ public class MessageSourceAutoConfiguration {
}
//数据库消息源
DatabaseMessageSource databaseMessageSource =new DatabaseMessageSource();
databaseMessageSource.setRepository(repository);
DatabaseMessageSource databaseMessageSource =new DatabaseMessageSource(repository);
databaseMessageSource.reload();
//组合消息源(先从数据库消息源中查找,如果不存在,再从资源包消息源中查找)
CompositeMessageSource compositeMessageSource =new CompositeMessageSource();

61
io.sc.platform.system/src/main/java/io/sc/platform/system/autoconfigure/support/CompositeMessageSource.java

@ -1,19 +1,21 @@
package io.sc.platform.system.autoconfigure.support;
import io.sc.platform.core.enums.Language;
import io.sc.platform.core.i18n.PlatformMessageSource;
import io.sc.platform.core.i18n.PlatformMessageSourceLoader;
import io.sc.platform.core.i18n.PlatformResourceBundleMessageSource;
import org.springframework.context.MessageSource;
import org.springframework.context.MessageSourceResolvable;
import org.springframework.context.NoSuchMessageException;
import org.springframework.lang.Nullable;
import java.util.ArrayList;
import java.util.List;
import java.util.Locale;
import java.util.*;
/**
* 组合消息源
*
*/
public class CompositeMessageSource implements MessageSource{
public class CompositeMessageSource implements MessageSource, PlatformMessageSource {
private List<MessageSource> messageSources =new ArrayList<MessageSource>();
public List<MessageSource> getMessageSources() {
@ -29,12 +31,59 @@ public class CompositeMessageSource implements MessageSource{
}
}
public void reload(){
@Override
public void reload() {
for(MessageSource messageSource : messageSources){
if(messageSource.getClass().isAssignableFrom(PlatformMessageSource.class)){
((PlatformMessageSource)messageSource).reload();
}
}
}
@Override
public Map<Language, Map<String, String>> getMessages() {
Map<Language, Map<String, String>> result =new LinkedHashMap<>();
Map<Language, Map<String, String>> resourceBundleMessageMap =new LinkedHashMap<>();
Map<Language, Map<String, String>> databaseMessageMap =new LinkedHashMap<>();
for(MessageSource messageSource : messageSources){
if(messageSource instanceof DatabaseMessageSource){
((DatabaseMessageSource)messageSource).reload();
databaseMessageMap =((DatabaseMessageSource) messageSource).getMessages();
}else if(messageSource instanceof PlatformResourceBundleMessageSource){
resourceBundleMessageMap =((PlatformResourceBundleMessageSource)messageSource).getMessages();
}
}
result.putAll(resourceBundleMessageMap);
for(Map.Entry<Language, Map<String, String>> entry : databaseMessageMap.entrySet()){
Language language =entry.getKey();
result.putIfAbsent(language,new LinkedHashMap<>());
Map<String, String> messages =result.get(language);
messages.putAll(entry.getValue());
}
return result;
}
@Override
public Map<Language, Map<String, String>> getMessages(String... messageKeys) {
Map<Language, Map<String, String>> messageMap = getMessages();
if(messageMap.isEmpty()){
return Collections.emptyMap();
}
Map<Language, Map<String, String>> result =new LinkedHashMap<>();
for(Map.Entry<Language, Map<String, String>> entry : messageMap.entrySet()){
Language language =entry.getKey();
Map<String, String> messages =entry.getValue();
result.putIfAbsent(language,new LinkedHashMap<>());
Map<String, String> map =result.get(language);
for(String key : messageKeys){
map.put(key,messages.get(key));
}
}
return result;
}
@Override
public Map<String, String> getMessages(Language language) {
return getMessages().get(language);
}
@Override

99
io.sc.platform.system/src/main/java/io/sc/platform/system/autoconfigure/support/DatabaseMessageSource.java

@ -1,5 +1,8 @@
package io.sc.platform.system.autoconfigure.support;
import io.sc.platform.core.Environment;
import io.sc.platform.core.enums.Language;
import io.sc.platform.core.i18n.PlatformMessageSource;
import io.sc.platform.core.util.LocaleUtil;
import io.sc.platform.system.api.i18n.I18nLanguage;
import io.sc.platform.system.i18n.jpa.entity.I18nEntity;
@ -11,61 +14,58 @@ import org.springframework.lang.Nullable;
import org.springframework.util.StringUtils;
import java.text.MessageFormat;
import java.util.List;
import java.util.Locale;
import java.util.Map;
import java.util.*;
import java.util.concurrent.ConcurrentHashMap;
/**
* 数据库消息源
*/
public class DatabaseMessageSource implements MessageSource {
public class DatabaseMessageSource implements MessageSource, PlatformMessageSource {
private I18nRepository repository;
private Map<String,String> properties =new ConcurrentHashMap<String, String>();
/**
* 构造器
*/
public DatabaseMessageSource(){
}
private Map<Language, Map<String, String>> messages =new LinkedHashMap<>();
public DatabaseMessageSource(I18nRepository repository){
this.repository =repository;
}
public I18nRepository getRepository() {
return repository;
}
public void setRepository(I18nRepository repository) {
this.repository = repository;
/**
* 重新加载所有国际化消息
*/
public void reload() {
messages.clear();
messages =load();
}
public Map<String, String> getProperties() {
return properties;
@Override
public Map<Language, Map<String, String>> getMessages() {
if(this.messages==null || this.messages.isEmpty() || Environment.getInstance().isRunningInDevelopment()){
this.messages =load();
}
public void setProperties(Map<String, String> properties) {
this.properties = properties;
return this.messages;
}
/**
* 重新加载所有国际化消息
*/
public void reload() {
properties.clear();
List<I18nEntity> messages =repository.findAll();
if(messages!=null && messages.size()>0){
properties =new ConcurrentHashMap<String,String>(messages.size());
for(I18nEntity message : messages){
if(message!=null) {
I18nLanguage lang =message.getLang();
if(lang!=null) {
properties.put(message.getCode() + "(" + lang.toString() + ")",message.getMessage()==null?"":message.getMessage());
@Override
public Map<Language, Map<String, String>> getMessages(String... messageKeys) {
Map<Language, Map<String, String>> messageMap = getMessages();
if(messageMap.isEmpty()){
return Collections.emptyMap();
}
Map<Language, Map<String, String>> result =new LinkedHashMap<>();
for(Map.Entry<Language, Map<String, String>> entry : messageMap.entrySet()){
Language language =entry.getKey();
Map<String, String> messages =entry.getValue();
result.putIfAbsent(language,new LinkedHashMap<>());
Map<String, String> map =result.get(language);
for(String key : messageKeys){
map.put(key,messages.get(key));
}
}
return result;
}
@Override
public Map<String, String> getMessages(Language language) {
return getMessages().get(language);
}
/**
@ -76,16 +76,21 @@ public class DatabaseMessageSource implements MessageSource {
*/
public String getDatabaseMessageText(String code, Locale locale) {
if(StringUtils.hasText(code)){
String[] candidateCodes = LocaleUtil.getCandidateCode(locale, "(", ")");
String[] candidateCodes = LocaleUtil.getCandidateCode(locale);
if(candidateCodes!=null && candidateCodes.length>0){
for(String candidateCode : candidateCodes){
String message =properties.get(code + candidateCode);
if(message!=null){
if(Language.exists(candidateCode)) {
Map<String, String> messages = this.messages.get(Language.valueOf(candidateCode));
if (messages != null) {
String message = messages.get(code);
if (message != null) {
return message;
}
}
}
}
}
}
return null;
}
@ -132,4 +137,22 @@ public class DatabaseMessageSource implements MessageSource {
}
return null;
}
private synchronized Map<Language, Map<String, String>> load(){
List<I18nEntity> entities =this.repository.findAll();
if(entities==null || entities.isEmpty()){
return Collections.emptyMap();
}
Map<Language, Map<String, String>> messageMap =new LinkedHashMap<>();
for(I18nEntity message : entities){
Language lang =message.getLang();
if(lang==null){
continue;
}
messageMap.putIfAbsent(lang,new LinkedHashMap<>());
Map<String, String> value =messageMap.get(lang);
value.put(message.getCode(),message.getMessage());
}
return messageMap;
}
}

19
io.sc.platform.system/src/main/java/io/sc/platform/system/i18n/controller/I18nController.java

@ -1,5 +1,6 @@
package io.sc.platform.system.i18n.controller;
import io.sc.platform.core.service.MessageSourceService;
import io.sc.platform.mvc.controller.support.RestCrudController;
import io.sc.platform.system.api.i18n.I18n;
import io.sc.platform.system.api.i18n.I18nLanguage;
@ -9,6 +10,7 @@ import io.sc.platform.system.auditlog.service.AuditLogService;
import io.sc.platform.system.i18n.jpa.entity.I18nEntity;
import io.sc.platform.system.i18n.jpa.repository.I18nRepository;
import io.sc.platform.system.i18n.service.I18nService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Required;
import org.springframework.web.bind.annotation.*;
@ -17,19 +19,16 @@ import java.util.Map;
@RestController
@RequestMapping("/api/system/i18n")
public class I18nController extends RestCrudController<I18nEntity,String, I18nRepository, I18nService> {
@GetMapping(value={"getI18nMessages/{lang}","getI18nMessages"})
public Map<String,String> getI18nMessages(@PathVariable(name = "lang",required = false)I18nLanguage language) throws Exception{
return service.getI18nMessages(language);
}
@Autowired private MessageSourceService messageSourceService;
@PostMapping("importFromProperties")
public void importFromProperties() throws Exception{
service.importFromProperties(true);
@PostMapping("importMessages")
public void importMessages() throws Exception{
service.importMessages(true);
}
@PostMapping(value="removeFromProperties")
public void removeFromProperties() throws Exception{
service.removeFromProperties();
@PostMapping(value="removeMessages")
public void removeMessages() throws Exception{
service.removeMessages();
}
@PostMapping(value="removeAll")

9
io.sc.platform.system/src/main/java/io/sc/platform/system/i18n/jpa/entity/I18nEntity.java

@ -1,6 +1,7 @@
package io.sc.platform.system.i18n.jpa.entity;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import io.sc.platform.core.enums.Language;
import io.sc.platform.orm.converter.NumericBooleanConverter;
import io.sc.platform.orm.entity.AuditorEntity;
import io.sc.platform.orm.entity.BaseEntity;
@ -37,7 +38,7 @@ public class I18nEntity extends AuditorEntity {
//语言
@Enumerated(EnumType.STRING)
@Column(name="_LANG")
private I18nLanguage lang;
private Language lang;
//消息文本
@Column(name="_MESSAGE")
@ -48,7 +49,7 @@ public class I18nEntity extends AuditorEntity {
public I18nEntity(String id) {
this.id =id;
}
public I18nEntity(String code,I18nLanguage lang,String message) {
public I18nEntity(String code,Language lang,String message) {
this.code =code;
this.lang =lang;
this.message =message;
@ -70,11 +71,11 @@ public class I18nEntity extends AuditorEntity {
this.code = code;
}
public I18nLanguage getLang() {
public Language getLang() {
return lang;
}
public void setLang(I18nLanguage lang) {
public void setLang(Language lang) {
this.lang = lang;
}

5
io.sc.platform.system/src/main/java/io/sc/platform/system/i18n/jpa/repository/I18nRepository.java

@ -1,5 +1,6 @@
package io.sc.platform.system.i18n.jpa.repository;
import io.sc.platform.core.enums.Language;
import io.sc.platform.orm.repository.DaoRepository;
import io.sc.platform.system.api.i18n.I18nLanguage;
import io.sc.platform.system.i18n.jpa.entity.I18nEntity;
@ -7,6 +8,6 @@ import io.sc.platform.system.i18n.jpa.entity.I18nEntity;
import java.util.List;
public interface I18nRepository extends DaoRepository<I18nEntity,String> {
public I18nEntity findByCodeAndLang(String code, I18nLanguage lang);
public List<I18nEntity> findByLang(I18nLanguage lang);
public I18nEntity findByCodeAndLang(String code, Language lang);
public List<I18nEntity> findByLang(Language lang);
}

28
io.sc.platform.system/src/main/java/io/sc/platform/system/i18n/service/I18nService.java

@ -10,33 +10,13 @@ import java.util.Map;
public interface I18nService extends DaoService<I18nEntity, String, I18nRepository> {
/**
* 获取某个多语言消息
* @param messageKey 消息 key
* @return 所有语言的详细(key:区域,value:多语言消息)
*/
public Map<String, Map<String,String>> getI18nMessages(String... messageKeys);
/**
* 加载所有多语言消息
* @param lang 语言
* @return 所有多语言消息 Map
*/
public Map<String,String> getI18nMessages(I18nLanguage lang);
/**
* 从属性文件中加载多语言消息
* @return 多语言消息实体对象集合
*/
public List<I18nEntity> loadFromProperties();
/**
* 从属性文件中获取多语言消息并导入到数据库中
* 从资源包属性文件中获取多语言消息并导入到数据库中
* @param overwrite 是否覆盖数据库中已经存在的多语言消息
*/
public void importFromProperties(boolean overwrite);
public void importMessages(boolean overwrite);
/**
* 移除数据库中所有属性文件中配置的多语言消息
* 移除数据库中所有资源包属性文件中配置的多语言消息
*/
public void removeFromProperties();
public void removeMessages();
}

151
io.sc.platform.system/src/main/java/io/sc/platform/system/i18n/service/impl/I18nServiceImpl.java

@ -1,5 +1,7 @@
package io.sc.platform.system.i18n.service.impl;
import io.sc.platform.core.enums.Language;
import io.sc.platform.core.i18n.PlatformResourceBundleMessageSource;
import io.sc.platform.orm.service.impl.DaoServiceImpl;
import io.sc.platform.system.api.i18n.I18nLanguage;
import io.sc.platform.system.autoconfigure.support.CompositeMessageSource;
@ -28,143 +30,52 @@ public class I18nServiceImpl extends DaoServiceImpl<I18nEntity, String, I18nRepo
@Autowired private CompositeMessageSource compositeMessageSource;
@Override
public Map<String, Map<String,String>> getI18nMessages(String... messageKeys) {
if(messageKeys==null || messageKeys.length<=0){
return Collections.emptyMap();
}
Map<String, Map<String,String>> result =new HashMap<>();
for(I18nLanguage language : I18nLanguage.values()){
Map<String,String> messages =new HashMap<>();
for(String messageKey : messageKeys) {
String message = compositeMessageSource.getMessage(messageKey, null, language.getLocale());
messages.put(messageKey,message);
}
result.put(language.toString(),messages);
}
return result;
}
@Override
public Map<String,String> getI18nMessages(I18nLanguage lang) {
I18nLanguage language =(lang==null)?I18nLanguage.zh_CN:lang;
// 属性文件多语言消息 map
List<I18nEntity> propertyEntities =loadFromProperties().stream().filter(e->lang.equals(e.getLang())).collect(Collectors.toList());
Map<String,String> propertyMap =new TreeMap<>();
for(I18nEntity entity : propertyEntities){
propertyMap.put(entity.getCode(),entity.getMessage());
}
// 数据库多语言消息 map
List<I18nEntity> databaseEntities =repository.findByLang(lang);
Map<String,String> databaseMap =new HashMap<>();
for(I18nEntity entity : databaseEntities){
databaseMap.put(entity.getCode(),entity.getMessage());
}
// 数据库优先:用数据库中的多语言消息覆盖属性文件中的多语言消息
propertyMap.putAll(databaseMap);
return propertyMap;
}
@Override
public List<I18nEntity> loadFromProperties() {
Map<String,I18nLanguage> urls =getPropertyUrls();
if(urls==null || urls.isEmpty()){
return Collections.emptyList();
}
List<I18nEntity> result =new ArrayList<>();
for(String url : urls.keySet()){
I18nLanguage language =urls.get(url);
Resource rs = new DefaultResourceLoader().getResource(url);
if (!rs.exists()) {
log.warn("{} NOT exists", url);
continue;
}
try (InputStream ins = rs.getInputStream()) {
Properties properties = new Properties();
properties.load(ins);
if (properties == null) {
log.warn("{} NOT exists", url);
continue;
}
Set<Object> keys = properties.keySet();
if(keys==null || keys.isEmpty()){
continue;
}
for (Object key : keys) {
result.add(new I18nEntity((String) key,language,properties.getProperty((String)key)));
}
} catch (IOException e) {
log.error("", e);
}
}
return result;
}
@Override
public void importFromProperties(boolean overwrite) {
List<I18nEntity> entities =loadFromProperties();
if(entities==null || entities.isEmpty()){
return;
}
for(I18nEntity entity : entities){
I18nEntity obj =repository.findByCodeAndLang(entity.getCode(),entity.getLang());
public void importMessages(boolean overwrite) {
List<MessageSource> messageSources =compositeMessageSource.getMessageSources();
for(MessageSource messageSource : messageSources){
if(messageSource instanceof PlatformResourceBundleMessageSource){
PlatformResourceBundleMessageSource pMessageSource =(PlatformResourceBundleMessageSource)messageSource;
Map<Language, Map<String, String>> messageMap =pMessageSource.getMessages();
for(Map.Entry<Language, Map<String, String>> entry : messageMap.entrySet()){
Language language =entry.getKey();
Map<String, String> messages =entry.getValue();
for(Map.Entry<String, String> entry1 : messages.entrySet()){
String code =entry1.getKey();
String message =entry1.getValue();
I18nEntity obj =repository.findByCodeAndLang(code,language);
if(obj!=null){
if(overwrite){
obj.setMessage(entity.getMessage()+"df");
obj.setMessage(message);
repository.save(obj);
}
}else{
repository.save(entity);
}
}
}
@Override
public void removeFromProperties() {
List<I18nEntity> entities =loadFromProperties();
if(entities==null || entities.isEmpty()){
return;
}
for(I18nEntity entity : entities){
I18nEntity obj =repository.findByCodeAndLang(entity.getCode(),entity.getLang());
if(obj!=null){
repository.delete(obj);
}
repository.save(obj);
}
}
private Map<String,I18nLanguage> getPropertyUrls(){
Set<String> baseNames =getMessageSourceBaseNames();
if(baseNames==null || baseNames.isEmpty()){
return Collections.emptyMap();
}
Map<String,I18nLanguage> urls = new HashMap<>();
for(String baseName : baseNames){
I18nLanguage[] languages = I18nLanguage.values();
for (I18nLanguage language : languages) {
urls.put("classpath:/" + baseName.replace('.', '/') + (language.equals(I18nLanguage.en) ? "" : "_" + language.toString()) + ".properties",language);
}
}
return urls;
}
private Set<String> getMessageSourceBaseNames(){
Set<String> result =new HashSet<>();
@Override
public void removeMessages() {
List<MessageSource> messageSources =compositeMessageSource.getMessageSources();
if(messageSources!=null && messageSources.size()>0){
for(MessageSource messageSource : messageSources){
if(messageSource instanceof ResourceBundleMessageSource){
ResourceBundleMessageSource r =(ResourceBundleMessageSource)messageSource;
Set<String> baseNames =r.getBasenameSet();
if(baseNames!=null && baseNames.size()>0){
result.addAll(baseNames);
if(messageSource instanceof PlatformResourceBundleMessageSource){
PlatformResourceBundleMessageSource pMessageSource =(PlatformResourceBundleMessageSource)messageSource;
Map<Language, Map<String, String>> messageMap =pMessageSource.getMessages();
for(Map.Entry<Language, Map<String, String>> entry : messageMap.entrySet()){
Language language =entry.getKey();
Map<String, String> messages =entry.getValue();
for(Map.Entry<String, String> entry1 : messages.entrySet()){
String code =entry1.getKey();
I18nEntity obj =repository.findByCodeAndLang(code,language);
if(obj!=null){
repository.delete(obj);
}
}
}
}
}
return result;
}
}

2
io.sc.platform.system/src/main/java/io/sc/platform/system/menu/converter/MenuEntityVoConverter.java

@ -3,7 +3,7 @@ package io.sc.platform.system.menu.converter;
import io.sc.platform.core.util.EnumUtil;
import io.sc.platform.core.util.ObjectMapper4Json;
import io.sc.platform.orm.EntityVoConverter;
import io.sc.platform.orm.enums.DataComeFrom;
import io.sc.platform.orm.api.enums.DataComeFrom;
import io.sc.platform.system.api.menu.*;
import io.sc.platform.system.enums.UrlOpenType;
import io.sc.platform.system.menu.jpa.entity.*;

3
io.sc.platform.system/src/main/resources/META-INF/platform/plugins/security.json

@ -1,7 +1,4 @@
{
"permitPatterns":[
"/api/system/i18n/getI18nMessages",
"/api/system/i18n/getI18nMessages/**/*",
"/api/system/user/appConfigure"
]
}
Loading…
Cancel
Save