diff --git a/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/base/ISystemInitService.java b/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/base/ISystemInitService.java index 8c55366..72d2807 100644 --- a/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/base/ISystemInitService.java +++ b/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/base/ISystemInitService.java @@ -52,4 +52,7 @@ public interface ISystemInitService { @ApiOperation(value = "对象版本记录信息") void reloadPojoVersionPlan(); + + @ApiOperation(value = "定时任务日志等级") + void reloadTaskPlanLogLevel(); } 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 b423925..1c56962 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 @@ -80,6 +80,7 @@ public interface ISysTaskPlanService { * @param groupName * @return */ + @AnnoIgnoreLog @ApiOperation(value = "查询任务计划",notes = "根据任务计划名称与组名称查询") SysTaskPlan getSysTaskPlanByNameAndGroup(String name, String groupName); diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/base/AuthController.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/base/AuthController.java index 5e134e4..a821be9 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/base/AuthController.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/base/AuthController.java @@ -176,12 +176,13 @@ public class AuthController extends CoreBaseController { ValidatorBean.checkIsNumber(parentId,"父节点不能为空"); List result = memTreeService.packTreeSysMenuByUserIdAndParentId(getSessionUser().getUser().getId(), Long.parseLong(parentId)); - result = findChildList(result); // 国际化 result = sysMenuService.setLanguageSysMenuName(getSessionUser().getLanguageCode(),result); + result = findChildList(result); + return ResultBean.success("操作成功") .setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()) - .setResultList(findChildList(result)); + .setResultList(result); } catch (ImppBusiException busExcep) { LOGGER.error(busExcep.getErrorMsg() + ":{}", busExcep.getErrorDetail(), busExcep); return ResultBean.fail(busExcep); diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/base/BackstageController.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/base/BackstageController.java index 91c9349..a7102a8 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/base/BackstageController.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/base/BackstageController.java @@ -3,13 +3,16 @@ package cn.estsh.i3plus.core.apiservice.controller.base; import cn.estsh.i3plus.core.api.iservice.base.ISystemInitService; import cn.estsh.i3plus.core.api.iservice.busi.ICoreMemTreeService; import cn.estsh.i3plus.core.api.iservice.busi.ISysMenuService; +import cn.estsh.i3plus.platform.common.exception.ImppExceptionEnum; 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.platform.bean.SysMenu; 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.license.ImppLicenseTool; +import cn.estsh.impp.framework.boot.license.serviceimpl.ImppLicenseDecoder; import cn.estsh.impp.framework.boot.util.ResultBean; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -17,9 +20,7 @@ import org.apache.commons.collections.CollectionUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; 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 org.springframework.web.bind.annotation.*; import java.util.*; @@ -158,4 +159,35 @@ public class BackstageController extends CoreBaseController { } } + @GetMapping(value = "/reset/task-log-level") + @ApiOperation(value = "重置定时任务日志等级",notes = "重置定时任务日志等级") + public ResultBean restTaskLogLevel(){ + try { + systemInitService.reloadTaskPlanLogLevel(); + return ResultBean.success("操作成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()); + }catch(ImppBusiException busExcep){ + return ResultBean.fail(busExcep); + }catch(Exception e){ + return ImppExceptionBuilder.newInstance().buildExceptionResult(e); + } + } + + @PostMapping(value = "/license") + @ApiOperation(value = "更新授权信息", notes = "更新授权信息") + public ResultBean updateLicense(@RequestBody 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/SysEnumController.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysEnumController.java index 56b8638..fa55177 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysEnumController.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysEnumController.java @@ -336,4 +336,13 @@ public class SysEnumController extends CoreBaseController { return new ResultBean(true, "操作成功", LocaleUtils.getEnumLocaleResValuesToList(CommonEnumUtil.DATA_SOURCE_TYPE.values())); } + + @GetMapping("/message-send-status") + @ApiOperation(value = "消息发送状态", notes = "消息发送状态") + public ResultBean getMessageSendStatus() { + return new ResultBean(true, "操作成功", + LocaleUtils.getEnumLocaleResValuesToList(ImppEnumUtil.MESSAGE_SEND_STATUS.values())); + } + + } diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysTaskPlanController.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysTaskPlanController.java index 5867a17..d5212e3 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysTaskPlanController.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysTaskPlanController.java @@ -1,5 +1,6 @@ package cn.estsh.i3plus.core.apiservice.controller.busi; +import cn.estsh.i3plus.core.api.iservice.base.ISystemInitService; import cn.estsh.i3plus.core.api.iservice.busi.ISysTaskCycleService; import cn.estsh.i3plus.core.api.iservice.busi.ISysTaskPlanService; import cn.estsh.i3plus.core.api.iservice.busi.ISysTaskService; @@ -13,6 +14,7 @@ import cn.estsh.i3plus.platform.common.convert.ConvertBean; import cn.estsh.i3plus.platform.common.exception.ImppExceptionEnum; import cn.estsh.i3plus.platform.common.tool.ExcelTool; import cn.estsh.i3plus.platform.common.tool.FileTool; +import cn.estsh.i3plus.platform.common.util.CommonConstWords; import cn.estsh.i3plus.platform.common.util.PlatformConstWords; import cn.estsh.i3plus.pojo.base.bean.BaseResultBean; import cn.estsh.i3plus.pojo.base.bean.ListPager; @@ -28,6 +30,7 @@ import cn.estsh.impp.framework.boot.exception.ImppBusiException; import cn.estsh.impp.framework.boot.exception.ImppExceptionBuilder; import cn.estsh.impp.framework.boot.quartz.IQuartzJobService; import cn.estsh.impp.framework.boot.quartz.ScheduleTool; +import cn.estsh.impp.framework.boot.util.ImppRedis; import cn.estsh.impp.framework.boot.util.RedisCacheTool; import cn.estsh.impp.framework.boot.util.ResultBean; import cn.estsh.impp.framework.boot.util.ValidatorBean; @@ -40,6 +43,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; +import javax.annotation.Resource; import javax.persistence.EntityManager; import javax.servlet.http.HttpServletResponse; import java.io.*; @@ -75,6 +79,12 @@ public class SysTaskPlanController extends CoreBaseController { @Autowired private EntityManager entityManager; + @Autowired + private ISystemInitService systemInitService; + + @Resource(name= CommonConstWords.IMPP_REDIS_RES) + private ImppRedis redisRes; + /************ 微服定时任务 *********/ @Autowired private ScheduleTool scheduleTool; @@ -211,6 +221,9 @@ public class SysTaskPlanController extends CoreBaseController { } } + //更新任务计划缓存 + putTaskPlanCache(sysTaskPlan); + return ResultBean.success("操作成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()).setResultObject(sysTaskPlan); } catch (ImppBusiException busExcep) { isMakeUpOperate = true; @@ -301,6 +314,10 @@ public class SysTaskPlanController extends CoreBaseController { resultBean = ResultBean.fail(baseResultBean.getErrorMsg()); } } + + //更新任务计划缓存 + putTaskPlanCache(sysTaskPlan); + return resultBean; } catch (ImppBusiException busExcep) { return ResultBean.fail(busExcep); @@ -329,6 +346,9 @@ public class SysTaskPlanController extends CoreBaseController { sysTaskPlanService.deleteSysTaskPlanById(Long.parseLong(id)); getJobService(sysTaskPlan.getTaskSoftTypeRdd()).deleteTask(sysTaskPlan.getName(), sysTaskPlan.getGroupName()); + // 清理缓存 + removeTaskPlanCache(sysTaskPlan); + return ResultBean.success().setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()); } catch (ImppBusiException busExcep) { return ResultBean.fail(busExcep); @@ -495,6 +515,10 @@ public class SysTaskPlanController extends CoreBaseController { , sysTaskPlan.getGroupName(), sysTaskCycle.getTaskCycleExps(), sysTaskPlan.getTaskPlanParam()); } } + + // 刷新全部缓存 + reloadAllTaskPlanCache(); + return ResultBean.success("操作成功"); } catch (ImppBusiException busExcep) { return ResultBean.fail(busExcep); @@ -535,6 +559,10 @@ public class SysTaskPlanController extends CoreBaseController { , sysTaskPlan.getGroupName(), sysTaskCycle.getTaskCycleExps(), sysTaskPlan.getTaskPlanParam()); } } + + // 刷新全部缓存 + reloadAllTaskPlanCache(); + return ResultBean.success("操作成功"); } catch (ImppBusiException busExcep) { return ResultBean.fail(busExcep); @@ -566,8 +594,7 @@ public class SysTaskPlanController extends CoreBaseController { response.setContentType("application/vnd.ms-excel;charset=UTF-8"); response.setCharacterEncoding("UTF-8"); - response.setHeader("Content-Disposition", - "attachment;fileName=" + URLEncoder.encode(excelFile.getName(), "UTF-8")); + response.setHeader("Content-Disposition", "attachment;fileName=" + URLEncoder.encode(excelFile.getName(), "UTF-8")); response.flushBuffer(); BufferedInputStream bis = null; @@ -592,8 +619,8 @@ public class SysTaskPlanController extends CoreBaseController { } } } - } catch (Exception e) { - LOGGER.error("下载异常",e); + } catch (Exception e) { + LOGGER.error("下载异常", e); throw ImppExceptionBuilder.newInstance().setErrorDetail(e.getMessage()).build(); } finally { if (excelFile != null) { @@ -632,6 +659,9 @@ public class SysTaskPlanController extends CoreBaseController { } } + // 刷新全部缓存 + reloadAllTaskPlanCache(); + return ResultBean.success("导入成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()); } catch (ImppBusiException busExcep) { return ResultBean.fail(busExcep); @@ -660,4 +690,18 @@ public class SysTaskPlanController extends CoreBaseController { throw ImppExceptionBuilder.newInstance().setErrorDetail(e.getMessage()).build(); } } + + private void putTaskPlanCache(SysTaskPlan plan){ + String redisKey = CommonConstWords.REDIS_PREFIX_TASK_LOG_LEVEL + ":" + plan.getGroupName() + "." + plan.getName(); + redisRes.putObject(redisKey, plan.getLogLevelVal(), -1); + } + + private void removeTaskPlanCache(SysTaskPlan plan){ + String redisKey = CommonConstWords.REDIS_PREFIX_TASK_LOG_LEVEL + ":" + plan.getGroupName() + "." + plan.getName(); + redisRes.deleteKey(redisKey); + } + + private void reloadAllTaskPlanCache(){ + systemInitService.reloadTaskPlanLogLevel(); + } } 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 5871f66..7fc08f6 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,38 +1,38 @@ -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.i3plus.pojo.mdm.bean.master.MdmGear; -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.boot.autoconfigure.condition.ConditionalOnExpression; -import org.springframework.context.annotation.Configuration; - -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: - **/ -@ConditionalOnExpression("'${impp.mq.queue.mdm.sync:true}' == 'true'") -@Configuration -public class MdmDataSyncQueueReceiver extends BaseMdmDataSyncQueueReceiver { - - /** - * 初始化类关系 - */ - public MdmDataSyncQueueReceiver() { - putMdmDataRef(SysToolSyncDataService.class, MdmGear.class, 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 cn.estsh.i3plus.pojo.mdm.bean.master.MdmGear; +//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.boot.autoconfigure.condition.ConditionalOnExpression; +//import org.springframework.context.annotation.Configuration; +// +//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: +// **/ +//@ConditionalOnExpression("'${impp.mq.queue.mdm.sync:true}' == 'true'") +//@Configuration +//public class MdmDataSyncQueueReceiver extends BaseMdmDataSyncQueueReceiver { +// +// /** +// * 初始化类关系 +// */ +// public MdmDataSyncQueueReceiver() { +// putMdmDataRef(SysToolSyncDataService.class, MdmGear.class, 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/mq/MessageLetterQueueReceiver.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/mq/MessageLetterQueueReceiver.java index a65b2cf..b78f853 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 @@ -76,7 +76,7 @@ public class MessageLetterQueueReceiver { if (!StringUtils.isBlank(msg.getMessageReceiversId())) { String[] userIds = msg.getMessageReceiversId().split(","); - if (userIds != null && userIds.length > 0) { + if (userIds.length > 0) { List userList = personnelService.findSysUserByIds(StringTool.getArrayLong(userIds)); if (userList != null && userList.size() > 0) { 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 c8910d0..dc04a43 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 @@ -15,6 +15,7 @@ import cn.estsh.impp.framework.boot.util.RedisCacheTool; import com.alibaba.fastjson.JSON; import com.rabbitmq.client.Channel; import org.apache.commons.lang3.StringUtils; +import org.apache.commons.lang3.exception.ExceptionUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.amqp.core.Message; @@ -47,9 +48,9 @@ public class MessageMailQueueReceiver { /** * 系统邮件处理队列 * - * @param data 系统消息信息 - * @param channel 通道 - * @param message 消息 + * @param data 系统消息信息 + * @param channel 通道 + * @param message 消息 */ @RabbitListener(queues = PlatformConstWords.QUEUE_IMPP_MESSAGE_MAIL) public void processImppMail(String data, Channel channel, Message message) { @@ -60,26 +61,40 @@ public class MessageMailQueueReceiver { if (msg.getMessageSendTime() == null) { msg.setMessageSendTime(TimeTool.getNowTime(true)); } - ConvertBean.serviceModelInitialize(msg,msg.getMessageSenderNameRdd()); + + // 持久化消息化消息并初始化状态 + ConvertBean.serviceModelInitialize(msg, msg.getMessageSenderNameRdd()); + msg.setSendStatus(ImppEnumUtil.MESSAGE_SEND_STATUS.SENDING.getValue()); msg = sysMessageService.insertSysMessage(msg); + // 默认发送成功 + msg.setSendStatus(ImppEnumUtil.MESSAGE_SEND_STATUS.SEND_SUCCESS.getValue()); + // 设置邮件主题内容及收件人 mailUtil.init(); mailUtil.setSubject(msg.getMessageTitle()); mailUtil.setContentType(ImppEnumUtil.MESSAGE_TYPE_CONTENT.valueOfDescription(msg.getMessageContentType())); mailUtil.setBody(msg.getMessageContent()); + // 判断收件人类型 if (msg.getMessageReceiverType() != null) { if (msg.getMessageReceiverType().intValue() == ImppEnumUtil.MESSAGE_RECEIVER_TYPE.URGENT.getValue()) { // 判断是否为系统紧急提示 微服注册状态提示 mailUtil.setTo(RedisCacheTool.getSysConfigStrVal(PlatformConstWords.CONTACT_MAIL)); - // 次数过于频繁 - mailUtil.send(); + try { + mailUtil.send(); + } catch (Exception e) { + saveSendErrorMsg(msg, RedisCacheTool.getSysConfigStrVal(PlatformConstWords.CONTACT_MAIL), e); + } } else if (msg.getMessageReceiverType().intValue() == ImppEnumUtil.MESSAGE_RECEIVER_TYPE.EXTERNAL.getValue()) { //判断是否为外部邮件 mailUtil.setTo(StringUtils.split(msg.getMessageReceiversNameRdd(), ",")); - mailUtil.send(); + try { + mailUtil.send(); + } catch (Exception e) { + saveSendErrorMsg(msg, RedisCacheTool.getSysConfigStrVal(PlatformConstWords.CONTACT_MAIL), e); + } } else if (msg.getMessageReceiverType().intValue() == ImppEnumUtil.MESSAGE_RECEIVER_TYPE.INTERNAL.getValue()) { // 收件人信息 @@ -106,7 +121,12 @@ public class MessageMailQueueReceiver { sysMessageService.insertSysRefUserMessage(refUserMessage); mailUtil.setTo(sysUser.getUserEmail()); - mailUtil.send(); + + try { + mailUtil.send(); + } catch (Exception e) { + saveSendErrorMsg(msg, RedisCacheTool.getSysConfigStrVal(PlatformConstWords.CONTACT_MAIL), e); + } } } } @@ -132,4 +152,37 @@ public class MessageMailQueueReceiver { LOGGER.info("[Core Email] Email Id:{} , 耗时{}, Message Info :{}", msg.getId(), System.currentTimeMillis() - startTime, JSON.toJSONString(msg)); } } + + /** + * 保存发送异常信息 + * + * @param message 发送消息主体 + * @param mark 异常消息标识 + * @param e 异常信息 + */ + private void saveSendErrorMsg(SysMessage message, String mark, Exception e) { + if (message == null) { + return; + } + // 更新消息发送状态 + message.setSendStatus(ImppEnumUtil.MESSAGE_SEND_STATUS.SEND_FAIL.getValue()); + + StringBuilder errorMsg = new StringBuilder(); + // 校验标识是否存在 + if (StringUtils.isNotBlank(mark)) { + errorMsg.append("发送标识【"); + errorMsg.append(mark); + errorMsg.append("】"); + } + + // 拼接异常信息 + errorMsg.append(ExceptionUtils.getMessage(e)); + errorMsg.append("\r\n"); + + if (!StringUtils.isBlank(message.getErrorMessage())) { + errorMsg.insert(0, message.getErrorMessage()); + } + + message.setErrorMessage(errorMsg.toString()); + } } 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 c85c2e5..b09a4a7 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 @@ -1,10 +1,7 @@ package cn.estsh.i3plus.core.apiservice.serviceimpl.base; import cn.estsh.i3plus.core.api.iservice.base.ISystemInitService; -import cn.estsh.i3plus.core.api.iservice.busi.ISysLocaleResourceService; -import cn.estsh.i3plus.core.api.iservice.busi.ISysMenuService; -import cn.estsh.i3plus.core.api.iservice.busi.ISysPojoVersionPlanService; -import cn.estsh.i3plus.core.api.iservice.busi.ISystemResourceService; +import cn.estsh.i3plus.core.api.iservice.busi.*; import cn.estsh.i3plus.platform.common.convert.ConvertBean; import cn.estsh.i3plus.platform.common.util.CommonConstWords; import cn.estsh.i3plus.platform.common.util.PlatformConstWords; @@ -69,6 +66,8 @@ public class SystemInitService implements ISystemInitService { @Autowired private ISysPojoVersionPlanService pojoVersionPlanService; + @Autowired + private ISysTaskPlanService sysTaskPlanService; @Resource(name= CommonConstWords.IMPP_REDIS_RES) private ImppRedis redisRes; @@ -101,6 +100,10 @@ public class SystemInitService implements ISystemInitService { LOGGER.info("加载 对象版本控制信息"); reloadPojoVersionPlan(); LOGGER.info("加载 对象版本控制信息 信息完成"); + + LOGGER.info("加载 定时任务日志等级"); + reloadTaskPlanLogLevel(); + LOGGER.info("加载 定时任务日志等级 信息完成"); }catch (Exception e){ e.printStackTrace(); } @@ -283,6 +286,7 @@ public class SystemInitService implements ISystemInitService { } } + @Override public void putAndLoadSysMenu() { SysLocaleResource resource = new SysLocaleResource(); @@ -415,4 +419,15 @@ public class SystemInitService implements ISystemInitService { } } } + + @Override + public void reloadTaskPlanLogLevel() { + List sysTaskPlanList = sysTaskPlanService.listSysTaskPlan(); + if (CollectionUtils.isNotEmpty(sysTaskPlanList)){ + for (SysTaskPlan plan : sysTaskPlanList) { + String redisKey =CommonConstWords.REDIS_PREFIX_TASK_LOG_LEVEL + ":" + plan.getGroupName() + "." + plan.getName(); + redisRes.putObject(redisKey, plan.getLogLevelVal(), -1); + } + } + } } diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysTaskPlanService.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysTaskPlanService.java index 0333416..296607e 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysTaskPlanService.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysTaskPlanService.java @@ -2,6 +2,7 @@ package cn.estsh.i3plus.core.apiservice.serviceimpl.busi; import cn.estsh.i3plus.core.api.iservice.base.ISysLogService; import cn.estsh.i3plus.core.api.iservice.busi.ISysTaskPlanService; +import cn.estsh.i3plus.pojo.base.annotation.AnnoIgnoreLog; import cn.estsh.i3plus.pojo.base.bean.DdlPackBean; import cn.estsh.i3plus.pojo.base.bean.ListPager; import cn.estsh.i3plus.pojo.base.common.Pager; @@ -76,6 +77,7 @@ public class SysTaskPlanService implements ISysTaskPlanService { } @Override + @AnnoIgnoreLog @ApiOperation(value = "修改任务计划", notes = "修改任务计划") public void updateSysTaskPlan(SysTaskPlan sysTaskPlan) { SysTaskPlan originSysTaskPlan = sysTaskPlanRDao.getById(sysTaskPlan.getId()); @@ -103,6 +105,7 @@ public class SysTaskPlanService implements ISysTaskPlanService { originSysTaskPlan.setIsInternalUser(sysTaskPlan.getIsInternalUser()); originSysTaskPlan.setNoticeChannel(sysTaskPlan.getNoticeChannel()); originSysTaskPlan.setNoticeMethod(sysTaskPlan.getNoticeMethod()); + originSysTaskPlan.setLogLevel(sysTaskPlan.getLogLevel()); if(StringUtils.isNotBlank(sysTaskPlan.getLastRunDateTime())){ originSysTaskPlan.setLastRunDateTime(sysTaskPlan.getLastRunDateTime()); @@ -181,6 +184,7 @@ public class SysTaskPlanService implements ISysTaskPlanService { } @Override + @AnnoIgnoreLog @ApiOperation(value = "查询任务计划", notes = "根据任务计划名称与组名称查询") public SysTaskPlan getSysTaskPlanByNameAndGroup(String name, String groupName) { return sysTaskPlanRDao.getByProperty( diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/util/MailUtil.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/util/MailUtil.java index 82be81c..54cc190 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/util/MailUtil.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/util/MailUtil.java @@ -257,7 +257,7 @@ public class MailUtil { } catch (SMTPAddressFailedException e) { LOGGER.error(e.getClass() + "\t" + e.getMessage()); throw ImppExceptionBuilder.newInstance() - .setSystemID(CommonEnumUtil.SOFT_TYPE.CORE.getCode()) + .setSystemID(CommonEnumUtil.SOFT_TYPE.IMPP.getCode()) .setErrorCode(ImppExceptionEnum.MAIL_RECIPIENT_NOT_EXIST.getCode()) .setErrorDetail(ImppExceptionEnum.MAIL_RECIPIENT_NOT_EXIST.getDescription()) .setErrorSolution("请重新设置收件人") @@ -265,7 +265,7 @@ public class MailUtil { } catch (AuthenticationFailedException e) { LOGGER.error(e.getClass() + "\t" + e.getMessage()); throw ImppExceptionBuilder.newInstance() - .setSystemID(CommonEnumUtil.SOFT_TYPE.CORE.getCode()) + .setSystemID(CommonEnumUtil.SOFT_TYPE.IMPP.getCode()) .setErrorCode(ImppExceptionEnum.MAIL_LOGIN_PASS_ERROR.getCode()) .setErrorDetail(ImppExceptionEnum.MAIL_LOGIN_PASS_ERROR.getDescription()) .setErrorSolution("请重新设置账号或密码") @@ -273,19 +273,27 @@ public class MailUtil { } catch (MessagingException e) { LOGGER.error(e.getClass() + "\t" + e.getMessage()); throw ImppExceptionBuilder.newInstance() - .setSystemID(CommonEnumUtil.SOFT_TYPE.CORE.getCode()) + .setSystemID(CommonEnumUtil.SOFT_TYPE.IMPP.getCode()) .setErrorCode(ImppExceptionEnum.MAIL_SERVER_CONFIG_ERROR.getCode()) .setErrorDetail(ImppExceptionEnum.MAIL_SERVER_CONFIG_ERROR.getDescription()) .setErrorSolution("请重新设置邮件服务器地址或端口") .build(); } catch (UnsupportedEncodingException e) { - e.printStackTrace(); + LOGGER.error(e.getClass() + "\t" + e.getMessage()); throw ImppExceptionBuilder.newInstance() - .setSystemID(CommonEnumUtil.SOFT_TYPE.CORE.getCode()) + .setSystemID(CommonEnumUtil.SOFT_TYPE.IMPP.getCode()) .setErrorCode(ImppExceptionEnum.MAIL_SERVER_CONFIG_ERROR.getCode()) .setErrorDetail(ImppExceptionEnum.MAIL_SERVER_CONFIG_ERROR.getDescription()) .setErrorSolution("请重新设置邮件服务器地址或端口") .build(); + } catch (Exception e) { + LOGGER.error(e.getClass() + "\t" + e.getMessage()); + throw ImppExceptionBuilder.newInstance() + .setSystemID(CommonEnumUtil.SOFT_TYPE.IMPP.getCode()) + .setErrorCode(ImppExceptionEnum.MAIL_SERVER_CONFIG_ERROR.getCode()) + .setErrorDetail(ImppExceptionEnum.MAIL_SERVER_CONFIG_ERROR.getDescription()) + .setErrorSolution("邮件发送异常:%s", e.getMessage()) + .build(); } } } 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 64df19b..69eaf67 100644 --- a/modules/i3plus-core-apiservice/src/main/resources/log4j2-spring.xml +++ b/modules/i3plus-core-apiservice/src/main/resources/log4j2-spring.xml @@ -47,10 +47,10 @@ - + filePattern="${logFileRootPath}/$${date:yyyy-MM}/task-name-%d{yyyy-MM-dd}-%i.log"> @@ -71,7 +71,7 @@ - +