From ad2c8548a325b17062e1bbdb842410eb2b438ff7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=B1=AA=E4=BA=91=E6=98=8A?= Date: Fri, 22 May 2020 10:13:39 +0800 Subject: [PATCH 01/12] =?UTF-8?q?=E5=9B=9E=E6=BB=9A=E4=B8=A2=E5=A4=B1?= =?UTF-8?q?=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/base/WhiteController.java | 50 ++++++++++++++-------- 1 file changed, 32 insertions(+), 18 deletions(-) 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 b000afa..5952926 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 @@ -5,11 +5,9 @@ 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.exception.ImppExceptionEnum; -import cn.estsh.i3plus.platform.common.tool.CookieTool; -import cn.estsh.i3plus.platform.common.tool.ServletRequestTool; -import cn.estsh.i3plus.platform.common.tool.StringTool; -import cn.estsh.i3plus.platform.common.tool.TimeTool; +import cn.estsh.i3plus.platform.common.tool.*; import cn.estsh.i3plus.platform.common.util.CommonConstWords; +import cn.estsh.i3plus.platform.common.util.PlatformConstWords; import cn.estsh.i3plus.pojo.base.annotation.AnnoIgnoreLog; import cn.estsh.i3plus.pojo.base.bean.BaseConstWords; import cn.estsh.i3plus.pojo.base.bean.ListPager; @@ -22,10 +20,7 @@ import cn.estsh.impp.framework.base.controller.CoreBaseController; 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.util.ImppRedis; -import cn.estsh.impp.framework.boot.util.LocaleUtils; -import cn.estsh.impp.framework.boot.util.ResultBean; -import cn.estsh.impp.framework.boot.util.ValidatorBean; +import cn.estsh.impp.framework.boot.util.*; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.apache.commons.lang3.StringUtils; @@ -523,21 +518,20 @@ public class WhiteController extends CoreBaseController { } } + /** + * 缺失资源 + * @param key + * @param menuCode + * @return + */ @AnnoIgnoreLog @PostMapping(value = "/miss-resource/get") @ApiOperation(value = "缺失资源", notes = "缺失资源") public ResultBean getMissResourceByKey(String key,String menuCode){ try { - SysMenu sysMenu = sysMenuService.getSysMenuByCode(menuCode); - CommonEnumUtil.SOFT_TYPE softType = CommonEnumUtil.SOFT_TYPE.valueOf(sysMenu.getSoftType()); - if(softType == null){ - softType = CommonEnumUtil.SOFT_TYPE.IMPP; - } - - LocaleUtils.saveMissResource(key, AuthUtil.getSessionLanguage().toString(), - softType.getValue(), - CommonEnumUtil.SYS_LOCALE_RESOURCE_TYPE.MISSING.getValue(), - CommonEnumUtil.MiSS_RESOURCE_SOURCE.WEB.getValue()); + Map missResource = new HashMap<>(); + missResource.put(key,menuCode); + rabbitTemplate.convertAndSend(PlatformConstWords.QUEUE_IMPP_RESOURCE, JsonUtilTool.encode(missResource)); return ResultBean.success("操作成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()); } catch (ImppBusiException busExcep) { return ResultBean.fail(busExcep); @@ -545,4 +539,24 @@ public class WhiteController extends CoreBaseController { return ResultBean.fail(e).setCode(ImppExceptionEnum.SYSTEM_EXCEPTION.getCode()); } } + + /** + * 缺失资源开关 + * @return + */ + @AnnoIgnoreLog + @GetMapping(value = "/miss-resource/web-listener-switch") + @ApiOperation(value = "缺失资源开关", notes = "缺失资源开关") + public ResultBean getWebMissResourceSwitch(){ + try { + int webListener = RedisCacheTool.getSysConfigIntVal(PlatformConstWords.WEB_MISS_RESOURCE_LISTENER_SWITCH, + CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue()); + return ResultBean.success("获取成功") + .setResultObject(webListener == CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue()); + } catch (ImppBusiException busExcep) { + return ResultBean.fail(busExcep); + } catch (Exception e) { + return ResultBean.fail(e).setCode(ImppExceptionEnum.SYSTEM_EXCEPTION.getCode()); + } + } } From f1a0f45065e97b10ef63308629b3022fc8e4a839 Mon Sep 17 00:00:00 2001 From: "wei.peng" <123456> Date: Wed, 3 Jun 2020 13:50:44 +0800 Subject: [PATCH 02/12] =?UTF-8?q?fix(=E6=95=B0=E6=8D=AE=E5=B1=82):=20?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E5=BA=93=E6=93=8D=E4=BD=9C=E6=A0=B9=E6=8D=AE?= =?UTF-8?q?AOP=E5=AF=B9DAO=E7=9A=84=E6=96=B9=E6=B3=95=E8=BF=9B=E8=A1=8C?= =?UTF-8?q?=E5=88=86=E5=88=87=E6=95=B0=E6=8D=AE=E6=BA=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/cn/estsh/i3plus/core/apiservice/mq/I3CoreQueueConfig.java | 2 +- .../src/main/java/cn/estsh/i3plus/core/apiservice/util/NoSqlPack.java | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/mq/I3CoreQueueConfig.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/mq/I3CoreQueueConfig.java index d3cd269..a4ad5c8 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/mq/I3CoreQueueConfig.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/mq/I3CoreQueueConfig.java @@ -56,7 +56,7 @@ public class I3CoreQueueConfig { * @throws Exception */ @Bean - public Queue getQueueSwebNoticeQueue(){ + public Queue getQueueSwebNoticeQuery(){ return new Queue(PlatformConstWords.QUEUE_SWEB_NOTICE); } diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/util/NoSqlPack.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/util/NoSqlPack.java index 5789835..9535405 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/util/NoSqlPack.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/util/NoSqlPack.java @@ -178,6 +178,7 @@ public class NoSqlPack { ElasticSearchPack result = packElasticSearchPack(bean); result.andNumberEquals("softType",bean.getSoftType()); + result.andNumberEquals("requestId",bean.getRequestId()); result.andStringLeftLike("logHost",bean.getLogHost()); result.andStringLike("userLoginName",bean.getUserLoginName()); result.andStringEquals("logLevel",bean.getLogLevel()); From 55f8468be2f4b2783684726141a76f8a506d25a8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=B1=AA=E4=BA=91=E6=98=8A?= Date: Mon, 8 Jun 2020 13:39:03 +0800 Subject: [PATCH 03/12] =?UTF-8?q?MDM=E5=9F=BA=E7=A1=80=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../busi/ISysPojoVersionDetailService.java | 4 + .../iservice/busi/ISysPojoVersionPlanService.java | 2 + modules/i3plus-core-apiservice/pom.xml | 11 ++ .../busi/SysPojoVersionDetailController.java | 33 +++- .../busi/SysPojoVersionPlanController.java | 51 +++++-- .../mq/BaseMdmDataSyncQueueReceiver.java | 169 +++++++++++++++++++++ .../apiservice/mq/MdmDataSyncQueueReceiver.java | 34 +++++ .../base/BaseBusiSyncMdmDataService.java | 139 +++++++++++++++++ .../busi/SysPojoVersionDetailService.java | 9 ++ .../busi/SysPojoVersionPlanService.java | 9 +- .../serviceimpl/mdm/SysToolSyncDataService.java | 64 ++++++++ pom.xml | 12 ++ 12 files changed, 522 insertions(+), 15 deletions(-) create mode 100644 modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/mq/BaseMdmDataSyncQueueReceiver.java create mode 100644 modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/mq/MdmDataSyncQueueReceiver.java create mode 100644 modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/base/BaseBusiSyncMdmDataService.java create mode 100644 modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/mdm/SysToolSyncDataService.java diff --git a/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/ISysPojoVersionDetailService.java b/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/ISysPojoVersionDetailService.java index 2acc5f1..be8a8b7 100644 --- a/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/ISysPojoVersionDetailService.java +++ b/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/ISysPojoVersionDetailService.java @@ -2,6 +2,7 @@ package cn.estsh.i3plus.core.api.iservice.busi; import cn.estsh.i3plus.pojo.platform.bean.SysPojoVersionDetail; import cn.estsh.impp.framework.base.service.ICrudService; +import io.swagger.annotations.ApiOperation; /** * @Description : @@ -11,4 +12,7 @@ import cn.estsh.impp.framework.base.service.ICrudService; * @Modify: **/ public interface ISysPojoVersionDetailService extends ICrudService { + + @ApiOperation("根据对象版本信息查询对象版本明细") + SysPojoVersionDetail getPojoVersionDetailByPojoVersionId(Long pojoVersionId); } diff --git a/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/ISysPojoVersionPlanService.java b/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/ISysPojoVersionPlanService.java index aa124d4..c0aa302 100644 --- a/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/ISysPojoVersionPlanService.java +++ b/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/ISysPojoVersionPlanService.java @@ -16,4 +16,6 @@ public interface ISysPojoVersionPlanService extends ICacheCrudServicei3plus-icloud-softswitch + + i3plus.icloud + i3plus-icloud-mdm + + i3plus.pojo @@ -55,11 +60,17 @@ i3plus.pojo i3plus-pojo-model + i3plus.pojo i3plus-pojo-base + + i3plus.pojo + i3plus-pojo-mdm + + i3plus.core diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysPojoVersionDetailController.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysPojoVersionDetailController.java index 2b06e9a..65e3115 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysPojoVersionDetailController.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysPojoVersionDetailController.java @@ -1,14 +1,20 @@ package cn.estsh.i3plus.core.apiservice.controller.busi; import cn.estsh.i3plus.core.api.iservice.busi.ISysPojoVersionDetailService; -import cn.estsh.i3plus.core.api.iservice.busi.ISysPojoVersionService; import cn.estsh.i3plus.platform.common.util.CommonConstWords; -import cn.estsh.i3plus.pojo.platform.bean.SysPojoVersion; +import cn.estsh.i3plus.pojo.base.enumutil.ResourceEnumUtil; import cn.estsh.i3plus.pojo.platform.bean.SysPojoVersionDetail; import cn.estsh.impp.framework.base.controller.CrudBaseController; import cn.estsh.impp.framework.base.service.ICrudService; +import cn.estsh.impp.framework.boot.exception.ImppBusiException; +import cn.estsh.impp.framework.boot.exception.ImppExceptionBuilder; +import cn.estsh.impp.framework.boot.util.ResultBean; +import cn.estsh.impp.framework.boot.util.ValidatorBean; import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; 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; @@ -30,4 +36,27 @@ public class SysPojoVersionDetailController extends CrudBaseController { @Autowired private ISysPojoVersionPlanService pojoVersionService; @@ -42,9 +42,9 @@ public class SysPojoVersionPlanController extends CrudBaseController> masterDateRefMap = new HashMap<>(); + private static final HashMap> busiDateRefMap = new HashMap<>(); + private static final HashMap, BaseBusiSyncMdmDataService> syncServiceMap = new HashMap<>(); + + public void putMdmDataRef(Class syncService, Class mdmMasterClass, Class mdmBusiClass) { + masterDateRefMap.put(mdmMasterClass.getName(), syncService); + busiDateRefMap.put(mdmBusiClass.getName(), syncService); + } + + /** + * 获取同步服务 + * + * @param syncData + * @return + */ + private BaseBusiSyncMdmDataService getSyncService(MdmSyncData syncData) { + Class syncServiceClass = null; + + // 根据MdmClass查找对应关系 + if (CommonEnumUtil.TRUE_OR_FALSE.valueOfBoolean(syncData.getIsMasterDataVal())) { + syncServiceClass = masterDateRefMap.get(syncData.getSyncDataClass()); + } else { + syncServiceClass = busiDateRefMap.get(syncData.getSyncDataClass()); + } + + if (syncServiceClass == null) { + throw ImppExceptionBuilder.newInstance() + .setSystemID(CommonEnumUtil.SOFT_TYPE.MDM.getCode()) + .setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION_DATA_EXIT.getCode()) + .setErrorDetail("【MDM同步关系未维护】MdmClass %s", syncData.getSyncDataClass()) + .setErrorSolution("维护Mdm同步关系") + .build(); + } + + // 根据同步服务Class获取服务对象 + BaseBusiSyncMdmDataService busiSyncMdmDataService = syncServiceMap.get(syncServiceClass); + if (busiSyncMdmDataService == null) { + busiSyncMdmDataService = SpringContextsUtil.getBean(syncServiceClass); + syncServiceMap.put(syncServiceClass, busiSyncMdmDataService); + } + if (busiSyncMdmDataService == null) { + throw ImppExceptionBuilder.newInstance() + .setSystemID(CommonEnumUtil.SOFT_TYPE.MDM.getCode()) + .setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION_DATA_EXIT.getCode()) + .setErrorDetail("【MDM同步服务为找到】SyncServiceClass %s", syncServiceClass) + .build(); + } + + return busiSyncMdmDataService; + } + + /** + * Mdm主数据同步 + * + * @param syncDataStr 消息 + * @param channel 通道 + * @param message 消息 + */ + public void processSyncMasterData(String syncDataStr, Channel channel, Message message) { + MdmSyncData syncData = null; + try { + LOGGER.info("【MQ-QUEUE_MDM_SYNC_MASTER_DATA_CORE】数据接收成功:{}", syncDataStr); + syncData = JsonUtilTool.decode(syncDataStr, MdmSyncData.class); + if (syncData == null) { + throw ImppExceptionBuilder.newInstance() + .setSystemID(CommonEnumUtil.SOFT_TYPE.CORE.getCode()) + .setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION_DATA_NOT_EXIT.getCode()) + .setErrorDetail("同步数据不存在") + .build(); + } + + // 同步数据类型 + BaseBusiSyncMdmDataService busiSyncMdmDataService = getSyncService(syncData); + + boolean isMaster = CommonEnumUtil.TRUE_OR_FALSE.valueOfBoolean(syncData.getIsMasterDataVal()); + + // 判断操作类型与同步数据类型调用对应的方法 + if (syncData.getSyncTypeVal() == MdmEnumUtil.MDM_SYNC_TYPE.INSERT.getValue()) { + if (isMaster) { + busiSyncMdmDataService.masterInsertSync(syncData); + } else { + busiSyncMdmDataService.busiInsertSync(syncData); + } + } else if (syncData.getSyncTypeVal() == MdmEnumUtil.MDM_SYNC_TYPE.UPDATE.getValue()) { + if (isMaster) { + busiSyncMdmDataService.masterUpdateSync(syncData); + } else { + busiSyncMdmDataService.busiUpdateSync(syncData); + } + } else if (syncData.getSyncTypeVal() == MdmEnumUtil.MDM_SYNC_TYPE.DELETE.getValue()) { + if (isMaster) { + busiSyncMdmDataService.masterDeleteSync(syncData); + } else { + busiSyncMdmDataService.busiDeleteSync(syncData); + } + } + + //信息已处理 + LOGGER.info("【MQ-QUEUE_MDM_SYNC_MASTER_DATA_CORE】数据处理成功:{}", syncDataStr); + } catch (Exception e) { + LOGGER.error("【MQ-QUEUE_MDM_SYNC_MASTER_DATA_CORE】处理出错:{}", syncData, e); + if (syncData != null) { + // 保存异常信息和堆栈数据 + syncData.setSyncFailDateTime(TimeTool.getNowTime(true)); + syncData.setSyncFailMessage(ExceptionUtils.getStackTrace(e)); + + //放入MDM 缓存中 + mdmRedis.putObject(getFailRedisKey(syncData), syncData, -1); + } + } finally { + try { + channel.basicAck(message.getMessageProperties().getDeliveryTag(), false); + } catch (IOException e1) { + e1.printStackTrace(); + } + } + } + + private String getFailRedisKey(MdmSyncData syncData) { + return REDIS_MDM_SYNC_FAIL + "-" + syncData.getSyncSoftType() + ":" + syncData.getSyncDataClassSimpleName() + ":" + syncData.getSyncFailDateTime() + "-" + System.currentTimeMillis(); + } + + public abstract void syncMasterData(String syncDataStr, Channel channel, Message message); + +} diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/mq/MdmDataSyncQueueReceiver.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/mq/MdmDataSyncQueueReceiver.java new file mode 100644 index 0000000..b3300c8 --- /dev/null +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/mq/MdmDataSyncQueueReceiver.java @@ -0,0 +1,34 @@ +package cn.estsh.i3plus.core.apiservice.mq; + +import cn.estsh.i3plus.core.apiservice.serviceimpl.mdm.SysToolSyncDataService; +import cn.estsh.i3plus.pojo.mdm.bean.busi.core.MdmGearCoreBusiExtd; +import com.rabbitmq.client.Channel; +import org.springframework.amqp.core.Message; +import org.springframework.amqp.rabbit.annotation.RabbitListener; +import org.springframework.stereotype.Component; + +import static cn.estsh.i3plus.platform.common.util.MdmConstWords.QUEUE_MDM_SYNC_DATA_CORE; + +/** + * @Description : + * @Reference : + * @Author : yunhao + * @CreateDate : 2020-05-28 16:54 + * @Modify: + **/ +@Component +public class MdmDataSyncQueueReceiver extends BaseMdmDataSyncQueueReceiver { + + /** + * 初始化类关系 + */ + public MdmDataSyncQueueReceiver() { + putMdmDataRef(SysToolSyncDataService.class, MdmGearCoreBusiExtd.mdmMasterClass, MdmGearCoreBusiExtd.class); + } + + @Override + @RabbitListener(queues = QUEUE_MDM_SYNC_DATA_CORE) + public void syncMasterData(String syncDataStr, Channel channel, Message message) { + processSyncMasterData(syncDataStr, channel, message); + } +} diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/base/BaseBusiSyncMdmDataService.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/base/BaseBusiSyncMdmDataService.java new file mode 100644 index 0000000..e0e1d16 --- /dev/null +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/base/BaseBusiSyncMdmDataService.java @@ -0,0 +1,139 @@ +package cn.estsh.i3plus.core.apiservice.serviceimpl.base; + +import cn.estsh.i3plus.icloud.mdm.sdk.base.IBaseMdmBusiExtdCloud; +import cn.estsh.i3plus.icloud.mdm.sdk.base.IBaseMdmBusiModelCloud; +import cn.estsh.i3plus.platform.common.exception.ImppExceptionEnum; +import cn.estsh.i3plus.pojo.base.bean.BaseResultBean; +import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil; +import cn.estsh.i3plus.pojo.mdm.bean.base.BaseMdmBusiModelBean; +import cn.estsh.i3plus.pojo.mdm.bean.base.MdmSyncData; +import cn.estsh.impp.framework.boot.exception.ImppExceptionBuilder; + +import java.util.List; + +/** + * @Description : 业务同步setvice + * @Reference : + * @Author : yunhao + * @CreateDate : 2020-05-15 17:58 + * @Modify: + **/ +public abstract class BaseBusiSyncMdmDataService { + + private IBaseMdmBusiExtdCloud baseMdmBusiExtdCloud; + + private IBaseMdmBusiModelCloud baseMdmBusiModelCloud; + + public BaseBusiSyncMdmDataService(IBaseMdmBusiExtdCloud baseMdmBusiExtdCloud, IBaseMdmBusiModelCloud baseMdmBusiModelCloud) { + this.baseMdmBusiExtdCloud = baseMdmBusiExtdCloud; + this.baseMdmBusiModelCloud = baseMdmBusiModelCloud; + } + + /** + * 主数据新增同步 + * @param syncData + */ + public void masterInsertSync(MdmSyncData syncData) { + baseMdmBusiExtdCloud.whiteDoProcessMissBusiExtdByMaster(syncData.getSyncDataId().toArray(new Long[syncData.getSyncDataId().size()]), syncData.getSyncDateUserName()); + } + + /** + * 主数据修改同步 + * @param syncData + */ + public void masterUpdateSync(MdmSyncData syncData) { + BaseResultBean baseResultBean = + baseMdmBusiModelCloud.whiteFindByMasterIds(syncData.getSyncDataId().toArray(new Long[syncData.getSyncDataId().size()])); + if (!baseResultBean.isSuccess()) { + throw ImppExceptionBuilder.newInstance() + .setSystemID(CommonEnumUtil.SOFT_TYPE.MDM.getCode()) + .setErrorCode(ImppExceptionEnum.CLOUD_CALL_EXCEPTION.getCode()) + .setErrorDetail(baseResultBean.getErrorMsg()) + .build(); + } + + List modelBeanList = baseResultBean.getResultList(); + updateBusiList(transform(modelBeanList)); + } + + /** + * 主数据删除同步 + * @param syncData + */ + public void masterDeleteSync(MdmSyncData syncData) { + baseMdmBusiExtdCloud.whiteDeleteWeaklyByMasterIds(syncData.getSyncDataId().toArray(new Long[syncData.getSyncDataId().size()]),syncData.getSyncDateUserName()); + } + + /** + * 业务数据新增同步 + * @param syncData + */ + public void busiInsertSync(MdmSyncData syncData){ + BaseResultBean baseResultBean = + baseMdmBusiModelCloud.whiteFindByIds(syncData.getSyncDataId().toArray(new Long[syncData.getSyncDataId().size()])); + if (!baseResultBean.isSuccess()) { + throw ImppExceptionBuilder.newInstance() + .setSystemID(CommonEnumUtil.SOFT_TYPE.MDM.getCode()) + .setErrorCode(ImppExceptionEnum.CLOUD_CALL_EXCEPTION.getCode()) + .setErrorDetail(baseResultBean.getErrorMsg()) + .build(); + } + + List modelBeanList = baseResultBean.getResultList(); + insertBusiList(transform(modelBeanList)); + } + + /** + * 业务数据修改同步 + * @param syncData + */ + public void busiUpdateSync(MdmSyncData syncData){ + BaseResultBean baseResultBean = + baseMdmBusiModelCloud.findByIds(syncData.getSyncDataId().toArray(new Long[syncData.getSyncDataId().size()])); + if (!baseResultBean.isSuccess()) { + throw ImppExceptionBuilder.newInstance() + .setSystemID(CommonEnumUtil.SOFT_TYPE.MDM.getCode()) + .setErrorCode(ImppExceptionEnum.CLOUD_CALL_EXCEPTION.getCode()) + .setErrorDetail(baseResultBean.getErrorMsg()) + .build(); + } + + List modelBeanList = baseResultBean.getResultList(); + updateBusiList(transform(modelBeanList)); + + } + + /** + * 业务数据删除同步 + * @param syncData + */ + public void busiDeleteSync(MdmSyncData syncData){ + deleteBusiList(syncData.getSyncDataId()); + } + + /** + * 类型转换 + * @param syncDataList + * @return + */ + public abstract List transform(List syncDataList); + + /** + * 新增业务数据 + * @param beanList + */ + public abstract void insertBusiList(List beanList); + + /** + * 修改业务数据 + * @param beanList + */ + public abstract void updateBusiList(List beanList); + + /** + * 删除业务数据 + * @param idList + */ + public abstract void deleteBusiList(List idList); + +} diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysPojoVersionDetailService.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysPojoVersionDetailService.java index 3e06eb0..709069a 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysPojoVersionDetailService.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysPojoVersionDetailService.java @@ -1,7 +1,9 @@ package cn.estsh.i3plus.core.apiservice.serviceimpl.busi; import cn.estsh.i3plus.core.api.iservice.busi.ISysPojoVersionDetailService; +import cn.estsh.i3plus.pojo.base.bean.DdlPackBean; import cn.estsh.i3plus.pojo.base.jpa.dao.BaseRepository; +import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack; import cn.estsh.i3plus.pojo.platform.bean.SysPojoVersionDetail; import cn.estsh.i3plus.pojo.platform.repository.SysPojoVersionDetailRepository; import cn.estsh.impp.framework.base.service.CrudService; @@ -25,4 +27,11 @@ public class SysPojoVersionDetailService extends CrudService getRepository() { return pojoVersionRDao; } + + @Override + public SysPojoVersionDetail getPojoVersionDetailByPojoVersionId(Long pojoVersionId) { + DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(); + DdlPreparedPack.getNumEqualPack(pojoVersionId,"pojoVersionId",ddlPackBean); + return pojoVersionRDao.getByProperty(ddlPackBean); + } } diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysPojoVersionPlanService.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysPojoVersionPlanService.java index 8543237..8a655ec 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysPojoVersionPlanService.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysPojoVersionPlanService.java @@ -8,7 +8,6 @@ import cn.estsh.i3plus.pojo.base.jpa.dao.BaseRepository; import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack; import cn.estsh.i3plus.pojo.platform.bean.SysPojoVersionPlan; import cn.estsh.i3plus.pojo.platform.repository.SysPojoVersionPlanRepository; -import cn.estsh.i3plus.pojo.platform.sqlpack.CoreHqlPack; import cn.estsh.impp.framework.base.service.CacheCrudService; import cn.estsh.impp.framework.boot.exception.ImppExceptionBuilder; import org.springframework.beans.factory.annotation.Autowired; @@ -48,4 +47,12 @@ public class SysPojoVersionPlanService extends CacheCrudService { + + @Autowired + private ISysToolService sysToolService; + + @Autowired + public SysToolSyncDataService(IBaseMdmBusiExtdCloud baseMdmBusiExtdCloud, IBaseMdmBusiModelCloud baseMdmBusiModelCloud) { + super(baseMdmBusiExtdCloud, baseMdmBusiModelCloud); + } + + @Override + public List transform(List syncDataList) { + return syncDataList.stream().map(gearCoreBusiModel -> { + SysTool sysTool = new SysTool(); + if (gearCoreBusiModel != null && gearCoreBusiModel.getBusi() != null && gearCoreBusiModel.getMaster() != null) { + sysTool.setName(gearCoreBusiModel.getMaster().getName()); + sysTool.setToolIp(gearCoreBusiModel.getMaster().getGearModel()); + sysTool.setToolDescription(gearCoreBusiModel.getBusi().getCoreNum()); + } + return sysTool; + }).collect(Collectors.toList()); + } + + @Override + public void insertBusiList(List beanList) { + for (SysTool sysTool : beanList) { + sysToolService.insertSysTool(sysTool); + } + } + + @Override + public void updateBusiList(List beanList) { + for (SysTool sysTool : beanList) { + sysToolService.updateSysTool(sysTool); + } + } + + @Override + public void deleteBusiList(List id) { + sysToolService.deleteSysToolByIds(id.toArray(new Long[id.size()])); + } +} diff --git a/pom.xml b/pom.xml index d566f1d..055ff17 100644 --- a/pom.xml +++ b/pom.xml @@ -94,6 +94,12 @@ ${project.version} + + i3plus.icloud + i3plus-icloud-mdm + ${project.version} + + i3plus.pojo @@ -101,6 +107,12 @@ ${project.version} + + i3plus.pojo + i3plus-pojo-mdm + ${project.version} + + i3plus.core From 7749d038271f263108dba1d2bbdf1cfb93ea0c15 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=B1=AA=E4=BA=91=E6=98=8A?= Date: Mon, 8 Jun 2020 13:41:43 +0800 Subject: [PATCH 04/12] =?UTF-8?q?=E5=AE=9A=E6=97=B6=E4=BB=BB=E5=8A=A1?= =?UTF-8?q?=E6=8E=A7=E5=88=B6=E5=8F=B0=E6=97=A5=E5=BF=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../core/api/iservice/base/ISysLogService.java | 2 -- .../controller/busi/ImppLogController.java | 42 +++++++++++++++++++++- .../core/apiservice/mq/ScheduleQueueReceiver.java | 3 +- .../core/apiservice/schedulejob/DemoJob.java | 19 +++++++--- .../i3plus/core/apiservice/util/NoSqlPack.java | 1 + 5 files changed, 58 insertions(+), 9 deletions(-) diff --git a/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/base/ISysLogService.java b/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/base/ISysLogService.java index f6ddc9e..0cca652 100644 --- a/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/base/ISysLogService.java +++ b/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/base/ISysLogService.java @@ -5,7 +5,6 @@ import cn.estsh.i3plus.pojo.base.common.Pager; import cn.estsh.i3plus.pojo.platform.platbean.*; import io.swagger.annotations.ApiOperation; -import java.util.Date; import java.util.List; import java.util.Map; @@ -61,5 +60,4 @@ public interface ISysLogService { @ApiOperation(value = "查询时间段内各等级日志数量",notes = "查询时间段内各等级日志数量") Map querySysLogSystemByLevel(String startTime, String endTime); - } diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/ImppLogController.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/ImppLogController.java index 842b10b..d6e72f9 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/ImppLogController.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/ImppLogController.java @@ -2,8 +2,8 @@ package cn.estsh.i3plus.core.apiservice.controller.busi; import cn.estsh.i3plus.core.api.iservice.base.ISysLogService; import cn.estsh.i3plus.platform.common.tool.TimeTool; +import cn.estsh.i3plus.platform.common.util.CommonConstWords; import cn.estsh.i3plus.platform.common.util.PlatformConstWords; -import cn.estsh.i3plus.platform.plugin.elasticsearch.ElasticSearchTool; import cn.estsh.i3plus.pojo.base.bean.ListPager; import cn.estsh.i3plus.pojo.base.common.Pager; import cn.estsh.i3plus.pojo.base.enumutil.ResourceEnumUtil; @@ -12,14 +12,18 @@ import cn.estsh.impp.framework.base.controller.CoreBaseController; import cn.estsh.impp.framework.boot.exception.ImppBusiException; import cn.estsh.impp.framework.boot.exception.ImppExceptionBuilder; import cn.estsh.impp.framework.boot.util.ResultBean; +import cn.estsh.impp.framework.boot.util.ValidatorBean; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; +import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; +import java.util.Calendar; import java.util.Date; +import java.util.List; /** * @Description : @@ -131,6 +135,42 @@ public class ImppLogController extends CoreBaseController { } } + /** + * 定时任务控制台日志,分页,排序 + * @param bean 查询条件 + * @return 处理结果 + */ + @GetMapping(value = "/console/query-schedule") + @ApiOperation(value = "定时任务控制台日志,分页,排序",notes = "定时任务控制台日志") + public ResultBean querySchdeuleLogConsoleByPager(SysLogConsole bean){ + try { + ValidatorBean.beginValid(bean) + .notNull("logGroup",bean.getLogGroup()); + // 参数 + // 1. group = CommonConstWords.SCHEDULE_LOG:Gourp.Name + // 2. + + bean.setLogGroup(CommonConstWords.SCHEDULE_LOG + ":" + bean.getLogGroup()); + + // 开始时间默认为上一分钟 + if (StringUtils.isBlank(bean.getCreateDateTimeStart())) { + Date lastMinute = TimeTool.timeCalc(new Date(), Calendar.MINUTE, -1); + bean.setCreateDateTimeStart(TimeTool.pareDateToString(lastMinute)); + } + + // 结束时间默认为当前时间 + if (StringUtils.isBlank(bean.getCreateDateTimeEnd())) { + bean.setCreateDateTimeEnd(TimeTool.getNowTime(true)); + } + List logExceptionList = logService.findLogConsoleList(bean); + return ResultBean.success("查询成功").setResultList(logExceptionList).setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()); + }catch(ImppBusiException busExcep){ + return ResultBean.fail(busExcep); + }catch(Exception e){ + return ImppExceptionBuilder.newInstance().buildExceptionResult(e); + } + } + @GetMapping(value = "/clean-log") @ApiOperation(value = "添加操作日志", notes = "添加操作日志,可用于国际化") public ResultBean logClean(String time) { diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/mq/ScheduleQueueReceiver.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/mq/ScheduleQueueReceiver.java index c104b08..6edde9a 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/mq/ScheduleQueueReceiver.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/mq/ScheduleQueueReceiver.java @@ -11,6 +11,7 @@ import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil; import cn.estsh.i3plus.pojo.base.enumutil.ImppEnumUtil; import cn.estsh.i3plus.pojo.platform.bean.SysMessage; import cn.estsh.i3plus.pojo.platform.bean.SysTaskPlan; +import cn.estsh.i3plus.pojo.platform.bean.SysUser; import cn.estsh.i3plus.pojo.platform.platbean.SysLogTaskTime; import cn.estsh.impp.framework.boot.log.ImppLog; import com.alibaba.fastjson.JSON; @@ -110,7 +111,7 @@ public class ScheduleQueueReceiver { // 设置收件人名称 String[] messageReceiver = taskPlan.getNoticeChannel().split(","); String receiversName = sysUserService.findSysUserByIds(StringTool.getArrayLong(messageReceiver)) - .stream().map(e -> e.getUserName()).collect(Collectors.joining(",")); + .stream().map(SysUser::getUserName).collect(Collectors.joining(",")); sysMessage.setMessageReceiversNameRdd(receiversName); } diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/schedulejob/DemoJob.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/schedulejob/DemoJob.java index 1d70422..f4bf088 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/schedulejob/DemoJob.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/schedulejob/DemoJob.java @@ -7,8 +7,6 @@ import io.swagger.annotations.ApiOperation; import org.apache.commons.lang3.StringUtils; import org.quartz.DisallowConcurrentExecution; import org.quartz.JobExecutionContext; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; /** @@ -21,7 +19,7 @@ import org.springframework.beans.factory.annotation.Autowired; @DisallowConcurrentExecution @ApiOperation("定时任务demo") public class DemoJob extends BaseImppScheduleJob { - public static final Logger LOGGER = LoggerFactory.getLogger(DemoJob.class); + private static final long serialVersionUID = 2582480740831583839L; public DemoJob() { @@ -48,7 +46,18 @@ public class DemoJob extends BaseImppScheduleJob { } catch (InterruptedException e) { e.printStackTrace(); } - System.out.println("定时任务被执行"); - LOGGER.info("projectName:{},port:{}", applicationProperties.getApplicationName(),applicationProperties.getServerPort()); + + LOGGER.debug("debug /////BaseImppScheduleJob/// ///////projectName:{},port:{}", + applicationProperties.getApplicationName(), + applicationProperties.getServerPort()); + LOGGER.info("info ///////////BaseImppScheduleJob// ////projectName:{},port:{}", + applicationProperties.getApplicationName(), + applicationProperties.getServerPort()); + LOGGER.warn("warn /////////BaseImppScheduleJob////////////////////projectName:{},port:{}", + applicationProperties.getApplicationName(), + applicationProperties.getServerPort()); + LOGGER.error("error ////////////BaseImppScheduleJob////////////////////projectName:{},port:{}", + applicationProperties.getApplicationName(), + applicationProperties.getServerPort()); } } diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/util/NoSqlPack.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/util/NoSqlPack.java index 5789835..c8eac5a 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/util/NoSqlPack.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/util/NoSqlPack.java @@ -180,6 +180,7 @@ public class NoSqlPack { result.andNumberEquals("softType",bean.getSoftType()); result.andStringLeftLike("logHost",bean.getLogHost()); result.andStringLike("userLoginName",bean.getUserLoginName()); + result.andStringEquals("logGroup",bean.getLogGroup()); result.andStringEquals("logLevel",bean.getLogLevel()); result.andStringLeftLike("executeClassName",bean.getExecuteClassName()); result.andStringLike("executeMethod",bean.getExecuteMethod()); From b46774101db3cab0f9b33e95cec976ffbfb7c64b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=B1=AA=E4=BA=91=E6=98=8A?= Date: Mon, 8 Jun 2020 13:42:23 +0800 Subject: [PATCH 05/12] =?UTF-8?q?=E6=96=87=E4=BB=B6=E6=9C=8D=E5=8A=A1?= =?UTF-8?q?=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../apiservice/controller/DemoUploadController.java | 9 ++++----- .../apiservice/controller/busi/SysFileController.java | 18 ++++++++++++++---- .../controller/busi/SysLocaleResourceController.java | 16 +++++++++------- .../controller/busi/SysOrderNoRuleController.java | 10 +++++----- .../serviceimpl/busi/SysFileServiceImpl.java | 14 +++++++------- .../serviceimpl/busi/SysLocaleResourceService.java | 6 +++++- 6 files changed, 44 insertions(+), 29 deletions(-) diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/DemoUploadController.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/DemoUploadController.java index 8807063..802271e 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/DemoUploadController.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/DemoUploadController.java @@ -5,8 +5,8 @@ import cn.estsh.i3plus.pojo.base.enumutil.ResourceEnumUtil; import cn.estsh.impp.framework.base.controller.CoreBaseController; import cn.estsh.impp.framework.boot.exception.ImppBusiException; import cn.estsh.impp.framework.boot.exception.ImppExceptionBuilder; -import cn.estsh.impp.framework.boot.fastdfs.FastDFSClient; -import cn.estsh.impp.framework.boot.fastdfs.FastDFSFile; +import cn.estsh.impp.framework.boot.fileservice.ImppFileService; +import cn.estsh.i3plus.pojo.base.bean.ImppFile; import cn.estsh.impp.framework.boot.util.ResultBean; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -15,7 +15,6 @@ import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; -import org.springframework.web.servlet.mvc.support.RedirectAttributes; /** * @Description : @@ -33,7 +32,7 @@ public class DemoUploadController extends CoreBaseController{ /********************** 文件上传 ***********************/ @Autowired - private FastDFSClient dfsClient; + private ImppFileService fileService; @GetMapping("/") public String index() { @@ -64,7 +63,7 @@ public class DemoUploadController extends CoreBaseController{ @ApiOperation(value = "文件上传",notes = "文件上传") public ResultBean singleFileUpload(@RequestParam("file") MultipartFile file) { try { - FastDFSFile dfsFile = dfsClient.saveFile(file); + ImppFile dfsFile = fileService.upload(file); return ResultBean.success("上传成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()).setResultObject(dfsFile); }catch(ImppBusiException busExcep){ return ResultBean.fail(busExcep); diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysFileController.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysFileController.java index b866da4..f8fb82d 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysFileController.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysFileController.java @@ -17,7 +17,8 @@ import cn.estsh.impp.framework.base.controller.CoreBaseController; 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.fastdfs.FastDFSClient; +import cn.estsh.impp.framework.boot.fileservice.ImppFileService; +import cn.estsh.i3plus.pojo.base.bean.ImppFile; import cn.estsh.impp.framework.boot.util.ResultBean; import cn.estsh.impp.framework.boot.util.ValidatorBean; import io.swagger.annotations.Api; @@ -64,7 +65,7 @@ public class SysFileController extends CoreBaseController { private ISysDictionaryService dictionaryService; @Autowired - private FastDFSClient dfsClient; + private ImppFileService fileService; /** * 修改文件资源 @@ -106,7 +107,12 @@ public class SysFileController extends CoreBaseController { ValidatorBean.checkNotNull(sysFile, "文件信息不存在"); LOGGER.info("FastDFS删除文件 == groupName: {},name:{}", sysFile.getDfsGroupName(), sysFile.getDfsFileName()); - dfsClient.deleteFile(sysFile.getDfsGroupName(), sysFile.getDfsFileName()); + + ImppFile imppFile = new ImppFile(); + imppFile.setDfsGroupName(sysFile.getDfsGroupName()); + imppFile.setDfsFileName(sysFile.getDfsFileName()); + + fileService.deleteFile(imppFile); sysFileService.deleteSysFileById(Long.parseLong(idStr)); @@ -312,7 +318,11 @@ public class SysFileController extends CoreBaseController { .build(); } - InputStream fis = dfsClient.downFile(sysFile.getDfsGroupName(), sysFile.getDfsFileName()); + ImppFile imppFile = new ImppFile(); + imppFile.setDfsGroupName(sysFile.getDfsGroupName()); + imppFile.setDfsFileName(sysFile.getDfsFileName()); + + InputStream fis = fileService.downFile(imppFile); if (fis == null) { throw ImppExceptionBuilder.newInstance() diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysLocaleResourceController.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysLocaleResourceController.java index e8d840d..a61645e 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysLocaleResourceController.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysLocaleResourceController.java @@ -25,8 +25,8 @@ import cn.estsh.impp.framework.base.controller.CoreBaseController; 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.fastdfs.FastDFSClient; -import cn.estsh.impp.framework.boot.fastdfs.FastDFSFile; +import cn.estsh.impp.framework.boot.fileservice.ImppFileService; +import cn.estsh.i3plus.pojo.base.bean.ImppFile; import cn.estsh.impp.framework.boot.util.ImppRedis; import cn.estsh.impp.framework.boot.util.ResultBean; import cn.estsh.impp.framework.boot.util.ValidatorBean; @@ -82,7 +82,7 @@ public class SysLocaleResourceController extends CoreBaseController { private EntityManager entityManager; @Autowired - private FastDFSClient dfsClient; + private ImppFileService fileService; /** * 新增语言资源 @@ -487,10 +487,10 @@ public class SysLocaleResourceController extends CoreBaseController { // 查询服务器中是否存在模板文件 SysFile sysFile = sysFileService.getSysFileByFileCode(importTemplateCode); if(sysFile == null){ - FastDFSFile fastDFSFile = new FastDFSFile(SysLocaleResource.class.getSimpleName() + "ImportTemplate.xls", + ImppFile fastDFSFile = new ImppFile(SysLocaleResource.class.getSimpleName() + "ImportTemplate.xls", excelTool.importTemplate(SysLocaleResource.class), ".xls"); - sysFile = dfsClient.upload(fastDFSFile,CommonEnumUtil.SOFT_TYPE.CORE.getValue()); + sysFile = fileService.upload(fastDFSFile,CommonEnumUtil.SOFT_TYPE.CORE.getValue()); sysFile.setFileCode(importTemplateCode); sysFileService.insertSysFile(sysFile); } @@ -563,7 +563,9 @@ public class SysLocaleResourceController extends CoreBaseController { @ApiOperation(value = "批量转换缺失资源") public ResultBean doBatchConversionMissResource(@RequestBody List missResourceModelList){ try { - sysLocaleResourceService.doConversionMissResourceByKeys(missResourceModelList); + ValidatorBean.checkNotNull(missResourceModelList,"请选择缺失数据信息"); + + sysLocaleResourceService.doConversionMissResourceByKeys(missResourceModelList, AuthUtil.getSessionUser().getUserName()); return ResultBean.success("操作成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()); } catch (ImppBusiException busExcep) { @@ -607,7 +609,7 @@ public class SysLocaleResourceController extends CoreBaseController { String fileName = "locale_" + System.currentTimeMillis() + ".xls"; File file = new File(tempDir,fileName); - if (file.createNewFile()) { + if (!file.createNewFile()) { throw ImppExceptionBuilder.newInstance() .setSystemID(CommonEnumUtil.SOFT_TYPE.CORE.getCode()) .setErrorCode(ImppExceptionEnum.IO_EXCEPTION_FILE.getCode()) diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysOrderNoRuleController.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysOrderNoRuleController.java index ea3b86f..4c145c5 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysOrderNoRuleController.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysOrderNoRuleController.java @@ -21,8 +21,8 @@ import cn.estsh.i3plus.pojo.platform.bean.SysOrderNoRule; import cn.estsh.impp.framework.base.controller.CoreBaseController; import cn.estsh.impp.framework.boot.exception.ImppBusiException; import cn.estsh.impp.framework.boot.exception.ImppExceptionBuilder; -import cn.estsh.impp.framework.boot.fastdfs.FastDFSClient; -import cn.estsh.impp.framework.boot.fastdfs.FastDFSFile; +import cn.estsh.impp.framework.boot.fileservice.ImppFileService; +import cn.estsh.i3plus.pojo.base.bean.ImppFile; import cn.estsh.impp.framework.boot.util.ImppRedis; import cn.estsh.impp.framework.boot.util.ResultBean; import cn.estsh.impp.framework.boot.util.ValidatorBean; @@ -67,7 +67,7 @@ public class SysOrderNoRuleController extends CoreBaseController { private ISysMessageService sysMessageService; @Autowired - private FastDFSClient dfsClient; + private ImppFileService fileService; @Autowired private EntityManager entityManager; @@ -333,10 +333,10 @@ public class SysOrderNoRuleController extends CoreBaseController { // 查询服务器中是否存在模板文件 SysFile sysFile = sysFileService.getSysFileByFileCode(importTemplateCode); if(sysFile == null){ - FastDFSFile fastDFSFile = new FastDFSFile(SysOrderNoRule.class.getSimpleName() + "ImportTemplate.xls", + ImppFile fastDFSFile = new ImppFile(SysOrderNoRule.class.getSimpleName() + "ImportTemplate.xls", excelTool.importTemplate(SysOrderNoRule.class), ".xls"); - sysFile = dfsClient.upload(fastDFSFile,CommonEnumUtil.SOFT_TYPE.CORE.getValue()); + sysFile = fileService.upload(fastDFSFile,CommonEnumUtil.SOFT_TYPE.CORE.getValue()); sysFile.setFileCode(importTemplateCode); sysFileService.insertSysFile(sysFile); diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysFileServiceImpl.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysFileServiceImpl.java index 20385a5..2bec7ca 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysFileServiceImpl.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysFileServiceImpl.java @@ -16,8 +16,8 @@ import cn.estsh.i3plus.pojo.platform.repository.SysDictionaryRepository; import cn.estsh.i3plus.pojo.platform.repository.SysFileRepository; import cn.estsh.i3plus.pojo.platform.sqlpack.CoreHqlPack; import cn.estsh.impp.framework.boot.exception.ImppExceptionBuilder; -import cn.estsh.impp.framework.boot.fastdfs.FastDFSClient; -import cn.estsh.impp.framework.boot.fastdfs.FastDFSFile; +import cn.estsh.impp.framework.boot.fileservice.ImppFileService; +import cn.estsh.i3plus.pojo.base.bean.ImppFile; import io.swagger.annotations.ApiOperation; import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; @@ -47,7 +47,7 @@ public class SysFileServiceImpl implements ISysFileService { private SysDictionaryRepository sysDictionaryRDao; @Autowired - private FastDFSClient dfsClient; + private ImppFileService fileService; @Override @ApiOperation(value = "新增资源信息") @@ -173,15 +173,15 @@ public class SysFileServiceImpl implements ISysFileService { sysFile.setFileSoftType(CommonEnumUtil.SOFT_TYPE.CORE.getValue()); } - FastDFSFile fastDFSFile; + ImppFile fastDFSFile; SysFile uploadFile; // 判断参数类型 if (file instanceof File) { - fastDFSFile = new FastDFSFile(((File) file).getName(), FileTool.file2Byte(((File) file).getPath()), + fastDFSFile = new ImppFile(((File) file).getName(), FileTool.file2Byte(((File) file).getPath()), StringTool.getStringFileSuffix(((File) file).getName(), true)); - uploadFile = dfsClient.upload(fastDFSFile, sysFile.getFileSoftTypeVal()); + uploadFile = fileService.upload(fastDFSFile, sysFile.getFileSoftTypeVal()); } else { - uploadFile = dfsClient.saveFile((MultipartFile) file, sysFile.getFileSoftTypeVal()); + uploadFile = fileService.upload((MultipartFile) file, sysFile.getFileSoftTypeVal()); } uploadFile.setId(sysFile.getId()); 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 38f380f..e413d37 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 @@ -1,6 +1,7 @@ package cn.estsh.i3plus.core.apiservice.serviceimpl.busi; import cn.estsh.i3plus.core.api.iservice.busi.ISysLocaleResourceService; +import cn.estsh.i3plus.platform.common.convert.ConvertBean; import cn.estsh.i3plus.platform.common.exception.ImppExceptionEnum; import cn.estsh.i3plus.platform.common.tool.BeanCopyTool; import cn.estsh.i3plus.platform.common.tool.JsonUtilTool; @@ -257,7 +258,7 @@ public class SysLocaleResourceService implements ISysLocaleResourceService { } @Override - public void doConversionMissResourceByKeys(List missResourceModelList) { + public void doConversionMissResourceByKeys(List missResourceModelList,String userName) { Map langCodeMap = sysLocaleLanguageRDao.list() .stream() .collect( @@ -278,6 +279,9 @@ public class SysLocaleResourceService implements ISysLocaleResourceService { sysLocaleResource.setResourceValue(resourceModel.getResourceValue()); sysLocaleResource.setIsSystem(CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue()); + // 数据初始化 + ConvertBean.serviceModelInitialize(sysLocaleResource,userName); + insertSysLocaleResource(sysLocaleResource); redisRes.deleteKey(resourceModel.getKey()); } From c640002ed2ee00c3a04eb26d7aa13cd879534676 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=B1=AA=E4=BA=91=E6=98=8A?= Date: Mon, 8 Jun 2020 13:42:41 +0800 Subject: [PATCH 06/12] =?UTF-8?q?=E4=BF=AE=E5=A4=8Dbug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../iservice/busi/ISysLocaleResourceService.java | 5 +++-- .../api/iservice/busi/ISysTaskPlanService.java | 5 +++-- .../mq/MessageSWebNoticeQueueReceiver.java | 23 ++++++++++++++-------- 3 files changed, 21 insertions(+), 12 deletions(-) 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 f26c1ce..8f7fb35 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 @@ -79,9 +79,10 @@ public interface ISysLocaleResourceService { /** * 批量转换缺失资源 - * @param missResourceModelList + * @param missResourceModelList 缺失资源信息 + * @param userName 用户名称 */ @ApiOperation(value = "批量转换缺失资源") - void doConversionMissResourceByKeys(List missResourceModelList) ; + void doConversionMissResourceByKeys(List missResourceModelList,String userName) ; } diff --git a/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/ISysTaskPlanService.java b/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/ISysTaskPlanService.java index 5d54cb8..e3faba8 100644 --- a/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/ISysTaskPlanService.java +++ b/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/ISysTaskPlanService.java @@ -1,11 +1,10 @@ package cn.estsh.i3plus.core.api.iservice.busi; +import cn.estsh.i3plus.pojo.base.annotation.AnnoIgnoreLog; import cn.estsh.i3plus.pojo.base.bean.ListPager; import cn.estsh.i3plus.pojo.base.common.Pager; import cn.estsh.i3plus.pojo.platform.bean.SessionUser; -import cn.estsh.i3plus.pojo.platform.bean.SysTask; import cn.estsh.i3plus.pojo.platform.bean.SysTaskPlan; -import cn.estsh.i3plus.pojo.platform.bean.SysTaskCycle; import cn.estsh.i3plus.pojo.platform.platbean.SysLogTaskTime; import io.swagger.annotations.ApiOperation; @@ -93,8 +92,10 @@ public interface ISysTaskPlanService { /** * 修改任务计划信息,不会更新quartz数据库 + * 忽略日志打印 * @param sysTaskPlan */ + @AnnoIgnoreLog @ApiOperation(value = "修改任务计划信息",notes = "修改任务计划信息,不会更新quartz数据库") void updateSysTaskPlan(SysTaskPlan sysTaskPlan); } diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/mq/MessageSWebNoticeQueueReceiver.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/mq/MessageSWebNoticeQueueReceiver.java index 3dad586..d62d190 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/mq/MessageSWebNoticeQueueReceiver.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/mq/MessageSWebNoticeQueueReceiver.java @@ -64,6 +64,10 @@ public class MessageSWebNoticeQueueReceiver { // 添加消息 SysMessage msg = JsonUtilTool.decode(data, SysMessage.class); try { + if (msg!= null &&StringUtils.isBlank(msg.getCreateUser())) { + ConvertBean.serviceModelInitialize(msg, msg.getMessageSenderNameRdd()); + } + msg = sysMessageService.insertSysMessage(msg); // 添加附件信息 @@ -90,20 +94,23 @@ public class MessageSWebNoticeQueueReceiver { try { userJsonArray = JSON.parseArray(msg.getMessageReceiversId()); }catch (JSONException e){ - LOGGER.error(" JSON转换错误【{0}】:{1}", msg.getMessageReceiversId(), e.getMessage()); + LOGGER.error("JSON转换错误【{0}】", msg.getMessageReceiversId(), e.getMessage()); } JSONObject userJsonObject; List insertList = new ArrayList<>(userJsonArray.size()); - List receiversId = new ArrayList(); - List receiversName = new ArrayList(); + List receiversId = new ArrayList<>(); + List receiversName = new ArrayList<>(); SysRefUserMessage refUserMessage; - for (Object user : userJsonArray) { // 约定格式:[{'id':'111','name':'张三'},{'id':'121','name':'张三2'}] userJsonObject = ( JSONObject )user; - receiversId.add(userJsonObject.get("id").toString()); - receiversName.add(userJsonObject.get("name").toString()); + if (userJsonObject.containsKey("id")) { + receiversId.add(userJsonObject.getLongValue("id")); + } + if (userJsonObject.containsKey("name")) { + receiversName.add(userJsonObject.getString("name")); + } refUserMessage = new SysRefUserMessage(); refUserMessage.setMessageId(msg.getId()); @@ -111,8 +118,8 @@ public class MessageSWebNoticeQueueReceiver { refUserMessage.setMessageTitleRdd(msg.getMessageTitle()); refUserMessage.setMessageTypeRdd(msg.getMessageType()); refUserMessage.setMessageSenderNameRdd(msg.getMessageSenderNameRdd()); - refUserMessage.setReceiverId(Long.parseLong(userJsonObject.get("id").toString())); - refUserMessage.setReceiverNameRdd(userJsonObject.get("name").toString()); + refUserMessage.setReceiverId(userJsonObject.getLongValue("id")); + refUserMessage.setReceiverNameRdd(userJsonObject.getString("name")); refUserMessage.setMessageStatus(ImppEnumUtil.MESSAGE_STATUS.UNREAD.getValue()); refUserMessage.setReceiverTime(TimeTool.getNowTime(true)); refUserMessage.setIsUrgent(msg.getIsUrgent()); From a293de66887523f86d98456049b4ac3bad0c5b29 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=B1=AA=E4=BA=91=E6=98=8A?= Date: Mon, 8 Jun 2020 14:38:00 +0800 Subject: [PATCH 07/12] =?UTF-8?q?=E6=96=87=E4=BB=B6=E6=9C=8D=E5=8A=A1?= =?UTF-8?q?=E9=85=8D=E7=BD=AE=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/resources/application-dev.properties | 5 +- .../application-docker-yfas-nd.properties | 153 +++++++++++---------- .../main/resources/application-docker.properties | 5 +- .../src/main/resources/application-prod.properties | 153 +++++++++++---------- 4 files changed, 160 insertions(+), 156 deletions(-) diff --git a/modules/i3plus-core-apiservice/src/main/resources/application-dev.properties b/modules/i3plus-core-apiservice/src/main/resources/application-dev.properties index 5e24b27..3580943 100644 --- a/modules/i3plus-core-apiservice/src/main/resources/application-dev.properties +++ b/modules/i3plus-core-apiservice/src/main/resources/application-dev.properties @@ -18,8 +18,9 @@ impp.config.rabbitmq=true impp.config.swagger=true #\u662F\u5426\u5F00\u542Fwebsocket impp.config.websocket=true -#\u662F\u5426\u5F00\u542F\u6587\u4EF6\u670D\u52A1 -impp.config.fastdfs=true +# \u662F\u5426\u5F00\u542F\u6587\u4EF6\u670D\u52A1 +# \u9ED8\u8BA4false ,\u53EF\u9009\u9879\uFF1Afastdfs\uFF0Cgofastdfs +impp.config.fileserver=fastdfs #\u662F\u5426\u5BF9\u53D1\u5E03\u670D\u52A1\u8FDB\u884C\u8BE6\u7EC6\u65E5\u5FD7\u5206\u6790 impp.log.detail.controller=true #\u662F\u5426\u5BF9\u8C03\u7528\u670D\u52A1\u8FDB\u884C\u8BE6\u7EC6\u65E5\u5FD7\u5206\u6790 diff --git a/modules/i3plus-core-apiservice/src/main/resources/application-docker-yfas-nd.properties b/modules/i3plus-core-apiservice/src/main/resources/application-docker-yfas-nd.properties index 79d909c..eb1706c 100644 --- a/modules/i3plus-core-apiservice/src/main/resources/application-docker-yfas-nd.properties +++ b/modules/i3plus-core-apiservice/src/main/resources/application-docker-yfas-nd.properties @@ -1,49 +1,50 @@ -#本机ip +#\u672C\u673Aip impp.server.ip=imppcore -#项目端口 +#\u9879\u76EE\u7AEF\u53E3 server.port=8100 -#链路追踪zipkin控制台ip地址 +#\u94FE\u8DEF\u8FFD\u8E2Azipkin\u63A7\u5236\u53F0ip\u5730\u5740 impp.console.ip=http://console:8010 -#服务注册中心(多注册中心逗号分隔) +#\u670D\u52A1\u6CE8\u518C\u4E2D\u5FC3(\u591A\u6CE8\u518C\u4E2D\u5FC3\u9017\u53F7\u5206\u9694) impp.cluster.regist.center=http://register:8000/eureka/ -#日志默认使用log4j2 +#\u65E5\u5FD7\u9ED8\u8BA4\u4F7F\u7528log4j2 logging.config=classpath:log4j2-spring.xml -########平台相关参数########## -#是否开启redis缓存 +########\u5E73\u53F0\u76F8\u5173\u53C2\u6570########## +#\u662F\u5426\u5F00\u542Fredis\u7F13\u5B58 impp.config.redis=true -#是否开启rabbitMQ +#\u662F\u5426\u5F00\u542FrabbitMQ impp.config.rabbitmq=true -#是否开启swagger +#\u662F\u5426\u5F00\u542Fswagger impp.config.swagger=true -#是否开启websocket +#\u662F\u5426\u5F00\u542Fwebsocket impp.config.websocket=true -#是否开启文件服务 -impp.config.fastdfs=true -#是否对发布服务进行详细日志分析 +#\u662F\u5426\u5F00\u542F\u6587\u4EF6\u670D\u52A1 +# \u9ED8\u8BA4false ,\u53EF\u9009\u9879\uFF1Afastdfs\uFF0Cgofastdfs +impp.config.fileserver=fastdfs +#\u662F\u5426\u5BF9\u53D1\u5E03\u670D\u52A1\u8FDB\u884C\u8BE6\u7EC6\u65E5\u5FD7\u5206\u6790 impp.log.detail.controller=true -#是否对调用服务进行详细日志分析 +#\u662F\u5426\u5BF9\u8C03\u7528\u670D\u52A1\u8FDB\u884C\u8BE6\u7EC6\u65E5\u5FD7\u5206\u6790 impp.log.detail.service=true -#是否开启微服 +#\u662F\u5426\u5F00\u542F\u5FAE\u670D eureka.client.enabled=true -#打开feign的熔断 +#\u6253\u5F00feign\u7684\u7194\u65AD feign.hystrix.enabled=true -################ 队列处理 ################ -#站内信 +################ \u961F\u5217\u5904\u7406 ################ +#\u7AD9\u5185\u4FE1 impp.mq.queue.letter=true -#邮件 +#\u90AE\u4EF6 impp.mq.queue.mail=true -#定时任务 +#\u5B9A\u65F6\u4EFB\u52A1 impp.mq.queue.schedule=true -#SWEB通知处理队列 +#SWEB\u901A\u77E5\u5904\u7406\u961F\u5217 impp.mq.queue.sweb.notice=true -################################ 数据库相关设置 ################################ +################################ \u6570\u636E\u5E93\u76F8\u5173\u8BBE\u7F6E ################################ # mysql spring.datasource.validationQuery=SELECT 1 -################ 数据池设置 ################ +################ \u6570\u636E\u6C60\u8BBE\u7F6E ################ spring.datasource.maximum-pool-size=10 spring.datasource.max-active=5 spring.datasource.max-idle=5 @@ -55,7 +56,7 @@ spring.datasource.test-on-borrow=false spring.datasource.test-while-idle=true spring.datasource.time-between-eviction-runs-millis=300000 -##主数据源,读写 +##\u4E3B\u6570\u636E\u6E90\uFF0C\u8BFB\u5199 #impp.write.datasource.type=com.zaxxer.hikari.HikariDataSource impp.write.datasource.driver-class-name=com.mysql.jdbc.Driver impp.write.datasource.jdbc-url=jdbc:mysql://dbmaster:3306/impp_i3_core?autoReconnect=true&useSSL=false&characterEncoding=utf-8 @@ -63,13 +64,13 @@ impp.write.datasource.username=wmslogin impp.write.datasource.password=Wmslogin$%^&7654 #impp.read.datasource.type=com.zaxxer.hikari.HikariDataSource -#主从复制时自动修改表结构会有问题,暂时改成同一个数据源 +#\u4E3B\u4ECE\u590D\u5236\u65F6\u81EA\u52A8\u4FEE\u6539\u8868\u7ED3\u6784\u4F1A\u6709\u95EE\u9898\uFF0C\u6682\u65F6\u6539\u6210\u540C\u4E00\u4E2A\u6570\u636E\u6E90 impp.read.datasource.driver-class-name=com.mysql.jdbc.Driver impp.read.datasource.jdbc-url=jdbc:mysql://dbmaster:3306/impp_i3_core?autoReconnect=true&useSSL=false&characterEncoding=utf-8 impp.read.datasource.username=wmslogin impp.read.datasource.password=Wmslogin$%^&7654 -##############定时任务持久化############## +##############\u5B9A\u65F6\u4EFB\u52A1\u6301\u4E45\u5316############## impp.schedule.open=true impp.schedule.datasource.driver-class-name=com.mysql.jdbc.Driver impp.schedule.datasource.jdbc-url=jdbc:mysql://dbmaster:3306/impp_i3_schedule?autoReconnect=true&useSSL=false&characterEncoding=utf-8 @@ -77,121 +78,121 @@ impp.schedule.datasource.username=wmslogin impp.schedule.datasource.password=Wmslogin$%^&7654 impp.schedule.datasource.max-connections=50 -################ 日志数据源 ################ +################ \u65E5\u5FD7\u6570\u636E\u6E90 ################ spring.data.mongodb.database=mongoDBSource spring.data.mongodb.uri=mongodb:27017 spring.data.mongodb.username=sa spring.data.mongodb.password=i3plus spring.data.mongodb.port=27017 -################ JPA设置设置 ################ +################ JPA\u8BBE\u7F6E\u8BBE\u7F6E ################ # mysql spring.jpa.database=MYSQL spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL5InnoDBDialect -#是否显示sql +#\u662F\u5426\u663E\u793Asql spring.jpa.show-sql=true -#表关系create,create-drop,update,validate +#\u8868\u5173\u7CFBcreate,create-drop,update,validate spring.jpa.properties.hibernate.hbm2ddl.auto=update -#定时任务在服务启动后多少秒执行 +#\u5B9A\u65F6\u4EFB\u52A1\u5728\u670D\u52A1\u542F\u52A8\u540E\u591A\u5C11\u79D2\u6267\u884C impp.schedule.start.after-second=20 -#是否集群部署 +#\u662F\u5426\u96C6\u7FA4\u90E8\u7F72 impp.schedule.datasource.is-clustered=true -#执行检测(毫秒),若宕机由其他定时器执行 +#\u6267\u884C\u68C0\u6D4B\uFF08\u6BEB\u79D2\uFF09\uFF0C\u82E5\u5B95\u673A\u7531\u5176\u4ED6\u5B9A\u65F6\u5668\u6267\u884C impp.schedule.datasource.cluster-checkin-interval=30000 -#线程数 +#\u7EBF\u7A0B\u6570 impp.schedule.thread-count=50 -#线程优先级(1-10)默认为5 +#\u7EBF\u7A0B\u4F18\u5148\u7EA7\uFF081-10\uFF09\u9ED8\u8BA4\u4E3A5 impp.schedule.thread-priority=5 -################################ 其他功能设置 ################################ +################################ \u5176\u4ED6\u529F\u80FD\u8BBE\u7F6E ################################ #redisIP redis.hostName=redis -#端口号 +#\u7AEF\u53E3\u53F7 redis.port=6379 -#如果有密码 +#\u5982\u679C\u6709\u5BC6\u7801 redis.password= -##其他redis配置需要调整的加在此处 -################## rabbitMQ配置 #################### +##\u5176\u4ED6redis\u914D\u7F6E\u9700\u8981\u8C03\u6574\u7684\u52A0\u5728\u6B64\u5904 +################## rabbitMQ\u914D\u7F6E #################### spring.rabbitmq.vhost=/ spring.rabbitmq.host=rabbitmq spring.rabbitmq.port=5672 spring.rabbitmq.username=estsh spring.rabbitmq.password=estsh123 -##其他rabbitMq配置需要调整的加在此处 +##\u5176\u4ED6rabbitMq\u914D\u7F6E\u9700\u8981\u8C03\u6574\u7684\u52A0\u5728\u6B64\u5904 -################ 微服配置 ################ -#是否进行健康检查 +################ \u5FAE\u670D\u914D\u7F6E ################ +#\u662F\u5426\u8FDB\u884C\u5065\u5EB7\u68C0\u67E5 eureka.client.healthcheck.enabled=true -#若无法连接注册中心,是否需要一直检测加入 +#\u82E5\u65E0\u6CD5\u8FDE\u63A5\u6CE8\u518C\u4E2D\u5FC3\uFF0C\u662F\u5426\u9700\u8981\u4E00\u76F4\u68C0\u6D4B\u52A0\u5165 impp.cluster.fetch=true -#集群名 +#\u96C6\u7FA4\u540D eureka.instance.metadata-map.cluster=impp_cluster -#(参数配置)注册中心地址 -》 i3plus-ics,多个用逗号分隔 +#\uFF08\u53C2\u6570\u914D\u7F6E\uFF09\u6CE8\u518C\u4E2D\u5FC3\u5730\u5740 -\u300B i3plus-ics\uFF0C\u591A\u4E2A\u7528\u9017\u53F7\u5206\u9694 eureka.client.service-url.defaultZone=${impp.cluster.regist.center} -#本服务主机ip(若多个网卡,则需要设置本服务ip) +#\u672C\u670D\u52A1\u4E3B\u673Aip\uFF08\u82E5\u591A\u4E2A\u7F51\u5361\uFF0C\u5219\u9700\u8981\u8BBE\u7F6E\u672C\u670D\u52A1ip\uFF09 eureka.instance.ip-address=${impp.server.ip} -#本服务实例ID +#\u672C\u670D\u52A1\u5B9E\u4F8BID eureka.instance.instance-id=${impp.server.ip}:${server.port} -#本服务主机名 +#\u672C\u670D\u52A1\u4E3B\u673A\u540D eureka.instance.hostname=${impp.server.ip} -#本服务状态页面 +#\u672C\u670D\u52A1\u72B6\u6001\u9875\u9762 eureka.instance.status-page-url=http://${impp.server.ip}:${server.port}/swagger-ui.html -#将自己的IP注册到Eureka Server。若不配置或设置为false,表示注册微服务所在操作系统的hostname到Eureka Server +#\u5C06\u81EA\u5DF1\u7684IP\u6CE8\u518C\u5230Eureka Server\u3002\u82E5\u4E0D\u914D\u7F6E\u6216\u8BBE\u7F6E\u4E3Afalse\uFF0C\u8868\u793A\u6CE8\u518C\u5FAE\u670D\u52A1\u6240\u5728\u64CD\u4F5C\u7CFB\u7EDF\u7684hostname\u5230Eureka Server eureka.instance.prefer-ip-address=true -################ 检测机制 ################ -#心跳间隔周期,宕机限制(秒),30秒没反应视为宕机 +################ \u68C0\u6D4B\u673A\u5236 ################ +#\u5FC3\u8DF3\u95F4\u9694\u5468\u671F\uFF0C\u5B95\u673A\u9650\u5236\uFF08\u79D2\uFF09\uFF0C30\u79D2\u6CA1\u53CD\u5E94\u89C6\u4E3A\u5B95\u673A eureka.instance.lease-expiration-duration-in-seconds=30 -#心跳周期 +#\u5FC3\u8DF3\u5468\u671F eureka.instance.lease-renewal-interval-in-seconds=20 -#client连接Eureka服务端后的空闲等待时间,默认为30 秒 +#client\u8FDE\u63A5Eureka\u670D\u52A1\u7AEF\u540E\u7684\u7A7A\u95F2\u7B49\u5F85\u65F6\u95F4\uFF0C\u9ED8\u8BA4\u4E3A30 \u79D2 eureka.client.eureka-connection-idle-timeout-seconds=1 -#最初复制实例信息到eureka服务器所需的时间(s),默认为40秒 +#\u6700\u521D\u590D\u5236\u5B9E\u4F8B\u4FE1\u606F\u5230eureka\u670D\u52A1\u5668\u6240\u9700\u7684\u65F6\u95F4\uFF08s\uFF09\uFF0C\u9ED8\u8BA4\u4E3A40\u79D2 eureka.client.initial-instance-info-replication-interval-seconds=1 -#间隔多长时间再次复制实例信息到eureka服务器,默认为30秒 +#\u95F4\u9694\u591A\u957F\u65F6\u95F4\u518D\u6B21\u590D\u5236\u5B9E\u4F8B\u4FE1\u606F\u5230eureka\u670D\u52A1\u5668\uFF0C\u9ED8\u8BA4\u4E3A30\u79D2 eureka.client.instance-info-replication-interval-seconds=1 -#从eureka服务器注册表中获取注册信息的时间间隔(s),默认为30秒 +#\u4ECEeureka\u670D\u52A1\u5668\u6CE8\u518C\u8868\u4E2D\u83B7\u53D6\u6CE8\u518C\u4FE1\u606F\u7684\u65F6\u95F4\u95F4\u9694\uFF08s\uFF09\uFF0C\u9ED8\u8BA4\u4E3A30\u79D2 eureka.client.registry-fetch-interval-seconds=1 -################ 熔断配置 ################ -#重试 +################ \u7194\u65AD\u914D\u7F6E ################ +#\u91CD\u8BD5 ribbon.maxAutoRetries=2 -#读取数据时长 +#\u8BFB\u53D6\u6570\u636E\u65F6\u957F ribbon.ReadTimeout=30000 -#连接时长 +#\u8FDE\u63A5\u65F6\u957F ribbon.ConnectTimeout=50000 -#响应超过时长,进行熔断(熔断超时需要大于读取时长及连接时长) +#\u54CD\u5E94\u8D85\u8FC7\u65F6\u957F\uFF0C\u8FDB\u884C\u7194\u65AD\uFF08\u7194\u65AD\u8D85\u65F6\u9700\u8981\u5927\u4E8E\u8BFB\u53D6\u65F6\u957F\u53CA\u8FDE\u63A5\u65F6\u957F\uFF09 hystrix.command.default.execution.isolation.thread.timeoutInMilliseconds=60000 -################ 链路追踪 ################ -#使用web方式传输信息 +################ \u94FE\u8DEF\u8FFD\u8E2A ################ +#\u4F7F\u7528web\u65B9\u5F0F\u4F20\u8F93\u4FE1\u606F spring.zipkin.sender.type=web -#链路追踪服务的地址 +#\u94FE\u8DEF\u8FFD\u8E2A\u670D\u52A1\u7684\u5730\u5740 spring.zipkin.base-url=${impp.console.ip} -#追踪深度,百分比,1是全部 +#\u8FFD\u8E2A\u6DF1\u5EA6\uFF0C\u767E\u5206\u6BD4\uFF0C1\u662F\u5168\u90E8 spring.sleuth.sampler.probability=1.0 -################ FastDfs 配置 ################ -#tracker服务器ip +################ FastDfs \u914D\u7F6E ################ +#tracker\u670D\u52A1\u5668ip fastdfs.tracker_servers=tracker:22122 -# tracker的http端口 +# tracker\u7684http\u7AEF\u53E3 fastdfs.http_tracker_http_port=22122 -# 使用自定义工具获取文件展示地址 +# \u4F7F\u7528\u81EA\u5B9A\u4E49\u5DE5\u5177\u83B7\u53D6\u6587\u4EF6\u5C55\u793A\u5730\u5740 fastdfs.http.ui.host=http://tracker:22122 -#密码 +#\u5BC6\u7801 #fastdfs.http.secret_key= -#连接超时 +#\u8FDE\u63A5\u8D85\u65F6 fastdfs.connect_timeout_in_seconds=10000 -#传输超时 +#\u4F20\u8F93\u8D85\u65F6 fastdfs.network_timeout_in_seconds=10000 fastdfs.charset=UTF-8 -# token 防盗链功能 +# token \u9632\u76D7\u94FE\u529F\u80FD fastdfs.http_anti_steal_token=no -################ 授权配置 ################ +################ \u6388\u6743\u914D\u7F6E ################ slm.api.password=4C9479EBEFA6FA6E232EF25EFA49C4D2 slm.app.id=10000 diff --git a/modules/i3plus-core-apiservice/src/main/resources/application-docker.properties b/modules/i3plus-core-apiservice/src/main/resources/application-docker.properties index 15cdde6..ab6bd48 100644 --- a/modules/i3plus-core-apiservice/src/main/resources/application-docker.properties +++ b/modules/i3plus-core-apiservice/src/main/resources/application-docker.properties @@ -18,8 +18,9 @@ impp.config.rabbitmq=true impp.config.swagger=true #\u662F\u5426\u5F00\u542Fwebsocket impp.config.websocket=true -#\u662F\u5426\u5F00\u542F\u6587\u4EF6\u670D\u52A1 -impp.config.fastdfs=true +# \u662F\u5426\u5F00\u542F\u6587\u4EF6\u670D\u52A1 +# \u9ED8\u8BA4false ,\u53EF\u9009\u9879\uFF1Afastdfs\uFF0Cgofastdfs +impp.config.fileserver=fastdfs #\u662F\u5426\u5BF9\u53D1\u5E03\u670D\u52A1\u8FDB\u884C\u8BE6\u7EC6\u65E5\u5FD7\u5206\u6790 impp.log.detail.controller=true #\u662F\u5426\u5BF9\u8C03\u7528\u670D\u52A1\u8FDB\u884C\u8BE6\u7EC6\u65E5\u5FD7\u5206\u6790 diff --git a/modules/i3plus-core-apiservice/src/main/resources/application-prod.properties b/modules/i3plus-core-apiservice/src/main/resources/application-prod.properties index e3633cd..609ef1e 100644 --- a/modules/i3plus-core-apiservice/src/main/resources/application-prod.properties +++ b/modules/i3plus-core-apiservice/src/main/resources/application-prod.properties @@ -1,49 +1,50 @@ -#本机ip +#\u672C\u673Aip impp.server.ip=192.168.1.241 -#项目端口 +#\u9879\u76EE\u7AEF\u53E3 server.port=18100 -#链路追踪zipkin控制台ip地址 +#\u94FE\u8DEF\u8FFD\u8E2Azipkin\u63A7\u5236\u53F0ip\u5730\u5740 impp.console.ip=http://192.168.1.241:18010 -#服务注册中心(多注册中心逗号分隔) +#\u670D\u52A1\u6CE8\u518C\u4E2D\u5FC3(\u591A\u6CE8\u518C\u4E2D\u5FC3\u9017\u53F7\u5206\u9694) impp.cluster.regist.center=http://192.168.1.241:18000/eureka/ -#日志默认使用log4j2 +#\u65E5\u5FD7\u9ED8\u8BA4\u4F7F\u7528log4j2 logging.config=classpath:log4j2-spring-prod.xml -########平台相关参数########## -#是否开启redis缓存 +########\u5E73\u53F0\u76F8\u5173\u53C2\u6570########## +#\u662F\u5426\u5F00\u542Fredis\u7F13\u5B58 impp.config.redis=true -#是否开启rabbitMQ +#\u662F\u5426\u5F00\u542FrabbitMQ impp.config.rabbitmq=true -#是否开启swagger +#\u662F\u5426\u5F00\u542Fswagger impp.config.swagger=true -#是否开启websocket +#\u662F\u5426\u5F00\u542Fwebsocket impp.config.websocket=true -#是否开启文件服务 -impp.config.fastdfs=true -#是否对发布服务进行详细日志分析 +#\u662F\u5426\u5F00\u542F\u6587\u4EF6\u670D\u52A1 +# \u9ED8\u8BA4false ,\u53EF\u9009\u9879\uFF1Afastdfs\uFF0Cgofastdfs +impp.config.fileserver=fastdfs +#\u662F\u5426\u5BF9\u53D1\u5E03\u670D\u52A1\u8FDB\u884C\u8BE6\u7EC6\u65E5\u5FD7\u5206\u6790 impp.log.detail.controller=true -#是否对调用服务进行详细日志分析 +#\u662F\u5426\u5BF9\u8C03\u7528\u670D\u52A1\u8FDB\u884C\u8BE6\u7EC6\u65E5\u5FD7\u5206\u6790 impp.log.detail.service=true -#是否开启微服 +#\u662F\u5426\u5F00\u542F\u5FAE\u670D eureka.client.enabled=true -#打开feign的熔断 +#\u6253\u5F00feign\u7684\u7194\u65AD feign.hystrix.enabled=true -################ 队列处理 ################ -#站内信 +################ \u961F\u5217\u5904\u7406 ################ +#\u7AD9\u5185\u4FE1 impp.mq.queue.letter=true -#邮件 +#\u90AE\u4EF6 impp.mq.queue.mail=true -#定时任务 +#\u5B9A\u65F6\u4EFB\u52A1 impp.mq.queue.schedule=true -#SWEB通知处理队列 +#SWEB\u901A\u77E5\u5904\u7406\u961F\u5217 impp.mq.queue.sweb.notice=true -################################ 数据库相关设置 ################################ +################################ \u6570\u636E\u5E93\u76F8\u5173\u8BBE\u7F6E ################################ # mysql spring.datasource.validationQuery=SELECT 1 -################ 数据池设置 ################ +################ \u6570\u636E\u6C60\u8BBE\u7F6E ################ spring.datasource.maximum-pool-size=200 spring.datasource.max-active=100 spring.datasource.max-idle=100 @@ -55,147 +56,147 @@ spring.datasource.test-on-borrow=false spring.datasource.test-while-idle=true spring.datasource.time-between-eviction-runs-millis=300000 -##主数据源,读写 +##\u4E3B\u6570\u636E\u6E90\uFF0C\u8BFB\u5199 #impp.write.datasource.type=com.zaxxer.hikari.HikariDataSource impp.write.datasource.driver-class-name=com.mysql.jdbc.Driver impp.write.datasource.jdbc-url=jdbc:mysql://192.168.1.240:3306/impp_i3_core?autoReconnect=true&useSSL=false&characterEncoding=utf-8 impp.write.datasource.username=impp_i3_core_user impp.write.datasource.password=impp_i3_core_pwd -##辅数据源,只读 +##\u8F85\u6570\u636E\u6E90\uFF0C\u53EA\u8BFB #impp.read.datasource.type=com.zaxxer.hikari.HikariDataSource impp.read.datasource.driver-class-name=com.mysql.jdbc.Driver impp.read.datasource.jdbc-url=jdbc:mysql://192.168.1.240:3306/impp_i3_core?autoReconnect=true&useSSL=false&characterEncoding=utf-8 impp.read.datasource.username=impp_i3_core_user impp.read.datasource.password=impp_i3_core_pwd -################ 日志数据源 ################ +################ \u65E5\u5FD7\u6570\u636E\u6E90 ################ spring.data.mongodb.database=mongoDBSource spring.data.mongodb.uri=192.168.1.240:27017 spring.data.mongodb.username=sa spring.data.mongodb.password=i3plus spring.data.mongodb.port=27017 -################ JPA设置设置 ################ +################ JPA\u8BBE\u7F6E\u8BBE\u7F6E ################ # mysql spring.jpa.database=MYSQL spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL5InnoDBDialect -#是否显示sql +#\u662F\u5426\u663E\u793Asql spring.jpa.show-sql=true -#表关系create,create-drop,update,validate +#\u8868\u5173\u7CFBcreate,create-drop,update,validate spring.jpa.properties.hibernate.hbm2ddl.auto=update -##############定时任务持久化############## +##############\u5B9A\u65F6\u4EFB\u52A1\u6301\u4E45\u5316############## impp.schedule.open=true impp.schedule.datasource.driver-class-name=com.mysql.jdbc.Driver impp.schedule.datasource.jdbc-url=jdbc:mysql://192.168.1.240:3306/impp_i3_schedule?autoReconnect=true&useSSL=false&characterEncoding=utf-8 impp.schedule.datasource.username=impp_i3_schedule_user impp.schedule.datasource.password=impp_i3_schedule_pwd impp.schedule.datasource.max-connections=20 -#定时任务在服务启动后多少秒执行 +#\u5B9A\u65F6\u4EFB\u52A1\u5728\u670D\u52A1\u542F\u52A8\u540E\u591A\u5C11\u79D2\u6267\u884C impp.schedule.start.after-second=20 -#是否集群部署 +#\u662F\u5426\u96C6\u7FA4\u90E8\u7F72 impp.schedule.datasource.is-clustered=true -#执行检测(毫秒),若宕机由其他定时器执行 +#\u6267\u884C\u68C0\u6D4B\uFF08\u6BEB\u79D2\uFF09\uFF0C\u82E5\u5B95\u673A\u7531\u5176\u4ED6\u5B9A\u65F6\u5668\u6267\u884C impp.schedule.datasource.cluster-checkin-interval=30000 -#线程数 +#\u7EBF\u7A0B\u6570 impp.schedule.thread-count=10 -#线程优先级(1-10)默认为5 +#\u7EBF\u7A0B\u4F18\u5148\u7EA7\uFF081-10\uFF09\u9ED8\u8BA4\u4E3A5 impp.schedule.thread-priority=5 -################################ 其他功能设置 ################################ +################################ \u5176\u4ED6\u529F\u80FD\u8BBE\u7F6E ################################ #redisIP redis.hostName=192.168.1.240 -#端口号 +#\u7AEF\u53E3\u53F7 redis.port=6379 -#如果有密码 +#\u5982\u679C\u6709\u5BC6\u7801 redis.password= -##其他redis配置需要调整的加在此处 -################## rabbitMQ配置 #################### +##\u5176\u4ED6redis\u914D\u7F6E\u9700\u8981\u8C03\u6574\u7684\u52A0\u5728\u6B64\u5904 +################## rabbitMQ\u914D\u7F6E #################### spring.rabbitmq.vhost=/ spring.rabbitmq.host=192.168.1.240 spring.rabbitmq.port=5672 spring.rabbitmq.username=estsh spring.rabbitmq.password=estsh123 -##其他rabbitMq配置需要调整的加在此处 +##\u5176\u4ED6rabbitMq\u914D\u7F6E\u9700\u8981\u8C03\u6574\u7684\u52A0\u5728\u6B64\u5904 -################ 微服配置 ################ -#是否进行健康检查 +################ \u5FAE\u670D\u914D\u7F6E ################ +#\u662F\u5426\u8FDB\u884C\u5065\u5EB7\u68C0\u67E5 eureka.client.healthcheck.enabled=true -#若无法连接注册中心,是否需要一直检测加入 +#\u82E5\u65E0\u6CD5\u8FDE\u63A5\u6CE8\u518C\u4E2D\u5FC3\uFF0C\u662F\u5426\u9700\u8981\u4E00\u76F4\u68C0\u6D4B\u52A0\u5165 impp.cluster.fetch=true -#集群名 +#\u96C6\u7FA4\u540D eureka.instance.metadata-map.cluster=impp_cluster -#(参数配置)注册中心地址 -》 i3plus-ics,多个用逗号分隔 +#\uFF08\u53C2\u6570\u914D\u7F6E\uFF09\u6CE8\u518C\u4E2D\u5FC3\u5730\u5740 -\u300B i3plus-ics\uFF0C\u591A\u4E2A\u7528\u9017\u53F7\u5206\u9694 eureka.client.service-url.defaultZone=${impp.cluster.regist.center} -#本服务主机ip(若多个网卡,则需要设置本服务ip) +#\u672C\u670D\u52A1\u4E3B\u673Aip\uFF08\u82E5\u591A\u4E2A\u7F51\u5361\uFF0C\u5219\u9700\u8981\u8BBE\u7F6E\u672C\u670D\u52A1ip\uFF09 eureka.instance.ip-address=${impp.server.ip} -#本服务实例ID +#\u672C\u670D\u52A1\u5B9E\u4F8BID eureka.instance.instance-id=${impp.server.ip}:${server.port} -#本服务主机名 +#\u672C\u670D\u52A1\u4E3B\u673A\u540D eureka.instance.hostname=${impp.server.ip} -#本服务状态页面 +#\u672C\u670D\u52A1\u72B6\u6001\u9875\u9762 eureka.instance.status-page-url=http://${impp.server.ip}:${server.port}/swagger-ui.html -#将自己的IP注册到Eureka Server。若不配置或设置为false,表示注册微服务所在操作系统的hostname到Eureka Server +#\u5C06\u81EA\u5DF1\u7684IP\u6CE8\u518C\u5230Eureka Server\u3002\u82E5\u4E0D\u914D\u7F6E\u6216\u8BBE\u7F6E\u4E3Afalse\uFF0C\u8868\u793A\u6CE8\u518C\u5FAE\u670D\u52A1\u6240\u5728\u64CD\u4F5C\u7CFB\u7EDF\u7684hostname\u5230Eureka Server eureka.instance.prefer-ip-address=true -################ 检测机制 ################ -#心跳间隔周期,宕机限制(秒),30秒没反应视为宕机 +################ \u68C0\u6D4B\u673A\u5236 ################ +#\u5FC3\u8DF3\u95F4\u9694\u5468\u671F\uFF0C\u5B95\u673A\u9650\u5236\uFF08\u79D2\uFF09\uFF0C30\u79D2\u6CA1\u53CD\u5E94\u89C6\u4E3A\u5B95\u673A eureka.instance.lease-expiration-duration-in-seconds=30 -#心跳周期 +#\u5FC3\u8DF3\u5468\u671F eureka.instance.lease-renewal-interval-in-seconds=20 -#client连接Eureka服务端后的空闲等待时间,默认为30 秒 +#client\u8FDE\u63A5Eureka\u670D\u52A1\u7AEF\u540E\u7684\u7A7A\u95F2\u7B49\u5F85\u65F6\u95F4\uFF0C\u9ED8\u8BA4\u4E3A30 \u79D2 eureka.client.eureka-connection-idle-timeout-seconds=1 -#最初复制实例信息到eureka服务器所需的时间(s),默认为40秒 +#\u6700\u521D\u590D\u5236\u5B9E\u4F8B\u4FE1\u606F\u5230eureka\u670D\u52A1\u5668\u6240\u9700\u7684\u65F6\u95F4\uFF08s\uFF09\uFF0C\u9ED8\u8BA4\u4E3A40\u79D2 eureka.client.initial-instance-info-replication-interval-seconds=1 -#间隔多长时间再次复制实例信息到eureka服务器,默认为30秒 +#\u95F4\u9694\u591A\u957F\u65F6\u95F4\u518D\u6B21\u590D\u5236\u5B9E\u4F8B\u4FE1\u606F\u5230eureka\u670D\u52A1\u5668\uFF0C\u9ED8\u8BA4\u4E3A30\u79D2 eureka.client.instance-info-replication-interval-seconds=1 -#从eureka服务器注册表中获取注册信息的时间间隔(s),默认为30秒 +#\u4ECEeureka\u670D\u52A1\u5668\u6CE8\u518C\u8868\u4E2D\u83B7\u53D6\u6CE8\u518C\u4FE1\u606F\u7684\u65F6\u95F4\u95F4\u9694\uFF08s\uFF09\uFF0C\u9ED8\u8BA4\u4E3A30\u79D2 eureka.client.registry-fetch-interval-seconds=1 -################ 熔断配置 ################ -#重试 +################ \u7194\u65AD\u914D\u7F6E ################ +#\u91CD\u8BD5 ribbon.maxAutoRetries=2 -#读取数据时长 +#\u8BFB\u53D6\u6570\u636E\u65F6\u957F ribbon.ReadTimeout=30000 -#连接时长 +#\u8FDE\u63A5\u65F6\u957F ribbon.ConnectTimeout=50000 -#响应超过时长,进行熔断(熔断超时需要大于读取时长及连接时长) +#\u54CD\u5E94\u8D85\u8FC7\u65F6\u957F\uFF0C\u8FDB\u884C\u7194\u65AD\uFF08\u7194\u65AD\u8D85\u65F6\u9700\u8981\u5927\u4E8E\u8BFB\u53D6\u65F6\u957F\u53CA\u8FDE\u63A5\u65F6\u957F\uFF09 hystrix.command.default.execution.isolation.thread.timeoutInMilliseconds=60000 -################ 链路追踪 ################ -#使用web方式传输信息 +################ \u94FE\u8DEF\u8FFD\u8E2A ################ +#\u4F7F\u7528web\u65B9\u5F0F\u4F20\u8F93\u4FE1\u606F spring.zipkin.sender.type=web -#链路追踪服务的地址 +#\u94FE\u8DEF\u8FFD\u8E2A\u670D\u52A1\u7684\u5730\u5740 spring.zipkin.base-url=${impp.console.ip} -#追踪深度,百分比,1是全部 +#\u8FFD\u8E2A\u6DF1\u5EA6\uFF0C\u767E\u5206\u6BD4\uFF0C1\u662F\u5168\u90E8 spring.sleuth.sampler.probability=1.0 -################ FastDfs 配置 ################ -#tracker服务器ip +################ FastDfs \u914D\u7F6E ################ +#tracker\u670D\u52A1\u5668ip fastdfs.tracker_servers=tracker:22122 -# tracker的http端口 +# tracker\u7684http\u7AEF\u53E3 fastdfs.http_tracker_http_port=22122 -# 使用自定义工具获取文件展示地址 +# \u4F7F\u7528\u81EA\u5B9A\u4E49\u5DE5\u5177\u83B7\u53D6\u6587\u4EF6\u5C55\u793A\u5730\u5740 fastdfs.http.ui.host=http://tracker:22122 -#密码 +#\u5BC6\u7801 #fastdfs.http.secret_key= -#连接超时 +#\u8FDE\u63A5\u8D85\u65F6 fastdfs.connect_timeout_in_seconds=5 -#传输超时 +#\u4F20\u8F93\u8D85\u65F6 fastdfs.network_timeout_in_seconds=60 fastdfs.charset=UTF-8 -# token 防盗链功能 +# token \u9632\u76D7\u94FE\u529F\u80FD fastdfs.http_anti_steal_token=no -################ 授权配置 ################ +################ \u6388\u6743\u914D\u7F6E ################ slm.api.password=4C9479EBEFA6FA6E232EF25EFA49C4D2 slm.app.id=10000 From 28a50b844c0c519f6028273d9264a7327c608095 Mon Sep 17 00:00:00 2001 From: "wei.peng" <123456> Date: Mon, 15 Jun 2020 14:36:38 +0800 Subject: [PATCH 08/12] =?UTF-8?q?feat(=E5=AF=86=E7=A0=81=E8=A7=84=E5=88=99?= =?UTF-8?q?=E9=AA=8C=E8=AF=81=E5=AE=8C=E6=88=90):=20=E7=94=A8=E6=88=B7?= =?UTF-8?q?=E7=99=BB=E5=BD=95,=E5=AF=86=E7=A0=81=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../api/iservice/busi/ISysUserPasswordService.java | 17 +++++ .../core/api/iservice/busi/ISysUserService.java | 3 + .../controller/base/WhiteController.java | 50 +++++++++++--- .../controller/busi/SysUserController.java | 2 +- .../serviceimpl/base/SystemLoginService.java | 11 ++++ .../serviceimpl/busi/PersonnelServiceService.java | 32 ++++----- .../busi/SysUserSavePasswordService.java | 32 +++++++++ .../serviceimpl/busi/SysUserService.java | 76 ++++++++++++---------- 8 files changed, 164 insertions(+), 59 deletions(-) create mode 100644 modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/ISysUserPasswordService.java create mode 100644 modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysUserSavePasswordService.java diff --git a/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/ISysUserPasswordService.java b/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/ISysUserPasswordService.java new file mode 100644 index 0000000..b3a8f8d --- /dev/null +++ b/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/ISysUserPasswordService.java @@ -0,0 +1,17 @@ +package cn.estsh.i3plus.core.api.iservice.busi; + +import cn.estsh.i3plus.pojo.platform.bean.SysUserPassword; +import cn.estsh.impp.framework.base.service.ICrudService; + +import java.util.List; + +/** + * @Description : + * @Reference : + * @Author : wei.peng + * @CreateDate : 20-6-4 下午3:47 + * @Modify: + **/ +public interface ISysUserPasswordService extends ICrudService { + +} diff --git a/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/ISysUserService.java b/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/ISysUserService.java index 4957aee..fc4655e 100644 --- a/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/ISysUserService.java +++ b/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/ISysUserService.java @@ -41,6 +41,9 @@ public interface ISysUserService { @ApiOperation(value = "修改状态",notes = "修改指定账号状态") void updateSysUserStatus(Long id, int status, SessionUser user); + @ApiOperation(value = "锁定用户",notes = "锁定用户") + void doLockSysUserById(Long id); + /** * 批量修改账号状态 * @param ids 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 5952926..2a7991f 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 @@ -4,6 +4,7 @@ import cn.estsh.i3plus.core.api.iservice.base.ISynchronizedService; 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.core.apiservice.util.SysUserPasswordUtil; import cn.estsh.i3plus.platform.common.exception.ImppExceptionEnum; import cn.estsh.i3plus.platform.common.tool.*; import cn.estsh.i3plus.platform.common.util.CommonConstWords; @@ -13,6 +14,7 @@ import cn.estsh.i3plus.pojo.base.bean.BaseConstWords; import cn.estsh.i3plus.pojo.base.bean.ListPager; import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil; import cn.estsh.i3plus.pojo.base.enumutil.ResourceEnumUtil; +import cn.estsh.i3plus.pojo.model.license.ImppLicense; import cn.estsh.i3plus.pojo.model.platform.UserDetailModel; import cn.estsh.i3plus.pojo.model.platform.UserDetailPagerModel; import cn.estsh.i3plus.pojo.platform.bean.*; @@ -20,6 +22,8 @@ import cn.estsh.impp.framework.base.controller.CoreBaseController; 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.license.ImppLicenseTool; +import cn.estsh.impp.framework.boot.license.serviceimpl.ImppLicenseDecoder; import cn.estsh.impp.framework.boot.util.*; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -85,7 +89,7 @@ public class WhiteController extends CoreBaseController { private ISysConfigService configService; @Autowired - private ISysMenuService sysMenuService; + private SysUserPasswordUtil userPasswordUtil; @Resource(name=CommonConstWords.IMPP_REDIS_RES) private ImppRedis redisRes; @@ -146,6 +150,9 @@ public class WhiteController extends CoreBaseController { LOGGER.info("用户登陆 loginName:{} loginPwd:{} languageCode:{}",loginName,loginPwd,languageCode); ResultBean result = null; + Exception userLoginException = null; + CommonEnumUtil.USER_LOGIN_STATUS userLoginStatus = CommonEnumUtil.USER_LOGIN_STATUS.LOGIN_SUCCESS; + try { ValidatorBean.checkNotNull(loginName,"用户名不能为空"); ValidatorBean.checkNotNull(loginPwd,"密码不能为空"); @@ -176,44 +183,50 @@ public class WhiteController extends CoreBaseController { result.setErrorMsg("密码输入错误。再输入错误"+ num +"次,用户将被锁定。"); } - // 记录登录记录 - recordSysUserLog(null, loginName, CommonEnumUtil.USER_LOGIN_STATUS.WRONG_PASSWORD.getValue(), ipAddr); + userLoginStatus = CommonEnumUtil.USER_LOGIN_STATUS.WRONG_PASSWORD; + userLoginException = e; } catch (CredentialsException e) { // 用户名或密码错误 result = ResultBean.fail(ImppExceptionEnum.LOGIN_EXCEPTION_USER_NAME); // 记录登录记录 - recordSysUserLog(null, loginName,CommonEnumUtil.USER_LOGIN_STATUS.WRONG_USERNAME_OR_PASSWORD.getValue(), ipAddr); + userLoginStatus = CommonEnumUtil.USER_LOGIN_STATUS.WRONG_USERNAME_OR_PASSWORD; + userLoginException = e; } catch (LockedAccountException e) { // 账号已锁定 result = ResultBean.fail(ImppExceptionEnum.LOGIN_EXCEPTION_USER_LOCKING); // 记录登录记录 - recordSysUserLog(null, loginName,CommonEnumUtil.USER_LOGIN_STATUS.USER_LOGIN_LOCKING.getValue(), ipAddr); + userLoginStatus = CommonEnumUtil.USER_LOGIN_STATUS.USER_LOGIN_LOCKING; } catch (UnknownAccountException e) { // 用户信息不存在 result = ResultBean.fail(ImppExceptionEnum.LOGIN_EXCEPTION_USER_INFO_NULL); // 记录登录记录 - recordSysUserLog(null, loginName,CommonEnumUtil.USER_LOGIN_STATUS.USER_INFO_NULL.getValue(), ipAddr); + userLoginStatus = CommonEnumUtil.USER_LOGIN_STATUS.USER_INFO_NULL; } catch (AuthenticationException e) { // 系统异常 result = ResultBean.fail(e.getMessage()).setCode(ImppExceptionEnum.SYSTEM_EXCEPTION.getCode()); result.setErrorMsg(e.getMessage()); // 记录登录记录 - recordSysUserLog(null, loginName,CommonEnumUtil.USER_LOGIN_STATUS.SYSTEM_ERROR.getValue(), ipAddr); + userLoginStatus = CommonEnumUtil.USER_LOGIN_STATUS.SYSTEM_ERROR; } catch (ImppBusiException e) { result = ResultBean.fail(e); // 记录登录记录 - recordSysUserLog(null, loginName,CommonEnumUtil.USER_LOGIN_STATUS.SYSTEM_ERROR.getValue(), ipAddr); + userLoginStatus = CommonEnumUtil.USER_LOGIN_STATUS.SYSTEM_ERROR; + userLoginException = e; } catch (Exception e) { result = ResultBean.fail(e.getMessage()).setCode(ImppExceptionEnum.SYSTEM_EXCEPTION.getCode()) .setErrorMsg(LocaleUtils.getEnumLocaleResDesc(ImppExceptionEnum.SYSTEM_EXCEPTION, ImppExceptionEnum.SYSTEM_EXCEPTION.getDescription())); // 记录登录记录 - recordSysUserLog(null, loginName,CommonEnumUtil.USER_LOGIN_STATUS.SYSTEM_ERROR.getValue(), ipAddr); + userLoginStatus = CommonEnumUtil.USER_LOGIN_STATUS.SYSTEM_ERROR; + }finally { + // 记录登录记录 + recordSysUserLog(null, loginName,userLoginStatus.getValue(), ipAddr); + userPasswordUtil.checkLoginErrorNumber(loginName,result,userLoginException); } LOGGER.info("会员{}登陆登录完成 , 登录耗时:{}",loginName,(System.currentTimeMillis() - startTime)); @@ -559,4 +572,23 @@ public class WhiteController extends CoreBaseController { return ResultBean.fail(e).setCode(ImppExceptionEnum.SYSTEM_EXCEPTION.getCode()); } } + + + @PostMapping(value = "/license") + @ApiOperation(value = "缺失资源开关", notes = "缺失资源开关") + public ResultBean updateLicense(String content){ + try { + ImppLicense license = ImppLicenseDecoder.getLicenseDecoder(content); + if(Objects.nonNull(license)){ + ImppLicenseTool.updateImppLicense(license); + }else{ + return ResultBean.fail("错误的授权信息"); + } + return ResultBean.success("操作成功"); + } catch (ImppBusiException busExcep) { + return ResultBean.fail(busExcep); + } catch (Exception e) { + return ResultBean.fail(e).setCode(ImppExceptionEnum.SYSTEM_EXCEPTION.getCode()); + } + } } diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysUserController.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysUserController.java index cb817cd..1d2819f 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysUserController.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysUserController.java @@ -416,7 +416,7 @@ public class SysUserController extends CoreBaseController{ SysUser user = sysUserService.getSysUserById(Long.parseLong(id)); if(user != null){ Integer num = personnelService.checkSysUserResetPassword(user); - num = CommonConstWords.LOCK_USER_RESET_PASSWORD - num; + num = CommonConstWords.CONFIG_PWD_RESET_PASSWORD_DEFAULT - num; String password = RandomStringUtils.random(6, true, false); diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/base/SystemLoginService.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/base/SystemLoginService.java index 9897e53..9f39965 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/base/SystemLoginService.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/base/SystemLoginService.java @@ -1,6 +1,7 @@ package cn.estsh.i3plus.core.apiservice.serviceimpl.base; import cn.estsh.i3plus.core.api.iservice.base.ISystemLoginService; +import cn.estsh.i3plus.core.apiservice.util.SysUserPasswordUtil; import cn.estsh.i3plus.platform.common.tool.EncryptTool; import cn.estsh.i3plus.platform.common.util.CommonConstWords; import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil; @@ -11,7 +12,9 @@ import cn.estsh.i3plus.pojo.platform.bean.SessionUser; import cn.estsh.i3plus.pojo.platform.bean.SysUser; import cn.estsh.i3plus.pojo.platform.repository.SysUserRepository; import cn.estsh.impp.framework.boot.auth.AuthUtil; +import cn.estsh.impp.framework.boot.util.ImppLdapUtils; import cn.estsh.impp.framework.boot.util.ImppRedis; +import cn.estsh.impp.framework.boot.util.ImppSwitchUtil; import io.swagger.annotations.ApiOperation; import org.apache.commons.lang3.StringUtils; import org.apache.shiro.authc.CredentialsException; @@ -38,6 +41,9 @@ public class SystemLoginService implements ISystemLoginService { @Autowired private SysUserRepository sysUserRDao; + @Autowired + private SysUserPasswordUtil userPasswordUtil; + /** * 核心的缓存 */ @@ -134,6 +140,11 @@ public class SystemLoginService implements ISystemLoginService { LOGGER.error("登录密码加密出错。"); throw new IncorrectCredentialsException("登陆密码错误"); } + + // 登录AD 域检查 + userPasswordUtil.checkActiveDirectory(user); + + // 登录密码校验 if (!StringUtils.equals(user.getUserLoginPassword(), pwd)) { //密码不符 LOGGER.error("密码验证错误。"); throw new IncorrectCredentialsException("登陆密码错误"); diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/PersonnelServiceService.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/PersonnelServiceService.java index 61e4131..5b354d2 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/PersonnelServiceService.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/PersonnelServiceService.java @@ -673,22 +673,22 @@ public class PersonnelServiceService implements IPersonnelService { public Integer checkSysUserResetPassword(SysUser user) { LOGGER.info("平台用户岗位 SysUser user:{}", user); Integer num = 0; - if(user != null){ - String day = DateFormatUtils.ISO_8601_EXTENDED_DATE_FORMAT.format(new Date()); - String redisKey = CommonConstWords.REDIS_PREFIX_USER_RESET_PASSWORD + "-" + day + "-" + user.getId(); - Object redisValue = redisCore.getObject(redisKey); - num = redisValue == null ? 1 : Integer.parseInt(redisValue.toString()) + 1; - - if(num > CommonConstWords.LOCK_USER_RESET_PASSWORD){ - throw ImppExceptionBuilder.newInstance() - .setSystemID(CommonEnumUtil.SOFT_TYPE.CORE.getCode()) - .setErrorCode(ImppExceptionEnum.USER_PERMISSION_RUN_OUT.getCode()) - .setErrorDetail("重置密码次数已使用完毕") - .setErrorSolution("请明日再次使用") - .build(); - } - redisCore.putObject(redisKey,num,CommonConstWords.REDIS_TIME_DAY_ONE); - } +// if(user != null){ +// String day = DateFormatUtils.ISO_8601_EXTENDED_DATE_FORMAT.format(new Date()); +// String redisKey = CommonConstWords.REDIS_PREFIX_USER_RESET_PASSWORD + "-" + day + "-" + user.getId(); +// Object redisValue = redisCore.getObject(redisKey); +// num = redisValue == null ? 1 : Integer.parseInt(redisValue.toString()) + 1; +// +// if(num > CommonConstWords.LOCK_USER_RESET_PASSWORD){ +// throw ImppExceptionBuilder.newInstance() +// .setSystemID(CommonEnumUtil.SOFT_TYPE.CORE.getCode()) +// .setErrorCode(ImppExceptionEnum.USER_PERMISSION_RUN_OUT.getCode()) +// .setErrorDetail("重置密码次数已使用完毕") +// .setErrorSolution("请明日再次使用") +// .build(); +// } +// redisCore.putObject(redisKey,num,CommonConstWords.REDIS_TIME_DAY_ONE); +// } return num; } diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysUserSavePasswordService.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysUserSavePasswordService.java new file mode 100644 index 0000000..fc5f6fc --- /dev/null +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysUserSavePasswordService.java @@ -0,0 +1,32 @@ +package cn.estsh.i3plus.core.apiservice.serviceimpl.busi; + +import cn.estsh.i3plus.core.api.iservice.busi.ISysUserPasswordService; +import cn.estsh.i3plus.pojo.base.jpa.dao.BaseRepository; +import cn.estsh.i3plus.pojo.platform.bean.SysUserPassword; +import cn.estsh.i3plus.pojo.platform.repository.SysUserPasswordRepository; +import cn.estsh.impp.framework.base.service.CrudService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Primary; +import org.springframework.stereotype.Service; + +/** + * @Description : + * @Reference : + * @Author : wei.peng + * @CreateDate : 20-6-4 下午3:49 + * @Modify: + **/ +@Primary +@Service +public class SysUserSavePasswordService extends CrudService implements ISysUserPasswordService { + + @Autowired + private SysUserPasswordRepository userPasswordRDao; + + + @Override + public BaseRepository getRepository() { + return userPasswordRDao; + } + +} diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysUserService.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysUserService.java index 55258d8..d03048c 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysUserService.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysUserService.java @@ -57,7 +57,7 @@ public class SysUserService implements ISysUserService { public static final Logger LOGGER = LoggerFactory.getLogger(SysUserService.class); @Autowired - private SysUserRepository sysUserRDao; + private SysUserRepository userRDao; @Autowired private SysUserInfoRepository sysUserInfoRDao; @@ -173,10 +173,19 @@ public class SysUserService implements ISysUserService { @ApiOperation(value = "修改账号", notes = "修改账号状态") public void updateSysUserStatus(Long id, int status, SessionUser user) { LOGGER.debug("平台用户 SYS_USER id:{} status:{} modifyUser:{}", id, status, user.getUserName()); - SysUser sysUser = sysUserRDao.getById(id); + SysUser sysUser = userRDao.getById(id); sysUser.setUserStatus(status); sysUser.setModifyUser(user.getUserName()); - sysUserRDao.update(sysUser); + userRDao.update(sysUser); + } + + @Override + public void doLockSysUserById(Long id) { + SysUser user = userRDao.getById(id); + if(Objects.nonNull(user)){ + user.setUserStatus(CommonEnumUtil.USER_STATUS.LOCKING.getValue()); + userRDao.save(user); + } } @Override @@ -185,14 +194,14 @@ public class SysUserService implements ISysUserService { LOGGER.debug("平台用户 SYS_USER DELETE By ids :{} status:{}, SessionUser :{}", ids,status,user); String where = CoreHqlPack.packHqlIds("id", ids); - List list = sysUserRDao.findByHqlWhere(where); + List list = userRDao.findByHqlWhere(where); if(null != list && list.size() > 0){ for (SysUser sysUser : list) { sysUser.setUserStatus(status); sysUser.setIsValid(CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue()); ConvertBean.modelUpdate(sysUser,user); } - sysUserRDao.saveAll(list); + userRDao.saveAll(list); } } @@ -200,19 +209,19 @@ public class SysUserService implements ISysUserService { @ApiOperation(value = "修改账号", notes = "修改账号信息") public void updateSysUser(SysUser sysUser) throws Exception{ LOGGER.debug("平台用户 SYS_USER SysUser :{}", sysUser); - sysUserRDao.save(sysUser); + userRDao.save(sysUser); } @Override @ApiOperation(value = "修改账号", notes = "修改账号登录密码") public void updateSysUserPassword(Long userId, String password, String newPwd) throws Exception { LOGGER.debug("平台用户 SYS_USER Override:{} password:{} newPwd:{}", userId,password,newPwd); - SysUser user = sysUserRDao.getById(userId); + SysUser user = userRDao.getById(userId); if(user != null){ String pwdMd5 = EncryptTool.hexMD5(password); if(pwdMd5.equals(user.getUserLoginPassword())){ user.setUserLoginPassword(EncryptTool.hexMD5(newPwd)); - sysUserRDao.save(user); + userRDao.save(user); }else { throw ImppExceptionBuilder.newInstance() .setSystemID(CommonEnumUtil.SOFT_TYPE.CORE.getCode()) @@ -234,10 +243,10 @@ public class SysUserService implements ISysUserService { @Override @ApiOperation(value = "刷新账号", notes = "刷新账号登录信息") public void refreshUserLoginInformation(Long userId) { - SysUser user = sysUserRDao.getById(userId); + SysUser user = userRDao.getById(userId); user.setUserLoginLastDateTime(TimeTool.getNowTime(true)); user.setUserLoginNum(user.getUserLoginNum() + 1); - sysUserRDao.save(user); + userRDao.save(user); SysUserInfo userInfo = sysUserInfoRDao.getById(user.getUserInfoId()); userInfo.setUserLoginLastDateTime(TimeTool.getNowTime(true)); @@ -255,7 +264,7 @@ public class SysUserService implements ISysUserService { // 密码加密 输入的密码不等于密码一致时修改密码 String md5 = EncryptTool.hexMD5(sysUser.getUserLoginPassword()); sysUser.setUserLoginPassword(md5); - return sysUserRDao.insert(sysUser); + return userRDao.insert(sysUser); } else { throw ImppExceptionBuilder.newInstance() .setSystemID(CommonEnumUtil.SOFT_TYPE.CORE.getCode()) @@ -312,7 +321,7 @@ public class SysUserService implements ISysUserService { // 角色名称冗余 // sysUser.setRoleNameRdd(String.join(",", roleNameList)); - sysUserRDao.save(sysUser); + userRDao.save(sysUser); } } @@ -320,9 +329,9 @@ public class SysUserService implements ISysUserService { @ApiOperation(value = "删除账号", notes = "删除账号信息,逻辑删除,账号关系业务物理删除") public void deleteSysUserById(Long id) { LOGGER.debug("平台用户 SYS_USER DELETE By id :{}", id); - SysUser user = sysUserRDao.getById(id); + SysUser user = userRDao.getById(id); user.setIsValid(CommonEnumUtil.IS_VAILD.INVAILD.getValue()); - sysUserRDao.save(user); + userRDao.save(user); // 删除用户关系(物理删除) refUserRoleRDao.deleteByProperty("userId", id); // 删除用户角色关系 @@ -338,13 +347,13 @@ public class SysUserService implements ISysUserService { // 标记用户已删除 String where = CoreHqlPack.packHqlIds("id", ids); - List list = sysUserRDao.findByHqlWhere(where); + List list = userRDao.findByHqlWhere(where); if(null != list && list.size() > 0){ for (SysUser sysUser : list) { sysUser.setIsValid(CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue()); } - sysUserRDao.saveAll(list); + userRDao.saveAll(list); refUserRoleRDao.deleteByPropertyIn("userId",ids); } } @@ -353,7 +362,7 @@ public class SysUserService implements ISysUserService { @ApiOperation(value = "账号查询", notes = "查询所有账号信息") public List list() { LOGGER.debug("平台用户 SYS_USER find All"); - return sysUserRDao.findByProperty( + return userRDao.findByProperty( new String[]{"isDeleted","isValid","organizeCode"}, new Object[]{ CommonEnumUtil.IS_DEAL.NO.getValue(), @@ -434,22 +443,22 @@ public class SysUserService implements ISysUserService { //生成hql查询语句 String hqlPack = CoreHqlPack.packHqlSysUser(user); - pager = PagerHelper.getPager(pager, sysUserRDao.findByHqlWhereCount(hqlPack)); - return new ListPager(sysUserRDao.findByHqlWherePage(hqlPack + user.orderBy(), pager), pager); + pager = PagerHelper.getPager(pager, userRDao.findByHqlWhereCount(hqlPack)); + return new ListPager(userRDao.findByHqlWherePage(hqlPack + user.orderBy(), pager), pager); } @Override public ListPager querySysUserByPager(SysUser user, List idList, Pager pager) { DdlPackBean packBean = CoreHqlPack.packDdlBeanSysUser(user, idList); - pager = PagerHelper.getPager(pager, sysUserRDao.findByHqlWhereCount(packBean)); - return new ListPager(sysUserRDao.findByHqlWherePage(packBean, pager), pager); + pager = PagerHelper.getPager(pager, userRDao.findByHqlWhereCount(packBean)); + return new ListPager(userRDao.findByHqlWherePage(packBean, pager), pager); } @Override @ApiOperation(value = "账号查询", notes = "根据ID 查询账号信息") public SysUser getSysUserById(Long id) { LOGGER.debug("平台用户 SYS_USER get By id :{}", id); - return sysUserRDao.getById(id); + return userRDao.getById(id); } @Override @@ -463,21 +472,21 @@ public class SysUserService implements ISysUserService { public SysUser getSysUserByLoginName(String loginName) { LOGGER.debug("平台用户 SYS_USER find By Login Name :{}", loginName); - return sysUserRDao.getByProperty(new String[]{"userLoginName", "isValid"}, + return userRDao.getByProperty(new String[]{"userLoginName", "isValid"}, new Object[]{loginName, CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue()}); } @Override @ApiOperation(value = "账号查询", notes = "根据邮箱查询用户信息") public SysUser getSysUserByEmail(String email) { - return sysUserRDao.getByProperty(new String[]{"userEmail", "isValid"}, + return userRDao.getByProperty(new String[]{"userEmail", "isValid"}, new Object[]{email, CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue()}); } @Override @ApiOperation(value = "账号查询", notes = "根据手机号查询用户信息") public SysUser getSysUserByPhone(String phone) { - return sysUserRDao.getByProperty(new String[]{"userPhone", "isValid"}, + return userRDao.getByProperty(new String[]{"userPhone", "isValid"}, new Object[]{phone, CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue()}); } @@ -495,10 +504,10 @@ public class SysUserService implements ISysUserService { StringBuffer sw = new StringBuffer(); HqlPack.getStringEqualPack(userLoginName,"userLoginName",sw); HqlPack.getNumNOEqualPack(id,"id",sw); - count = sysUserRDao.findByHqlWhereCount(sw.toString()); + count = userRDao.findByHqlWhereCount(sw.toString()); }else{ - count = sysUserRDao.findByPropertyCount("userLoginName",userLoginName); + count = userRDao.findByPropertyCount("userLoginName",userLoginName); } return count <= 0 ; } @@ -511,10 +520,10 @@ public class SysUserService implements ISysUserService { StringBuffer sw = new StringBuffer(); HqlPack.getStringEqualPack(email,"userEmail",sw); HqlPack.getNumNOEqualPack(id,"id",sw); - count = sysUserRDao.findByHqlWhereCount(sw.toString()); + count = userRDao.findByHqlWhereCount(sw.toString()); }else{ - count = sysUserRDao.findByPropertyCount("userEmail",email); + count = userRDao.findByPropertyCount("userEmail",email); } return count <= 0 ; } @@ -527,10 +536,10 @@ public class SysUserService implements ISysUserService { StringBuffer sw = new StringBuffer(); HqlPack.getStringEqualPack(phone,"userPhone",sw); HqlPack.getNumNOEqualPack(id,"id",sw); - count = sysUserRDao.findByHqlWhereCount(sw.toString()); + count = userRDao.findByHqlWhereCount(sw.toString()); }else{ - count = sysUserRDao.findByPropertyCount("userPhone",phone); + count = userRDao.findByPropertyCount("userPhone",phone); } return count <= 0 ; } @@ -574,7 +583,7 @@ public class SysUserService implements ISysUserService { @Override @ApiOperation(value = "查询账户数量") public long getSysUserCount() { - return sysUserRDao.listCount(); + return userRDao.listCount(); } /** @@ -669,7 +678,7 @@ public class SysUserService implements ISysUserService { public List findSysUserByIds(Long[] ids) { DdlPackBean ddlPackBean = new DdlPackBean(); DdlPreparedPack.getInPackArray(ids, "id", ddlPackBean); - return sysUserRDao.findByHqlWhere(ddlPackBean); + return userRDao.findByHqlWhere(ddlPackBean); } /** @@ -762,6 +771,7 @@ public class SysUserService implements ISysUserService { if(CollectionUtils.isNotEmpty(menuList)){ for (SysMenu menu : menuList) { if(CommonConstWords.SYSTEM_MENU_ROOT_ID.equals(menu.getParentId())){ + menu.getChildList().clear(); list.add(menu); } } From e6b10832b0501bb750ce5075277e2eadb621cea7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=B1=AA=E4=BA=91=E6=98=8A?= Date: Mon, 15 Jun 2020 17:06:51 +0800 Subject: [PATCH 09/12] =?UTF-8?q?MDM=20=E7=B3=BB=E7=BB=9F=E7=BB=93?= =?UTF-8?q?=E6=9E=84=E4=BC=98=E5=8C=96=20=E5=8D=95=E5=85=83=E6=B5=8B?= =?UTF-8?q?=E8=AF=95=E5=BC=80=E5=85=B3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../configuration/AppStartSystemInit.java | 9 +- .../ScanMongoPackageConfiguration.java | 68 ++++----- .../configuration/ScanPackageConfiguration.java | 70 ++++----- .../controller/base/WhiteController.java | 3 + .../controller/busi/ImppLogController.java | 99 +++++++----- .../controller/busi/SysPojoVersionController.java | 25 +++ .../mq/BaseMdmDataSyncQueueReceiver.java | 169 --------------------- .../apiservice/mq/MdmDataSyncQueueReceiver.java | 7 +- .../apiservice/mq/MessageLetterQueueReceiver.java | 7 +- .../apiservice/mq/MessageMailQueueReceiver.java | 7 +- .../mq/MessageSWebNoticeQueueReceiver.java | 6 +- .../apiservice/mq/MessageTestQueueReceiver.java | 43 ------ .../apiservice/mq/PojoVersionQueueReceiver.java | 4 +- .../core/apiservice/mq/ScheduleQueueReceiver.java | 6 +- .../core/apiservice/mq/SysLocalResourceQueue.java | 6 +- .../base/BaseBusiSyncMdmDataService.java | 139 ----------------- .../serviceimpl/base/SystemInitService.java | 8 +- .../serviceimpl/busi/SysToolService.java | 27 +--- .../serviceimpl/mdm/SysToolSyncDataService.java | 13 +- .../i3plus/core/apiservice/util/NoSqlPack.java | 1 + 20 files changed, 215 insertions(+), 502 deletions(-) delete mode 100644 modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/mq/BaseMdmDataSyncQueueReceiver.java delete mode 100644 modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/mq/MessageTestQueueReceiver.java delete mode 100644 modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/base/BaseBusiSyncMdmDataService.java diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/configuration/AppStartSystemInit.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/configuration/AppStartSystemInit.java index bf77af3..a69a046 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/configuration/AppStartSystemInit.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/configuration/AppStartSystemInit.java @@ -2,6 +2,7 @@ package cn.estsh.i3plus.core.apiservice.configuration; import cn.estsh.i3plus.core.api.iservice.base.ISystemInitService; import cn.estsh.i3plus.platform.common.util.CommonConstWords; +import cn.estsh.impp.framework.boot.util.ImppSwitchUtil; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; @@ -20,16 +21,20 @@ public class AppStartSystemInit implements CommandLineRunner { public static final Logger LOGGER = LoggerFactory.getLogger(CommonConstWords.SYSTEM_LOG); - @Autowired + @Autowired(required = false) private ISystemInitService systemInitService; @Override public void run(String... args) throws Exception { try { + if(ImppSwitchUtil.isUnitTestEnv()) { + LOGGER.info("【单元测试环境 跳过初始化...】"); + return; + } LOGGER.info("【IMPP-Core开始加载基础信息...】"); - systemInitService.putAndLoadAll(); + systemInitService.putAndLoadAll(); }catch (Exception e){ e.printStackTrace(); } diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/configuration/ScanMongoPackageConfiguration.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/configuration/ScanMongoPackageConfiguration.java index c544b0d..3d3fa9c 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/configuration/ScanMongoPackageConfiguration.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/configuration/ScanMongoPackageConfiguration.java @@ -1,34 +1,34 @@ -package cn.estsh.i3plus.core.apiservice.configuration; - -import cn.estsh.i3plus.platform.common.util.CommonConstWords; -import cn.estsh.i3plus.pojo.base.jpa.factory.BaseMongoRepositoryFactoryBean; -import cn.estsh.i3plus.pojo.base.jpa.factory.BaseRepositoryFactoryBean; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.boot.autoconfigure.condition.ConditionalOnExpression; -import org.springframework.boot.autoconfigure.domain.EntityScan; -import org.springframework.context.annotation.Configuration; -import org.springframework.data.jpa.repository.config.EnableJpaRepositories; -import org.springframework.data.mongodb.repository.config.EnableMongoRepositories; - -/** - * @Description : 需要扫描其他包的配置文件 - * 此类专门添加需要单独加载的其他模块的包 - * @Reference : - * @Author : alwaysfrin - * @CreateDate : 2018-12-12 20:49 - * @Modify: - **/ -@Configuration -@ConditionalOnExpression("'${" + CommonConstWords.PROP_SWITCH_MONGO + ":false}' == 'true'") -//扫描需要单独处理的持久化包 -@EnableMongoRepositories(basePackages = { - "cn.estsh.i3plus.**.platrepositorymongo" -},repositoryFactoryBeanClass = BaseMongoRepositoryFactoryBean.class) -public class ScanMongoPackageConfiguration { - public static final Logger LOGGER = LoggerFactory.getLogger(CommonConstWords.SYSTEM_LOG); - - public ScanMongoPackageConfiguration(){ - LOGGER.info("【扫描关联包...】"); - } -} +//package cn.estsh.i3plus.core.apiservice.configuration; +// +//import cn.estsh.i3plus.platform.common.util.CommonConstWords; +//import cn.estsh.i3plus.pojo.base.jpa.factory.BaseMongoRepositoryFactoryBean; +//import cn.estsh.i3plus.pojo.base.jpa.factory.BaseRepositoryFactoryBean; +//import org.slf4j.Logger; +//import org.slf4j.LoggerFactory; +//import org.springframework.boot.autoconfigure.condition.ConditionalOnExpression; +//import org.springframework.boot.autoconfigure.domain.EntityScan; +//import org.springframework.context.annotation.Configuration; +//import org.springframework.data.jpa.repository.config.EnableJpaRepositories; +//import org.springframework.data.mongodb.repository.config.EnableMongoRepositories; +// +///** +// * @Description : 需要扫描其他包的配置文件 +// * 此类专门添加需要单独加载的其他模块的包 +// * @Reference : +// * @Author : alwaysfrin +// * @CreateDate : 2018-12-12 20:49 +// * @Modify: +// **/ +//@Configuration +//@ConditionalOnExpression("'${" + CommonConstWords.PROP_SWITCH_MONGO + ":false}' == 'true'") +////扫描需要单独处理的持久化包 +//@EnableMongoRepositories(basePackages = { +// "cn.estsh.i3plus.**.platrepositorymongo" +//},repositoryFactoryBeanClass = BaseMongoRepositoryFactoryBean.class) +//public class ScanMongoPackageConfiguration { +// public static final Logger LOGGER = LoggerFactory.getLogger(CommonConstWords.SYSTEM_LOG); +// +// public ScanMongoPackageConfiguration(){ +// LOGGER.info("【扫描关联包...】"); +// } +//} diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/configuration/ScanPackageConfiguration.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/configuration/ScanPackageConfiguration.java index 0c4371d..40f7947 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/configuration/ScanPackageConfiguration.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/configuration/ScanPackageConfiguration.java @@ -1,35 +1,35 @@ -package cn.estsh.i3plus.core.apiservice.configuration; - -import cn.estsh.i3plus.platform.common.util.CommonConstWords; -import cn.estsh.i3plus.pojo.base.jpa.factory.BaseRepositoryFactoryBean; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.boot.autoconfigure.domain.EntityScan; -import org.springframework.context.annotation.Configuration; -import org.springframework.data.jpa.repository.config.EnableJpaRepositories; - -/** - * @Description : 需要扫描其他包的配置文件 - * 此类专门添加需要单独加载的其他模块的包 - * @Reference : - * @Author : alwaysfrin - * @CreateDate : 2018-12-12 20:49 - * @Modify: - **/ -@Configuration -//扫描需要单独处理的包 -@EntityScan(basePackages = { - "cn.estsh.i3plus.**.platbean" -}) - -//需要单独处理的其他模块包 -@EnableJpaRepositories(basePackages = { - "cn.estsh.i3plus.**.platrepository" -}, repositoryFactoryBeanClass = BaseRepositoryFactoryBean.class) -public class ScanPackageConfiguration { - public static final Logger LOGGER = LoggerFactory.getLogger(CommonConstWords.SYSTEM_LOG); - - public ScanPackageConfiguration(){ - LOGGER.info("【扫描关联包...】"); - } -} +//package cn.estsh.i3plus.core.apiservice.configuration; +// +//import cn.estsh.i3plus.platform.common.util.CommonConstWords; +//import cn.estsh.i3plus.pojo.base.jpa.factory.BaseRepositoryFactoryBean; +//import org.slf4j.Logger; +//import org.slf4j.LoggerFactory; +//import org.springframework.boot.autoconfigure.domain.EntityScan; +//import org.springframework.context.annotation.Configuration; +//import org.springframework.data.jpa.repository.config.EnableJpaRepositories; +// +///** +// * @Description : 需要扫描其他包的配置文件 +// * 此类专门添加需要单独加载的其他模块的包 +// * @Reference : +// * @Author : alwaysfrin +// * @CreateDate : 2018-12-12 20:49 +// * @Modify: +// **/ +//@Configuration +////扫描需要单独处理的包 +//@EntityScan(basePackages = { +// "cn.estsh.i3plus.**.platbean" +//}) +// +////需要单独处理的其他模块包 +//@EnableJpaRepositories(basePackages = { +// "cn.estsh.i3plus.**.platrepository" +//}, repositoryFactoryBeanClass = BaseRepositoryFactoryBean.class) +//public class ScanPackageConfiguration { +// public static final Logger LOGGER = LoggerFactory.getLogger(CommonConstWords.SYSTEM_LOG); +// +// public ScanPackageConfiguration(){ +// LOGGER.info("【扫描关联包...】"); +// } +//} 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 5952926..b757266 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 @@ -4,6 +4,7 @@ import cn.estsh.i3plus.core.api.iservice.base.ISynchronizedService; 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.convert.ConvertBean; import cn.estsh.i3plus.platform.common.exception.ImppExceptionEnum; import cn.estsh.i3plus.platform.common.tool.*; import cn.estsh.i3plus.platform.common.util.CommonConstWords; @@ -352,6 +353,8 @@ public class WhiteController extends CoreBaseController { sysFile.setFileTypeId(dictionary.getId()); sysFile.setFileTypeName(dictionary.getName()); + ConvertBean.serviceModelInitialize(sysFile,"白名单"); + sysFile = sysFileService.insertSysFile(sysFile); return ResultBean.success("操作成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()).setResultObject(sysFile); }catch(ImppBusiException busExcep){ diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/ImppLogController.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/ImppLogController.java index d6e72f9..6e44358 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/ImppLogController.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/ImppLogController.java @@ -6,6 +6,7 @@ import cn.estsh.i3plus.platform.common.util.CommonConstWords; import cn.estsh.i3plus.platform.common.util.PlatformConstWords; import cn.estsh.i3plus.pojo.base.bean.ListPager; import cn.estsh.i3plus.pojo.base.common.Pager; +import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil; import cn.estsh.i3plus.pojo.base.enumutil.ResourceEnumUtil; import cn.estsh.i3plus.pojo.platform.platbean.*; import cn.estsh.impp.framework.base.controller.CoreBaseController; @@ -21,6 +22,7 @@ import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; +import java.util.ArrayList; import java.util.Calendar; import java.util.Date; import java.util.List; @@ -42,110 +44,116 @@ public class ImppLogController extends CoreBaseController { /** * 系统日志分页复杂查询 + * * @param logSystem 查询条件 - * @param pager 分页数据 + * @param pager 分页数据 * @return 处理结果 */ @GetMapping("/system/query") - @ApiOperation(value = "系统日志分页复杂查询",notes = "系统日志分页复杂查询") - public ResultBean querySysLogSystemByPager(SysLogSystem logSystem, Pager pager){ + @ApiOperation(value = "系统日志分页复杂查询", notes = "系统日志分页复杂查询") + public ResultBean querySysLogSystemByPager(SysLogSystem logSystem, Pager pager) { try { ListPager logSystemList = logService.queryLogSystemPager(logSystem, pager); return ResultBean.success("操作成功").setListPager(logSystemList).setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()); - }catch(ImppBusiException busExcep){ + } catch (ImppBusiException busExcep) { return ResultBean.fail(busExcep); - }catch(Exception e){ + } catch (Exception e) { return ImppExceptionBuilder.newInstance().buildExceptionResult(e); } } /** * 定时任务日志分页复杂查询 + * * @param sysLogTaskTime 查询日志 - * @param pager 分页数据 + * @param pager 分页数据 * @return 处理结果 */ @GetMapping("/task-time/query") - @ApiOperation(value = "定时任务日志分页复杂查询",notes = "定时任务日志分页复杂查询") - public ResultBean querySysLogSystemByPager(SysLogTaskTime sysLogTaskTime, Pager pager){ + @ApiOperation(value = "定时任务日志分页复杂查询", notes = "定时任务日志分页复杂查询") + public ResultBean querySysLogSystemByPager(SysLogTaskTime sysLogTaskTime, Pager pager) { try { ListPager logSystemList = logService.queryLogTaskTimePager(sysLogTaskTime, pager); return ResultBean.success("操作成功").setListPager(logSystemList).setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()); - }catch(ImppBusiException busExcep){ + } catch (ImppBusiException busExcep) { return ResultBean.fail(busExcep); - }catch(Exception e){ + } catch (Exception e) { return ImppExceptionBuilder.newInstance().buildExceptionResult(e); } } /** * 操作日志复杂查询,分页,排序 + * * @param logOperate 操作日志 - * @param pager 分页数据 + * @param pager 分页数据 * @return 处理结果 */ @GetMapping(value = "/operate/query") - @ApiOperation(value = "操作日志复杂查询,分页,排序",notes = "操作日志复杂查询,分页,排序") - public ResultBean querySysLogOperateByPager(SysLogOperate logOperate, Pager pager){ + @ApiOperation(value = "操作日志复杂查询,分页,排序", notes = "操作日志复杂查询,分页,排序") + public ResultBean querySysLogOperateByPager(SysLogOperate logOperate, Pager pager) { try { ListPager logSystemList = logService.queryLogOperatePager(logOperate, pager); return ResultBean.success("操作成功").setListPager(logSystemList).setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()); - }catch(ImppBusiException busExcep){ + } catch (ImppBusiException busExcep) { return ResultBean.fail(busExcep); - }catch(Exception e){ + } catch (Exception e) { return ImppExceptionBuilder.newInstance().buildExceptionResult(e); } } /** * 异常日志复杂查询,分页,排序 + * * @param sysLogException 查询条件 - * @param pager 分页信息 + * @param pager 分页信息 * @return 处理结果 */ @GetMapping(value = "/exception/query") - @ApiOperation(value = "异常日志复杂查询,分页,排序",notes = "异常日志复杂查询,分页,排序") - public ResultBean querySysLogExceptionByPager(SysLogException sysLogException, Pager pager){ + @ApiOperation(value = "异常日志复杂查询,分页,排序", notes = "异常日志复杂查询,分页,排序") + public ResultBean querySysLogExceptionByPager(SysLogException sysLogException, Pager pager) { try { ListPager logExceptionList = logService.queryLogExceptionPager(sysLogException, pager); return ResultBean.success("查询成功").setListPager(logExceptionList).setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()); - }catch(ImppBusiException busExcep){ + } catch (ImppBusiException busExcep) { return ResultBean.fail(busExcep); - }catch(Exception e){ + } catch (Exception e) { return ImppExceptionBuilder.newInstance().buildExceptionResult(e); } } /** * 异常日志复杂查询,分页,排序 - * @param bean 查询条件 + * + * @param bean 查询条件 * @param pager 分页信息 * @return 处理结果 */ @GetMapping(value = "/console/query") - @ApiOperation(value = "异常日志复杂查询,分页,排序",notes = "异常日志复杂查询,分页,排序") - public ResultBean querySysLogConsoleByPager(SysLogConsole bean, Pager pager){ + @ApiOperation(value = "异常日志复杂查询,分页,排序", notes = "异常日志复杂查询,分页,排序") + public ResultBean querySysLogConsoleByPager(SysLogConsole bean, Pager pager) { try { ListPager logExceptionList = logService.queryLogConsolePager(bean, pager); return ResultBean.success("查询成功").setListPager(logExceptionList).setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()); - }catch(ImppBusiException busExcep){ + } catch (ImppBusiException busExcep) { return ResultBean.fail(busExcep); - }catch(Exception e){ + } catch (Exception e) { return ImppExceptionBuilder.newInstance().buildExceptionResult(e); } } /** * 定时任务控制台日志,分页,排序 + * * @param bean 查询条件 * @return 处理结果 */ @GetMapping(value = "/console/query-schedule") - @ApiOperation(value = "定时任务控制台日志,分页,排序",notes = "定时任务控制台日志") - public ResultBean querySchdeuleLogConsoleByPager(SysLogConsole bean){ + @ApiOperation(value = "定时任务控制台日志,分页,排序", notes = "定时任务控制台日志") + public ResultBean querySchdeuleLogConsoleByPager(SysLogConsole bean) { try { ValidatorBean.beginValid(bean) - .notNull("logGroup",bean.getLogGroup()); + .notNull("logGroup", bean.getLogGroup()); // 参数 // 1. group = CommonConstWords.SCHEDULE_LOG:Gourp.Name // 2. @@ -162,11 +170,34 @@ public class ImppLogController extends CoreBaseController { if (StringUtils.isBlank(bean.getCreateDateTimeEnd())) { bean.setCreateDateTimeEnd(TimeTool.getNowTime(true)); } - List logExceptionList = logService.findLogConsoleList(bean); - return ResultBean.success("查询成功").setResultList(logExceptionList).setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()); - }catch(ImppBusiException busExcep){ + // 一次100条 + bean.setOrderByParam("createDatetime"); + bean.setAscOrDesc(CommonEnumUtil.ASC_OR_DESC.ASC.getValue()); + + List logScheduleList = new ArrayList(); + + Pager pager = new Pager(); + pager.setPageSize(100); + pager.setCurrentPage(1); + + ListPager listPager; + do { + if (pager.getTotalRows() != 0) { + pager.next(); + } + listPager = logService.queryLogConsolePager(bean, pager); + if(listPager!= null && listPager.getObjectList()!= null) { + logScheduleList.addAll(listPager.getObjectList()); + pager = listPager.getObjectPager(); + }else if(pager.hasNext()) { + pager.setCurrentPage(pager.getTotalPages()); + } + } while (pager.hasNext()); + + return ResultBean.success("查询成功").setResultList(logScheduleList).setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()); + } catch (ImppBusiException busExcep) { return ResultBean.fail(busExcep); - }catch(Exception e){ + } catch (Exception e) { return ImppExceptionBuilder.newInstance().buildExceptionResult(e); } } @@ -174,12 +205,12 @@ public class ImppLogController extends CoreBaseController { @GetMapping(value = "/clean-log") @ApiOperation(value = "添加操作日志", notes = "添加操作日志,可用于国际化") public ResultBean logClean(String time) { - try{ + try { Date thisTime = TimeTool.parseDate(time); String startTime = TimeTool.getToday(TimeTool.getDateBefore(thisTime, 0)) + " 00:00:00"; String endTime = TimeTool.getToday(TimeTool.getDateBefore(thisTime, 0)) + " 23:59:59"; - logService.actionCleanLog(startTime,endTime); + logService.actionCleanLog(startTime, endTime); return ResultBean.success("操作成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()); } catch (ImppBusiException busExcep) { return ResultBean.fail(busExcep).build(); diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysPojoVersionController.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysPojoVersionController.java index 1f82e03..63e70ad 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysPojoVersionController.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysPojoVersionController.java @@ -2,11 +2,20 @@ package cn.estsh.i3plus.core.apiservice.controller.busi; import cn.estsh.i3plus.core.api.iservice.busi.ISysPojoVersionService; import cn.estsh.i3plus.platform.common.util.CommonConstWords; +import cn.estsh.i3plus.pojo.base.bean.BaseResultBean; +import cn.estsh.i3plus.pojo.base.enumutil.ResourceEnumUtil; +import cn.estsh.i3plus.pojo.model.common.CloudPagerModel; import cn.estsh.i3plus.pojo.platform.bean.SysPojoVersion; import cn.estsh.impp.framework.base.controller.CrudBaseController; import cn.estsh.impp.framework.base.service.ICrudService; +import cn.estsh.impp.framework.boot.exception.ImppBusiException; +import cn.estsh.impp.framework.boot.exception.ImppExceptionBuilder; +import cn.estsh.impp.framework.boot.util.ResultBean; import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @@ -28,4 +37,20 @@ public class SysPojoVersionController extends CrudBaseController public ICrudService getCrudService() { return pojoVersionService; } + + @PostMapping("/cloud-query") + @ApiOperation(value = "查询数据", notes = "复杂查询,分页,排序") + BaseResultBean queryPojoVersionByPagerCloud(@RequestBody CloudPagerModel model){ + try { + SysPojoVersion bean = packQueryPager(model.getObj()); + + return ResultBean.success("操作成功") + .setListPager(getCrudService().findPager(bean, model.getPager())) + .setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()); + } 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/mq/BaseMdmDataSyncQueueReceiver.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/mq/BaseMdmDataSyncQueueReceiver.java deleted file mode 100644 index 5be2dad..0000000 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/mq/BaseMdmDataSyncQueueReceiver.java +++ /dev/null @@ -1,169 +0,0 @@ -package cn.estsh.i3plus.core.apiservice.mq; - -import cn.estsh.i3plus.core.apiservice.serviceimpl.base.BaseBusiSyncMdmDataService; -import cn.estsh.i3plus.platform.common.exception.ImppExceptionEnum; -import cn.estsh.i3plus.platform.common.tool.JsonUtilTool; -import cn.estsh.i3plus.platform.common.tool.TimeTool; -import cn.estsh.i3plus.platform.common.util.CommonConstWords; -import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil; -import cn.estsh.i3plus.pojo.base.enumutil.MdmEnumUtil; -import cn.estsh.i3plus.pojo.mdm.bean.base.MdmSyncData; -import cn.estsh.impp.framework.boot.exception.ImppExceptionBuilder; -import cn.estsh.impp.framework.boot.util.ImppRedis; -import cn.estsh.impp.framework.boot.util.SpringContextsUtil; -import com.rabbitmq.client.Channel; -import org.apache.commons.lang3.exception.ExceptionUtils; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.amqp.core.Message; -import org.springframework.amqp.rabbit.core.RabbitTemplate; -import org.springframework.beans.factory.annotation.Autowired; - -import javax.annotation.Resource; -import java.io.IOException; -import java.util.HashMap; - -import static cn.estsh.i3plus.platform.common.util.MdmConstWords.REDIS_MDM_SYNC_FAIL; - -/** - * @Description : - * @Reference : - * @Author : yunhao - * @CreateDate : 2020-05-28 16:54 - * @Modify: - **/ -public abstract class BaseMdmDataSyncQueueReceiver { - - private static final Logger LOGGER = LoggerFactory.getLogger(BaseMdmDataSyncQueueReceiver.class); - - @Autowired - private RabbitTemplate rabbitTemplate; - - @Resource(name = CommonConstWords.IMPP_REDIS_MDM) - private ImppRedis mdmRedis; - - private static final HashMap> masterDateRefMap = new HashMap<>(); - private static final HashMap> busiDateRefMap = new HashMap<>(); - private static final HashMap, BaseBusiSyncMdmDataService> syncServiceMap = new HashMap<>(); - - public void putMdmDataRef(Class syncService, Class mdmMasterClass, Class mdmBusiClass) { - masterDateRefMap.put(mdmMasterClass.getName(), syncService); - busiDateRefMap.put(mdmBusiClass.getName(), syncService); - } - - /** - * 获取同步服务 - * - * @param syncData - * @return - */ - private BaseBusiSyncMdmDataService getSyncService(MdmSyncData syncData) { - Class syncServiceClass = null; - - // 根据MdmClass查找对应关系 - if (CommonEnumUtil.TRUE_OR_FALSE.valueOfBoolean(syncData.getIsMasterDataVal())) { - syncServiceClass = masterDateRefMap.get(syncData.getSyncDataClass()); - } else { - syncServiceClass = busiDateRefMap.get(syncData.getSyncDataClass()); - } - - if (syncServiceClass == null) { - throw ImppExceptionBuilder.newInstance() - .setSystemID(CommonEnumUtil.SOFT_TYPE.MDM.getCode()) - .setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION_DATA_EXIT.getCode()) - .setErrorDetail("【MDM同步关系未维护】MdmClass %s", syncData.getSyncDataClass()) - .setErrorSolution("维护Mdm同步关系") - .build(); - } - - // 根据同步服务Class获取服务对象 - BaseBusiSyncMdmDataService busiSyncMdmDataService = syncServiceMap.get(syncServiceClass); - if (busiSyncMdmDataService == null) { - busiSyncMdmDataService = SpringContextsUtil.getBean(syncServiceClass); - syncServiceMap.put(syncServiceClass, busiSyncMdmDataService); - } - if (busiSyncMdmDataService == null) { - throw ImppExceptionBuilder.newInstance() - .setSystemID(CommonEnumUtil.SOFT_TYPE.MDM.getCode()) - .setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION_DATA_EXIT.getCode()) - .setErrorDetail("【MDM同步服务为找到】SyncServiceClass %s", syncServiceClass) - .build(); - } - - return busiSyncMdmDataService; - } - - /** - * Mdm主数据同步 - * - * @param syncDataStr 消息 - * @param channel 通道 - * @param message 消息 - */ - public void processSyncMasterData(String syncDataStr, Channel channel, Message message) { - MdmSyncData syncData = null; - try { - LOGGER.info("【MQ-QUEUE_MDM_SYNC_MASTER_DATA_CORE】数据接收成功:{}", syncDataStr); - syncData = JsonUtilTool.decode(syncDataStr, MdmSyncData.class); - if (syncData == null) { - throw ImppExceptionBuilder.newInstance() - .setSystemID(CommonEnumUtil.SOFT_TYPE.CORE.getCode()) - .setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION_DATA_NOT_EXIT.getCode()) - .setErrorDetail("同步数据不存在") - .build(); - } - - // 同步数据类型 - BaseBusiSyncMdmDataService busiSyncMdmDataService = getSyncService(syncData); - - boolean isMaster = CommonEnumUtil.TRUE_OR_FALSE.valueOfBoolean(syncData.getIsMasterDataVal()); - - // 判断操作类型与同步数据类型调用对应的方法 - if (syncData.getSyncTypeVal() == MdmEnumUtil.MDM_SYNC_TYPE.INSERT.getValue()) { - if (isMaster) { - busiSyncMdmDataService.masterInsertSync(syncData); - } else { - busiSyncMdmDataService.busiInsertSync(syncData); - } - } else if (syncData.getSyncTypeVal() == MdmEnumUtil.MDM_SYNC_TYPE.UPDATE.getValue()) { - if (isMaster) { - busiSyncMdmDataService.masterUpdateSync(syncData); - } else { - busiSyncMdmDataService.busiUpdateSync(syncData); - } - } else if (syncData.getSyncTypeVal() == MdmEnumUtil.MDM_SYNC_TYPE.DELETE.getValue()) { - if (isMaster) { - busiSyncMdmDataService.masterDeleteSync(syncData); - } else { - busiSyncMdmDataService.busiDeleteSync(syncData); - } - } - - //信息已处理 - LOGGER.info("【MQ-QUEUE_MDM_SYNC_MASTER_DATA_CORE】数据处理成功:{}", syncDataStr); - } catch (Exception e) { - LOGGER.error("【MQ-QUEUE_MDM_SYNC_MASTER_DATA_CORE】处理出错:{}", syncData, e); - if (syncData != null) { - // 保存异常信息和堆栈数据 - syncData.setSyncFailDateTime(TimeTool.getNowTime(true)); - syncData.setSyncFailMessage(ExceptionUtils.getStackTrace(e)); - - //放入MDM 缓存中 - mdmRedis.putObject(getFailRedisKey(syncData), syncData, -1); - } - } finally { - try { - channel.basicAck(message.getMessageProperties().getDeliveryTag(), false); - } catch (IOException e1) { - e1.printStackTrace(); - } - } - } - - private String getFailRedisKey(MdmSyncData syncData) { - return REDIS_MDM_SYNC_FAIL + "-" + syncData.getSyncSoftType() + ":" + syncData.getSyncDataClassSimpleName() + ":" + syncData.getSyncFailDateTime() + "-" + System.currentTimeMillis(); - } - - public abstract void syncMasterData(String syncDataStr, Channel channel, Message message); - -} diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/mq/MdmDataSyncQueueReceiver.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/mq/MdmDataSyncQueueReceiver.java index b3300c8..8fd202b 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/mq/MdmDataSyncQueueReceiver.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/mq/MdmDataSyncQueueReceiver.java @@ -2,10 +2,12 @@ package cn.estsh.i3plus.core.apiservice.mq; import cn.estsh.i3plus.core.apiservice.serviceimpl.mdm.SysToolSyncDataService; import cn.estsh.i3plus.pojo.mdm.bean.busi.core.MdmGearCoreBusiExtd; +import cn.estsh.impp.framework.boot.mdm.mq.BaseMdmDataSyncQueueReceiver; import com.rabbitmq.client.Channel; import org.springframework.amqp.core.Message; import org.springframework.amqp.rabbit.annotation.RabbitListener; -import org.springframework.stereotype.Component; +import org.springframework.boot.autoconfigure.condition.ConditionalOnExpression; +import org.springframework.context.annotation.Configuration; import static cn.estsh.i3plus.platform.common.util.MdmConstWords.QUEUE_MDM_SYNC_DATA_CORE; @@ -16,7 +18,8 @@ import static cn.estsh.i3plus.platform.common.util.MdmConstWords.QUEUE_MDM_SYNC_ * @CreateDate : 2020-05-28 16:54 * @Modify: **/ -@Component +@ConditionalOnExpression("'${impp.mq.queue.mdm.sync:true}' == 'true'") +@Configuration public class MdmDataSyncQueueReceiver extends BaseMdmDataSyncQueueReceiver { /** diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/mq/MessageLetterQueueReceiver.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/mq/MessageLetterQueueReceiver.java index 6b4f98a..a65b2cf 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/mq/MessageLetterQueueReceiver.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/mq/MessageLetterQueueReceiver.java @@ -25,7 +25,8 @@ import org.springframework.amqp.rabbit.annotation.RabbitListener; import org.springframework.amqp.rabbit.core.RabbitTemplate; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.autoconfigure.condition.ConditionalOnExpression; -import org.springframework.stereotype.Component; +import org.springframework.context.annotation.Configuration; + import java.io.IOException; import java.util.ArrayList; import java.util.List; @@ -37,8 +38,8 @@ import java.util.List; * @CreateDate : 2018-11-15 22:35 * @Modify: **/ -@ConditionalOnExpression("'${impp.mq.queue.letter}' == 'true'") -@Component +@ConditionalOnExpression("'${impp.mq.queue.letter:true}' == 'true'") +@Configuration public class MessageLetterQueueReceiver { private static final Logger LOGGER = LoggerFactory.getLogger(MessageLetterQueueReceiver.class); diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/mq/MessageMailQueueReceiver.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/mq/MessageMailQueueReceiver.java index f7565b0..c8910d0 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/mq/MessageMailQueueReceiver.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/mq/MessageMailQueueReceiver.java @@ -21,7 +21,8 @@ import org.springframework.amqp.core.Message; import org.springframework.amqp.rabbit.annotation.RabbitListener; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.autoconfigure.condition.ConditionalOnExpression; -import org.springframework.stereotype.Component; +import org.springframework.context.annotation.Configuration; + import java.io.IOException; /** @@ -31,8 +32,8 @@ import java.io.IOException; * @CreateDate : 2018-11-15 22:15 * @Modify: **/ -@ConditionalOnExpression("'${impp.mq.queue.mail}' == 'true'") -@Component +@ConditionalOnExpression("'${impp.mq.queue.mail:true}' == 'true'") +@Configuration public class MessageMailQueueReceiver { private static final Logger LOGGER = LoggerFactory.getLogger(MessageMailQueueReceiver.class); diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/mq/MessageSWebNoticeQueueReceiver.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/mq/MessageSWebNoticeQueueReceiver.java index d62d190..f8889a4 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/mq/MessageSWebNoticeQueueReceiver.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/mq/MessageSWebNoticeQueueReceiver.java @@ -24,7 +24,7 @@ import org.springframework.amqp.core.Message; import org.springframework.amqp.rabbit.annotation.RabbitListener; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.autoconfigure.condition.ConditionalOnExpression; -import org.springframework.stereotype.Component; +import org.springframework.context.annotation.Configuration; import java.io.IOException; import java.util.ArrayList; @@ -37,8 +37,8 @@ import java.util.List; * @CreateDate : 2018-11-15 22:15 * @Modify: **/ -@ConditionalOnExpression("'${impp.mq.queue.sweb.notice}' == 'true'") -@Component +@ConditionalOnExpression("'${impp.mq.queue.sweb.notice:true}' == 'true'") +@Configuration public class MessageSWebNoticeQueueReceiver { private static final Logger LOGGER = LoggerFactory.getLogger(MessageSWebNoticeQueueReceiver.class); diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/mq/MessageTestQueueReceiver.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/mq/MessageTestQueueReceiver.java deleted file mode 100644 index b842643..0000000 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/mq/MessageTestQueueReceiver.java +++ /dev/null @@ -1,43 +0,0 @@ -//package cn.estsh.i3plus.core.apiservice.mq; -// -//import cn.estsh.i3plus.platform.common.util.PlatformConstWords; -//import com.rabbitmq.client.Channel; -//import org.slf4j.Logger; -//import org.slf4j.LoggerFactory; -//import org.springframework.amqp.core.Message; -//import org.springframework.amqp.rabbit.annotation.RabbitListener; -//import org.springframework.stereotype.Component; -// -//import java.util.Random; -// -///** -// * @Description : 邮件队列处理 -// * @Reference : -// * @Author : yunhao -// * @CreateDate : 2018-11-15 22:15 -// * @Modify: -// **/ -//@Component -//public class MessageTestQueueReceiver { -// private static final Logger LOGGER = LoggerFactory.getLogger(MessageTestQueueReceiver.class); -// Random random = new Random();//默认构造方法 -// -// /** -// * 系统邮件处理队列 -// * -// * @param data 系统消息信息 -// * @param channel 通道 -// * @param message 消息 -// */ -// @RabbitListener(queues = PlatformConstWords.QUEUE_IMPP_MESSAGE_LETTER_BAK,exclusive = true,concurrency = "1") -// public void processImppMail(String data, Channel channel, Message message) { -// try { -// -// LOGGER.info("====>> {}" ,data); -// Thread.sleep(random.nextInt(100)); -// channel.basicAck(message.getMessageProperties().getDeliveryTag(), false); -// }catch (Exception e){ -// e.printStackTrace(); -// } -// } -//} diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/mq/PojoVersionQueueReceiver.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/mq/PojoVersionQueueReceiver.java index ef83299..dbca05d 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/mq/PojoVersionQueueReceiver.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/mq/PojoVersionQueueReceiver.java @@ -42,8 +42,8 @@ import static cn.estsh.i3plus.platform.common.util.PlatformConstWords.QUEUE_IMPP * @CreateDate : 20-4-26 下午2:32 * @Modify: **/ -@Component -@ConditionalOnExpression("'${impp.mq.queue.letter}' == 'true'") +@ConditionalOnExpression("'${impp.mq.queue.pojo.version:true}' == 'true'") +@Configuration public class PojoVersionQueueReceiver { private static final Logger LOGGER = LoggerFactory.getLogger(PojoVersionQueueReceiver.class); diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/mq/ScheduleQueueReceiver.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/mq/ScheduleQueueReceiver.java index 6edde9a..b64f989 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/mq/ScheduleQueueReceiver.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/mq/ScheduleQueueReceiver.java @@ -23,7 +23,7 @@ import org.springframework.amqp.rabbit.annotation.RabbitListener; import org.springframework.amqp.rabbit.core.RabbitTemplate; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.autoconfigure.condition.ConditionalOnExpression; -import org.springframework.stereotype.Component; +import org.springframework.context.annotation.Configuration; import java.io.IOException; import java.util.stream.Collectors; @@ -35,8 +35,8 @@ import java.util.stream.Collectors; * @CreateDate : 2018-12-20 21:56 * @Modify: **/ -@ConditionalOnExpression("'${impp.mq.queue.schedule}' == 'true'") -@Component +@ConditionalOnExpression("'${impp.mq.queue.schedule:true}' == 'true'") +@Configuration public class ScheduleQueueReceiver { private static final Logger LOGGER = LoggerFactory.getLogger(ScheduleQueueReceiver.class); diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/mq/SysLocalResourceQueue.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/mq/SysLocalResourceQueue.java index af897f6..a83b589 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/mq/SysLocalResourceQueue.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/mq/SysLocalResourceQueue.java @@ -12,7 +12,8 @@ import org.slf4j.LoggerFactory; import org.springframework.amqp.core.Message; import org.springframework.amqp.rabbit.annotation.RabbitListener; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; +import org.springframework.boot.autoconfigure.condition.ConditionalOnExpression; +import org.springframework.context.annotation.Configuration; import java.io.IOException; import java.util.Map; @@ -27,7 +28,8 @@ import static cn.estsh.i3plus.platform.common.util.PlatformConstWords.QUEUE_IMPP * @CreateDate : 19-8-23 下午3:12 * @Modify: **/ -@Component +@ConditionalOnExpression("'${impp.mq.queue.resource:true}' == 'true'") +@Configuration public class SysLocalResourceQueue { private static final Logger LOGGER = LoggerFactory.getLogger(SysLocalResourceQueue.class); diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/base/BaseBusiSyncMdmDataService.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/base/BaseBusiSyncMdmDataService.java deleted file mode 100644 index e0e1d16..0000000 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/base/BaseBusiSyncMdmDataService.java +++ /dev/null @@ -1,139 +0,0 @@ -package cn.estsh.i3plus.core.apiservice.serviceimpl.base; - -import cn.estsh.i3plus.icloud.mdm.sdk.base.IBaseMdmBusiExtdCloud; -import cn.estsh.i3plus.icloud.mdm.sdk.base.IBaseMdmBusiModelCloud; -import cn.estsh.i3plus.platform.common.exception.ImppExceptionEnum; -import cn.estsh.i3plus.pojo.base.bean.BaseResultBean; -import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil; -import cn.estsh.i3plus.pojo.mdm.bean.base.BaseMdmBusiModelBean; -import cn.estsh.i3plus.pojo.mdm.bean.base.MdmSyncData; -import cn.estsh.impp.framework.boot.exception.ImppExceptionBuilder; - -import java.util.List; - -/** - * @Description : 业务同步setvice - * @Reference : - * @Author : yunhao - * @CreateDate : 2020-05-15 17:58 - * @Modify: - **/ -public abstract class BaseBusiSyncMdmDataService { - - private IBaseMdmBusiExtdCloud baseMdmBusiExtdCloud; - - private IBaseMdmBusiModelCloud baseMdmBusiModelCloud; - - public BaseBusiSyncMdmDataService(IBaseMdmBusiExtdCloud baseMdmBusiExtdCloud, IBaseMdmBusiModelCloud baseMdmBusiModelCloud) { - this.baseMdmBusiExtdCloud = baseMdmBusiExtdCloud; - this.baseMdmBusiModelCloud = baseMdmBusiModelCloud; - } - - /** - * 主数据新增同步 - * @param syncData - */ - public void masterInsertSync(MdmSyncData syncData) { - baseMdmBusiExtdCloud.whiteDoProcessMissBusiExtdByMaster(syncData.getSyncDataId().toArray(new Long[syncData.getSyncDataId().size()]), syncData.getSyncDateUserName()); - } - - /** - * 主数据修改同步 - * @param syncData - */ - public void masterUpdateSync(MdmSyncData syncData) { - BaseResultBean baseResultBean = - baseMdmBusiModelCloud.whiteFindByMasterIds(syncData.getSyncDataId().toArray(new Long[syncData.getSyncDataId().size()])); - if (!baseResultBean.isSuccess()) { - throw ImppExceptionBuilder.newInstance() - .setSystemID(CommonEnumUtil.SOFT_TYPE.MDM.getCode()) - .setErrorCode(ImppExceptionEnum.CLOUD_CALL_EXCEPTION.getCode()) - .setErrorDetail(baseResultBean.getErrorMsg()) - .build(); - } - - List modelBeanList = baseResultBean.getResultList(); - updateBusiList(transform(modelBeanList)); - } - - /** - * 主数据删除同步 - * @param syncData - */ - public void masterDeleteSync(MdmSyncData syncData) { - baseMdmBusiExtdCloud.whiteDeleteWeaklyByMasterIds(syncData.getSyncDataId().toArray(new Long[syncData.getSyncDataId().size()]),syncData.getSyncDateUserName()); - } - - /** - * 业务数据新增同步 - * @param syncData - */ - public void busiInsertSync(MdmSyncData syncData){ - BaseResultBean baseResultBean = - baseMdmBusiModelCloud.whiteFindByIds(syncData.getSyncDataId().toArray(new Long[syncData.getSyncDataId().size()])); - if (!baseResultBean.isSuccess()) { - throw ImppExceptionBuilder.newInstance() - .setSystemID(CommonEnumUtil.SOFT_TYPE.MDM.getCode()) - .setErrorCode(ImppExceptionEnum.CLOUD_CALL_EXCEPTION.getCode()) - .setErrorDetail(baseResultBean.getErrorMsg()) - .build(); - } - - List modelBeanList = baseResultBean.getResultList(); - insertBusiList(transform(modelBeanList)); - } - - /** - * 业务数据修改同步 - * @param syncData - */ - public void busiUpdateSync(MdmSyncData syncData){ - BaseResultBean baseResultBean = - baseMdmBusiModelCloud.findByIds(syncData.getSyncDataId().toArray(new Long[syncData.getSyncDataId().size()])); - if (!baseResultBean.isSuccess()) { - throw ImppExceptionBuilder.newInstance() - .setSystemID(CommonEnumUtil.SOFT_TYPE.MDM.getCode()) - .setErrorCode(ImppExceptionEnum.CLOUD_CALL_EXCEPTION.getCode()) - .setErrorDetail(baseResultBean.getErrorMsg()) - .build(); - } - - List modelBeanList = baseResultBean.getResultList(); - updateBusiList(transform(modelBeanList)); - - } - - /** - * 业务数据删除同步 - * @param syncData - */ - public void busiDeleteSync(MdmSyncData syncData){ - deleteBusiList(syncData.getSyncDataId()); - } - - /** - * 类型转换 - * @param syncDataList - * @return - */ - public abstract List transform(List syncDataList); - - /** - * 新增业务数据 - * @param beanList - */ - public abstract void insertBusiList(List beanList); - - /** - * 修改业务数据 - * @param beanList - */ - public abstract void updateBusiList(List beanList); - - /** - * 删除业务数据 - * @param idList - */ - public abstract void deleteBusiList(List idList); - -} diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/base/SystemInitService.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/base/SystemInitService.java index 0ae905f..01b1afe 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/base/SystemInitService.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/base/SystemInitService.java @@ -9,7 +9,6 @@ import cn.estsh.i3plus.platform.common.convert.ConvertBean; import cn.estsh.i3plus.platform.common.util.CommonConstWords; import cn.estsh.i3plus.platform.common.util.PlatformConstWords; import cn.estsh.i3plus.platform.plugin.elasticsearch.ElasticSearchTool; -import cn.estsh.impp.framework.boot.license.ImppLicenseTool; import cn.estsh.i3plus.pojo.base.bean.ListPager; import cn.estsh.i3plus.pojo.base.common.Pager; import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil; @@ -78,6 +77,8 @@ public class SystemInitService implements ISystemInitService { @Override @ApiOperation(value = "初始化加载所有数据",notes = "初始化加载所有数据") public void putAndLoadAll() { + try { + type = ImppEnumUtil.SYS_CACHE_TYPE.REDIS.getValue(); LOGGER.info("加载 SysConfig 信息"); @@ -99,8 +100,9 @@ public class SystemInitService implements ISystemInitService { LOGGER.info("加载 对象版本控制信息"); reloadPojoVersionPlan(); LOGGER.info("加载 对象版本控制信息 信息完成"); - - + }catch (Exception e){ + e.printStackTrace(); + } } @Override diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysToolService.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysToolService.java index 68bc7cf..2cc3088 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysToolService.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysToolService.java @@ -1,7 +1,7 @@ package cn.estsh.i3plus.core.apiservice.serviceimpl.busi; import cn.estsh.i3plus.core.api.iservice.busi.ISysToolService; -import cn.estsh.i3plus.core.apiservice.dao.ITestDao; +import cn.estsh.i3plus.platform.common.tool.BeanCopyTool; import cn.estsh.i3plus.pojo.base.bean.ListPager; import cn.estsh.i3plus.pojo.base.common.Pager; import cn.estsh.i3plus.pojo.base.common.PagerHelper; @@ -12,7 +12,6 @@ import cn.estsh.i3plus.pojo.platform.repository.SysToolRepository; import cn.estsh.i3plus.pojo.platform.repository.SysToolTypeRepository; import cn.estsh.i3plus.pojo.platform.sqlpack.CoreHqlPack; import cn.estsh.impp.framework.boot.util.ValidatorBean; -import com.alibaba.fastjson.JSON; import io.swagger.annotations.ApiOperation; import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; @@ -82,24 +81,12 @@ public class SysToolService implements ISysToolService { @Override @ApiOperation(value = "更新硬件信息") public void updateSysTool(SysTool tool) { - // 查询硬件类型名称 - LOGGER.info("硬件类型 TOOL_TYPE :{}", tool); - SysToolType toolType = toolTypeRDao.getById(tool.getToolTypeId()); - ValidatorBean.checkNotNull(toolType); - - SysTool newSysTool = toolRDao.getById(tool.getId()); - newSysTool.setName(tool.getName()); - newSysTool.setToolConnType(tool.getToolConnType()); - newSysTool.setToolDataType(tool.getToolDataType()); - newSysTool.setToolIp(tool.getToolIp()); - newSysTool.setToolPort(tool.getToolPort()); - newSysTool.setToolDescription(tool.getToolDescription()); - newSysTool.setToolTypeId(tool.getToolTypeId()); - newSysTool.setToolTypeNameRdd(toolType.getName()); - newSysTool.setToolOperating(tool.getToolOperating()); - - LOGGER.info("硬件 TOOL :{}",newSysTool); - toolRDao.update(newSysTool); + SysTool orginTool = toolRDao.getById(tool.getId()); + if(orginTool == null){ + orginTool = tool; + } + BeanCopyTool.beanCopy(tool,orginTool); + toolRDao.update(orginTool); } @Override diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/mdm/SysToolSyncDataService.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/mdm/SysToolSyncDataService.java index 5b29d18..5ae08a0 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/mdm/SysToolSyncDataService.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/mdm/SysToolSyncDataService.java @@ -1,11 +1,12 @@ package cn.estsh.i3plus.core.apiservice.serviceimpl.mdm; import cn.estsh.i3plus.core.api.iservice.busi.ISysToolService; -import cn.estsh.i3plus.core.apiservice.serviceimpl.base.BaseBusiSyncMdmDataService; -import cn.estsh.i3plus.icloud.mdm.sdk.base.IBaseMdmBusiExtdCloud; -import cn.estsh.i3plus.icloud.mdm.sdk.base.IBaseMdmBusiModelCloud; +import cn.estsh.i3plus.platform.common.convert.ConvertBean; import cn.estsh.i3plus.pojo.mdm.model.core.MdmGearCoreBusiModel; import cn.estsh.i3plus.pojo.platform.bean.SysTool; +import cn.estsh.impp.framework.boot.mdm.cloud.IBaseMdmBusiExtdCloud; +import cn.estsh.impp.framework.boot.mdm.cloud.IBaseMdmBusiModelCloud; +import cn.estsh.impp.framework.boot.mdm.service.BaseBusiSyncMdmDataService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @@ -31,13 +32,15 @@ public class SysToolSyncDataService extends BaseBusiSyncMdmDataService transform(List syncDataList) { + public List transform(List syncDataList,String userName) { return syncDataList.stream().map(gearCoreBusiModel -> { SysTool sysTool = new SysTool(); if (gearCoreBusiModel != null && gearCoreBusiModel.getBusi() != null && gearCoreBusiModel.getMaster() != null) { + sysTool.setId(gearCoreBusiModel.getBusi().getId()); sysTool.setName(gearCoreBusiModel.getMaster().getName()); sysTool.setToolIp(gearCoreBusiModel.getMaster().getGearModel()); sysTool.setToolDescription(gearCoreBusiModel.getBusi().getCoreNum()); + ConvertBean.serviceModelInitialize(sysTool,userName); } return sysTool; }).collect(Collectors.toList()); @@ -58,7 +61,7 @@ public class SysToolSyncDataService extends BaseBusiSyncMdmDataService id) { + public void deleteBusiList(List id,String userName) { sysToolService.deleteSysToolByIds(id.toArray(new Long[id.size()])); } } diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/util/NoSqlPack.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/util/NoSqlPack.java index 92bf6f5..5264265 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/util/NoSqlPack.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/util/NoSqlPack.java @@ -177,6 +177,7 @@ public class NoSqlPack { public static ElasticSearchPack packEsSysLogConsole(SysLogConsole bean) { ElasticSearchPack result = packElasticSearchPack(bean); + result.andNumberBigger("id",bean.getId()); result.andNumberEquals("softType",bean.getSoftType()); result.andNumberEquals("requestId",bean.getRequestId()); result.andStringLeftLike("logHost",bean.getLogHost()); From 8783b9a33feb6734b5d5d2150dd9510c5e4e4a33 Mon Sep 17 00:00:00 2001 From: "wei.peng" <123456> Date: Mon, 15 Jun 2020 18:46:19 +0800 Subject: [PATCH 10/12] =?UTF-8?q?feat(=E5=AF=86=E7=A0=81=E8=A7=84=E5=88=99?= =?UTF-8?q?=E9=AA=8C=E8=AF=81=E5=AE=8C=E6=88=90):=20=E7=94=A8=E6=88=B7?= =?UTF-8?q?=E7=99=BB=E5=BD=95,=E5=AF=86=E7=A0=81=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../core/api/iservice/busi/IPersonnelService.java | 5 +- .../api/iservice/busi/ISysUserPasswordService.java | 13 + .../core/api/iservice/busi/ISysUserService.java | 2 +- .../controller/base/WhiteController.java | 14 +- .../controller/busi/PersonnelController.java | 15 +- .../controller/busi/SysUserController.java | 110 +++-- .../apiservice/mq/MdmDataSyncQueueReceiver.java | 68 +-- .../serviceimpl/base/SystemLoginService.java | 74 ++- .../serviceimpl/busi/PersonnelServiceService.java | 176 +++---- .../busi/SysUserSavePasswordService.java | 57 +++ .../serviceimpl/busi/SysUserService.java | 59 ++- .../core/apiservice/util/SysUserPasswordUtil.java | 505 +++++++++++++++++++++ 12 files changed, 854 insertions(+), 244 deletions(-) create mode 100644 modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/util/SysUserPasswordUtil.java diff --git a/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/IPersonnelService.java b/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/IPersonnelService.java index 24017d5..3c512df 100644 --- a/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/IPersonnelService.java +++ b/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/IPersonnelService.java @@ -186,8 +186,8 @@ public interface IPersonnelService { @ApiOperation(value = "组织关系检查") void checkSysOrganizeRef(Long organizeId); - @ApiOperation(value = "密码规则校验") - void checkSysUserPassword(String password); +// @ApiOperation(value = "密码规则校验") +// void checkSysUserPassword(String password); // @ApiOperation(value = "岗位关系检查") // void refreshUpdateMenuRdd(Long menuId); @@ -207,6 +207,7 @@ public interface IPersonnelService { @ApiOperation(value = "刷新用户岗位") void refreshRefSysUserInfoPosition(Long userInfoId, Long[] positionIds); + // /** // * 根据组织代码查询组织信息 // * @return diff --git a/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/ISysUserPasswordService.java b/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/ISysUserPasswordService.java index b3a8f8d..1bce21d 100644 --- a/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/ISysUserPasswordService.java +++ b/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/ISysUserPasswordService.java @@ -2,6 +2,7 @@ package cn.estsh.i3plus.core.api.iservice.busi; import cn.estsh.i3plus.pojo.platform.bean.SysUserPassword; import cn.estsh.impp.framework.base.service.ICrudService; +import io.swagger.annotations.ApiOperation; import java.util.List; @@ -14,4 +15,16 @@ import java.util.List; **/ public interface ISysUserPasswordService extends ICrudService { + /** + * 修改用户密码 + * @param userId 用户ID + * @param password 旧密码 + * @param newPwd 新密码 + */ + @ApiOperation(value = "修改用户密码") + void updatePassword(Long userId,String password,String newPwd); + + @ApiOperation(value = "重置用户密码") + void updatePassword(Long userId,String password); + } diff --git a/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/ISysUserService.java b/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/ISysUserService.java index fc4655e..8df4140 100644 --- a/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/ISysUserService.java +++ b/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/ISysUserService.java @@ -58,7 +58,7 @@ public interface ISysUserService { * @param sysUser */ @ApiOperation(value = "修改账号信息",notes = "修改账号信息") - void updateSysUser(SysUser sysUser) throws Exception; + void updateSysUser(SysUser sysUser); /** * 修改账号密码 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 2a7991f..a7d4527 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 @@ -150,7 +150,6 @@ public class WhiteController extends CoreBaseController { LOGGER.info("用户登陆 loginName:{} loginPwd:{} languageCode:{}",loginName,loginPwd,languageCode); ResultBean result = null; - Exception userLoginException = null; CommonEnumUtil.USER_LOGIN_STATUS userLoginStatus = CommonEnumUtil.USER_LOGIN_STATUS.LOGIN_SUCCESS; try { @@ -173,25 +172,16 @@ public class WhiteController extends CoreBaseController { recordSysUserLog(user.getUser().getUserInfoId(), loginName,CommonEnumUtil.USER_LOGIN_STATUS.LOGIN_SUCCESS.getValue(), ipAddr); AuthUtil.setOrganize(user.getUser().getOrganize()); } catch (IncorrectCredentialsException e) { - // 密码错误 - Integer num = systemLoginService.doLoginPasswordError(loginName, ipAddr); - num = CommonConstWords.USER_LOGIN_ERROR_MAX_NUM - num; result = ResultBean.fail(ImppExceptionEnum.LOGIN_EXCEPTION_USER_PASSWORD); - if(num == 0){ - result.setErrorMsg("密码输入错误。用户已被锁定请联系管理员!"); - }else { - result.setErrorMsg("密码输入错误。再输入错误"+ num +"次,用户将被锁定。"); - } + userPasswordUtil.checkLoginErrorNumber(loginName,result,e); userLoginStatus = CommonEnumUtil.USER_LOGIN_STATUS.WRONG_PASSWORD; - userLoginException = e; } catch (CredentialsException e) { // 用户名或密码错误 result = ResultBean.fail(ImppExceptionEnum.LOGIN_EXCEPTION_USER_NAME); // 记录登录记录 userLoginStatus = CommonEnumUtil.USER_LOGIN_STATUS.WRONG_USERNAME_OR_PASSWORD; - userLoginException = e; } catch (LockedAccountException e) { // 账号已锁定 result = ResultBean.fail(ImppExceptionEnum.LOGIN_EXCEPTION_USER_LOCKING); @@ -216,7 +206,6 @@ public class WhiteController extends CoreBaseController { // 记录登录记录 userLoginStatus = CommonEnumUtil.USER_LOGIN_STATUS.SYSTEM_ERROR; - userLoginException = e; } catch (Exception e) { result = ResultBean.fail(e.getMessage()).setCode(ImppExceptionEnum.SYSTEM_EXCEPTION.getCode()) .setErrorMsg(LocaleUtils.getEnumLocaleResDesc(ImppExceptionEnum.SYSTEM_EXCEPTION, ImppExceptionEnum.SYSTEM_EXCEPTION.getDescription())); @@ -226,7 +215,6 @@ public class WhiteController extends CoreBaseController { }finally { // 记录登录记录 recordSysUserLog(null, loginName,userLoginStatus.getValue(), ipAddr); - userPasswordUtil.checkLoginErrorNumber(loginName,result,userLoginException); } LOGGER.info("会员{}登陆登录完成 , 登录耗时:{}",loginName,(System.currentTimeMillis() - startTime)); diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/PersonnelController.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/PersonnelController.java index 619b683..f31f3a4 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/PersonnelController.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/PersonnelController.java @@ -1,6 +1,7 @@ package cn.estsh.i3plus.core.apiservice.controller.busi; import cn.estsh.i3plus.core.api.iservice.busi.*; +import cn.estsh.i3plus.core.apiservice.util.SysUserPasswordUtil; import cn.estsh.i3plus.platform.common.convert.ConvertBean; import cn.estsh.i3plus.platform.common.exception.ImppExceptionEnum; import cn.estsh.i3plus.platform.common.tool.EncryptTool; @@ -70,6 +71,9 @@ public class PersonnelController extends CoreBaseController { @Autowired private ISysDepartmentService departmentService; + @Autowired + private SysUserPasswordUtil userPasswordUtil; + /** * 添加用户信息 * @param model 用户信息 @@ -86,7 +90,7 @@ public class PersonnelController extends CoreBaseController { SysUserInfo info = model.getSysUserInfo(); checkUserDetailModel(model, false); - personnelService.checkSysUserPassword(model.getUserLoginPassword()); + userPasswordUtil.checkPasswordSave(user); personnelService.checkSysUserOnly(user); if (StringUtils.isBlank(info.getUserJoinDate())) { @@ -163,7 +167,6 @@ public class PersonnelController extends CoreBaseController { SysUserInfo info = model.getSysUserInfo(); checkUserDetailModel(model, true); - personnelService.checkSysUserPassword(model.getUserLoginPassword()); personnelService.checkSysUserOnly(user); SysUserInfo userInfo = personnelService.getSysUserInfoById(info.getId()); @@ -226,11 +229,6 @@ public class PersonnelController extends CoreBaseController { // 关系 刷新 refreshRef(sysUser, userInfo, model); - // 更新 密码 - if(StringUtils.isNotBlank(user.getUserLoginPassword())){ - sysUser.setUserLoginPassword(user.getUserLoginPassword()); - refreshSysUserPassword(sysUser); - } personnelService.saveSysUser(sysUser); personnelService.saveSysUserInfo(userInfo); @@ -252,12 +250,9 @@ public class PersonnelController extends CoreBaseController { @ApiOperation(value = "修改用户信息", notes = "返回内容添加用户信息") public ResultBean updateUserModel(UserDetailModel model) { try { - startMultiService(); - checkUserModel(model); SysUser user = personnelService.getSysUserById(Long.parseLong(model.getUserId())); initUser(model, user); - personnelService.checkSysUserPassword(model.getUserLoginPassword()); personnelService.checkSysUserOnly(user); SysDepartment userDepartment = departmentService.get(Long.parseLong(model.getUserDepartmentId())); diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysUserController.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysUserController.java index 1d2819f..11013fc 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysUserController.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysUserController.java @@ -1,6 +1,7 @@ package cn.estsh.i3plus.core.apiservice.controller.busi; import cn.estsh.i3plus.core.api.iservice.busi.*; +import cn.estsh.i3plus.core.apiservice.util.SysUserPasswordUtil; import cn.estsh.i3plus.platform.common.convert.ConvertBean; import cn.estsh.i3plus.platform.common.tool.EncryptTool; import cn.estsh.i3plus.platform.common.tool.StringTool; @@ -60,6 +61,9 @@ public class SysUserController extends CoreBaseController{ @Autowired private ICoreMemTreeService coreMemTreeService; + @Autowired + private ISysUserPasswordService userPasswordService; + /** * 新增系统用户 * @param sysUser 用户 @@ -250,17 +254,12 @@ public class SysUserController extends CoreBaseController{ @ApiOperation(value = "修改密码", notes = "修改当前登录用户密码") public ResultBean updateSysUserPassword(String password,String newPwd) { try { - startMultiService(); - SessionUser sessionUser = AuthUtil.getSessionUser(); // 数据校验 ValidatorBean.checkNotNull(password, "旧密码不能为空"); ValidatorBean.checkNotNull(newPwd, "新密码不能为空"); - personnelService.checkSysUserPassword(newPwd); - - sysUserService.updateSysUserPassword(sessionUser.getUser().getId(),password,newPwd.trim()); - + userPasswordService.updatePassword(sessionUser.getUser().getId(),password,newPwd.trim()); return ResultBean.success("操作成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()); } catch(ImppBusiException busExcep){ return ResultBean.fail(busExcep); @@ -420,8 +419,7 @@ public class SysUserController extends CoreBaseController{ String password = RandomStringUtils.random(6, true, false); - user.setUserLoginPassword(EncryptTool.hexMD5(password)); - sysUserService.updateSysUser(user); + userPasswordService.updatePassword(user.getId(),password); String content = "系统提示:\n" + "\t"+getSessionUser().getUserName()+"使用密码重置功能帮您重置了【"+user.getUserLoginName()+"】账号的密码," + @@ -503,54 +501,54 @@ public class SysUserController extends CoreBaseController{ return ImppExceptionBuilder.newInstance().buildExceptionResult(e); } } - - /** - * 通过邮箱的验证码修改密码 - * @param password 新密码 - * @param email 邮箱 - * @param verification 验证码不能为空 - * @return 处理结果 - */ - @PostMapping("/password/update-verification") - @ApiOperation(value = "修改密码",notes = "通过邮箱的验证码修改密码") - public ResultBean getEmailVerification(String password,String email,String verification){ - try { - ValidatorBean.checkNotNull(verification,"验证码不能为空"); - ValidatorBean.checkNotNull(password,"新密码不能为空"); - ValidatorBean.checkNotNull(email,"邮件不能为空"); - - personnelService.checkSysUserPassword(password); - - String redisKey = CommonConstWords.SESSION_VERIFICATION_USER_EMAIL + "_" + getSessionUser().getUserId(); - Object redisValue = redisCore.getObject(redisKey); - if(redisValue != null){ - if(redisValue.toString().indexOf(verification) >= 0 ){ - if(redisValue.toString().indexOf(email) >= 0 ){ - SysUser user = sysUserService.getSysUserByEmail(email); - user.setUserLoginPassword(EncryptTool.hexMD5(password)); - sysUserService.updateSysUser(user); - return ResultBean.success("操作成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()); - }else { - return ResultBean.fail("操作失败") - .setCode(ResourceEnumUtil.MESSAGE.FAIL.getCode()) - .setErrorMsg("请勿修改邮箱信息"); - } - }else { - return ResultBean.fail("操作失败") - .setCode(ResourceEnumUtil.MESSAGE.FAIL.getCode()) - .setErrorMsg("验证码错误请重新输入"); - } - }else { - return ResultBean.fail("操作失败") - .setCode(ResourceEnumUtil.MESSAGE.FAIL.getCode()) - .setErrorMsg("验证码已过期"); - } - } catch (ImppBusiException busExcep) { - return ResultBean.fail(busExcep); - } catch (Exception e) { - return ImppExceptionBuilder.newInstance().buildExceptionResult(e); - } - } +// TODO 密码待修复 +// /** +// * 通过邮箱的验证码修改密码 +// * @param password 新密码 +// * @param email 邮箱 +// * @param verification 验证码不能为空 +// * @return 处理结果 +// */ +// @PostMapping("/password/update-verification") +// @ApiOperation(value = "修改密码",notes = "通过邮箱的验证码修改密码") +// public ResultBean getEmailVerification(String password,String email,String verification){ +// try { +// ValidatorBean.checkNotNull(verification,"验证码不能为空"); +// ValidatorBean.checkNotNull(password,"新密码不能为空"); +// ValidatorBean.checkNotNull(email,"邮件不能为空"); +// +// personnelService.checkSysUserPassword(password); +// +// String redisKey = CommonConstWords.SESSION_VERIFICATION_USER_EMAIL + "_" + getSessionUser().getUserId(); +// Object redisValue = redisCore.getObject(redisKey); +// if(redisValue != null){ +// if(redisValue.toString().indexOf(verification) >= 0 ){ +// if(redisValue.toString().indexOf(email) >= 0 ){ +// SysUser user = sysUserService.getSysUserByEmail(email); +// user.setUserLoginPassword(EncryptTool.hexMD5(password)); +// sysUserService.updateSysUser(user); +// return ResultBean.success("操作成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()); +// }else { +// return ResultBean.fail("操作失败") +// .setCode(ResourceEnumUtil.MESSAGE.FAIL.getCode()) +// .setErrorMsg("请勿修改邮箱信息"); +// } +// }else { +// return ResultBean.fail("操作失败") +// .setCode(ResourceEnumUtil.MESSAGE.FAIL.getCode()) +// .setErrorMsg("验证码错误请重新输入"); +// } +// }else { +// return ResultBean.fail("操作失败") +// .setCode(ResourceEnumUtil.MESSAGE.FAIL.getCode()) +// .setErrorMsg("验证码已过期"); +// } +// } catch (ImppBusiException busExcep) { +// return ResultBean.fail(busExcep); +// } catch (Exception e) { +// return ImppExceptionBuilder.newInstance().buildExceptionResult(e); +// } +// } /** * 修改用户操作组织id diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/mq/MdmDataSyncQueueReceiver.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/mq/MdmDataSyncQueueReceiver.java index b3300c8..0637367 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/mq/MdmDataSyncQueueReceiver.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/mq/MdmDataSyncQueueReceiver.java @@ -1,34 +1,34 @@ -package cn.estsh.i3plus.core.apiservice.mq; - -import cn.estsh.i3plus.core.apiservice.serviceimpl.mdm.SysToolSyncDataService; -import cn.estsh.i3plus.pojo.mdm.bean.busi.core.MdmGearCoreBusiExtd; -import com.rabbitmq.client.Channel; -import org.springframework.amqp.core.Message; -import org.springframework.amqp.rabbit.annotation.RabbitListener; -import org.springframework.stereotype.Component; - -import static cn.estsh.i3plus.platform.common.util.MdmConstWords.QUEUE_MDM_SYNC_DATA_CORE; - -/** - * @Description : - * @Reference : - * @Author : yunhao - * @CreateDate : 2020-05-28 16:54 - * @Modify: - **/ -@Component -public class MdmDataSyncQueueReceiver extends BaseMdmDataSyncQueueReceiver { - - /** - * 初始化类关系 - */ - public MdmDataSyncQueueReceiver() { - putMdmDataRef(SysToolSyncDataService.class, MdmGearCoreBusiExtd.mdmMasterClass, MdmGearCoreBusiExtd.class); - } - - @Override - @RabbitListener(queues = QUEUE_MDM_SYNC_DATA_CORE) - public void syncMasterData(String syncDataStr, Channel channel, Message message) { - processSyncMasterData(syncDataStr, channel, message); - } -} +//package cn.estsh.i3plus.core.apiservice.mq; +// +//import cn.estsh.i3plus.core.apiservice.serviceimpl.mdm.SysToolSyncDataService; +//import cn.estsh.i3plus.pojo.mdm.bean.busi.core.MdmGearCoreBusiExtd; +//import com.rabbitmq.client.Channel; +//import org.springframework.amqp.core.Message; +//import org.springframework.amqp.rabbit.annotation.RabbitListener; +//import org.springframework.stereotype.Component; +// +//import static cn.estsh.i3plus.platform.common.util.MdmConstWords.QUEUE_MDM_SYNC_DATA_CORE; +// +///** +// * @Description : +// * @Reference : +// * @Author : yunhao +// * @CreateDate : 2020-05-28 16:54 +// * @Modify: +// **/ +//@Component +//public class MdmDataSyncQueueReceiver extends BaseMdmDataSyncQueueReceiver { +// +// /** +// * 初始化类关系 +// */ +// public MdmDataSyncQueueReceiver() { +// putMdmDataRef(SysToolSyncDataService.class, MdmGearCoreBusiExtd.mdmMasterClass, MdmGearCoreBusiExtd.class); +// } +// +// @Override +// @RabbitListener(queues = QUEUE_MDM_SYNC_DATA_CORE) +// public void syncMasterData(String syncDataStr, Channel channel, Message message) { +// processSyncMasterData(syncDataStr, channel, message); +// } +//} diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/base/SystemLoginService.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/base/SystemLoginService.java index 9f39965..e52716b 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/base/SystemLoginService.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/base/SystemLoginService.java @@ -1,7 +1,9 @@ package cn.estsh.i3plus.core.apiservice.serviceimpl.base; import cn.estsh.i3plus.core.api.iservice.base.ISystemLoginService; +import cn.estsh.i3plus.core.api.iservice.busi.ISysUserPasswordService; import cn.estsh.i3plus.core.apiservice.util.SysUserPasswordUtil; +import cn.estsh.i3plus.platform.common.convert.ConvertBean; import cn.estsh.i3plus.platform.common.tool.EncryptTool; import cn.estsh.i3plus.platform.common.util.CommonConstWords; import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil; @@ -10,22 +12,29 @@ import cn.estsh.i3plus.pojo.base.shirotoken.SaAdminToken; import cn.estsh.i3plus.pojo.base.shirotoken.UserToken; import cn.estsh.i3plus.pojo.platform.bean.SessionUser; import cn.estsh.i3plus.pojo.platform.bean.SysUser; +import cn.estsh.i3plus.pojo.platform.bean.SysUserPassword; import cn.estsh.i3plus.pojo.platform.repository.SysUserRepository; import cn.estsh.impp.framework.boot.auth.AuthUtil; import cn.estsh.impp.framework.boot.util.ImppLdapUtils; import cn.estsh.impp.framework.boot.util.ImppRedis; import cn.estsh.impp.framework.boot.util.ImppSwitchUtil; +import cn.estsh.impp.framework.boot.util.ValidatorBean; import io.swagger.annotations.ApiOperation; import org.apache.commons.lang3.StringUtils; +import org.apache.commons.lang3.math.NumberUtils; import org.apache.shiro.authc.CredentialsException; import org.apache.shiro.authc.IncorrectCredentialsException; import org.apache.shiro.authc.LockedAccountException; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; import javax.annotation.Resource; +import java.io.UnsupportedEncodingException; +import java.security.NoSuchAlgorithmException; +import java.util.Objects; /** * @Description : 用户登陆方法 @@ -41,9 +50,14 @@ public class SystemLoginService implements ISystemLoginService { @Autowired private SysUserRepository sysUserRDao; + @Lazy @Autowired private SysUserPasswordUtil userPasswordUtil; + @Lazy + @Autowired + private ISysUserPasswordService passwordService; + /** * 核心的缓存 */ @@ -125,33 +139,55 @@ public class SystemLoginService implements ISystemLoginService { public SysUser getUserLoginInfo(String loginName,String pwd) { SysUser user = sysUserRDao.getByProperty( new String[]{"userLoginName","isValid"}, - new Object[]{loginName,CommonEnumUtil.IS_VAILD.VAILD.getValue()} - ); + new Object[]{loginName,CommonEnumUtil.IS_VAILD.VAILD.getValue()}); + if(user == null){ //用户不存在 throw new CredentialsException("用户不存在"); - }else { - if(user.getUserStatus() != CommonEnumUtil.USER_STATUS.ENABLE.getValue()){ - throw new LockedAccountException("账号已被锁定"); - } - try { - // 密码加密 - pwd = EncryptTool.hexMD5(pwd); - } catch (Exception e) { - LOGGER.error("登录密码加密出错。"); - throw new IncorrectCredentialsException("登陆密码错误"); - } + } + + if(user.getUserStatus() != CommonEnumUtil.USER_STATUS.ENABLE.getValue()){ + throw new LockedAccountException("账号已被锁定"); + } - // 登录AD 域检查 + // 登录AD 域检查 + if(ImppSwitchUtil.isLoginActiveDirectory()){ userPasswordUtil.checkActiveDirectory(user); + return user; + } - // 登录密码校验 - if (!StringUtils.equals(user.getUserLoginPassword(), pwd)) { //密码不符 - LOGGER.error("密码验证错误。"); - throw new IncorrectCredentialsException("登陆密码错误"); + SysUserPassword password = null; + String passwordStr = user.getUserLoginPassword(); + try { + if(Objects.nonNull(user.getUserLoginPasswordId()) && user.getUserLoginPasswordId() > 0){ + password = passwordService.get(user.getUserLoginPasswordId()); + }else{ + if(StringUtils.equals(user.getUserLoginPassword(),SysUserPasswordUtil.encoder(pwd))){ + SysUserPassword userPassword = new SysUserPassword(user.getId(), SysUserPasswordUtil.encoder(pwd)); + ConvertBean.serviceModelInitialize(userPassword,user.getUserName()); + password = passwordService.insert(userPassword); + + user.setUserLoginPassword(null); + user.setUserLoginPasswordId(password.getId()); + + sysUserRDao.save(user); + } + } + + if(Objects.nonNull(password)){ + passwordStr = password.getUserPassword(); } - return user; + if (StringUtils.equals(passwordStr,SysUserPasswordUtil.encoder(pwd))){ + return user; + } + LOGGER.error("密码验证错误。"); + } catch (Exception e) { + LOGGER.error("登录密码加密出错[Exception]"); } + + throw new IncorrectCredentialsException("登陆密码错误"); + + } /** diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/PersonnelServiceService.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/PersonnelServiceService.java index 5b354d2..2bf98c3 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/PersonnelServiceService.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/PersonnelServiceService.java @@ -5,6 +5,7 @@ import cn.estsh.i3plus.core.api.iservice.busi.*; import cn.estsh.i3plus.core.apiservice.util.HqlModelPack; import cn.estsh.i3plus.platform.common.exception.ImppExceptionEnum; import cn.estsh.i3plus.platform.common.tool.StringTool; +import cn.estsh.i3plus.platform.common.tool.TimeTool; import cn.estsh.i3plus.platform.common.util.CommonConstWords; import cn.estsh.i3plus.pojo.base.bean.DdlPackBean; import cn.estsh.i3plus.pojo.base.bean.ListPager; @@ -22,6 +23,7 @@ import cn.estsh.i3plus.pojo.platform.sqlpack.CoreHqlPack; import cn.estsh.impp.framework.boot.auth.AuthUtil; import cn.estsh.impp.framework.boot.exception.ImppExceptionBuilder; import cn.estsh.impp.framework.boot.util.ImppRedis; +import cn.estsh.impp.framework.boot.util.RedisCacheTool; import io.swagger.annotations.ApiOperation; import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.time.DateFormatUtils; @@ -673,22 +675,22 @@ public class PersonnelServiceService implements IPersonnelService { public Integer checkSysUserResetPassword(SysUser user) { LOGGER.info("平台用户岗位 SysUser user:{}", user); Integer num = 0; -// if(user != null){ -// String day = DateFormatUtils.ISO_8601_EXTENDED_DATE_FORMAT.format(new Date()); -// String redisKey = CommonConstWords.REDIS_PREFIX_USER_RESET_PASSWORD + "-" + day + "-" + user.getId(); -// Object redisValue = redisCore.getObject(redisKey); -// num = redisValue == null ? 1 : Integer.parseInt(redisValue.toString()) + 1; -// -// if(num > CommonConstWords.LOCK_USER_RESET_PASSWORD){ -// throw ImppExceptionBuilder.newInstance() -// .setSystemID(CommonEnumUtil.SOFT_TYPE.CORE.getCode()) -// .setErrorCode(ImppExceptionEnum.USER_PERMISSION_RUN_OUT.getCode()) -// .setErrorDetail("重置密码次数已使用完毕") -// .setErrorSolution("请明日再次使用") -// .build(); -// } -// redisCore.putObject(redisKey,num,CommonConstWords.REDIS_TIME_DAY_ONE); -// } + if(user != null){ + String redisKey = CommonConstWords.REDIS_PREFIX_USER_RESET_PASSWORD + ":" + TimeTool.getToday() + ":" + user.getId(); + Object redisValue = redisCore.getObject(redisKey); + num = redisValue == null ? 1 : Integer.parseInt(redisValue.toString()) + 1; + + int numMax = RedisCacheTool.getSysConfigIntVal(CommonConstWords.CONFIG_PWD_RESET_PASSWORD, CommonConstWords.CONFIG_PWD_RESET_PASSWORD_DEFAULT); + if(num > numMax){ + throw ImppExceptionBuilder.newInstance() + .setSystemID(CommonEnumUtil.SOFT_TYPE.CORE.getCode()) + .setErrorCode(ImppExceptionEnum.USER_PERMISSION_RUN_OUT.getCode()) + .setErrorDetail("重置密码次数已使用完毕") + .setErrorSolution("请明日再次使用") + .build(); + } + redisCore.putObject(redisKey,num,CommonConstWords.REDIS_TIME_DAY_ONE); + } return num; } @@ -826,77 +828,77 @@ public class PersonnelServiceService implements IPersonnelService { } } - @Override - public void checkSysUserPassword(String password) { - LOGGER.info("平台用户 SysUser password:{}", password); - - if(StringUtils.isNotBlank(password)){ - // 密码长度校验 - String redisKey = CommonConstWords.REDIS_PREFIX_CACHE_CONFIG + "_" + CommonConstWords.CONFIG_PWD_LENGTH; - SysConfig config = (SysConfig) systemInitService.getDataFromCache(redisKey, SysConfig.class); - - if(!checkPasswordLength(config,password)){ - throw ImppExceptionBuilder.newInstance() - .setSystemID(CommonEnumUtil.SOFT_TYPE.CORE.getCode()) - .setErrorCode(ImppExceptionEnum.NOT_CONFIG_EXCEPTION.getCode()) - .setErrorDetail("密码长度不够"+config.getConfigValue()+"位") - .setErrorSolution("请重新输入") - .build(); - } - - // 密码小写校验 - redisKey = CommonConstWords.REDIS_PREFIX_CACHE_CONFIG + "_" + CommonConstWords.CONFIG_PWD_EXIST_LOWER_ENGLISH; - config = (SysConfig) systemInitService.getDataFromCache(redisKey, SysConfig.class); - - if(!checkPasswordLowerEnglish(config,password)){ - throw ImppExceptionBuilder.newInstance() - .setSystemID(CommonEnumUtil.SOFT_TYPE.CORE.getCode()) - .setErrorCode(ImppExceptionEnum.NOT_CONFIG_EXCEPTION.getCode()) - .setErrorDetail("密码必须包含小写英文") - .setErrorSolution("请重新输入") - .build(); - } - - // 密码大写校验 - redisKey = CommonConstWords.REDIS_PREFIX_CACHE_CONFIG + "_" + CommonConstWords.CONFIG_PWD_EXIST_UPPERCASE_ENGLISH; - config = (SysConfig) systemInitService.getDataFromCache(redisKey, SysConfig.class); - - if(!checkPasswordUpperEnglish(config,password)){ - throw ImppExceptionBuilder.newInstance() - .setSystemID(CommonEnumUtil.SOFT_TYPE.CORE.getCode()) - .setErrorCode(ImppExceptionEnum.NOT_CONFIG_EXCEPTION.getCode()) - .setErrorDetail("密码必须包含大写英文") - .setErrorSolution("请重新输入") - .build(); - } - - // 密码特殊字符 - redisKey = CommonConstWords.REDIS_PREFIX_CACHE_CONFIG + "_" + CommonConstWords.CONFIG_PWD_EXIST_SPECIAL_CHAR; - config = (SysConfig) systemInitService.getDataFromCache(redisKey, SysConfig.class); - - if(!checkPasswordSpecialChar(config,password)){ - throw ImppExceptionBuilder.newInstance() - .setSystemID(CommonEnumUtil.SOFT_TYPE.CORE.getCode()) - .setErrorCode(ImppExceptionEnum.NOT_CONFIG_EXCEPTION.getCode()) - .setErrorDetail("密码必须包含特殊字符") - .setErrorSolution("请重新输入") - .build(); - } - - // 密码特殊字符 - redisKey = CommonConstWords.REDIS_PREFIX_CACHE_CONFIG + "_" + CommonConstWords.CONFIG_PWD_EXIST_NUMBER; - config = (SysConfig) systemInitService.getDataFromCache(redisKey, SysConfig.class); - - if(!checkPasswordNumber(config,password)){ - throw ImppExceptionBuilder.newInstance() - .setSystemID(CommonEnumUtil.SOFT_TYPE.CORE.getCode()) - .setErrorCode(ImppExceptionEnum.NOT_CONFIG_EXCEPTION.getCode()) - .setErrorDetail("密码必须包含数字") - .setErrorSolution("请重新输入") - .build(); - } - } - } +// @Override +// public void checkSysUserPassword(String password) { +// LOGGER.info("平台用户 SysUser password:{}", password); +// +// if(StringUtils.isNotBlank(password)){ +// // 密码长度校验 +// String redisKey = CommonConstWords.REDIS_PREFIX_CACHE_CONFIG + "_" + CommonConstWords.CONFIG_PWD_LENGTH; +// SysConfig config = (SysConfig) systemInitService.getDataFromCache(redisKey, SysConfig.class); +// +// if(!checkPasswordLength(config,password)){ +// throw ImppExceptionBuilder.newInstance() +// .setSystemID(CommonEnumUtil.SOFT_TYPE.CORE.getCode()) +// .setErrorCode(ImppExceptionEnum.NOT_CONFIG_EXCEPTION.getCode()) +// .setErrorDetail("密码长度不够"+config.getConfigValue()+"位") +// .setErrorSolution("请重新输入") +// .build(); +// } +// +// // 密码小写校验 +// redisKey = CommonConstWords.REDIS_PREFIX_CACHE_CONFIG + "_" + CommonConstWords.CONFIG_PWD_EXIST_LOWER_ENGLISH; +// config = (SysConfig) systemInitService.getDataFromCache(redisKey, SysConfig.class); +// +// if(!checkPasswordLowerEnglish(config,password)){ +// throw ImppExceptionBuilder.newInstance() +// .setSystemID(CommonEnumUtil.SOFT_TYPE.CORE.getCode()) +// .setErrorCode(ImppExceptionEnum.NOT_CONFIG_EXCEPTION.getCode()) +// .setErrorDetail("密码必须包含小写英文") +// .setErrorSolution("请重新输入") +// .build(); +// } +// +// // 密码大写校验 +// redisKey = CommonConstWords.REDIS_PREFIX_CACHE_CONFIG + "_" + CommonConstWords.CONFIG_PWD_EXIST_UPPERCASE_ENGLISH; +// config = (SysConfig) systemInitService.getDataFromCache(redisKey, SysConfig.class); +// +// if(!checkPasswordUpperEnglish(config,password)){ +// throw ImppExceptionBuilder.newInstance() +// .setSystemID(CommonEnumUtil.SOFT_TYPE.CORE.getCode()) +// .setErrorCode(ImppExceptionEnum.NOT_CONFIG_EXCEPTION.getCode()) +// .setErrorDetail("密码必须包含大写英文") +// .setErrorSolution("请重新输入") +// .build(); +// } +// +// // 密码特殊字符 +// redisKey = CommonConstWords.REDIS_PREFIX_CACHE_CONFIG + "_" + CommonConstWords.CONFIG_PWD_EXIST_SPECIAL_CHAR; +// config = (SysConfig) systemInitService.getDataFromCache(redisKey, SysConfig.class); +// +// if(!checkPasswordSpecialChar(config,password)){ +// throw ImppExceptionBuilder.newInstance() +// .setSystemID(CommonEnumUtil.SOFT_TYPE.CORE.getCode()) +// .setErrorCode(ImppExceptionEnum.NOT_CONFIG_EXCEPTION.getCode()) +// .setErrorDetail("密码必须包含特殊字符") +// .setErrorSolution("请重新输入") +// .build(); +// } +// +// // 密码特殊字符 +// redisKey = CommonConstWords.REDIS_PREFIX_CACHE_CONFIG + "_" + CommonConstWords.CONFIG_PWD_EXIST_NUMBER; +// config = (SysConfig) systemInitService.getDataFromCache(redisKey, SysConfig.class); +// +// if(!checkPasswordNumber(config,password)){ +// throw ImppExceptionBuilder.newInstance() +// .setSystemID(CommonEnumUtil.SOFT_TYPE.CORE.getCode()) +// .setErrorCode(ImppExceptionEnum.NOT_CONFIG_EXCEPTION.getCode()) +// .setErrorDetail("密码必须包含数字") +// .setErrorSolution("请重新输入") +// .build(); +// } +// } +// } // @Override // public void refreshUpdateMenuRdd(Long menuId) { diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysUserSavePasswordService.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysUserSavePasswordService.java index fc5f6fc..3388760 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysUserSavePasswordService.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysUserSavePasswordService.java @@ -1,14 +1,28 @@ package cn.estsh.i3plus.core.apiservice.serviceimpl.busi; import cn.estsh.i3plus.core.api.iservice.busi.ISysUserPasswordService; +import cn.estsh.i3plus.core.api.iservice.busi.ISysUserService; +import cn.estsh.i3plus.core.apiservice.util.SysUserPasswordUtil; +import cn.estsh.i3plus.platform.common.convert.ConvertBean; +import cn.estsh.i3plus.platform.common.exception.ImppExceptionEnum; +import cn.estsh.i3plus.platform.common.tool.TimeTool; +import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil; import cn.estsh.i3plus.pojo.base.jpa.dao.BaseRepository; +import cn.estsh.i3plus.pojo.platform.bean.SysUser; import cn.estsh.i3plus.pojo.platform.bean.SysUserPassword; import cn.estsh.i3plus.pojo.platform.repository.SysUserPasswordRepository; import cn.estsh.impp.framework.base.service.CrudService; +import cn.estsh.impp.framework.boot.auth.AuthUtil; +import cn.estsh.impp.framework.boot.exception.ImppExceptionBuilder; +import cn.estsh.impp.framework.boot.util.ValidatorBean; +import org.apache.commons.collections.CollectionUtils; +import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Primary; import org.springframework.stereotype.Service; +import java.util.List; + /** * @Description : * @Reference : @@ -23,10 +37,53 @@ public class SysUserSavePasswordService extends CrudService imp @Autowired private SysUserPasswordRepository userPasswordRDao; + @Autowired + private ISysUserService userService; @Override public BaseRepository getRepository() { return userPasswordRDao; } + @Override + public void updatePassword(Long userId, String password, String newPwd) { + SysUser user = userService.getSysUserById(userId); + ValidatorBean.checkNotNull(user,"不存在的用户信息"); + + SysUserPassword userPassword = userPasswordRDao.getById(user.getUserLoginPasswordId()); + ValidatorBean.checkNotNull(userPassword,"不存在的用户密码信息"); + if(StringUtils.equals(userPassword.getUserPassword(),password)){ + throw ImppExceptionBuilder.newInstance() + .setSystemID(CommonEnumUtil.SOFT_TYPE.CORE.getCode()) + .setErrorCode(ImppExceptionEnum.NOT_CONFIG_EXCEPTION.getCode()) + .setErrorDetail("原始密码错误") + .setErrorSolution("请重新操作") + .build(); + } + + updatePassword(userId, newPwd); + } + + @Override + public void updatePassword(Long userId, String password) { + SysUser user = userService.getSysUserById(userId); + ValidatorBean.checkNotNull(user,"不存在的用户信息"); + + userPasswordRDao.updateByProperties( + new String[]{"userId","isDeleted"}, + new Object[]{user.getId(),CommonEnumUtil.IS_DEAL.NO.getValue()}, + new String[]{"isDeleted","modifyDatetime","modifyUser"}, + new Object[]{ + CommonEnumUtil.IS_DEAL.YES.getValue(), TimeTool.getNowTime(true), AuthUtil.getSessionUser().getUserName()}); + + SysUserPassword pwd = new SysUserPassword(); + pwd.setUserId(userId); + pwd.setUserPassword(SysUserPasswordUtil.encoder(password)); + ConvertBean.serviceModelInitialize(pwd,AuthUtil.getSessionUser()); + SysUserPassword save = userPasswordRDao.save(pwd); + + user.setUserLoginPasswordId(save.getId()); + ConvertBean.serviceModelUpdate(user,AuthUtil.getSessionUser().getUserName()); + userService.updateSysUser(user); + } } diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysUserService.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysUserService.java index d03048c..980ae07 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysUserService.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysUserService.java @@ -2,6 +2,7 @@ package cn.estsh.i3plus.core.apiservice.serviceimpl.busi; import cn.estsh.i3plus.core.api.iservice.busi.*; import cn.estsh.i3plus.core.apiservice.dao.IUserPermissionDao; +import cn.estsh.i3plus.core.apiservice.util.SysUserPasswordUtil; import cn.estsh.i3plus.platform.common.convert.ConvertBean; import cn.estsh.i3plus.platform.common.tool.EncryptTool; import cn.estsh.i3plus.platform.common.tool.StringTool; @@ -26,6 +27,7 @@ import cn.estsh.impp.framework.boot.exception.ImppExceptionBuilder; import cn.estsh.i3plus.platform.common.exception.ImppExceptionEnum; import cn.estsh.impp.framework.boot.util.ImppRedis; import cn.estsh.impp.framework.boot.util.RedisCacheTool; +import cn.estsh.impp.framework.boot.util.ValidatorBean; import io.swagger.annotations.ApiOperation; import org.apache.commons.collections.CollectionUtils; import org.apache.commons.lang3.StringUtils; @@ -122,6 +124,11 @@ public class SysUserService implements ISysUserService { @Autowired private ISysFileService fileService; + @Autowired + private SysUserPasswordUtil passwordUtil; + + @Autowired ISysUserPasswordService userPasswordService; + @Resource(name = CommonConstWords.IMPP_REDIS_RES) private ImppRedis redisRes; @@ -207,7 +214,7 @@ public class SysUserService implements ISysUserService { @Override @ApiOperation(value = "修改账号", notes = "修改账号信息") - public void updateSysUser(SysUser sysUser) throws Exception{ + public void updateSysUser(SysUser sysUser) { LOGGER.debug("平台用户 SYS_USER SysUser :{}", sysUser); userRDao.save(sysUser); } @@ -217,27 +224,35 @@ public class SysUserService implements ISysUserService { public void updateSysUserPassword(Long userId, String password, String newPwd) throws Exception { LOGGER.debug("平台用户 SYS_USER Override:{} password:{} newPwd:{}", userId,password,newPwd); SysUser user = userRDao.getById(userId); - if(user != null){ - String pwdMd5 = EncryptTool.hexMD5(password); - if(pwdMd5.equals(user.getUserLoginPassword())){ - user.setUserLoginPassword(EncryptTool.hexMD5(newPwd)); - userRDao.save(user); - }else { - throw ImppExceptionBuilder.newInstance() - .setSystemID(CommonEnumUtil.SOFT_TYPE.CORE.getCode()) - .setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode()) - .setErrorDetail("旧密码错误") - .setErrorSolution("请重新输入") - .build(); - } - }else { - throw ImppExceptionBuilder.newInstance() - .setSystemID(CommonEnumUtil.SOFT_TYPE.CORE.getCode()) - .setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION_DATA_NOT_EXIT.getCode()) - .setErrorDetail("用户不存在") - .setErrorSolution("请重新操作") - .build(); - } + ValidatorBean.checkNotNull(user,"用户不存在"); + + user.setUserLoginPassword(newPwd); + passwordUtil.checkPasswordSave(user); + + userPasswordService.update(null); + + +// if(user != null){ +// String pwdMd5 = EncryptTool.hexMD5(password); +// if(pwdMd5.equals(user.getUserLoginPassword())){ +// user.setUserLoginPassword(EncryptTool.hexMD5(newPwd)); +// userRDao.save(user); +// }else { +// throw ImppExceptionBuilder.newInstance() +// .setSystemID(CommonEnumUtil.SOFT_TYPE.CORE.getCode()) +// .setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode()) +// .setErrorDetail("旧密码错误") +// .setErrorSolution("请重新输入") +// .build(); +// } +// }else { +// throw ImppExceptionBuilder.newInstance() +// .setSystemID(CommonEnumUtil.SOFT_TYPE.CORE.getCode()) +// .setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION_DATA_NOT_EXIT.getCode()) +// .setErrorDetail("用户不存在") +// .setErrorSolution("请重新操作") +// .build(); +// } } @Override diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/util/SysUserPasswordUtil.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/util/SysUserPasswordUtil.java new file mode 100644 index 0000000..0b7f1d8 --- /dev/null +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/util/SysUserPasswordUtil.java @@ -0,0 +1,505 @@ +package cn.estsh.i3plus.core.apiservice.util; + +import cn.estsh.i3plus.core.api.iservice.busi.ISysUserPasswordService; +import cn.estsh.i3plus.core.api.iservice.busi.ISysUserService; +import cn.estsh.i3plus.platform.common.exception.ImppExceptionEnum; +import cn.estsh.i3plus.platform.common.tool.EncryptTool; +import cn.estsh.i3plus.platform.common.tool.TimeTool; +import cn.estsh.i3plus.platform.common.util.CommonConstWords; +import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil; +import cn.estsh.i3plus.pojo.platform.bean.SysUser; +import cn.estsh.i3plus.pojo.platform.bean.SysUserPassword; +import cn.estsh.impp.framework.boot.exception.ImppBusiException; +import cn.estsh.impp.framework.boot.exception.ImppExceptionBuilder; +import cn.estsh.impp.framework.boot.util.*; +import org.apache.commons.collections.CollectionUtils; +import org.apache.commons.lang3.StringUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Lazy; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; +import javax.naming.NamingException; +import javax.naming.ldap.LdapContext; +import java.io.UnsupportedEncodingException; +import java.security.NoSuchAlgorithmException; +import java.util.List; +import java.util.Objects; +import java.util.regex.Pattern; + +/** + * @Description : + * @Reference : + * @Author : wei.peng + * @CreateDate : 20-6-8 上午10:10 + * @Modify: + **/ +@Component +public class SysUserPasswordUtil { + public static final Logger LOGGER = LoggerFactory.getLogger(SysUserPasswordUtil.class); + + @Autowired + private ISysUserPasswordService userPasswordService; + + @Lazy + @Autowired + private ISysUserService userService; + + @Resource(name = CommonConstWords.IMPP_REDIS_CORE) + protected ImppRedis redisCore; + + /** + * 密码加密 返回加密信息 + * @param password + * @return + */ + public static final String encoder(String password){ + try { + return EncryptTool.hexMD5(password); + } catch (NoSuchAlgorithmException e) { + e.printStackTrace(); + } catch (UnsupportedEncodingException e) { + e.printStackTrace(); + } + + throw ImppExceptionBuilder.newInstance() + .setSystemID(CommonEnumUtil.SOFT_TYPE.CORE.getCode()) + .setErrorCode(ImppExceptionEnum.NOT_CONFIG_EXCEPTION.getCode()) + .setErrorDetail("密码加密失败") + .setErrorSolution("请重新操作") + .build(); + } + + /******************************************** 用户保存密码检查 ********************************************/ + + public void checkPasswordSave(SysUser user) { + /* 密码 长度校验 */ + checkPasswordLength(user.getUserLoginPassword()); + /* 密码 大写字母校验 */ + checkPasswordUppercaseEnglish(user.getUserLoginPassword()); + /* 密码 小写字母校验 */ + checkPasswordlowerEnglish(user.getUserLoginPassword()); + /* 密码 数字校验 */ + checkPasswordNumber(user.getUserLoginPassword()); + /* 密码 特殊字符校验 */ + checkPasswordSpecial(user.getUserLoginPassword()); + /* 密码 重复使用校验 */ + checkPasswordRepeatDay(user); + /* 密码 密码正则校验 */ + checkPasswordRepeat(user.getUserLoginPassword()); + } + + /** + * 密码长度检查 + * + * @param content + */ + private void checkPasswordLength(String content) { + int length = RedisCacheTool.getSysConfigIntVal(CommonConstWords.CONFIG_PWD_LENGTH, CommonConstWords.CONFIG_PWD_LENGTH_DEFAULT); + + if (StringUtils.isBlank(content) || StringUtils.length(content) < length) { + throw ImppExceptionBuilder.newInstance() + .setSystemID(CommonEnumUtil.SOFT_TYPE.CORE.getCode()) + .setErrorCode(ImppExceptionEnum.NOT_CONFIG_EXCEPTION.getCode()) + .setErrorDetail("长度不够" + length + "位") + .setErrorSolution("请重新输入") + .build(); + } + } + + /** + * 密码 大写字母检查 + * + * @param content + */ + private void checkPasswordUppercaseEnglish(String content) { + boolean isUppercaseEnglish = RedisCacheTool.getSysConfigBooleanVal(CommonConstWords.CONFIG_PWD_EXIST_UPPERCASE_ENGLISH, CommonEnumUtil.TRUE_OR_FALSE.FALSE); + + if (StringUtils.isNotBlank(content) && isUppercaseEnglish) { + char[] chars = content.toCharArray(); + int num = 0; + + for (char ch : chars) { + // Chart ASCLL 编码比对 A-Z + if (ch >= 65 && ch <= 90) { + ++num; + } + } + + if (num <= 0) { + throw ImppExceptionBuilder.newInstance() + .setSystemID(CommonEnumUtil.SOFT_TYPE.CORE.getCode()) + .setErrorCode(ImppExceptionEnum.NOT_CONFIG_EXCEPTION.getCode()) + .setErrorDetail("必须包含大写英文") + .setErrorSolution("请重新输入") + .build(); + } + } + } + + /** + * 密码 小写字母检查 + * + * @param content + */ + private void checkPasswordlowerEnglish(String content) { + boolean isUppercaseEnglish = RedisCacheTool.getSysConfigBooleanVal(CommonConstWords.CONFIG_PWD_EXIST_LOWER_ENGLISH, CommonEnumUtil.TRUE_OR_FALSE.FALSE); + + if (StringUtils.isNotBlank(content) && isUppercaseEnglish) { + char[] chars = content.toCharArray(); + int num = 0; + + for (char ch : chars) { + // Chart ASCLL 编码比对 a-z + if (ch >= 97 && ch <= 122) { + ++num; + } + } + + if (num <= 0) { + throw ImppExceptionBuilder.newInstance() + .setSystemID(CommonEnumUtil.SOFT_TYPE.CORE.getCode()) + .setErrorCode(ImppExceptionEnum.NOT_CONFIG_EXCEPTION.getCode()) + .setErrorDetail("必须包含小写英文") + .setErrorSolution("请重新输入") + .build(); + } + } + } + + /** + * 密码 数字检查 + * + * @param content + */ + private void checkPasswordNumber(String content) { + boolean isUppercaseEnglish = RedisCacheTool.getSysConfigBooleanVal(CommonConstWords.CONFIG_PWD_EXIST_NUMBER, CommonEnumUtil.TRUE_OR_FALSE.FALSE); + + if (StringUtils.isNotBlank(content) && isUppercaseEnglish) { + char[] chars = content.toCharArray(); + int num = 0; + + for (char ch : chars) { + // Chart ASCLL 编码比对 0-9 + if (ch >= 48 && ch <= 57) { + ++num; + } + } + + if (num <= 0) { + throw ImppExceptionBuilder.newInstance() + .setSystemID(CommonEnumUtil.SOFT_TYPE.CORE.getCode()) + .setErrorCode(ImppExceptionEnum.NOT_CONFIG_EXCEPTION.getCode()) + .setErrorDetail("必须包含数字") + .setErrorSolution("请重新输入") + .build(); + } + } + } + + /** + * 密码 特殊字符检查 + * + * @param content + */ + private void checkPasswordSpecial(String content) { + boolean isUppercaseEnglish = RedisCacheTool.getSysConfigBooleanVal(CommonConstWords.CONFIG_PWD_EXIST_NUMBER, CommonEnumUtil.TRUE_OR_FALSE.FALSE); + + if (StringUtils.isNotBlank(content) && isUppercaseEnglish) { + char[] chars = content.toCharArray(); + int num = 0; + + for (char ch : chars) { + // Chart ASCLL 编码比对 特殊字符 + if ((ch >= 32 && ch <= 47)|| (ch >= 58 && ch <= 64)|| + (ch >= 91 && ch <= 96)|| (ch >= 123 && ch <= 126)) { + ++num; + } + } + + if (num <= 0) { + throw ImppExceptionBuilder.newInstance() + .setSystemID(CommonEnumUtil.SOFT_TYPE.CORE.getCode()) + .setErrorCode(ImppExceptionEnum.NOT_CONFIG_EXCEPTION.getCode()) + .setErrorDetail("必须包含数字") + .setErrorSolution("请重新输入") + .build(); + } + } + } + + /** + * 密码 中文字符检查 + * + * @param content + */ + private void checkPasswordSpecialCn(String content) { + boolean isUppercaseEnglish = RedisCacheTool.getSysConfigBooleanVal(CommonConstWords.CONFIG_PWD_EXIST_SPECIAL_CHAR, CommonEnumUtil.TRUE_OR_FALSE.FALSE); + + if (StringUtils.isNotBlank(content) && isUppercaseEnglish) { + if (!Pattern.compile("[\u4e00-\u9fa5]").matcher(content).find()) { + throw ImppExceptionBuilder.newInstance() + .setSystemID(CommonEnumUtil.SOFT_TYPE.CORE.getCode()) + .setErrorCode(ImppExceptionEnum.NOT_CONFIG_EXCEPTION.getCode()) + .setErrorDetail("必须包含中文字符") + .setErrorSolution("请重新输入") + .build(); + } + } + } + + /** + * 近期密码重复检查 + * + * @param user + */ + private void checkPasswordRepeatDay(SysUser user) { + int num = RedisCacheTool.getSysConfigIntVal(CommonConstWords.CONFIG_PWD_REPEAT_DAY, CommonConstWords.CONFIG_PWD_REPEAT_DAY_DEFAULT); + if (num > 0) { + try { + SysUserPassword userPassword = new SysUserPassword(); + userPassword.setUserId(user.getId()); + userPassword.setUserPassword(EncryptTool.hexMD5(user.getUserLoginPassword())); + + List passwords = userPasswordService.findAllByBean(userPassword); + + int lastDay = Integer.MAX_VALUE; + if (CollectionUtils.isNotEmpty(passwords)) { + for (SysUserPassword password : passwords) { + int day = TimeTool.getSecoundsBetweenTime(4, password.getCreateDatetime(), TimeTool.getNowTime(true)); + if (day < lastDay) { + lastDay = day; + } + } + } + + if (lastDay <= num) { + throw ImppExceptionBuilder.newInstance() + .setSystemID(CommonEnumUtil.SOFT_TYPE.CORE.getCode()) + .setErrorCode(ImppExceptionEnum.NOT_CONFIG_EXCEPTION.getCode()) + .setErrorDetail("请勿使用重复密码") + .setErrorSolution("请重新输入") + .build(); + } + } catch (Exception e) { + e.printStackTrace(); + LOGGER.error("密码加密错误,异常信息:{}", e.getMessage()); + } + } + } + + /** + * 密码 正则表达式教研 + * + * @param content + */ + private void checkPasswordRepeat(String content) { + String regulars = RedisCacheTool.getSysConfigStrVal(CommonConstWords.CONFIG_PWD_REPEAT_REGULARS); + + if (StringUtils.isNotBlank(regulars) && regulars.indexOf(",") != -1) { + String[] split = regulars.split(","); + + try { + for (String compile : split) { + if(StringUtils.isNotBlank(compile)){ + if (!Pattern.compile(compile).matcher(content).find()) { + throw ImppExceptionBuilder.newInstance() + .setSystemID(CommonEnumUtil.SOFT_TYPE.CORE.getCode()) + .setErrorCode(ImppExceptionEnum.NOT_CONFIG_EXCEPTION.getCode()) + .setErrorDetail("正则【"+compile+"】密码校验不通过") + .setErrorSolution("请重新输入") + .build(); + } + } + } + }catch (ImppBusiException e){ + // 业务异常 抛出 + throw e; + }catch (Exception e){ + e.printStackTrace(); + } + } + } + + + + /******************************************** 用户登录密码检查 ********************************************/ + public void checkSysUserLogin(SysUser user) { + if(ImppSwitchUtil.isLoginActiveDirectory()){ + // 使用AD域账号登录 + checkActiveDirectory(user); + }else{ + /* 检查密码有效期 */ + checkLoginPasswordTimeOut(user); + /* 登录 长时间未登录锁定 */ + checkLoginTimeOut(user); + } + } + + /** + * 账号 ActiveDirectory 登录集成 + * @param user + */ + public void checkActiveDirectory(SysUser user) { + if(ImppSwitchUtil.isLoginActiveDirectory()){ + String activeDirectoryUrl = RedisCacheTool.getSysConfigStrVal(CommonConstWords.CONFIG_PWD_ACTIVE_DIRECTORY_URL); + + if (StringUtils.isNotBlank(activeDirectoryUrl)) { + LdapContext context = ImppLdapUtils.getLdapContext(activeDirectoryUrl, user.getUserLoginName(), user.getUserLoginPassword()); + if(Objects.isNull(context)){ + throw ImppExceptionBuilder.newInstance() + .setSystemID(CommonEnumUtil.SOFT_TYPE.CORE.getCode()) + .setErrorCode(ImppExceptionEnum.NOT_CONFIG_EXCEPTION.getCode()) + .setErrorDetail("ActiveDirectory 登录失败请重新登录") + .setErrorSolution("请重新操作") + .build(); + } + + try { + // 释放链接资源 + context.close(); + } catch (NamingException e) { + e.printStackTrace(); + } + }else{ + throw ImppExceptionBuilder.newInstance() + .setSystemID(CommonEnumUtil.SOFT_TYPE.CORE.getCode()) + .setErrorCode(ImppExceptionEnum.NOT_CONFIG_EXCEPTION.getCode()) + .setErrorDetail("ActiveDirectory 未配置链接地址") + .setErrorSolution("请联系管理员") + .build(); + } + } + } + + /** + * 登录 错误次数检查 + */ + public void checkLoginErrorNumber(String loginName, ResultBean resultBean, Exception e) { + SysUser user = userService.getSysUserByLoginName(loginName); + if(Objects.nonNull(user)){ + checkLoginErrorNumber(user.getId(), resultBean, e); + } + } + + /** + * 登录 失败次数检查 + * @param userId + * @param resultBean + * @param e + */ + public void checkLoginErrorNumber(Long userId, ResultBean resultBean, Exception e) { + int loginErrorNumberMax = RedisCacheTool.getSysConfigIntVal(CommonConstWords.CONFIG_USER_LOGIN_ERROR_NUMBER, CommonConstWords.CONFIG_USER_LOGIN_ERROR_NUMBER_DEFAULT); + String today = TimeTool.getToday(); + + int loginErrorNumber = 0; + String redisKey = CommonConstWords.USER_LOGIN_ERROR + ":" + today + ":" + userId; + try { + Object redisValue = redisCore.getObject(redisKey); + if(Objects.nonNull(redisValue)){ + loginErrorNumber = (Integer)redisValue; + } + }catch (Exception exception){ + LOGGER.error("获取登录异常次数错误,错误信息:{}", exception.getMessage()); + } + + if(Objects.equals(loginErrorNumberMax,loginErrorNumber)){ + // 锁定账号信息 + userService.doLockSysUserById(userId); + + throw ImppExceptionBuilder.newInstance() + .setSystemID(CommonEnumUtil.SOFT_TYPE.CORE.getCode()) + .setErrorCode(ImppExceptionEnum.NOT_CONFIG_EXCEPTION.getCode()) + .setErrorDetail("账号已被锁定") + .setErrorSolution("请联系系统管理员") + .build(); + }else if(loginErrorNumber > loginErrorNumberMax){ + throw ImppExceptionBuilder.newInstance() + .setSystemID(CommonEnumUtil.SOFT_TYPE.CORE.getCode()) + .setErrorCode(ImppExceptionEnum.NOT_CONFIG_EXCEPTION.getCode()) + .setErrorDetail("账号已锁定") + .setErrorSolution("请联系系统管理员") + .build(); + } + + // 登录异常 更新登录失败次数 + if(Objects.nonNull(e)){ + ++loginErrorNumber; + + if(Objects.nonNull(resultBean)){ + int num = loginErrorNumberMax - loginErrorNumber; + if(num == 0){ + resultBean.setErrorMsg(resultBean.getErrorMsg() + "密码输入错误。用户已被锁定请联系管理员!"); + }else{ + resultBean.setErrorMsg(resultBean.getErrorMsg() + "密码输入错误。再输入错误"+ num +"次,用户将被锁定"); + } + } + + redisCore.putObject(redisKey,loginErrorNumber,CommonConstWords.REDIS_TIME_DAY_ONE); + } + } + + /** + * 登录 检查密码有效期 + */ + private void checkLoginPasswordTimeOut(SysUser user) { + try { + int passwordDayMax = RedisCacheTool.getSysConfigIntVal(CommonConstWords.CONFIG_PWD_VALID_DAY, CommonConstWords.CONFIG_PWD_VALID_DAY_DEFAULT); + if(passwordDayMax > 0){ + + SysUserPassword password = userPasswordService.get(user.getUserLoginPasswordId()); + if(Objects.nonNull(password)){ + int day = TimeTool.getSecoundsBetweenTime(4, password.getCreateDatetime(), TimeTool.getNowTime(true)); + if(day > passwordDayMax){ + // 锁定账号信息 + userService.doLockSysUserById(user.getId()); + + throw ImppExceptionBuilder.newInstance() + .setSystemID(CommonEnumUtil.SOFT_TYPE.CORE.getCode()) + .setErrorCode(ImppExceptionEnum.NOT_CONFIG_EXCEPTION.getCode()) + .setErrorDetail("账号密码已过期") + .setErrorSolution("请联系系统管理员") + .build(); + } + } + } + }catch (ImppBusiException e){ + throw e; + }catch (Exception e){ + LOGGER.error("密码有效期处理异常,异常信息:{}", e.getMessage()); + e.printStackTrace(); + } + } + + /** + * 登录 长时间未登录锁定 + */ + private void checkLoginTimeOut(SysUser user) { + try { + int loginDayMax = RedisCacheTool.getSysConfigIntVal(CommonConstWords.CONFIG_USER_LOGIN_DAY_OUT, CommonConstWords.CONFIG_USER_LOGIN_DAY_OUT_DEFAULT); + if(loginDayMax > 0){ + + int day = TimeTool.getSecoundsBetweenTime(4, user.getUserLoginLastDateTime(), TimeTool.getNowTime(true)); + if(day > loginDayMax){ + // 锁定账号信息 + userService.doLockSysUserById(user.getId()); + + throw ImppExceptionBuilder.newInstance() + .setSystemID(CommonEnumUtil.SOFT_TYPE.CORE.getCode()) + .setErrorCode(ImppExceptionEnum.NOT_CONFIG_EXCEPTION.getCode()) + .setErrorDetail("长时间未登录账号已被锁定") + .setErrorSolution("请联系系统管理员") + .build(); + } + } + }catch (ImppBusiException e){ + throw e; + }catch (Exception e){ + LOGGER.error("密码有效期处理异常,异常信息:{}", e.getMessage()); + e.printStackTrace(); + } + } + +} From c2d90f06e22674d0bfc58bcdcbb2807084027346 Mon Sep 17 00:00:00 2001 From: "wei.peng" <123456> Date: Tue, 16 Jun 2020 12:41:54 +0800 Subject: [PATCH 11/12] =?UTF-8?q?=E6=97=A5=E5=BF=97=E9=85=8D=E7=BD=AE?= =?UTF-8?q?=E8=B0=83=E6=95=B4=20,=20Core=20=E9=85=8D=E7=BD=AE=E6=96=87?= =?UTF-8?q?=E4=BB=B6=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/resources/application-dev.properties | 5 +- .../application-docker-yfas-nd.properties | 153 ++-- .../main/resources/application-docker.properties | 5 +- .../src/main/resources/application-prod.properties | 153 ++-- .../src/main/resources/application-test.properties | 201 ------ .../src/main/resources/application.properties | 2 +- .../src/main/resources/log4j2-spring-dev.xml | 7 + .../src/main/resources/log4j2-spring.xml | 2 +- .../core/apiservice/serviceimpl/busi/TestBase.java | 56 +- .../core/apiservice/serviceimpl/busi/TestUser.java | 773 ++------------------- 10 files changed, 257 insertions(+), 1100 deletions(-) delete mode 100644 modules/i3plus-core-apiservice/src/main/resources/application-test.properties diff --git a/modules/i3plus-core-apiservice/src/main/resources/application-dev.properties b/modules/i3plus-core-apiservice/src/main/resources/application-dev.properties index 5e24b27..3580943 100644 --- a/modules/i3plus-core-apiservice/src/main/resources/application-dev.properties +++ b/modules/i3plus-core-apiservice/src/main/resources/application-dev.properties @@ -18,8 +18,9 @@ impp.config.rabbitmq=true impp.config.swagger=true #\u662F\u5426\u5F00\u542Fwebsocket impp.config.websocket=true -#\u662F\u5426\u5F00\u542F\u6587\u4EF6\u670D\u52A1 -impp.config.fastdfs=true +# \u662F\u5426\u5F00\u542F\u6587\u4EF6\u670D\u52A1 +# \u9ED8\u8BA4false ,\u53EF\u9009\u9879\uFF1Afastdfs\uFF0Cgofastdfs +impp.config.fileserver=fastdfs #\u662F\u5426\u5BF9\u53D1\u5E03\u670D\u52A1\u8FDB\u884C\u8BE6\u7EC6\u65E5\u5FD7\u5206\u6790 impp.log.detail.controller=true #\u662F\u5426\u5BF9\u8C03\u7528\u670D\u52A1\u8FDB\u884C\u8BE6\u7EC6\u65E5\u5FD7\u5206\u6790 diff --git a/modules/i3plus-core-apiservice/src/main/resources/application-docker-yfas-nd.properties b/modules/i3plus-core-apiservice/src/main/resources/application-docker-yfas-nd.properties index 79d909c..eb1706c 100644 --- a/modules/i3plus-core-apiservice/src/main/resources/application-docker-yfas-nd.properties +++ b/modules/i3plus-core-apiservice/src/main/resources/application-docker-yfas-nd.properties @@ -1,49 +1,50 @@ -#本机ip +#\u672C\u673Aip impp.server.ip=imppcore -#项目端口 +#\u9879\u76EE\u7AEF\u53E3 server.port=8100 -#链路追踪zipkin控制台ip地址 +#\u94FE\u8DEF\u8FFD\u8E2Azipkin\u63A7\u5236\u53F0ip\u5730\u5740 impp.console.ip=http://console:8010 -#服务注册中心(多注册中心逗号分隔) +#\u670D\u52A1\u6CE8\u518C\u4E2D\u5FC3(\u591A\u6CE8\u518C\u4E2D\u5FC3\u9017\u53F7\u5206\u9694) impp.cluster.regist.center=http://register:8000/eureka/ -#日志默认使用log4j2 +#\u65E5\u5FD7\u9ED8\u8BA4\u4F7F\u7528log4j2 logging.config=classpath:log4j2-spring.xml -########平台相关参数########## -#是否开启redis缓存 +########\u5E73\u53F0\u76F8\u5173\u53C2\u6570########## +#\u662F\u5426\u5F00\u542Fredis\u7F13\u5B58 impp.config.redis=true -#是否开启rabbitMQ +#\u662F\u5426\u5F00\u542FrabbitMQ impp.config.rabbitmq=true -#是否开启swagger +#\u662F\u5426\u5F00\u542Fswagger impp.config.swagger=true -#是否开启websocket +#\u662F\u5426\u5F00\u542Fwebsocket impp.config.websocket=true -#是否开启文件服务 -impp.config.fastdfs=true -#是否对发布服务进行详细日志分析 +#\u662F\u5426\u5F00\u542F\u6587\u4EF6\u670D\u52A1 +# \u9ED8\u8BA4false ,\u53EF\u9009\u9879\uFF1Afastdfs\uFF0Cgofastdfs +impp.config.fileserver=fastdfs +#\u662F\u5426\u5BF9\u53D1\u5E03\u670D\u52A1\u8FDB\u884C\u8BE6\u7EC6\u65E5\u5FD7\u5206\u6790 impp.log.detail.controller=true -#是否对调用服务进行详细日志分析 +#\u662F\u5426\u5BF9\u8C03\u7528\u670D\u52A1\u8FDB\u884C\u8BE6\u7EC6\u65E5\u5FD7\u5206\u6790 impp.log.detail.service=true -#是否开启微服 +#\u662F\u5426\u5F00\u542F\u5FAE\u670D eureka.client.enabled=true -#打开feign的熔断 +#\u6253\u5F00feign\u7684\u7194\u65AD feign.hystrix.enabled=true -################ 队列处理 ################ -#站内信 +################ \u961F\u5217\u5904\u7406 ################ +#\u7AD9\u5185\u4FE1 impp.mq.queue.letter=true -#邮件 +#\u90AE\u4EF6 impp.mq.queue.mail=true -#定时任务 +#\u5B9A\u65F6\u4EFB\u52A1 impp.mq.queue.schedule=true -#SWEB通知处理队列 +#SWEB\u901A\u77E5\u5904\u7406\u961F\u5217 impp.mq.queue.sweb.notice=true -################################ 数据库相关设置 ################################ +################################ \u6570\u636E\u5E93\u76F8\u5173\u8BBE\u7F6E ################################ # mysql spring.datasource.validationQuery=SELECT 1 -################ 数据池设置 ################ +################ \u6570\u636E\u6C60\u8BBE\u7F6E ################ spring.datasource.maximum-pool-size=10 spring.datasource.max-active=5 spring.datasource.max-idle=5 @@ -55,7 +56,7 @@ spring.datasource.test-on-borrow=false spring.datasource.test-while-idle=true spring.datasource.time-between-eviction-runs-millis=300000 -##主数据源,读写 +##\u4E3B\u6570\u636E\u6E90\uFF0C\u8BFB\u5199 #impp.write.datasource.type=com.zaxxer.hikari.HikariDataSource impp.write.datasource.driver-class-name=com.mysql.jdbc.Driver impp.write.datasource.jdbc-url=jdbc:mysql://dbmaster:3306/impp_i3_core?autoReconnect=true&useSSL=false&characterEncoding=utf-8 @@ -63,13 +64,13 @@ impp.write.datasource.username=wmslogin impp.write.datasource.password=Wmslogin$%^&7654 #impp.read.datasource.type=com.zaxxer.hikari.HikariDataSource -#主从复制时自动修改表结构会有问题,暂时改成同一个数据源 +#\u4E3B\u4ECE\u590D\u5236\u65F6\u81EA\u52A8\u4FEE\u6539\u8868\u7ED3\u6784\u4F1A\u6709\u95EE\u9898\uFF0C\u6682\u65F6\u6539\u6210\u540C\u4E00\u4E2A\u6570\u636E\u6E90 impp.read.datasource.driver-class-name=com.mysql.jdbc.Driver impp.read.datasource.jdbc-url=jdbc:mysql://dbmaster:3306/impp_i3_core?autoReconnect=true&useSSL=false&characterEncoding=utf-8 impp.read.datasource.username=wmslogin impp.read.datasource.password=Wmslogin$%^&7654 -##############定时任务持久化############## +##############\u5B9A\u65F6\u4EFB\u52A1\u6301\u4E45\u5316############## impp.schedule.open=true impp.schedule.datasource.driver-class-name=com.mysql.jdbc.Driver impp.schedule.datasource.jdbc-url=jdbc:mysql://dbmaster:3306/impp_i3_schedule?autoReconnect=true&useSSL=false&characterEncoding=utf-8 @@ -77,121 +78,121 @@ impp.schedule.datasource.username=wmslogin impp.schedule.datasource.password=Wmslogin$%^&7654 impp.schedule.datasource.max-connections=50 -################ 日志数据源 ################ +################ \u65E5\u5FD7\u6570\u636E\u6E90 ################ spring.data.mongodb.database=mongoDBSource spring.data.mongodb.uri=mongodb:27017 spring.data.mongodb.username=sa spring.data.mongodb.password=i3plus spring.data.mongodb.port=27017 -################ JPA设置设置 ################ +################ JPA\u8BBE\u7F6E\u8BBE\u7F6E ################ # mysql spring.jpa.database=MYSQL spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL5InnoDBDialect -#是否显示sql +#\u662F\u5426\u663E\u793Asql spring.jpa.show-sql=true -#表关系create,create-drop,update,validate +#\u8868\u5173\u7CFBcreate,create-drop,update,validate spring.jpa.properties.hibernate.hbm2ddl.auto=update -#定时任务在服务启动后多少秒执行 +#\u5B9A\u65F6\u4EFB\u52A1\u5728\u670D\u52A1\u542F\u52A8\u540E\u591A\u5C11\u79D2\u6267\u884C impp.schedule.start.after-second=20 -#是否集群部署 +#\u662F\u5426\u96C6\u7FA4\u90E8\u7F72 impp.schedule.datasource.is-clustered=true -#执行检测(毫秒),若宕机由其他定时器执行 +#\u6267\u884C\u68C0\u6D4B\uFF08\u6BEB\u79D2\uFF09\uFF0C\u82E5\u5B95\u673A\u7531\u5176\u4ED6\u5B9A\u65F6\u5668\u6267\u884C impp.schedule.datasource.cluster-checkin-interval=30000 -#线程数 +#\u7EBF\u7A0B\u6570 impp.schedule.thread-count=50 -#线程优先级(1-10)默认为5 +#\u7EBF\u7A0B\u4F18\u5148\u7EA7\uFF081-10\uFF09\u9ED8\u8BA4\u4E3A5 impp.schedule.thread-priority=5 -################################ 其他功能设置 ################################ +################################ \u5176\u4ED6\u529F\u80FD\u8BBE\u7F6E ################################ #redisIP redis.hostName=redis -#端口号 +#\u7AEF\u53E3\u53F7 redis.port=6379 -#如果有密码 +#\u5982\u679C\u6709\u5BC6\u7801 redis.password= -##其他redis配置需要调整的加在此处 -################## rabbitMQ配置 #################### +##\u5176\u4ED6redis\u914D\u7F6E\u9700\u8981\u8C03\u6574\u7684\u52A0\u5728\u6B64\u5904 +################## rabbitMQ\u914D\u7F6E #################### spring.rabbitmq.vhost=/ spring.rabbitmq.host=rabbitmq spring.rabbitmq.port=5672 spring.rabbitmq.username=estsh spring.rabbitmq.password=estsh123 -##其他rabbitMq配置需要调整的加在此处 +##\u5176\u4ED6rabbitMq\u914D\u7F6E\u9700\u8981\u8C03\u6574\u7684\u52A0\u5728\u6B64\u5904 -################ 微服配置 ################ -#是否进行健康检查 +################ \u5FAE\u670D\u914D\u7F6E ################ +#\u662F\u5426\u8FDB\u884C\u5065\u5EB7\u68C0\u67E5 eureka.client.healthcheck.enabled=true -#若无法连接注册中心,是否需要一直检测加入 +#\u82E5\u65E0\u6CD5\u8FDE\u63A5\u6CE8\u518C\u4E2D\u5FC3\uFF0C\u662F\u5426\u9700\u8981\u4E00\u76F4\u68C0\u6D4B\u52A0\u5165 impp.cluster.fetch=true -#集群名 +#\u96C6\u7FA4\u540D eureka.instance.metadata-map.cluster=impp_cluster -#(参数配置)注册中心地址 -》 i3plus-ics,多个用逗号分隔 +#\uFF08\u53C2\u6570\u914D\u7F6E\uFF09\u6CE8\u518C\u4E2D\u5FC3\u5730\u5740 -\u300B i3plus-ics\uFF0C\u591A\u4E2A\u7528\u9017\u53F7\u5206\u9694 eureka.client.service-url.defaultZone=${impp.cluster.regist.center} -#本服务主机ip(若多个网卡,则需要设置本服务ip) +#\u672C\u670D\u52A1\u4E3B\u673Aip\uFF08\u82E5\u591A\u4E2A\u7F51\u5361\uFF0C\u5219\u9700\u8981\u8BBE\u7F6E\u672C\u670D\u52A1ip\uFF09 eureka.instance.ip-address=${impp.server.ip} -#本服务实例ID +#\u672C\u670D\u52A1\u5B9E\u4F8BID eureka.instance.instance-id=${impp.server.ip}:${server.port} -#本服务主机名 +#\u672C\u670D\u52A1\u4E3B\u673A\u540D eureka.instance.hostname=${impp.server.ip} -#本服务状态页面 +#\u672C\u670D\u52A1\u72B6\u6001\u9875\u9762 eureka.instance.status-page-url=http://${impp.server.ip}:${server.port}/swagger-ui.html -#将自己的IP注册到Eureka Server。若不配置或设置为false,表示注册微服务所在操作系统的hostname到Eureka Server +#\u5C06\u81EA\u5DF1\u7684IP\u6CE8\u518C\u5230Eureka Server\u3002\u82E5\u4E0D\u914D\u7F6E\u6216\u8BBE\u7F6E\u4E3Afalse\uFF0C\u8868\u793A\u6CE8\u518C\u5FAE\u670D\u52A1\u6240\u5728\u64CD\u4F5C\u7CFB\u7EDF\u7684hostname\u5230Eureka Server eureka.instance.prefer-ip-address=true -################ 检测机制 ################ -#心跳间隔周期,宕机限制(秒),30秒没反应视为宕机 +################ \u68C0\u6D4B\u673A\u5236 ################ +#\u5FC3\u8DF3\u95F4\u9694\u5468\u671F\uFF0C\u5B95\u673A\u9650\u5236\uFF08\u79D2\uFF09\uFF0C30\u79D2\u6CA1\u53CD\u5E94\u89C6\u4E3A\u5B95\u673A eureka.instance.lease-expiration-duration-in-seconds=30 -#心跳周期 +#\u5FC3\u8DF3\u5468\u671F eureka.instance.lease-renewal-interval-in-seconds=20 -#client连接Eureka服务端后的空闲等待时间,默认为30 秒 +#client\u8FDE\u63A5Eureka\u670D\u52A1\u7AEF\u540E\u7684\u7A7A\u95F2\u7B49\u5F85\u65F6\u95F4\uFF0C\u9ED8\u8BA4\u4E3A30 \u79D2 eureka.client.eureka-connection-idle-timeout-seconds=1 -#最初复制实例信息到eureka服务器所需的时间(s),默认为40秒 +#\u6700\u521D\u590D\u5236\u5B9E\u4F8B\u4FE1\u606F\u5230eureka\u670D\u52A1\u5668\u6240\u9700\u7684\u65F6\u95F4\uFF08s\uFF09\uFF0C\u9ED8\u8BA4\u4E3A40\u79D2 eureka.client.initial-instance-info-replication-interval-seconds=1 -#间隔多长时间再次复制实例信息到eureka服务器,默认为30秒 +#\u95F4\u9694\u591A\u957F\u65F6\u95F4\u518D\u6B21\u590D\u5236\u5B9E\u4F8B\u4FE1\u606F\u5230eureka\u670D\u52A1\u5668\uFF0C\u9ED8\u8BA4\u4E3A30\u79D2 eureka.client.instance-info-replication-interval-seconds=1 -#从eureka服务器注册表中获取注册信息的时间间隔(s),默认为30秒 +#\u4ECEeureka\u670D\u52A1\u5668\u6CE8\u518C\u8868\u4E2D\u83B7\u53D6\u6CE8\u518C\u4FE1\u606F\u7684\u65F6\u95F4\u95F4\u9694\uFF08s\uFF09\uFF0C\u9ED8\u8BA4\u4E3A30\u79D2 eureka.client.registry-fetch-interval-seconds=1 -################ 熔断配置 ################ -#重试 +################ \u7194\u65AD\u914D\u7F6E ################ +#\u91CD\u8BD5 ribbon.maxAutoRetries=2 -#读取数据时长 +#\u8BFB\u53D6\u6570\u636E\u65F6\u957F ribbon.ReadTimeout=30000 -#连接时长 +#\u8FDE\u63A5\u65F6\u957F ribbon.ConnectTimeout=50000 -#响应超过时长,进行熔断(熔断超时需要大于读取时长及连接时长) +#\u54CD\u5E94\u8D85\u8FC7\u65F6\u957F\uFF0C\u8FDB\u884C\u7194\u65AD\uFF08\u7194\u65AD\u8D85\u65F6\u9700\u8981\u5927\u4E8E\u8BFB\u53D6\u65F6\u957F\u53CA\u8FDE\u63A5\u65F6\u957F\uFF09 hystrix.command.default.execution.isolation.thread.timeoutInMilliseconds=60000 -################ 链路追踪 ################ -#使用web方式传输信息 +################ \u94FE\u8DEF\u8FFD\u8E2A ################ +#\u4F7F\u7528web\u65B9\u5F0F\u4F20\u8F93\u4FE1\u606F spring.zipkin.sender.type=web -#链路追踪服务的地址 +#\u94FE\u8DEF\u8FFD\u8E2A\u670D\u52A1\u7684\u5730\u5740 spring.zipkin.base-url=${impp.console.ip} -#追踪深度,百分比,1是全部 +#\u8FFD\u8E2A\u6DF1\u5EA6\uFF0C\u767E\u5206\u6BD4\uFF0C1\u662F\u5168\u90E8 spring.sleuth.sampler.probability=1.0 -################ FastDfs 配置 ################ -#tracker服务器ip +################ FastDfs \u914D\u7F6E ################ +#tracker\u670D\u52A1\u5668ip fastdfs.tracker_servers=tracker:22122 -# tracker的http端口 +# tracker\u7684http\u7AEF\u53E3 fastdfs.http_tracker_http_port=22122 -# 使用自定义工具获取文件展示地址 +# \u4F7F\u7528\u81EA\u5B9A\u4E49\u5DE5\u5177\u83B7\u53D6\u6587\u4EF6\u5C55\u793A\u5730\u5740 fastdfs.http.ui.host=http://tracker:22122 -#密码 +#\u5BC6\u7801 #fastdfs.http.secret_key= -#连接超时 +#\u8FDE\u63A5\u8D85\u65F6 fastdfs.connect_timeout_in_seconds=10000 -#传输超时 +#\u4F20\u8F93\u8D85\u65F6 fastdfs.network_timeout_in_seconds=10000 fastdfs.charset=UTF-8 -# token 防盗链功能 +# token \u9632\u76D7\u94FE\u529F\u80FD fastdfs.http_anti_steal_token=no -################ 授权配置 ################ +################ \u6388\u6743\u914D\u7F6E ################ slm.api.password=4C9479EBEFA6FA6E232EF25EFA49C4D2 slm.app.id=10000 diff --git a/modules/i3plus-core-apiservice/src/main/resources/application-docker.properties b/modules/i3plus-core-apiservice/src/main/resources/application-docker.properties index 15cdde6..ab6bd48 100644 --- a/modules/i3plus-core-apiservice/src/main/resources/application-docker.properties +++ b/modules/i3plus-core-apiservice/src/main/resources/application-docker.properties @@ -18,8 +18,9 @@ impp.config.rabbitmq=true impp.config.swagger=true #\u662F\u5426\u5F00\u542Fwebsocket impp.config.websocket=true -#\u662F\u5426\u5F00\u542F\u6587\u4EF6\u670D\u52A1 -impp.config.fastdfs=true +# \u662F\u5426\u5F00\u542F\u6587\u4EF6\u670D\u52A1 +# \u9ED8\u8BA4false ,\u53EF\u9009\u9879\uFF1Afastdfs\uFF0Cgofastdfs +impp.config.fileserver=fastdfs #\u662F\u5426\u5BF9\u53D1\u5E03\u670D\u52A1\u8FDB\u884C\u8BE6\u7EC6\u65E5\u5FD7\u5206\u6790 impp.log.detail.controller=true #\u662F\u5426\u5BF9\u8C03\u7528\u670D\u52A1\u8FDB\u884C\u8BE6\u7EC6\u65E5\u5FD7\u5206\u6790 diff --git a/modules/i3plus-core-apiservice/src/main/resources/application-prod.properties b/modules/i3plus-core-apiservice/src/main/resources/application-prod.properties index e3633cd..609ef1e 100644 --- a/modules/i3plus-core-apiservice/src/main/resources/application-prod.properties +++ b/modules/i3plus-core-apiservice/src/main/resources/application-prod.properties @@ -1,49 +1,50 @@ -#本机ip +#\u672C\u673Aip impp.server.ip=192.168.1.241 -#项目端口 +#\u9879\u76EE\u7AEF\u53E3 server.port=18100 -#链路追踪zipkin控制台ip地址 +#\u94FE\u8DEF\u8FFD\u8E2Azipkin\u63A7\u5236\u53F0ip\u5730\u5740 impp.console.ip=http://192.168.1.241:18010 -#服务注册中心(多注册中心逗号分隔) +#\u670D\u52A1\u6CE8\u518C\u4E2D\u5FC3(\u591A\u6CE8\u518C\u4E2D\u5FC3\u9017\u53F7\u5206\u9694) impp.cluster.regist.center=http://192.168.1.241:18000/eureka/ -#日志默认使用log4j2 +#\u65E5\u5FD7\u9ED8\u8BA4\u4F7F\u7528log4j2 logging.config=classpath:log4j2-spring-prod.xml -########平台相关参数########## -#是否开启redis缓存 +########\u5E73\u53F0\u76F8\u5173\u53C2\u6570########## +#\u662F\u5426\u5F00\u542Fredis\u7F13\u5B58 impp.config.redis=true -#是否开启rabbitMQ +#\u662F\u5426\u5F00\u542FrabbitMQ impp.config.rabbitmq=true -#是否开启swagger +#\u662F\u5426\u5F00\u542Fswagger impp.config.swagger=true -#是否开启websocket +#\u662F\u5426\u5F00\u542Fwebsocket impp.config.websocket=true -#是否开启文件服务 -impp.config.fastdfs=true -#是否对发布服务进行详细日志分析 +#\u662F\u5426\u5F00\u542F\u6587\u4EF6\u670D\u52A1 +# \u9ED8\u8BA4false ,\u53EF\u9009\u9879\uFF1Afastdfs\uFF0Cgofastdfs +impp.config.fileserver=fastdfs +#\u662F\u5426\u5BF9\u53D1\u5E03\u670D\u52A1\u8FDB\u884C\u8BE6\u7EC6\u65E5\u5FD7\u5206\u6790 impp.log.detail.controller=true -#是否对调用服务进行详细日志分析 +#\u662F\u5426\u5BF9\u8C03\u7528\u670D\u52A1\u8FDB\u884C\u8BE6\u7EC6\u65E5\u5FD7\u5206\u6790 impp.log.detail.service=true -#是否开启微服 +#\u662F\u5426\u5F00\u542F\u5FAE\u670D eureka.client.enabled=true -#打开feign的熔断 +#\u6253\u5F00feign\u7684\u7194\u65AD feign.hystrix.enabled=true -################ 队列处理 ################ -#站内信 +################ \u961F\u5217\u5904\u7406 ################ +#\u7AD9\u5185\u4FE1 impp.mq.queue.letter=true -#邮件 +#\u90AE\u4EF6 impp.mq.queue.mail=true -#定时任务 +#\u5B9A\u65F6\u4EFB\u52A1 impp.mq.queue.schedule=true -#SWEB通知处理队列 +#SWEB\u901A\u77E5\u5904\u7406\u961F\u5217 impp.mq.queue.sweb.notice=true -################################ 数据库相关设置 ################################ +################################ \u6570\u636E\u5E93\u76F8\u5173\u8BBE\u7F6E ################################ # mysql spring.datasource.validationQuery=SELECT 1 -################ 数据池设置 ################ +################ \u6570\u636E\u6C60\u8BBE\u7F6E ################ spring.datasource.maximum-pool-size=200 spring.datasource.max-active=100 spring.datasource.max-idle=100 @@ -55,147 +56,147 @@ spring.datasource.test-on-borrow=false spring.datasource.test-while-idle=true spring.datasource.time-between-eviction-runs-millis=300000 -##主数据源,读写 +##\u4E3B\u6570\u636E\u6E90\uFF0C\u8BFB\u5199 #impp.write.datasource.type=com.zaxxer.hikari.HikariDataSource impp.write.datasource.driver-class-name=com.mysql.jdbc.Driver impp.write.datasource.jdbc-url=jdbc:mysql://192.168.1.240:3306/impp_i3_core?autoReconnect=true&useSSL=false&characterEncoding=utf-8 impp.write.datasource.username=impp_i3_core_user impp.write.datasource.password=impp_i3_core_pwd -##辅数据源,只读 +##\u8F85\u6570\u636E\u6E90\uFF0C\u53EA\u8BFB #impp.read.datasource.type=com.zaxxer.hikari.HikariDataSource impp.read.datasource.driver-class-name=com.mysql.jdbc.Driver impp.read.datasource.jdbc-url=jdbc:mysql://192.168.1.240:3306/impp_i3_core?autoReconnect=true&useSSL=false&characterEncoding=utf-8 impp.read.datasource.username=impp_i3_core_user impp.read.datasource.password=impp_i3_core_pwd -################ 日志数据源 ################ +################ \u65E5\u5FD7\u6570\u636E\u6E90 ################ spring.data.mongodb.database=mongoDBSource spring.data.mongodb.uri=192.168.1.240:27017 spring.data.mongodb.username=sa spring.data.mongodb.password=i3plus spring.data.mongodb.port=27017 -################ JPA设置设置 ################ +################ JPA\u8BBE\u7F6E\u8BBE\u7F6E ################ # mysql spring.jpa.database=MYSQL spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL5InnoDBDialect -#是否显示sql +#\u662F\u5426\u663E\u793Asql spring.jpa.show-sql=true -#表关系create,create-drop,update,validate +#\u8868\u5173\u7CFBcreate,create-drop,update,validate spring.jpa.properties.hibernate.hbm2ddl.auto=update -##############定时任务持久化############## +##############\u5B9A\u65F6\u4EFB\u52A1\u6301\u4E45\u5316############## impp.schedule.open=true impp.schedule.datasource.driver-class-name=com.mysql.jdbc.Driver impp.schedule.datasource.jdbc-url=jdbc:mysql://192.168.1.240:3306/impp_i3_schedule?autoReconnect=true&useSSL=false&characterEncoding=utf-8 impp.schedule.datasource.username=impp_i3_schedule_user impp.schedule.datasource.password=impp_i3_schedule_pwd impp.schedule.datasource.max-connections=20 -#定时任务在服务启动后多少秒执行 +#\u5B9A\u65F6\u4EFB\u52A1\u5728\u670D\u52A1\u542F\u52A8\u540E\u591A\u5C11\u79D2\u6267\u884C impp.schedule.start.after-second=20 -#是否集群部署 +#\u662F\u5426\u96C6\u7FA4\u90E8\u7F72 impp.schedule.datasource.is-clustered=true -#执行检测(毫秒),若宕机由其他定时器执行 +#\u6267\u884C\u68C0\u6D4B\uFF08\u6BEB\u79D2\uFF09\uFF0C\u82E5\u5B95\u673A\u7531\u5176\u4ED6\u5B9A\u65F6\u5668\u6267\u884C impp.schedule.datasource.cluster-checkin-interval=30000 -#线程数 +#\u7EBF\u7A0B\u6570 impp.schedule.thread-count=10 -#线程优先级(1-10)默认为5 +#\u7EBF\u7A0B\u4F18\u5148\u7EA7\uFF081-10\uFF09\u9ED8\u8BA4\u4E3A5 impp.schedule.thread-priority=5 -################################ 其他功能设置 ################################ +################################ \u5176\u4ED6\u529F\u80FD\u8BBE\u7F6E ################################ #redisIP redis.hostName=192.168.1.240 -#端口号 +#\u7AEF\u53E3\u53F7 redis.port=6379 -#如果有密码 +#\u5982\u679C\u6709\u5BC6\u7801 redis.password= -##其他redis配置需要调整的加在此处 -################## rabbitMQ配置 #################### +##\u5176\u4ED6redis\u914D\u7F6E\u9700\u8981\u8C03\u6574\u7684\u52A0\u5728\u6B64\u5904 +################## rabbitMQ\u914D\u7F6E #################### spring.rabbitmq.vhost=/ spring.rabbitmq.host=192.168.1.240 spring.rabbitmq.port=5672 spring.rabbitmq.username=estsh spring.rabbitmq.password=estsh123 -##其他rabbitMq配置需要调整的加在此处 +##\u5176\u4ED6rabbitMq\u914D\u7F6E\u9700\u8981\u8C03\u6574\u7684\u52A0\u5728\u6B64\u5904 -################ 微服配置 ################ -#是否进行健康检查 +################ \u5FAE\u670D\u914D\u7F6E ################ +#\u662F\u5426\u8FDB\u884C\u5065\u5EB7\u68C0\u67E5 eureka.client.healthcheck.enabled=true -#若无法连接注册中心,是否需要一直检测加入 +#\u82E5\u65E0\u6CD5\u8FDE\u63A5\u6CE8\u518C\u4E2D\u5FC3\uFF0C\u662F\u5426\u9700\u8981\u4E00\u76F4\u68C0\u6D4B\u52A0\u5165 impp.cluster.fetch=true -#集群名 +#\u96C6\u7FA4\u540D eureka.instance.metadata-map.cluster=impp_cluster -#(参数配置)注册中心地址 -》 i3plus-ics,多个用逗号分隔 +#\uFF08\u53C2\u6570\u914D\u7F6E\uFF09\u6CE8\u518C\u4E2D\u5FC3\u5730\u5740 -\u300B i3plus-ics\uFF0C\u591A\u4E2A\u7528\u9017\u53F7\u5206\u9694 eureka.client.service-url.defaultZone=${impp.cluster.regist.center} -#本服务主机ip(若多个网卡,则需要设置本服务ip) +#\u672C\u670D\u52A1\u4E3B\u673Aip\uFF08\u82E5\u591A\u4E2A\u7F51\u5361\uFF0C\u5219\u9700\u8981\u8BBE\u7F6E\u672C\u670D\u52A1ip\uFF09 eureka.instance.ip-address=${impp.server.ip} -#本服务实例ID +#\u672C\u670D\u52A1\u5B9E\u4F8BID eureka.instance.instance-id=${impp.server.ip}:${server.port} -#本服务主机名 +#\u672C\u670D\u52A1\u4E3B\u673A\u540D eureka.instance.hostname=${impp.server.ip} -#本服务状态页面 +#\u672C\u670D\u52A1\u72B6\u6001\u9875\u9762 eureka.instance.status-page-url=http://${impp.server.ip}:${server.port}/swagger-ui.html -#将自己的IP注册到Eureka Server。若不配置或设置为false,表示注册微服务所在操作系统的hostname到Eureka Server +#\u5C06\u81EA\u5DF1\u7684IP\u6CE8\u518C\u5230Eureka Server\u3002\u82E5\u4E0D\u914D\u7F6E\u6216\u8BBE\u7F6E\u4E3Afalse\uFF0C\u8868\u793A\u6CE8\u518C\u5FAE\u670D\u52A1\u6240\u5728\u64CD\u4F5C\u7CFB\u7EDF\u7684hostname\u5230Eureka Server eureka.instance.prefer-ip-address=true -################ 检测机制 ################ -#心跳间隔周期,宕机限制(秒),30秒没反应视为宕机 +################ \u68C0\u6D4B\u673A\u5236 ################ +#\u5FC3\u8DF3\u95F4\u9694\u5468\u671F\uFF0C\u5B95\u673A\u9650\u5236\uFF08\u79D2\uFF09\uFF0C30\u79D2\u6CA1\u53CD\u5E94\u89C6\u4E3A\u5B95\u673A eureka.instance.lease-expiration-duration-in-seconds=30 -#心跳周期 +#\u5FC3\u8DF3\u5468\u671F eureka.instance.lease-renewal-interval-in-seconds=20 -#client连接Eureka服务端后的空闲等待时间,默认为30 秒 +#client\u8FDE\u63A5Eureka\u670D\u52A1\u7AEF\u540E\u7684\u7A7A\u95F2\u7B49\u5F85\u65F6\u95F4\uFF0C\u9ED8\u8BA4\u4E3A30 \u79D2 eureka.client.eureka-connection-idle-timeout-seconds=1 -#最初复制实例信息到eureka服务器所需的时间(s),默认为40秒 +#\u6700\u521D\u590D\u5236\u5B9E\u4F8B\u4FE1\u606F\u5230eureka\u670D\u52A1\u5668\u6240\u9700\u7684\u65F6\u95F4\uFF08s\uFF09\uFF0C\u9ED8\u8BA4\u4E3A40\u79D2 eureka.client.initial-instance-info-replication-interval-seconds=1 -#间隔多长时间再次复制实例信息到eureka服务器,默认为30秒 +#\u95F4\u9694\u591A\u957F\u65F6\u95F4\u518D\u6B21\u590D\u5236\u5B9E\u4F8B\u4FE1\u606F\u5230eureka\u670D\u52A1\u5668\uFF0C\u9ED8\u8BA4\u4E3A30\u79D2 eureka.client.instance-info-replication-interval-seconds=1 -#从eureka服务器注册表中获取注册信息的时间间隔(s),默认为30秒 +#\u4ECEeureka\u670D\u52A1\u5668\u6CE8\u518C\u8868\u4E2D\u83B7\u53D6\u6CE8\u518C\u4FE1\u606F\u7684\u65F6\u95F4\u95F4\u9694\uFF08s\uFF09\uFF0C\u9ED8\u8BA4\u4E3A30\u79D2 eureka.client.registry-fetch-interval-seconds=1 -################ 熔断配置 ################ -#重试 +################ \u7194\u65AD\u914D\u7F6E ################ +#\u91CD\u8BD5 ribbon.maxAutoRetries=2 -#读取数据时长 +#\u8BFB\u53D6\u6570\u636E\u65F6\u957F ribbon.ReadTimeout=30000 -#连接时长 +#\u8FDE\u63A5\u65F6\u957F ribbon.ConnectTimeout=50000 -#响应超过时长,进行熔断(熔断超时需要大于读取时长及连接时长) +#\u54CD\u5E94\u8D85\u8FC7\u65F6\u957F\uFF0C\u8FDB\u884C\u7194\u65AD\uFF08\u7194\u65AD\u8D85\u65F6\u9700\u8981\u5927\u4E8E\u8BFB\u53D6\u65F6\u957F\u53CA\u8FDE\u63A5\u65F6\u957F\uFF09 hystrix.command.default.execution.isolation.thread.timeoutInMilliseconds=60000 -################ 链路追踪 ################ -#使用web方式传输信息 +################ \u94FE\u8DEF\u8FFD\u8E2A ################ +#\u4F7F\u7528web\u65B9\u5F0F\u4F20\u8F93\u4FE1\u606F spring.zipkin.sender.type=web -#链路追踪服务的地址 +#\u94FE\u8DEF\u8FFD\u8E2A\u670D\u52A1\u7684\u5730\u5740 spring.zipkin.base-url=${impp.console.ip} -#追踪深度,百分比,1是全部 +#\u8FFD\u8E2A\u6DF1\u5EA6\uFF0C\u767E\u5206\u6BD4\uFF0C1\u662F\u5168\u90E8 spring.sleuth.sampler.probability=1.0 -################ FastDfs 配置 ################ -#tracker服务器ip +################ FastDfs \u914D\u7F6E ################ +#tracker\u670D\u52A1\u5668ip fastdfs.tracker_servers=tracker:22122 -# tracker的http端口 +# tracker\u7684http\u7AEF\u53E3 fastdfs.http_tracker_http_port=22122 -# 使用自定义工具获取文件展示地址 +# \u4F7F\u7528\u81EA\u5B9A\u4E49\u5DE5\u5177\u83B7\u53D6\u6587\u4EF6\u5C55\u793A\u5730\u5740 fastdfs.http.ui.host=http://tracker:22122 -#密码 +#\u5BC6\u7801 #fastdfs.http.secret_key= -#连接超时 +#\u8FDE\u63A5\u8D85\u65F6 fastdfs.connect_timeout_in_seconds=5 -#传输超时 +#\u4F20\u8F93\u8D85\u65F6 fastdfs.network_timeout_in_seconds=60 fastdfs.charset=UTF-8 -# token 防盗链功能 +# token \u9632\u76D7\u94FE\u529F\u80FD fastdfs.http_anti_steal_token=no -################ 授权配置 ################ +################ \u6388\u6743\u914D\u7F6E ################ slm.api.password=4C9479EBEFA6FA6E232EF25EFA49C4D2 slm.app.id=10000 diff --git a/modules/i3plus-core-apiservice/src/main/resources/application-test.properties b/modules/i3plus-core-apiservice/src/main/resources/application-test.properties deleted file mode 100644 index 1970633..0000000 --- a/modules/i3plus-core-apiservice/src/main/resources/application-test.properties +++ /dev/null @@ -1,201 +0,0 @@ -#本机ip -impp.server.ip=192.168.1.241 -#项目端口 -server.port=58100 -#链路追踪zipkin控制台ip地址 -impp.console.ip=http://192.168.1.241:58010 -#服务注册中心(多注册中心逗号分隔) -impp.cluster.regist.center=http://192.168.1.241:58000/eureka/ -#日志默认使用log4j2 -logging.config=classpath:log4j2-spring.xml - -########平台相关参数########## -#是否开启redis缓存 -impp.config.redis=true -#是否开启rabbitMQ -impp.config.rabbitmq=true -#是否开启swagger -impp.config.swagger=true -#是否开启websocket -impp.config.websocket=true -#是否开启文件服务 -impp.config.fastdfs=true -#是否对发布服务进行详细日志分析 -impp.log.detail.controller=true -#是否对调用服务进行详细日志分析 -impp.log.detail.service=true -#是否开启微服 -eureka.client.enabled=true -#打开feign的熔断 -feign.hystrix.enabled=true - -################ 队列处理 ################ -#站内信 -impp.mq.queue.letter=true -#邮件 -impp.mq.queue.mail=true -#定时任务 -impp.mq.queue.schedule=true -#SWEB通知处理队列 -impp.mq.queue.sweb.notice=true - -################################ 数据库相关设置 ################################ -# mysql -spring.datasource.validationQuery=SELECT 1 - -################ 数据池设置 ################ -spring.datasource.maximum-pool-size=200 -spring.datasource.max-active=100 -spring.datasource.max-idle=100 -spring.datasource.min-idle=30 -spring.datasource.initial-size=20 -spring.datasource.max-wait=10000 -spring.datasource.validation-query=SELECT 1 -spring.datasource.test-on-borrow=false -spring.datasource.test-while-idle=true -spring.datasource.time-between-eviction-runs-millis=300000 - -##主数据源,读写 -#impp.write.datasource.type=com.zaxxer.hikari.HikariDataSource -impp.write.datasource.driver-class-name=com.mysql.jdbc.Driver -impp.write.datasource.jdbc-url=jdbc:mysql://192.168.1.240:3308/impp_i3_core?autoReconnect=true&useSSL=false&characterEncoding=utf-8 -impp.write.datasource.username=impp_i3_core_user -impp.write.datasource.password=impp_i3_core_pwd - -##辅数据源,只读 -#impp.read.datasource.type=com.zaxxer.hikari.HikariDataSource -impp.read.datasource.driver-class-name=com.mysql.jdbc.Driver -impp.read.datasource.jdbc-url=jdbc:mysql://192.168.1.240:3308/impp_i3_core?autoReconnect=true&useSSL=false&characterEncoding=utf-8 -impp.read.datasource.username=impp_i3_core_user -impp.read.datasource.password=impp_i3_core_pwd - -################ 日志数据源 ################ -spring.data.mongodb.database=testMongoDBSource -spring.data.mongodb.uri=192.168.1.240:27017 -spring.data.mongodb.username=sa -spring.data.mongodb.password=i3plus -spring.data.mongodb.port=27017 - -################ JPA设置设置 ################ -# mysql -spring.jpa.database=MYSQL -spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL5InnoDBDialect -#是否显示sql -spring.jpa.show-sql=true -#表关系create,create-drop,update,validate -spring.jpa.properties.hibernate.hbm2ddl.auto=update - - - -##############定时任务持久化############## -impp.schedule.open=true -impp.schedule.datasource.driver-class-name=com.mysql.jdbc.Driver -impp.schedule.datasource.jdbc-url=jdbc:mysql://192.168.1.240:3308/impp_i3_schedule?autoReconnect=true&useSSL=false&characterEncoding=utf-8 -impp.schedule.datasource.username=impp_i3_schedule_user -impp.schedule.datasource.password=impp_i3_schedule_pwd -impp.schedule.datasource.max-connections=20 -#定时任务在服务启动后多少秒执行 -impp.schedule.start.after-second=20 -#是否集群部署 -impp.schedule.datasource.is-clustered=true -#执行检测(毫秒),若宕机由其他定时器执行 -impp.schedule.datasource.cluster-checkin-interval=30000 -#线程数 -impp.schedule.thread-count=10 -#线程优先级(1-10)默认为5 -impp.schedule.thread-priority=5 - - - -################################ 其他功能设置 ################################ -#redisIP -redis.hostName=192.168.1.240 -#端口号 -redis.port=6379 -#如果有密码 -redis.password= -##其他redis配置需要调整的加在此处 -################## rabbitMQ配置 #################### -spring.rabbitmq.vhost=/ -spring.rabbitmq.host=192.168.1.240 -spring.rabbitmq.port=5672 -spring.rabbitmq.username=estsh -spring.rabbitmq.password=estsh123 -##其他rabbitMq配置需要调整的加在此处 - - -################ 微服配置 ################ -#是否进行健康检查 -eureka.client.healthcheck.enabled=true -#若无法连接注册中心,是否需要一直检测加入 -impp.cluster.fetch=true -#集群名 -eureka.instance.metadata-map.cluster=impp_cluster -#(参数配置)注册中心地址 -》 i3plus-ics,多个用逗号分隔 -eureka.client.service-url.defaultZone=${impp.cluster.regist.center} -#本服务主机ip(若多个网卡,则需要设置本服务ip) -eureka.instance.ip-address=${impp.server.ip} -#本服务实例ID -eureka.instance.instance-id=${impp.server.ip}:${server.port} -#本服务主机名 -eureka.instance.hostname=${impp.server.ip} -#本服务状态页面 -eureka.instance.status-page-url=http://${impp.server.ip}:${server.port}/swagger-ui.html -#将自己的IP注册到Eureka Server。若不配置或设置为false,表示注册微服务所在操作系统的hostname到Eureka Server -eureka.instance.prefer-ip-address=true - -################ 检测机制 ################ -#心跳间隔周期,宕机限制(秒),30秒没反应视为宕机 -eureka.instance.lease-expiration-duration-in-seconds=30 -#心跳周期 -eureka.instance.lease-renewal-interval-in-seconds=20 -#client连接Eureka服务端后的空闲等待时间,默认为30 秒 -eureka.client.eureka-connection-idle-timeout-seconds=1 -#最初复制实例信息到eureka服务器所需的时间(s),默认为40秒 -eureka.client.initial-instance-info-replication-interval-seconds=1 -#间隔多长时间再次复制实例信息到eureka服务器,默认为30秒 -eureka.client.instance-info-replication-interval-seconds=1 -#从eureka服务器注册表中获取注册信息的时间间隔(s),默认为30秒 -eureka.client.registry-fetch-interval-seconds=1 - - -################ 熔断配置 ################ -#重试 -ribbon.maxAutoRetries=2 -#读取数据时长 -ribbon.ReadTimeout=30000 -#连接时长 -ribbon.ConnectTimeout=50000 -#响应超过时长,进行熔断(熔断超时需要大于读取时长及连接时长) -hystrix.command.default.execution.isolation.thread.timeoutInMilliseconds=60000 - -################ 链路追踪 ################ -#使用web方式传输信息 -spring.zipkin.sender.type=web -#链路追踪服务的地址 -spring.zipkin.base-url=${impp.console.ip} -#追踪深度,百分比,1是全部 -spring.sleuth.sampler.probability=1.0 - - -################ FastDfs 配置 ################ -#tracker服务器ip -fastdfs.tracker_servers=tracker:22122 -# tracker的http端口 -fastdfs.http_tracker_http_port=22122 -# 使用自定义工具获取文件展示地址 -fastdfs.http.ui.host=http://tracker:22122 -#密码 -#fastdfs.http.secret_key= - -#连接超时 -fastdfs.connect_timeout_in_seconds=5 -#传输超时 -fastdfs.network_timeout_in_seconds=60 -fastdfs.charset=UTF-8 -# token 防盗链功能 -fastdfs.http_anti_steal_token=no - -################ 授权配置 ################ -slm.api.password=4C9479EBEFA6FA6E232EF25EFA49C4D2 -slm.app.id=10000 diff --git a/modules/i3plus-core-apiservice/src/main/resources/application.properties b/modules/i3plus-core-apiservice/src/main/resources/application.properties index db038ab..229a7b5 100644 --- a/modules/i3plus-core-apiservice/src/main/resources/application.properties +++ b/modules/i3plus-core-apiservice/src/main/resources/application.properties @@ -1,5 +1,5 @@ #\u4F7F\u7528\u914D\u7F6E -spring.profiles.active=21 +spring.profiles.active=dev #\u9879\u76EE\u63CF\u8FF0\u4FE1\u606F\uFF08swagger\u4E2D\u663E\u5F0F\uFF09\uFF0C\u4E2D\u6587\u4F7F\u7528uncode\u8F6C\u7801 desc.application.name=\u6838\u5FC3\u7BA1\u7406\u540E\u53F0 diff --git a/modules/i3plus-core-apiservice/src/main/resources/log4j2-spring-dev.xml b/modules/i3plus-core-apiservice/src/main/resources/log4j2-spring-dev.xml index 5d41628..c65279c 100644 --- a/modules/i3plus-core-apiservice/src/main/resources/log4j2-spring-dev.xml +++ b/modules/i3plus-core-apiservice/src/main/resources/log4j2-spring-dev.xml @@ -29,6 +29,12 @@ + + + + ${info_pattern} + + @@ -37,6 +43,7 @@ + \ No newline at end of file diff --git a/modules/i3plus-core-apiservice/src/main/resources/log4j2-spring.xml b/modules/i3plus-core-apiservice/src/main/resources/log4j2-spring.xml index f57a191..a89e636 100644 --- a/modules/i3plus-core-apiservice/src/main/resources/log4j2-spring.xml +++ b/modules/i3plus-core-apiservice/src/main/resources/log4j2-spring.xml @@ -2,7 +2,7 @@ - + diff --git a/modules/i3plus-core-apiservice/src/test/java/test/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/TestBase.java b/modules/i3plus-core-apiservice/src/test/java/test/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/TestBase.java index b2a3860..1b106d9 100644 --- a/modules/i3plus-core-apiservice/src/test/java/test/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/TestBase.java +++ b/modules/i3plus-core-apiservice/src/test/java/test/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/TestBase.java @@ -6,15 +6,25 @@ import cn.estsh.i3plus.pojo.platform.bean.SessionUser; import cn.estsh.impp.framework.boot.auth.AuthUtil; import cn.estsh.impp.framework.boot.util.SpringContextsUtil; import cn.estsh.impp.framework.run.ImppGo; +import com.alibaba.fastjson.JSON; import org.apache.shiro.SecurityUtils; +import org.apache.shiro.authc.AuthenticationException; +import org.apache.shiro.authc.AuthenticationInfo; +import org.apache.shiro.authc.AuthenticationToken; +import org.apache.shiro.authc.SimpleAuthenticationInfo; +import org.apache.shiro.authz.AuthorizationInfo; +import org.apache.shiro.authz.SimpleAuthorizationInfo; import org.apache.shiro.mgt.DefaultSecurityManager; +import org.apache.shiro.realm.AuthorizingRealm; import org.apache.shiro.session.mgt.DefaultSessionContext; import org.apache.shiro.session.mgt.SessionContext; +import org.apache.shiro.subject.PrincipalCollection; import org.junit.After; import org.junit.Before; import org.junit.runner.RunWith; import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc; import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.stereotype.Component; import org.springframework.test.context.junit4.SpringRunner; /** @@ -37,7 +47,7 @@ public class TestBase { SessionContext sessionContext = new DefaultSessionContext(); sessionContext.setHost("localhost"); - UserAuthRealm userAuthRealm = (UserAuthRealm) SpringContextsUtil.getBean(UserAuthRealm.class); + ImppUserAuthRealm userAuthRealm = (ImppUserAuthRealm) SpringContextsUtil.getBean(ImppUserAuthRealm.class); org.apache.shiro.mgt.SecurityManager securityManager = new DefaultSecurityManager(userAuthRealm); SecurityUtils.setSecurityManager(securityManager); securityManager.start(sessionContext); @@ -55,26 +65,26 @@ public class TestBase { } } -// -//@Component -//class UserAuthRealm extends AuthorizingRealm { -// -// public UserAuthRealm() { -// //添加支持的token -// this.setAuthenticationTokenClass(UserToken.class); -// } -// -// @Override -// protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principalCollection) { -// return new SimpleAuthorizationInfo(); -// } -// -// @Override -// protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken authenticationToken) throws AuthenticationException { -// SessionUser user = JSON.parseObject(TestBase.JSON_SESSION_USER, SessionUser.class); -// return new SimpleAuthenticationInfo(user, ((UserToken) authenticationToken).getLoginPwd(), this.getName()); -// } -// -//} -// + +@Component +class ImppUserAuthRealm extends AuthorizingRealm { + + public ImppUserAuthRealm() { + //添加支持的token + this.setAuthenticationTokenClass(UserToken.class); + } + + @Override + protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principalCollection) { + return new SimpleAuthorizationInfo(); + } + + @Override + protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken authenticationToken) throws AuthenticationException { + SessionUser user = JSON.parseObject(TestBase.JSON_SESSION_USER, SessionUser.class); + return new SimpleAuthenticationInfo(user, ((UserToken) authenticationToken).getLoginPwd(), this.getName()); + } + +} + diff --git a/modules/i3plus-core-apiservice/src/test/java/test/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/TestUser.java b/modules/i3plus-core-apiservice/src/test/java/test/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/TestUser.java index df0a8b3..51cd705 100644 --- a/modules/i3plus-core-apiservice/src/test/java/test/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/TestUser.java +++ b/modules/i3plus-core-apiservice/src/test/java/test/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/TestUser.java @@ -1,718 +1,55 @@ -//package test.cn.estsh.i3plus.core.apiservice.serviceimpl.busi; -// -//import cn.estsh.i3plus.core.api.iservice.busi.*; -//import cn.estsh.i3plus.core.apiservice.serviceimpl.busi.TestBase; -//import cn.estsh.i3plus.core.apiservice.util.FileTool; -//import cn.estsh.i3plus.platform.common.convert.ConvertBean; -//import cn.estsh.i3plus.pojo.base.bean.BaseBean; -//import cn.estsh.i3plus.pojo.base.codemaker.SnowflakeIdMaker; -//import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil; -//import cn.estsh.i3plus.pojo.base.enumutil.ImppEnumUtil; -//import cn.estsh.i3plus.pojo.model.platform.UserDetailModel; -//import cn.estsh.i3plus.pojo.platform.bean.*; -//import cn.estsh.i3plus.pojo.platform.sqlpack.CoreHqlPack; -//import cn.estsh.impp.framework.boot.auth.AuthUtil; -//import cn.estsh.impp.framework.boot.util.ValidatorBean; -//import com.alibaba.fastjson.JSON; -//import org.apache.commons.lang3.RandomStringUtils; -//import org.apache.commons.lang3.RandomUtils; -//import org.apache.commons.lang3.StringUtils; -//import org.apache.commons.lang3.time.DateFormatUtils; -//import org.junit.Test; -//import org.springframework.beans.factory.annotation.Autowired; -// -//import java.io.FileWriter; -//import java.io.IOException; -//import java.util.ArrayList; -//import java.util.List; -//import java.util.Random; -//import java.util.UUID; -// -///** -// * @Description : -// * @Reference : -// * @Author : Adair Peng -// * @CreateDate : 2019-02-25 14:39 -// * @Modify: -// **/ -//public class TestUser extends TestBase{ -// -// SnowflakeIdMaker snowflakeIdMaker = new SnowflakeIdMaker(); -// -// @Autowired -// private ISysPositionService positionService; -// -// @Autowired -// private ISysOrganizeService organizeService; -// -// @Autowired -// private ISysDepartmentService departmentService; -// -// @Autowired -// private ISysMenuService menuService; -// -// @Autowired -// private ISysRoleService roleService; -// -// String TEXT = "飓风黑兹尔是1954年大西洋飓风季期间造成死亡人数最多、经济损失最惨重的飓风。这场风暴夺走了海地多达1000人的生命,然后又以四级飓风强度从南、北卡罗莱纳州边境附近袭击美国,造成95人丧生。之后黑兹尔转变成温带风暴,但仍然致使81人遇难,其中大部分来自多伦多。由于风暴造成了重大人员伤亡和财产损失,其名称“黑兹尔”因此从大西洋风暴命名名单上退役。黑兹尔摧毁了海地40%的咖啡树和50%的可可作物,对当地经济的影响持续了数年之久。飓风在南、北卡罗莱纳州登陆,冲击点附近的大部分海滨住宅被毁。气旋从北卡罗莱纳州沿大西洋海岸北上,先后影响了弗吉尼亚州、西弗吉尼亚州、马里兰州、特拉华州、新泽西州、宾夕法尼亚州和纽约州,产生的阵风时速有近160公里,造成的经济损失高达3.08亿美元。多伦多市内及周边有许多溪流溢出,导致严重的洪涝灾害。加拿大遭受的损失达到1.35亿加拿大元。由于缺少应对热带气旋的经验,加上风暴强度的保持时间异常之长,多伦多所受影响的严重程度是前所未有的"; -// -// @Autowired -// private ITestTransService testTransService; -// @Test -// public void testTrans(){ -// try { -// testTransService.testListTran(1, "aaa"); -// }catch(Exception e){ -// System.out.println("111============事务出错:" + e.getMessage()); -// e.printStackTrace(); -// } -// -// try { -// testTransService.testListTran(2, "aaa"); -// }catch(Exception e){ -// System.out.println("222============事务出错:" + e.getMessage()); -// e.printStackTrace(); -// } -// -// try { -// testTransService.testListTran(3, "aaa"); -// }catch(Exception e){ -// System.out.println("333============事务出错:" + e.getMessage()); -// e.printStackTrace(); -// } -// -// try { -// testTransService.testListTran(4, "aaa"); -// }catch(Exception e){ -// System.out.println("444============事务出错:" + e.getMessage()); -// e.printStackTrace(); -// } -// -// try { -// testTransService.testListTran(5, "aaa"); -// }catch(Exception e){ -// System.out.println("555============事务出错:" + e.getMessage()); -// e.printStackTrace(); -// } -// -// try { -// testTransService.testListTran(6, "aaa"); -// }catch(Exception e){ -// System.out.println("666============事务出错:" + e.getMessage()); -// e.printStackTrace(); -// } -// -// try { -// testTransService.testListTran(7, "aaa"); -// }catch(Exception e){ -// System.out.println("777============事务出错:" + e.getMessage()); -// e.printStackTrace(); -// } -// -// try { -// testTransService.testListTran(8, "aaa"); -// }catch(Exception e){ -// System.out.println("888============事务出错:" + e.getMessage()); -// e.printStackTrace(); -// } -// -// try { -// testTransService.testListTran(9, "aaa"); -// }catch(Exception e){ -// System.out.println("999============事务出错:" + e.getMessage()); -// e.printStackTrace(); -// } -// } -// -// @Test -// public void testSysPosition() throws Exception{ -// List dataBase = new ArrayList<>(); -// -// for (int i = 0; i < 15; i++) { -// SysPosition position = new SysPosition(); -// position.setName(RandomStringUtils.random(10, TEXT)); -// position.setPositionCode(RandomStringUtils.random(10, true, false)); -// position.setParentId(CommonEnumUtil.PARENT.DEFAULT.getValue()); -// init(position); -// dataBase.add(position); -// -// for (int j = 0; j < 10; j++) { -// -// SysPosition position2 = new SysPosition(); -// position2.setName(RandomStringUtils.random(10, TEXT)); -// position2.setPositionCode(RandomStringUtils.random(10, true, false)); -// position2.setParentId(position.getId()); -// position2.setParentNameRdd(position.getName()); -// init(position2); -// dataBase.add(position2); -// -// for (int k = 0; k < 5; k++) { -// SysPosition position3 = new SysPosition(); -// position3.setName(RandomStringUtils.random(10, TEXT)); -// position3.setPositionCode(RandomStringUtils.random(10, true, false)); -// position3.setParentId(position2.getId()); -// position3.setParentNameRdd(position2.getName()); -// init(position3); -// dataBase.add(position3); -// } -// } -// } -// -// System.out.println("打印SQL Start "); -// String txt = null; -// -// for (SysPosition position : dataBase) { -// txt = new String("INSERT INTO sys_position (id, create_date, create_user, is_deleted, is_valid, modify_date, modify_user, organize_code, name, parent_id, parent_name_rdd, position_code, position_description) VALUES" + -// " ("+position.getId()+", '"+position.getCreateDatetime()+"', '"+position.getCreateUser()+"', "+position.getIsDeleted()+", "+position.getIsValid()+"," + -// " '"+position.getModifyDatetime()+"', '"+position.getModifyUser()+"', null, '"+position.getName()+"', "+position.getParentId()+", '"+position.getParentNameRdd()+"', '"+position.getPositionCode()+"', null);"); -// fileWriter("E:\\test\\SysPosition.sql",txt); -// } -// -// System.out.println("打印SQL Start End "); -// -// } -// -// @Test -// public void testOrganize()throws Exception{ -// System.out.println(positionService); -// List organizeList = new ArrayList<>(); -// List departmentList = new ArrayList<>(); -// -// for (int i = 0; i < 10; i++) { -// SysOrganize organize = new SysOrganize(); -// organize.setName(RandomStringUtils.random(10, TEXT)); -// organize.setOrganizeCode(RandomStringUtils.random(10, true, false)); -// organize.setParentId(CommonEnumUtil.PARENT.DEFAULT.getValue()); -// organize.setParentNameRdd("顶级组织"); -// organize.setOrganizeType(ImppEnumUtil.ORGANIZE_YTPE.TYPE_GROUP.getValue()); -// -// init(organize); -// organizeList.add(organize); -// -// for (int j = 0; j < 5 ; j++) { -// SysDepartment department = new SysDepartment(); -// department.setName(RandomStringUtils.random(10, TEXT)); -// department.setDepartmentCode(RandomStringUtils.random(10, true, false)); -// department.setParentId(CommonEnumUtil.PARENT.DEFAULT.getValue()); -// department.setParentNameRdd("顶级部门"); -// department.setOrganizeId(organize.getId()); -// department.setOrganizeNameRdd(organize.getName()); -// department.setOrganizeCode(organize.getOrganizeCode()); -// -// init(department); -// departmentList.add(department); -// -// for (int k = 0; k < 5; k++) { -// SysDepartment department1 = new SysDepartment(); -// department1.setName(RandomStringUtils.random(10, TEXT)); -// department1.setDepartmentCode(RandomStringUtils.random(10, true, false)); -// department1.setParentId(department.getId()); -// department1.setParentNameRdd(department.getParentNameRdd()); -// department1.setOrganizeId(organize.getId()); -// department1.setOrganizeNameRdd(organize.getName()); -// department1.setOrganizeCode(organize.getOrganizeCode()); -// -// init(department1); -// departmentList.add(department1); -// -// for (int l = 0; l < 5; l++) { -// SysDepartment department2 = new SysDepartment(); -// department2.setName(RandomStringUtils.random(10, TEXT)); -// department2.setDepartmentCode(RandomStringUtils.random(10, true, false)); -// department2.setParentId(department1.getId()); -// department2.setParentNameRdd(department1.getParentNameRdd()); -// department2.setOrganizeId(organize.getId()); -// department2.setOrganizeNameRdd(organize.getName()); -// department2.setOrganizeCode(organize.getOrganizeCode()); -// -// init(department2); -// departmentList.add(department2); -// } -// } -// } -// -// for (int j = 0; j < 5; j++) { -// -// SysOrganize organize1 = new SysOrganize(); -// organize1.setName(RandomStringUtils.random(10, TEXT)); -// organize1.setOrganizeCode(RandomStringUtils.random(10, true, false)); -// organize1.setParentId(organize.getParentId()); -// organize1.setParentNameRdd(organize.getName()); -// organize1.setOrganizeType(ImppEnumUtil.ORGANIZE_YTPE.TYPE_FACTORY.getValue()); -// -// init(organize1); -// organizeList.add(organize1); -// -// for (int k = 0; k < 5; k++) { -// SysDepartment department = new SysDepartment(); -// department.setName(RandomStringUtils.random(10, TEXT)); -// department.setDepartmentCode(RandomStringUtils.random(10, true, false)); -// department.setParentId(CommonEnumUtil.PARENT.DEFAULT.getValue()); -// department.setParentNameRdd("顶级部门"); -// department.setOrganizeId(organize1.getId()); -// department.setOrganizeNameRdd(organize1.getName()); -// department.setOrganizeCode(organize1.getOrganizeCode()); -// -// init(department); -// departmentList.add(department); -// for (int l = 0; l < 5; l++) { -// SysDepartment department1 = new SysDepartment(); -// department1.setName(RandomStringUtils.random(10, TEXT)); -// department1.setDepartmentCode(RandomStringUtils.random(10, true, false)); -// department1.setParentId(department.getId()); -// department1.setParentNameRdd(department.getParentNameRdd()); -// department1.setOrganizeId(organize1.getId()); -// department1.setOrganizeNameRdd(organize1.getName()); -// department1.setOrganizeCode(organize1.getOrganizeCode()); -// -// init(department1); -// departmentList.add(department1); -// for (int m = 0; m < 5; m++) { -// SysDepartment department2 = new SysDepartment(); -// department2.setName(RandomStringUtils.random(10, TEXT)); -// department2.setDepartmentCode(RandomStringUtils.random(10, true, false)); -// department2.setParentId(department1.getId()); -// department2.setParentNameRdd(department1.getParentNameRdd()); -// department2.setOrganizeId(organize1.getId()); -// department2.setOrganizeNameRdd(organize1.getName()); -// department2.setOrganizeCode(organize1.getOrganizeCode()); -// -// init(department2); -// departmentList.add(department2); -// } -// } -// } -// -// for (int k = 0; k < 5; k++) { -// -// SysOrganize organize2 = new SysOrganize(); -// organize2.setName(RandomStringUtils.random(10, TEXT)); -// organize2.setOrganizeCode(RandomStringUtils.random(10, true, false)); -// organize2.setParentId(organize1.getParentId()); -// organize2.setParentNameRdd(organize1.getName()); -// organize2.setOrganizeType(ImppEnumUtil.ORGANIZE_YTPE.TYPE_FACTORY.getValue()); -// -// init(organize2); -// organizeList.add(organize2); -// -// for (int l = 0; l < 5; l++) { -// SysDepartment department = new SysDepartment(); -// department.setName(RandomStringUtils.random(10, TEXT)); -// department.setDepartmentCode(RandomStringUtils.random(10, true, false)); -// department.setParentId(CommonEnumUtil.PARENT.DEFAULT.getValue()); -// department.setParentNameRdd("顶级部门"); -// department.setOrganizeId(organize2.getId()); -// department.setOrganizeNameRdd(organize2.getName()); -// department.setOrganizeCode(organize2.getOrganizeCode()); -// -// init(department); -// departmentList.add(department); -// for (int m = 0; m < 5; m++) { -// SysDepartment department1 = new SysDepartment(); -// department1.setName(RandomStringUtils.random(10, TEXT)); -// department1.setDepartmentCode(RandomStringUtils.random(10, true, false)); -// department1.setParentId(department.getId()); -// department1.setParentNameRdd(department.getParentNameRdd()); -// department1.setOrganizeId(organize2.getId()); -// department1.setOrganizeNameRdd(organize2.getName()); -// department1.setOrganizeCode(organize2.getOrganizeCode()); -// -// init(department1); -// departmentList.add(department1); -// for (int n = 0; n < 5; n++) { -// SysDepartment department2 = new SysDepartment(); -// department2.setName(RandomStringUtils.random(10, TEXT)); -// department2.setDepartmentCode(RandomStringUtils.random(10, true, false)); -// department2.setParentId(department1.getId()); -// department2.setParentNameRdd(department1.getParentNameRdd()); -// department2.setOrganizeId(organize2.getId()); -// department2.setOrganizeNameRdd(organize2.getName()); -// department2.setOrganizeCode(organize2.getOrganizeCode()); -// -// init(department2); -// departmentList.add(department2); -// } -// } -// } -// } -// } -// } -// -// for (SysOrganize organize : organizeList) { -// String txt = new String(" INSERT INTO sys_organize (" + -// "id, create_date, create_user, is_deleted, is_valid, modify_date, " + -// "modify_user, organize_code, name, organize_type, parent_id, parent_name_rdd) VALUES " + -// "("+organize.getId()+", '"+organize.getCreateDatetime()+"', '"+organize.getCreateUser()+"', " + -// " "+organize.getIsDeleted()+", "+organize.getIsValid()+", '"+organize.getModifyDatetime()+"'," + -// " '"+organize.getModifyUser()+"', '"+organize.getOrganizeCode()+"', '"+organize.getParentNameRdd()+"'," + -// " "+organize.getOrganizeType()+", "+organize.getParentId()+", '"+organize.getParentNameRdd()+"');"); -// fileWriter("E:\\test\\SysOrganize.sql",txt); -// } -// -// for (SysDepartment department : departmentList) { -// String txt = new String("INSERT INTO sys_department (id, create_date, create_user, is_deleted," + -// " is_valid, modify_date, modify_user, department_code, name, organize_id, organize_name_rdd," + -// " parent_id, parent_name_rdd) VALUES (" + -// " "+department.getId()+", '"+department.getCreateDatetime()+"'," + -// " '"+department.getCreateUser()+"', "+department.getIsDeleted()+", "+department.getIsValid()+"," + -// " '"+department.getModifyDatetime()+"', '"+department.getModifyUser()+"', '"+department.getDepartmentCode()+"'," + -// " '"+department.getName()+"', "+department.getOrganizeId()+", '"+department.getOrganizeNameRdd()+"', " + -// " "+department.getParentId()+", ':"+department.getParentNameRdd()+"');"); -// fileWriter("E:\\test\\SysDepartment.sql",txt); -// } -// -// } -// -// @Test -// public void testSysMenu() throws Exception { -// List list = menuService.findSysMenuAll(); -// -// for (SysMenu menu : list) { -// String txt = new String("INSERT INTO sys_menu (id, create_date, create_user, is_deleted, is_valid," + -// " modify_date, modify_user, menu_class_path, menu_code, menu_css, menu_description, menu_grade, menu_icon, " + -// "menu_sort, menu_status, menu_type, menu_url, name, parent_id, parent_name_rdd, name_zh_shortening) VALUES (" + -// " "+menu.getId()+", null, 'System Init', null, null, '2018-12-20 12:39:56', '系统管理员', '', '101010000', '', null, null, '', '0', 1, 2, '/impp-base', '基础信息管理', 100002, '设置', 'jcxxgl');"); -// fileWriter("E:\\test\\SysRefRoleMenu.sql",txt); -// } -// } -// -// @Test -// public void testSysRole() throws Exception{ -// List list = menuService.findSysMenuAll(); -// -// List roleList = new ArrayList<>(); -// List refRoleMenuList = new ArrayList<>(); -// -// for (int i = 0; i < 100 ; i++) { -// List moduleListRdd = new ArrayList<>(); -// List featuresListRdd = new ArrayList<>(); // 冗余 -// -// SysRole role = new SysRole(); -// role.setRoleStatus(CommonEnumUtil.DATA_STATUS.ENABLE.getValue()); -// role.setMenuNumber(0); -// role.setModuleNumber(0); -// role.setName(RandomStringUtils.random(10, TEXT)); -// role.setRoleDescription(RandomStringUtils.random(50, TEXT)); -// -// for (SysMenu menu : list) { -// SysRefRoleMenu ref = new SysRefRoleMenu(); -// ref.setRoleId(role.getId()); -// ref.setRoleNameRdd(role.getName()); -// ref.setMenuNameRdd(menu.getName()); -// ref.setMenuId(menu.getId()); -// ref.setIsValid(CommonEnumUtil.IS_VAILD.VAILD.getValue()); -// ref.setMenuTypeRdd(menu.getMenuType()); -// -// // 冗余信息封装 -// if(CommonEnumUtil.METHOD_LEVEL.MODULE.getValue() == menu.getMenuType().intValue()){ -// moduleListRdd.add(menu.getName()); -// } -// if(CommonEnumUtil.METHOD_LEVEL.METHOD.getValue() == menu.getMenuType().intValue()){ -// featuresListRdd.add(menu.getName()); -// } -// -// init(ref); -// refRoleMenuList.add(ref); -// } -// -// role.setModuleNumber(moduleListRdd.size()); -// role.setMenuNumber(featuresListRdd.size()); -// -// init(role); -// roleList.add(role); -// } -// -// for (SysRole role : roleList) { -// String txt = new String(" INSERT INTO sys_role (id, create_date, create_user, is_deleted, is_valid," + -// " modify_date, modify_user, menu_number_rdd, module_number, name," + -// " role_description, role_status) VALUES " + -// "( "+role.getId()+", '"+role.getCreateDatetime()+"', '"+role.getCreateUser()+"', "+role.getIsDeleted()+"," + -// " "+role.getIsValid()+", '"+role.getModifyDatetime()+"', '"+role.getModifyUser()+"', "+role.getMenuNumber()+"," + -// " "+role.getModuleNumber()+", '"+role.getName()+"', null, 1);"); -// fileWriter("E:\\test\\SysRole.sql",txt); -// } -// -// for (SysRefRoleMenu ref : refRoleMenuList) { -// String txt = new String("INSERT INTO sys_ref_role_menu (id, create_date, create_user, is_deleted," + -// " is_valid, modify_date, modify_user, menu_id, menu_name_rdd, menu_type_rdd, role_id, role_name_rdd) VALUES (" + -// " "+ref.getId()+", '"+ref.getCreateDatetime()+"', '"+ref.getCreateUser()+"', "+ref.getIsDeleted()+", "+ref.getIsValid()+"," + -// " '"+ref.getModifyDatetime()+"', '"+ref.getModifyUser()+"', "+ref.getMenuId()+", '"+ref.getMenuNameRdd()+"'," + -// " '"+ref.getMenuTypeRdd()+"', "+ref.getRoleId()+", '"+ref.getRoleNameRdd()+"');"); -// fileWriter("E:\\test\\SysRefRoleMenu.sql",txt); -// } -// -// -// -// } -// -// @Test -// public void testUserInfo() throws Exception { -// List roleList = roleService.findSysRoleAll(); -// List positionList = positionService.findSysPositionAll(); -// List departmentList = departmentService.listSysDepartment(); -// -// for (int y = 0; y < 10; y++) { -// String PATH = new String("E:\\test\\user\\" + y); -// List userList = new ArrayList<>(); -// List userInfoList = new ArrayList<>(); -// List refUserRoleList = new ArrayList<>(); -// List refUserDepartmentList = new ArrayList<>(); -// List refUserInfoDepartmentList = new ArrayList<>(); -// List refUserPositionList = new ArrayList<>(); -// -// List refUserRoleNameList ; -// List refUserPositionNameList ; -// List refUserDepartmentNameList ; -// -// SysUser user; -// SysUserInfo userInfo; -// SysRefUserRole refUserRole; -// SysRefUserDepartment refUserDepartment; -// SysRefUserInfoDepartment refUserInfoDepartment; -// SysRefUserPosition refUserPosition; -// SysDepartment department = null; -// SysPosition position = null; -// -// for (int i = 0; i < 10000; i++) { -// user = new SysUser(); -// userInfo = new SysUserInfo(); -// refUserRoleNameList = new ArrayList<>(); -// refUserPositionNameList = new ArrayList<>(); -// refUserDepartmentNameList = new ArrayList<>(); -// -// init(user); -// init(userInfo); -// -// for (int j = 0; j < 2; j++) { -// SysRole role = roleList.get(new Random().nextInt(roleList.size() - 1)); -// if(role != null){ -// refUserRole = new SysRefUserRole(); -// init(refUserRole); -// -// refUserRole.setRoleId(role.getId()); -// refUserRole.setRoleNameRdd(role.getName()); -// refUserRole.setUserId(user.getId()); -// refUserRole.setUserNameRdd(user.getUserName()); -// -// refUserRoleNameList.add(role.getName()); -// refUserRoleList.add(refUserRole); -// } -// } -// -// for (int j = 0; j < 3; j++) { -// position = positionList.get(new Random().nextInt(positionList.size() - 1)); -// if(position != null){ -// refUserPosition = new SysRefUserPosition(); -// init(refUserPosition); -// -// refUserPosition.setUserId(userInfo.getId()); -// refUserPosition.setUserNameRdd(userInfo.getName()); -// refUserPosition.setPositionId(position.getId()); -// refUserPosition.setPositionNameRdd(position.getName()); -// -// refUserPositionNameList.add(position.getName()); -// -// refUserPositionList.add(refUserPosition); -// } -// } -// -// for (int j = 0; j < 3; j++) { -// department = departmentList.get(new Random().nextInt(departmentList.size() - 1)); -// -// if(department != null){ -// refUserDepartment= new SysRefUserDepartment(); -// refUserInfoDepartment = new SysRefUserInfoDepartment(); -// -// init(refUserDepartment); -// init(refUserInfoDepartment); -// -// refUserDepartment.setDepartmentId(department.getId()); -// refUserDepartment.setDepartmentNameRdd(department.getName()); -// refUserDepartment.setOrganizeNameRdd(department.getOrganizeNameRdd()); -// refUserDepartment.setOrganizeId(department.getOrganizeId()); -// refUserDepartment.setOrganizeCode(department.getOrganizeCode()); -// refUserDepartment.setUserId(user.getId()); -// refUserDepartment.setUserNameRdd(user.getUserName()); -// -// refUserInfoDepartment.setDepartmentId(department.getId()); -// refUserInfoDepartment.setDepartmentNameRdd(department.getName()); -// refUserInfoDepartment.setOrganizeNameRdd(department.getOrganizeNameRdd()); -// refUserInfoDepartment.setOrganizeId(department.getOrganizeId()); -// refUserInfoDepartment.setOrganizeCode(department.getOrganizeCode()); -// refUserInfoDepartment.setUserId(user.getId()); -// refUserInfoDepartment.setUserNameRdd(user.getUserName()); -// -// refUserDepartmentNameList.add(department.getName()); -// -// refUserDepartmentList.add(refUserDepartment); -// refUserInfoDepartmentList.add(refUserInfoDepartment); -// } -// } -// -// userInfo.setDepartmentNamesRdd(StringUtils.join(refUserDepartmentNameList)); -// userInfo.setDepartmentId(department.getId()); -// userInfo.setDepartmentNameRdd(department.getName()); -// userInfo.setOrganizeId(department.getOrganizeId()); -// userInfo.setOrganizeNameRdd(department.getOrganizeNameRdd()); -// userInfo.setOrganizeCode(department.getOrganizeCode()); -// userInfo.setPositionId(position.getId()); -// userInfo.setPositionNameRdd(position.getName()); -// userInfo.setPositionNamesRdd(StringUtils.join(refUserPositionNameList,",")); -// userInfo.setName(RandomStringUtils.random(5, TEXT)); -// userInfo.setUserEmpNo(RandomStringUtils.random(10, true, true)); -// userInfo.setUserInfoStatus(CommonEnumUtil.USER_INFO_STATUS.INCUMBENT.getValue()); -// userInfo.setUserLoginNum(0); -// userInfo.setIsValid(CommonEnumUtil.IS_VAILD.VAILD.getValue()); -// userInfo.setUserId(user.getId()); -// -// user.setUserType(CommonEnumUtil.USER_TYPE.USER.getValue()); -// user.setUserStatus(CommonEnumUtil.USER_STATUS.ENABLE.getValue()); -// user.setIsValid(CommonEnumUtil.IS_VAILD.VAILD.getValue()); -// user.setUserLoginNum(0); -// user.setDepartmentNamesRdd(StringUtils.join(refUserDepartmentNameList,",")); -// user.setDepartmentId(department.getId()); -// user.setDepartmentNameRdd(department.getName()); -// user.setUserPhone(RandomStringUtils.random(11, false, true)); -// user.setUserEmail(RandomStringUtils.random(15, true, true)); -// user.setUserLoginName(RandomStringUtils.random(20, true, true)); -// user.setUserLoginPassword("123456"); -// user.setUserEmpNo(userInfo.getUserEmpNo()); -// -// userList.add(user); -// userInfoList.add(userInfo); -// } -// -// for (SysRefUserPosition ref : refUserPositionList) { -// String txt = new String("INSERT INTO sys_ref_user_position (id, create_date, create_user, is_deleted," + -// " is_valid, modify_date, modify_user, position_id, position_name_rdd, user_id, user_name_rdd) VALUES (" + -// " "+ref.getId()+", '"+ref.getCreateDatetime()+"', '"+ref.getCreateUser()+"', "+ref.getIsDeleted()+"," + -// " "+ref.getIsValid()+", '"+ref.getModifyUser()+"', '"+ref.getModifyDatetime()+"', "+ref.getPositionId()+"," + -// " '"+ref.getPositionNameRdd()+"', "+ref.getUserId()+", '"+ref.getUserNameRdd()+"');"); -// fileWriter(PATH+"\\SysRefUserPosition.sql",txt); -// } -// -// for (SysRefUserRole ref : refUserRoleList) { -// String txt = new String("INSERT INTO sys_ref_user_role (id, create_date, create_user, is_deleted," + -// " is_valid, modify_date, modify_user, role_id, role_name_rdd, user_id, user_name_rdd) VALUES (" + -// " "+ref.getId()+", '"+ref.getCreateDatetime()+"', '"+ref.getCreateUser()+"', "+ref.getIsDeleted()+"," + -// " "+ref.getIsValid()+", '"+ref.getModifyDatetime()+"', '"+ref.getModifyUser()+"', "+ref.getRoleId()+"," + -// " '"+ref.getRoleNameRdd()+"', "+ref.getUserId()+", '"+ref.getUserNameRdd()+"');"); -// fileWriter(PATH+"\\SysRefUserRole.sql",txt); -// } -// -// for (SysRefUserDepartment ref : refUserDepartmentList) { -// String txt = new String("INSERT INTO sys_ref_user_department (id, create_date, create_user, is_deleted," + -// " is_valid, modify_date, modify_user, department_id, department_name_rdd, organize_id, organize_name_rdd, user_id, user_name) VALUES (" + -// " "+ref.getId()+", '"+ref.getCreateDatetime()+"', '"+ref.getCreateUser()+"', "+ref.getIsDeleted()+"," + -// " "+ref.getIsValid()+", '"+ref.getModifyDatetime()+"', '"+ref.getModifyUser()+"', "+ref.getDepartmentId()+"," + -// " '"+ref.getDepartmentNameRdd()+"', "+ref.getOrganizeId()+", '"+ref.getOrganizeNameRdd()+"'," + -// " "+ref.getUserId()+", '"+ref.getUserNameRdd()+"');"); -// fileWriter(PATH+"\\SysRefUserDepartment.sql",txt); -// } -// -// for (SysRefUserInfoDepartment ref : refUserInfoDepartmentList) { -// String txt = new String("INSERT INTO sys_ref_user_info_department (id, create_date, create_user, is_deleted," + -// " is_valid, modify_date, modify_user, department_id, department_name_rdd, organize_id, organize_name_rdd, user_id, user_name) VALUES (" + -// " "+ref.getId()+", '"+ref.getCreateDatetime()+"', '"+ref.getCreateUser()+"', "+ref.getIsDeleted()+"," + -// " "+ref.getIsValid()+", '"+ref.getModifyDatetime()+"', '"+ref.getModifyUser()+"', "+ref.getDepartmentId()+"," + -// " '"+ref.getDepartmentNameRdd()+"', "+ref.getOrganizeId()+", '"+ref.getOrganizeNameRdd()+"'," + -// " "+ref.getUserId()+", '"+ref.getUserNameRdd()+"');"); -// fileWriter(PATH+"\\SysRefUserInfoDepartment.sql",txt); -// } -// -// for (SysUser su : userList) { -// String txt = new String("INSERT INTO sys_user (id, create_date, create_user, is_deleted, is_valid," + -// " modify_date, modify_user, organize_code, department_id, department_name_rdd, department_names_rdd, language_code," + -// " organize_id, organize_name_rdd, organize_names_rdd, role_names_rdd, user_email, user_emp_no, user_info_id," + -// " user_login_last_date_time, user_login_name, user_login_num, user_login_password, user_name_rdd," + -// " user_phone, user_status, user_type) VALUES (" + -// " "+su.getId()+", '"+su.getCreateDatetime()+"', '"+su.getCreateUser()+"', "+su.getIsDeleted()+", "+su.getIsValid()+"," + -// " '"+su.getModifyDatetime()+"', '"+su.getModifyUser()+"', '"+su.getOrganizeCode()+"', " + -// " "+su.getDepartmentId()+", '"+su.getDepartmentNameRdd()+"', '"+su.getDepartmentNamesRdd()+"', ''," + -// " "+su.getOrganizeId()+", '"+su.getOrganizeNameRdd()+"', null, '"+su.getRoleNamesRdd()+"', '"+su.getUserEmail()+"'," + -// " '"+su.getUserEmpNo()+"', "+su.getUserInfoId()+", null, '"+su.getUserLoginName()+"', 0, '2637a5c30af69a7bad877fdb65fbd78b'," + -// " '"+su.getUserName()+"', '"+su.getUserPhone()+"', 1, 1);"); -// fileWriter(PATH+"\\SysUser.sql",txt); -// } -// -// for (SysUserInfo ui : userInfoList) { -// String txt = new String("INSERT INTO sys_user_info (id, create_date, create_user, is_deleted, is_valid," + -// " modify_date, modify_user, organize_code, department_id, department_name_rdd, department_names_rdd, name," + -// " organize_id, organize_name_rdd, position_id, position_name_rdd, position_names_rdd, user_emp_no, user_id," + -// " user_info_status, user_join_date, user_login_last_date_time, user_login_num) VALUES (" + -// " "+ui.getId()+", '"+ui.getCreateDatetime()+"', '"+ui.getCreateUser()+"', "+ui.getIsDeleted()+", "+ui.getIsValid()+"," + -// " '"+ui.getModifyDatetime()+"', '"+ui.getModifyUser()+"', '"+ui.getOrganizeCode()+"'," + -// " "+ui.getDepartmentId()+", '"+ui.getDepartmentNameRdd()+"', '"+ui.getDepartmentNamesRdd()+"'," + -// " '"+ui.getName()+"', "+ui.getOrganizeId()+", '"+ui.getOrganizeNameRdd()+"'," + -// " "+ui.getPositionId()+", '"+ui.getPositionNameRdd()+"', '"+ui.getPositionNamesRdd()+"'," + -// " '"+ui.getUserEmpNo()+"', "+ui.getUserId()+", 1, '2019-02-26', null , 0);"); -// fileWriter(PATH+"\\SysUserInfo.sql",txt); -// } -// -// System.gc(); -// } -// } -// -// public void testUserDetailModel(){ -// List roleList = roleService.findSysRoleAll(); -// List positionList = positionService.findSysPositionAll(); -// List departmentList = departmentService.listSysDepartment(); -// -// UserDetailModel model = new UserDetailModel(); -// List roleIds = new ArrayList<>(); -// List positionIds = new ArrayList<>(); -// List departmentIds = new ArrayList<>(); -// -// for (int i = 0; i < new Random().nextInt(10) ; i++) { -// SysRole role = roleList.get(new Random().nextInt(roleList.size() - 1)); -// roleIds.add(role.getId().toString()); -// } -// -// for (int i = 0; i < new Random().nextInt(10) ; i++) { -// SysPosition position = positionList.get(new Random().nextInt(positionList.size() - 1)); -// positionIds.add(position.getId().toString()); -// } -// -// for (int i = 0; i < new Random().nextInt(10) ; i++) { -// SysDepartment department = departmentList.get(new Random().nextInt(departmentList.size() - 1)); -// departmentIds.add(department.getId().toString()); -// } -// -// -// -// model.setUserInfoId(System.currentTimeMillis() + snowflakeIdMaker.nextId() + ""); -// model.setUserId(System.currentTimeMillis() + snowflakeIdMaker.nextId() + ""); -// model.setUserPhone(RandomStringUtils.random(11, false, true)); -// model.setUserEmail(RandomStringUtils.random(15, true, true)); -// model.setUserLoginPassword(RandomStringUtils.random(20, true, true)); -// model.setUserRoleIdList(roleIds); -// model.setUserDepartmentIdList(departmentIds); -// model.setInfoEmpNo(RandomStringUtils.random(10, true, true)); -// model.setInfoPositionIdList(positionIds); -// model.setInfoDepartmentIdList(departmentIds); -// -// } -// -// -// public void init(BaseBean bean)throws Exception{ -// bean.setId(System.currentTimeMillis() + snowflakeIdMaker.nextId() + UUID.randomUUID().hashCode() + new Random().nextInt(10000000)); -// bean.setIsValid(CommonEnumUtil.IS_VAILD.VAILD.getValue()); -// bean.setIsDeleted(CommonEnumUtil.IS_DEAL.NO.getValue()); -// bean.setCreateUser("系统管理员-测试"); -// bean.setModifyUser("系统管理员-测试"); -// bean.setCreateDatetime(DateFormatUtils.format(System.currentTimeMillis(),"yyyy-MM-dd HH:mm:ss")); -// bean.setModifyDatetime(DateFormatUtils.format(System.currentTimeMillis(),"yyyy-MM-dd HH:mm:ss")); -// } -// -// public static void fileWriter(String fileName, String content) { -// try { -// // 打开一个写文件器,构造函数中的第二个参数true表示以追加形式写文件    -// FileWriter writer = new FileWriter(fileName, true); -// writer.write(content+"\r\n"); -// writer.close(); -// } catch (IOException e) { -// e.printStackTrace(); -// } -// } -// -//} +package test.cn.estsh.i3plus.core.apiservice.serviceimpl.busi; + +import cn.estsh.i3plus.core.api.iservice.busi.ISysToolService; +import cn.estsh.i3plus.core.api.iservice.busi.ISysUserService; +import cn.estsh.i3plus.core.apiservice.serviceimpl.busi.TestBase; +import cn.estsh.i3plus.pojo.platform.bean.SysTool; +import org.junit.Test; +import org.springframework.beans.factory.annotation.Autowired; + +/** + * @Description : + * @Reference : + * @Author : Adair Peng + * @CreateDate : 2019-02-25 14:39 + * @Modify: + **/ +public class TestUser extends TestBase { + + @Autowired + private ISysToolService toolService; + + @Test + public void testTrans() { + for (int i = 0; i < 20; i++) { + new Thread("Save Thread -> " + i) { + @Override + public void run() { + for (int j = 0; j < 10; j++) { + SysTool tool = new SysTool(); + tool.setName(Thread.currentThread().getName() + "_" + System.currentTimeMillis()); + tool.setToolIp("192.168.3.40"); + tool.setToolPort(9090); + tool.setToolDescription(Thread.currentThread().getName()); + + System.out.println(toolService.saveSysTool(tool)); + } + } + }.start(); + } + + for (int i = 0; i < 20; i++) { + new Thread("Read Thread -> " + i) { + @Override + public void run() { + for (int j = 0; j < 10; j++) { + System.out.println(toolService.findSysToolByTop(j * 3)); + } + } + }.start(); + } + + } + + +} From 65869c0fa8e4147f012c9beb31cb2b975acb7f75 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=B1=AA=E4=BA=91=E6=98=8A?= Date: Tue, 16 Jun 2020 17:42:23 +0800 Subject: [PATCH 12/12] =?UTF-8?q?=E5=88=A0=E9=99=A4=E6=97=A0=E7=94=A8?= =?UTF-8?q?=E4=BB=A3=E7=A0=81=20=E6=B5=8B=E8=AF=95=E7=8E=AF=E5=A2=83?= =?UTF-8?q?=E5=BC=80=E5=85=B3=E5=9B=9E=E6=BB=9A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../configuration/AppStartSystemInit.java | 4 +- .../busi/SysTaskTimeRecordingService.java | 63 ---------------------- 2 files changed, 1 insertion(+), 66 deletions(-) delete mode 100644 modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysTaskTimeRecordingService.java diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/configuration/AppStartSystemInit.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/configuration/AppStartSystemInit.java index 49616ff..c27603a 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/configuration/AppStartSystemInit.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/configuration/AppStartSystemInit.java @@ -3,7 +3,6 @@ package cn.estsh.i3plus.core.apiservice.configuration; import cn.estsh.i3plus.core.api.iservice.base.ISystemInitService; import cn.estsh.i3plus.platform.common.util.CommonConstWords; import cn.estsh.impp.framework.boot.util.ImppSwitchUtil; -import cn.estsh.impp.framework.boot.util.ImppSystemTool; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; @@ -25,11 +24,10 @@ public class AppStartSystemInit implements CommandLineRunner { @Autowired(required = false) private ISystemInitService systemInitService; - @Override public void run(String... args) throws Exception { try { - if(ImppSystemTool.isJunitTest()) { + if(ImppSwitchUtil.isUnitTestEnv()) { LOGGER.info("【单元测试环境 跳过初始化...】"); return; } diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysTaskTimeRecordingService.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysTaskTimeRecordingService.java deleted file mode 100644 index 7097bea..0000000 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysTaskTimeRecordingService.java +++ /dev/null @@ -1,63 +0,0 @@ -package cn.estsh.i3plus.core.apiservice.serviceimpl.busi; - -import cn.estsh.i3plus.core.api.iservice.busi.ISysTaskTimeRecordingService; -import cn.estsh.i3plus.pojo.platform.platbean.SysLogTaskTime; -import cn.estsh.i3plus.pojo.platform.repository.SysTaskTimeRecordingRepository; -import io.swagger.annotations.ApiOperation; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; - -import java.util.List; - -/** - * @Description : 定时任务执行记录业务接口实现 - * @Reference : - * @Author : yunhao - * @Date : 2018-10-22 16:58:44.011 - * @Modify : - **/ -@Service -public class SysTaskTimeRecordingService implements ISysTaskTimeRecordingService { - - public static final Logger LOGGER = LoggerFactory.getLogger(SysTaskTimeRecordingService.class); - - @Autowired - private SysTaskTimeRecordingRepository taskTimeRecordingRDao; - - @Override - @ApiOperation(value = "更新任务周期信息") - public void updateSysTaskTimeRecording(SysLogTaskTime taskTimeRecording) { - LOGGER.info("定时任务执行记录 TASK_TIMED_RECORDING :{}", taskTimeRecording); - taskTimeRecordingRDao.update(taskTimeRecording); - } - - @Override - @ApiOperation(value = "删除任务周期信息",notes = "根据 ID 删除任务周期信息") - public void deleteSysTaskTimeRecordingById(Long id) { - LOGGER.info("定时任务执行记录 TASK_TIMED_RECORDING Key:{}", id); - taskTimeRecordingRDao.deleteById(id); - } - - @Override - @ApiOperation(value = "新增任务周期信息") - public SysLogTaskTime insertSysTaskTimeRecording(SysLogTaskTime taskTimeRecording) { - LOGGER.info("定时任务执行记录 TASK_TIMED_RECORDING :{}", taskTimeRecording); - return taskTimeRecordingRDao.insert(taskTimeRecording); - } - - @Override - @ApiOperation(value = "查询任务周期信息",notes = "查询所有任务周期信息") - public List findSysTaskTimeRecordingAll() { - LOGGER.info("定时任务执行记录 TASK_TIMED_RECORDING find All"); - return taskTimeRecordingRDao.findAll(); - } - - @Override - @ApiOperation(value = "查询任务周期信息",notes = "查询 ID 任务周期信息") - public SysLogTaskTime getSysTaskTimeRecordingById(Long id) { - LOGGER.info("定时任务执行记录 TASK_TIMED_RECORDING find id:{}", id); - return taskTimeRecordingRDao.getOne(id); - } -}