设计消息推送数据表、开发消息推送相关逻辑方法。
This commit is contained in:
@@ -10,9 +10,12 @@ import com.ruoyi.rocketmq.domain.vo.CollectDataVo;
|
||||
import com.ruoyi.rocketmq.domain.vo.RegisterMsgVo;
|
||||
import com.ruoyi.rocketmq.domain.vo.RspResultVo;
|
||||
import com.ruoyi.rocketmq.domain.vo.RspVo;
|
||||
import com.ruoyi.rocketmq.enums.AlarmTypeEnum;
|
||||
import com.ruoyi.rocketmq.enums.PushMethodEnum;
|
||||
import com.ruoyi.rocketmq.service.*;
|
||||
import com.ruoyi.rocketmq.utils.DataProcessUtil;
|
||||
import com.ruoyi.rocketmq.utils.JsonDataParser;
|
||||
import com.ruoyi.rocketmq.utils.WeChatWorkBot;
|
||||
import com.ruoyi.system.api.RemoteRevenueConfigService;
|
||||
import com.ruoyi.system.api.domain.*;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
@@ -89,6 +92,8 @@ public class MessageHandler {
|
||||
private IInitialBandwidthTrafficTempService initialBandwidthTrafficTempService;
|
||||
@Autowired
|
||||
private IRmAlarmLogService rmAlarmLogService;
|
||||
@Autowired
|
||||
private IRmAlarmPushConfigService rmAlarmPushConfigService;
|
||||
|
||||
|
||||
/**
|
||||
@@ -1014,6 +1019,8 @@ public class MessageHandler {
|
||||
if (lostCount >= 3) {
|
||||
log.warn("客户端ID: {} 连续三次心跳丢失,触发告警", clientId);
|
||||
insertHeartbeatLog(clientId, "3", "连续三次心跳丢失");
|
||||
// 告警
|
||||
insertAlarmRecords(clientId);
|
||||
redisTemplate.opsForValue().set(HEARTBEAT_ALERT_PREFIX + clientId, "1");
|
||||
// 设置告警后删除timeKey和statusKey
|
||||
redisTemplate.delete(timeKey);
|
||||
@@ -1103,12 +1110,31 @@ public class MessageHandler {
|
||||
// 查询此告警是否存在
|
||||
RmAlarmLog query = new RmAlarmLog();
|
||||
query.setClientId(clientId);
|
||||
query.setAlarmType("1");
|
||||
query.setAlarmType(AlarmTypeEnum.服务器下线.getCode());
|
||||
List<RmAlarmLog> alarmLog = rmAlarmLogService.selectRmAlarmLogList(query);
|
||||
if(alarmLog != null && !alarmLog.isEmpty()){
|
||||
rmAlarmLogService.updateRmAlarmLog(rmAlarmLog);
|
||||
}else{
|
||||
rmAlarmLogService.insertRmAlarmLog(rmAlarmLog);
|
||||
// 拿到消息模板
|
||||
RmAlarmPushConfig rmAlarmPushConfig = new RmAlarmPushConfig();
|
||||
rmAlarmPushConfig.setPushMethod(PushMethodEnum.企业微信.getCode());
|
||||
rmAlarmPushConfig.setPushAlarmTypes(AlarmTypeEnum.服务器下线.getCode());
|
||||
List<RmAlarmPushConfig> alarmConfigList = rmAlarmPushConfigService.selectRmAlarmPushConfigList(rmAlarmPushConfig);
|
||||
if(alarmConfigList != null && !alarmConfigList.isEmpty()){
|
||||
for (RmAlarmPushConfig alarmPushConfig : alarmConfigList) {
|
||||
String contentTemplate = alarmPushConfig.getMessageContent();
|
||||
String webhookUrl = alarmPushConfig.getPushAddress();
|
||||
Map<String, Object> alarmMap = new HashMap<>();
|
||||
alarmMap.put("告警时间", rmAlarmLog.getAlarmTime());
|
||||
alarmMap.put("管理网-公网IP", rmAlarmLog.getMgmPublicIp());
|
||||
alarmMap.put("告警类型", AlarmTypeEnum.服务器下线.getMsg());
|
||||
alarmMap.put("告警设备", rmAlarmLog.getClientId());
|
||||
alarmMap.put("告警内容", rmAlarmLog.getAlarmContent());
|
||||
// 推送消息到企业微信
|
||||
WeChatWorkBot.sendTemplateMessage(webhookUrl, contentTemplate, alarmMap);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user