diff --git a/pqs-gateway/src/main/resources/bootstrap.yml b/pqs-gateway/src/main/resources/bootstrap.yml index 0504ba529..027e64c13 100644 --- a/pqs-gateway/src/main/resources/bootstrap.yml +++ b/pqs-gateway/src/main/resources/bootstrap.yml @@ -256,8 +256,8 @@ whitelist: #结束 - /user-boot/user/listAllUserByDeptId - /IndexAnalysis/** -mqtt: - client-id: @artifactId@${random.value} +#mqtt: +# client-id: @artifactId@${random.value} diff --git a/pqs-system/system-boot/src/main/java/com/njcn/system/handler/MqttMessageHandler.java b/pqs-system/system-boot/src/main/java/com/njcn/system/handler/MqttMessageHandler.java index 9c28ef7a5..796675285 100644 --- a/pqs-system/system-boot/src/main/java/com/njcn/system/handler/MqttMessageHandler.java +++ b/pqs-system/system-boot/src/main/java/com/njcn/system/handler/MqttMessageHandler.java @@ -1,112 +1,112 @@ -package com.njcn.system.handler; - -import cn.hutool.core.collection.CollUtil; -import cn.hutool.core.util.StrUtil; -import cn.hutool.json.JSONObject; -import com.github.tocrhz.mqtt.annotation.Payload; -import com.njcn.common.pojo.constant.LogInfo; -import com.njcn.common.pojo.constant.PatternRegex; -import com.njcn.common.pojo.dto.LogInfoDTO; -import com.njcn.common.utils.PubUtils; -import com.njcn.redis.pojo.enums.RedisKeyEnum; -import com.njcn.redis.utils.RedisUtil; -import com.njcn.system.service.IUserLogService; -import com.njcn.user.api.UserFeignClient; -import com.njcn.user.pojo.po.User; -import com.njcn.web.utils.EmailUtil; -import lombok.RequiredArgsConstructor; -import lombok.extern.slf4j.Slf4j; -import org.eclipse.paho.client.mqttv3.MqttMessage; -import org.springframework.stereotype.Component; - -import java.nio.charset.StandardCharsets; -import java.time.format.DateTimeFormatter; -import java.util.List; -import java.util.Objects; -import java.util.regex.Pattern; -import java.util.stream.Collectors; - -/** - * @author hongawen - * @version 1.0.0 - * @date 2022年07月13日 13:35 - */ -@Slf4j -@Component -@RequiredArgsConstructor -public class MqttMessageHandler { - - private final IUserLogService userLogService; - private final UserFeignClient userFeignClient; - private final EmailUtil emailUtil; - - private final RedisUtil redisUtil; - - - - - private JSONObject jsonObject = null; - /** - * 订阅审计日志的记录,并进行入库操作 - */ -// @MqttSubscribe(value = "/userLog") - public void subUserLog(String topic, MqttMessage message, @Payload String payload) { - if(Objects.isNull(jsonObject)){ - jsonObject = (JSONObject) redisUtil.getObjectByKey(RedisKeyEnum.USER_ROLE_TYPE_KEY.getKey()); - if(Objects.isNull(jsonObject)){ - userFeignClient.userRoleList(); - jsonObject = (JSONObject) redisUtil.getObjectByKey(RedisKeyEnum.USER_ROLE_TYPE_KEY.getKey()); - } - } - - LogInfoDTO logInfoDTO = PubUtils.json2obj(new String(message.getPayload(), StandardCharsets.UTF_8),LogInfoDTO.class); - if(!logInfoDTO.getLoginName().equals(LogInfo.UNKNOWN_USER) && !logInfoDTO.getOperate().equals(LogInfo.UNKNOWN_OPERATE) && !logInfoDTO.getIp().equals(LogInfo.UNKNOWN_IP)){ - if("注销".equals(logInfoDTO.getOperateType()) || "认证".equals(logInfoDTO.getOperateType())){ - logInfoDTO.setType(1); - }else { - String loginName = logInfoDTO.getLoginName(); - if(StrUtil.isNotBlank(loginName) && jsonObject.containsKey(loginName)){ - if((Integer) jsonObject.get(loginName)==2){ - logInfoDTO.setType(0); - }else { - logInfoDTO.setType(1); - }; - }else { - logInfoDTO.setType(1); - } - } - userLogService.addUserLog(logInfoDTO); - } - } - - /** - * 订阅审计日志的记录,并进行入库操作 - */ -// @MqttSubscribe(value = "/userLogEmailPush") - public void subUserLogEmail(String topic, MqttMessage message, @Payload String payload) { - LogInfoDTO auditLogVO = PubUtils.json2obj(new String(message.getPayload(), StandardCharsets.UTF_8),LogInfoDTO.class); - List data = userFeignClient.getUserListByRoleCode("audit_manager").getData(); - List emails = data.stream() - .filter(x -> Pattern.matches(PatternRegex.EMAIL_REGEX,x.getEmail())) - .filter(x -> StrUtil.isNotBlank(x.getEmail()) && x.getEmailNotice() == 1) - .map(User::getEmail).collect(Collectors.toList()); - if(CollUtil.isNotEmpty(emails)){ - StringBuilder describe = new StringBuilder(); - describe.append(auditLogVO.getType() == 0 ? "业务事件 -> " : "系统事件 -> "); - describe.append(auditLogVO.getUserName()).append("在") - .append(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss").format(auditLogVO.getCreateTime())) - .append("在") - .append(auditLogVO.getIp()) - .append("执行了") - .append(auditLogVO.getOperate()) - .append(",结果为"); - if (auditLogVO.getResult() == 1) { - describe.append("成功"); - } - if (auditLogVO.getResult() == 0) { - describe.append("失败").append(",失败原因为").append(auditLogVO.getFailReason()); - } - emailUtil.sendMultiple(emails,"告警消息",describe.toString(),false); - } - } -} +//package com.njcn.system.handler; +// +//import cn.hutool.core.collection.CollUtil; +//import cn.hutool.core.util.StrUtil; +//import cn.hutool.json.JSONObject; +//import com.github.tocrhz.mqtt.annotation.Payload; +//import com.njcn.common.pojo.constant.LogInfo; +//import com.njcn.common.pojo.constant.PatternRegex; +//import com.njcn.common.pojo.dto.LogInfoDTO; +//import com.njcn.common.utils.PubUtils; +//import com.njcn.redis.pojo.enums.RedisKeyEnum; +//import com.njcn.redis.utils.RedisUtil; +//import com.njcn.system.service.IUserLogService; +//import com.njcn.user.api.UserFeignClient; +//import com.njcn.user.pojo.po.User; +//import com.njcn.web.utils.EmailUtil; +//import lombok.RequiredArgsConstructor; +//import lombok.extern.slf4j.Slf4j; +//import org.eclipse.paho.client.mqttv3.MqttMessage; +//import org.springframework.stereotype.Component; +// +//import java.nio.charset.StandardCharsets; +//import java.time.format.DateTimeFormatter; +//import java.util.List; +//import java.util.Objects; +//import java.util.regex.Pattern; +//import java.util.stream.Collectors; +// +///** +// * @author hongawen +// * @version 1.0.0 +// * @date 2022年07月13日 13:35 +// */ +//@Slf4j +//@Component +//@RequiredArgsConstructor +//public class MqttMessageHandler { +// +// private final IUserLogService userLogService; +// private final UserFeignClient userFeignClient; +// private final EmailUtil emailUtil; +// +// private final RedisUtil redisUtil; +// +// +// +// +// private JSONObject jsonObject = null; +// /** +// * 订阅审计日志的记录,并进行入库操作 +// */ +//// @MqttSubscribe(value = "/userLog") +// public void subUserLog(String topic, MqttMessage message, @Payload String payload) { +// if(Objects.isNull(jsonObject)){ +// jsonObject = (JSONObject) redisUtil.getObjectByKey(RedisKeyEnum.USER_ROLE_TYPE_KEY.getKey()); +// if(Objects.isNull(jsonObject)){ +// userFeignClient.userRoleList(); +// jsonObject = (JSONObject) redisUtil.getObjectByKey(RedisKeyEnum.USER_ROLE_TYPE_KEY.getKey()); +// } +// } +// +// LogInfoDTO logInfoDTO = PubUtils.json2obj(new String(message.getPayload(), StandardCharsets.UTF_8),LogInfoDTO.class); +// if(!logInfoDTO.getLoginName().equals(LogInfo.UNKNOWN_USER) && !logInfoDTO.getOperate().equals(LogInfo.UNKNOWN_OPERATE) && !logInfoDTO.getIp().equals(LogInfo.UNKNOWN_IP)){ +// if("注销".equals(logInfoDTO.getOperateType()) || "认证".equals(logInfoDTO.getOperateType())){ +// logInfoDTO.setType(1); +// }else { +// String loginName = logInfoDTO.getLoginName(); +// if(StrUtil.isNotBlank(loginName) && jsonObject.containsKey(loginName)){ +// if((Integer) jsonObject.get(loginName)==2){ +// logInfoDTO.setType(0); +// }else { +// logInfoDTO.setType(1); +// }; +// }else { +// logInfoDTO.setType(1); +// } +// } +// userLogService.addUserLog(logInfoDTO); +// } +// } +// +// /** +// * 订阅审计日志的记录,并进行入库操作 +// */ +//// @MqttSubscribe(value = "/userLogEmailPush") +// public void subUserLogEmail(String topic, MqttMessage message, @Payload String payload) { +// LogInfoDTO auditLogVO = PubUtils.json2obj(new String(message.getPayload(), StandardCharsets.UTF_8),LogInfoDTO.class); +// List data = userFeignClient.getUserListByRoleCode("audit_manager").getData(); +// List emails = data.stream() +// .filter(x -> Pattern.matches(PatternRegex.EMAIL_REGEX,x.getEmail())) +// .filter(x -> StrUtil.isNotBlank(x.getEmail()) && x.getEmailNotice() == 1) +// .map(User::getEmail).collect(Collectors.toList()); +// if(CollUtil.isNotEmpty(emails)){ +// StringBuilder describe = new StringBuilder(); +// describe.append(auditLogVO.getType() == 0 ? "业务事件 -> " : "系统事件 -> "); +// describe.append(auditLogVO.getUserName()).append("在") +// .append(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss").format(auditLogVO.getCreateTime())) +// .append("在") +// .append(auditLogVO.getIp()) +// .append("执行了") +// .append(auditLogVO.getOperate()) +// .append(",结果为"); +// if (auditLogVO.getResult() == 1) { +// describe.append("成功"); +// } +// if (auditLogVO.getResult() == 0) { +// describe.append("失败").append(",失败原因为").append(auditLogVO.getFailReason()); +// } +// emailUtil.sendMultiple(emails,"告警消息",describe.toString(),false); +// } +// } +//}