设计消息推送数据表、开发消息推送相关逻辑方法。

This commit is contained in:
gaoyutao
2025-11-11 18:03:50 +08:00
parent 5c3b6df591
commit 70e943269a
12 changed files with 812 additions and 84 deletions
@@ -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);
}
}
}
}