diff --git a/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/ISysLocaleLanguageService.java b/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/ISysLocaleLanguageService.java index f7c0479..6ce7a5c 100644 --- a/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/ISysLocaleLanguageService.java +++ b/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/ISysLocaleLanguageService.java @@ -48,4 +48,7 @@ public interface ISysLocaleLanguageService { @ApiOperation(value = "根据语言状态查询语言信息") List findSysLocaleLanguageByStatus(Integer status); + + @ApiOperation(value = "根据code查询语言") + SysLocaleLanguage getSysLocaleLanguageById(Long id); } diff --git a/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/ISysLocaleResourceService.java b/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/ISysLocaleResourceService.java index 2a5b5ea..a778186 100644 --- a/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/ISysLocaleResourceService.java +++ b/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/ISysLocaleResourceService.java @@ -36,4 +36,10 @@ public interface ISysLocaleResourceService { @ApiOperation(value = "批量添加") void insertSysLocaleResourceList(List sysLocaleResources); + + @ApiOperation(value = "根据语言code和资源key查询资源") + SysLocaleResource getSysLocaleResourceByLanguageCodeAndResKey(String languageCode,String resKey); + + @ApiOperation(value = "根据id查询资源") + SysLocaleResource getSysLocaleResourceById(Long id); } diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/base/WhiteController.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/base/WhiteController.java index 2112ad4..a66ae66 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/base/WhiteController.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/base/WhiteController.java @@ -1,5 +1,6 @@ package cn.estsh.i3plus.core.apiservice.controller.base; +import cn.estsh.i3plus.core.api.iservice.base.ISystemInitService; import cn.estsh.i3plus.core.api.iservice.base.ISystemLoginService; import cn.estsh.i3plus.core.api.iservice.busi.*; import cn.estsh.i3plus.platform.common.tool.ServletRequestTool; @@ -14,6 +15,7 @@ import cn.estsh.impp.framework.boot.auth.AuthUtil; import cn.estsh.impp.framework.boot.exception.ImppBusiException; import cn.estsh.impp.framework.boot.exception.ImppExceptionBuilder; import cn.estsh.impp.framework.boot.exception.ImppExceptionEnum; +import cn.estsh.impp.framework.boot.util.ImppRedis; import cn.estsh.impp.framework.boot.util.ResultBean; import cn.estsh.impp.framework.boot.util.ValidatorBean; import io.swagger.annotations.Api; @@ -27,8 +29,10 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; +import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import java.util.List; +import java.util.Map; /** * @Description : @@ -56,6 +60,12 @@ public class WhiteController extends CoreBaseController { @Autowired private IPersonnelService personnelService; + @Autowired + private ISystemInitService systemInitService; + + @Resource(name="redisRes") + private ImppRedis redisRes; + @GetMapping(value = "/sys-locale-language/list") @ApiOperation(value = "查询可用语言",notes = "查询可用语言") public ResultBean listSysLocaleLanguage(){ @@ -177,4 +187,32 @@ public class WhiteController extends CoreBaseController { userService.insertSysLogUserLogin(log); } + + @GetMapping(value = "/find-language-code") + @ApiOperation(value = "根据语言代码查询资源") + public ResultBean findSysLocaleResourceByLanguageCode(String languageCode){ + try { + ValidatorBean.checkNotNull(languageCode,"语言代码不能为空"); + if (sysLocaleLanguageService.getSysLocaleLanguageByCode(languageCode) == null) { + throw ImppExceptionBuilder.newInstance() + .setSystemID(CommonEnumUtil.SOFT_TYPE.CORE.getCode()) + .setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode()) + .setErrorDetail("语言不存在") + .build(); + } + + // 从缓存获取语言信息 + Map resourceMap = redisRes.getHashMap(CommonConstWords.REDIS_PREFIX_CACHE_LANGUAGE + languageCode); + if (resourceMap == null || resourceMap.size() == 0) { + systemInitService.loadSysLocaleLanguage(); + resourceMap = redisRes.getHashMap(CommonConstWords.REDIS_PREFIX_CACHE_LANGUAGE + languageCode); + } + + return ResultBean.success("操作成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()).setResultMap(resourceMap); + }catch(ImppBusiException busExcep){ + return ResultBean.fail(busExcep); + }catch(Exception e){ + return ImppExceptionBuilder.newInstance().buildExceptionResult(e); + } + } } diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/TestController.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/TestController.java index 2d40fdf..5977217 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/TestController.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/TestController.java @@ -373,12 +373,12 @@ public class TestController { if (deleteCache && batchPutCache) { redisRes.deleteKey(redisKey); } else if (deleteCache) { - for (int i = 0; i < list.size(); i++) { - redisRes.putObject(redisKey + i, list.get(i), cacheTime); + for (int i = 0; i < num; i++) { + redisRes.deleteKey(redisKey + i); } } - return ResultBean.success("调用完成-耗时:" + (System.currentTimeMillis() - time) + ",数据量:" + list.size()) + return ResultBean.success("调用完成-耗时:" + (System.currentTimeMillis() - time) + ",数据量:" + num) .setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()); } catch (ImppBusiException busExcep) { return ResultBean.fail(busExcep); diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/listener/SysResourceBindleListener.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/listener/SysResourceBindleListener.java index 81261a6..de08506 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/listener/SysResourceBindleListener.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/listener/SysResourceBindleListener.java @@ -43,6 +43,8 @@ public class SysResourceBindleListener implements ApplicationListener> resMap = new HashMap(); HashMap lanMap = null; + HashMap> webLangMap = new HashMap<>(); + HashMap webResMap; //语言数量 List langList = systemResourceService.listSysLocaleLanguage(null); @@ -61,6 +63,14 @@ public class SysResourceBindleListener implements ApplicationListener()); + } + // 放入资源信息 + webResMap = webLangMap.get(res.getLanguageCode()); + webResMap.put(res.getResourceKey(),res.getResourceValue()); } for(String key : resMap.keySet()){ @@ -68,6 +78,11 @@ public class SysResourceBindleListener implements ApplicationListener + * 先根据code查询,判断是否存在,然后通过语言获取对应的值 + */ + HashMap> resMap = new HashMap(); + HashMap lanMap = null; + HashMap> webLangMap = new HashMap<>(); + HashMap webResMap; + + //语言数量 + List langList = systemResourceService.listSysLocaleLanguage(null); + + //查询所有资源 + List resourceList = systemResourceService.listSysLocaleResource(null); + LOGGER.info("【加载平台资源】共有{}个资源,{}种语言。",resourceList.size(),langList.size()); + for(SysLocaleResource res : resourceList) { + //遍历资源,放入map中 + lanMap = resMap.get(res.getResourceKey()); + //判断是否已存在资源信息 + if(lanMap == null){ + lanMap = new HashMap(); + //将key/代码放入 + resMap.put(res.getResourceKey(),lanMap); + } + //根据语言放入 + lanMap.put(res.getLanguageCode(),res.getResourceValue()); + + // web 资源 + if(!webLangMap.containsKey(res.getLanguageCode())){ + webLangMap.put(res.getLanguageCode(),new HashMap<>()); + } + // 放入资源信息 + webResMap = webLangMap.get(res.getLanguageCode()); + webResMap.put(res.getResourceKey(),res.getResourceValue()); + } + + for(String key : resMap.keySet()){ + //放入缓存 + redisRes.putHashMap(CommonConstWords.REDIS_PREFIX_CACHE_LANGUAGE + key,resMap.get(key),0); + } + + for(String key : webLangMap.keySet()){ + //放入缓存 + redisRes.putHashMap(CommonConstWords.REDIS_PREFIX_CACHE_LANGUAGE + key,webLangMap.get(key),0); + } + } } diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysLocaleLanguageService.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysLocaleLanguageService.java index 2ed87eb..2940db5 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysLocaleLanguageService.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysLocaleLanguageService.java @@ -201,4 +201,9 @@ public class SysLocaleLanguageService implements ISysLocaleLanguageService { public List findSysLocaleLanguageByStatus(Integer status) { return sysLocaleLanguageRDao.findByProperty("languageStatus",status); } + + @Override + public SysLocaleLanguage getSysLocaleLanguageById(Long id) { + return sysLocaleLanguageRDao.getById(id); + } } diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysLocaleResourceService.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysLocaleResourceService.java index 2362109..f1276eb 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysLocaleResourceService.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysLocaleResourceService.java @@ -63,6 +63,7 @@ public class SysLocaleResourceService implements ISysLocaleResourceService { } @Override + @ApiOperation(value = "修改系统资源",notes = "修改系统资源") public void updateSysLocaleResource(SysLocaleResource sysLocaleResource) { LOGGER.info("系统资源 SYS_LOCALE_RESOURCE SysLocaleResource:{}",sysLocaleResource); String hqlPack = CoreHqlPack.packHqlSysLocaleResourceKey(sysLocaleResource); @@ -86,18 +87,21 @@ public class SysLocaleResourceService implements ISysLocaleResourceService { } @Override + @ApiOperation(value = "根据id删除系统资源",notes = "根据id删除系统资源") public void deleteSysLocaleResourceById(Long id) { LOGGER.info("系统资源 SYS_LOCALE_RESOURCE id:{}",id); sysLocaleResourceRDao.deleteById(id); } @Override + @ApiOperation(value = "查询全部系统资源",notes = "查询全部系统资源") public List listSysLocaleResource() { LOGGER.info("系统资源 SYS_LOCALE_RESOURCE list"); return sysLocaleResourceRDao.list(); } @Override + @ApiOperation(value = "系统资源复杂查询,分页,排序",notes = "系统资源复杂查询,分页,排序") public ListPager querySysLocaleResourceByPager(SysLocaleResource sysLocaleResource, Pager pager) { LOGGER.info("系统资源 SYS_LOCALE_RESOURCE SysLocaleResource:{},Pager:{}",sysLocaleResource,pager); if(sysLocaleResourceRDao == null) { @@ -111,13 +115,46 @@ public class SysLocaleResourceService implements ISysLocaleResourceService { } @Override + @ApiOperation(value = "根据id批量删除",notes = "根据id批量删除") public void deleteSysLocaleResourceByIds(Long[] ids) { LOGGER.info("系统资源 SYS_LOCALE_RESOURCE ids:{}",ids); sysLocaleResourceRDao.deleteByIds(ids); } @Override + @ApiOperation(value = "批量添加") public void insertSysLocaleResourceList(List sysLocaleResourcesList) { + // 添加校验 + SysLocaleResource sysLocaleResource = sysLocaleResourcesList.get(0); + LOGGER.info("系统资源 SYS_LOCALE_RESOURCE SysLocaleResource:{}",sysLocaleResource); + int count = sysLocaleResourceRDao.findByPropertyCount(new String[]{"languageCode","resourceKey"}, + new String[]{sysLocaleResource.getLanguageCode(),sysLocaleResource.getResourceKey()}); + if (count > 0){ + throw ImppExceptionBuilder.newInstance() + .setSystemID(CommonEnumUtil.SOFT_TYPE.CORE.getCode()) + .setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION_DATA_EXIT.getCode()) + .setErrorDetail("语言资源已存在") + .setErrorSolution("请重新输入语言代码与资源键") + .build(); + } + + // 设置语言名称冗余 + SysLocaleLanguage sysLocaleLanguage = sysLocaleLanguageRDao.getByProperty("languageCode", + sysLocaleResource.getLanguageCode()); + ValidatorBean.checkNotNull(sysLocaleLanguage,"选中的语言不存在"); + sysLocaleResource.setLanguageNameRdd(sysLocaleLanguage.getLanguageName()); + sysLocaleResourceRDao.saveAll(sysLocaleResourcesList); } + + @Override + @ApiOperation(value = "根据语言code和资源key查询资源") + public SysLocaleResource getSysLocaleResourceByLanguageCodeAndResKey(String languageCode,String resKey) { + return sysLocaleResourceRDao.getByProperty(new String[]{"languageCode","resourceKey"},new String[]{languageCode,resKey}); + } + + @Override + public SysLocaleResource getSysLocaleResourceById(Long id) { + return sysLocaleResourceRDao.getById(id); + } } diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/util/OrderNoMakeUtil.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/util/OrderNoMakeUtil.java index ba90f91..cbad512 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/util/OrderNoMakeUtil.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/util/OrderNoMakeUtil.java @@ -20,6 +20,7 @@ public class OrderNoMakeUtil { StringBuilder orderNo = new StringBuilder(orderNoRule.getOrderNoRule()); String[] dateTime = new SimpleDateFormat("yyyy-MM-dd-HH-mm-ss").format(System.currentTimeMillis()).split("-"); + // 单号表达式的 replace(orderNo, PlatformConstWords.YEAR, dateTime[0]); replace(orderNo, PlatformConstWords.MONTH, dateTime[1]); replace(orderNo, PlatformConstWords.DAY, dateTime[2]);