瀏覽代碼

游戏告警钉钉通知

Letianhua 1 年之前
父節點
當前提交
40ba1359d2

+ 26 - 12
game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/service/impl/GameMonitorAlarmServiceImpl.java

@@ -11,9 +11,11 @@ import org.nutz.dao.Chain;
 import org.nutz.dao.Cnd;
 import org.nutz.dao.Dao;
 import org.nutz.dao.Sqls;
+import org.nutz.dao.sql.Criteria;
 import org.nutz.dao.sql.Sql;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 
 import java.time.LocalDateTime;
 import java.util.List;
@@ -36,6 +38,7 @@ public class GameMonitorAlarmServiceImpl implements IGameMonitorAlarmService {
     @DubboReference(providedBy = ErpServer.SERVER_DUBBO_NAME)
     private IDingTalkMsgRpc dingTalkMsgRpc;
 
+    @Transactional(rollbackFor = Exception.class)
     public boolean sendMsgToUser() {
         //数据库查表
         Sql sql = Sqls.create(getMonitorAlarmInfoSql());
@@ -43,18 +46,29 @@ public class GameMonitorAlarmServiceImpl implements IGameMonitorAlarmService {
         sql.setEntity(dao.getEntity(GameMonitorAlarmVO.class));
         dao.execute(sql);
         //结果
-        List<GameMonitorAlarmVO> list = sql.getList(GameMonitorAlarmVO.class).stream().map(vo -> {
-            if (vo.getRoleId() == 784836198449371267L) {
-                String s = alarmStr(vo);
-                dingTalkMsgRpc.sendByUserId(401L, alarmStr(vo));
-                dao.update(AdsMonitorAlarm.class, Chain.make("warn_status", 1),
-                        Cnd.where("role_id", "=", "784836198449371267"));
-            }
-            return vo;
-        }).collect(Collectors.toList());
-
-        //修改数据库 状态值
-
+        try{
+            List<GameMonitorAlarmVO> list = sql.getList(GameMonitorAlarmVO.class).stream().map(vo -> {
+                dingTalkMsgRpc.sendByUserId(vo.getPitcherId(), alarmStr(vo));
+                //更新的条件
+                Criteria cri = Cnd.cri();
+                if (vo.getId() != null) {
+                    cri.where().andEquals("id", vo.getId());
+                }
+                if (vo.getDt() != null) {
+                    cri.where().andEquals("dt", vo.getDt());
+                }
+                if (vo.getGameId() != null) {
+                    cri.where().andEquals("gameId", vo.getGameId());
+                }
+                if (vo.getUserId() != null) {
+                    cri.where().andEquals("userId", vo.getUserId());
+                }
+                dao.update(AdsMonitorAlarm.class, Chain.make("warn_status", 1), cri);
+                return vo;
+            }).toList();
+        } catch (Exception e) {
+            log.error("游戏监控告警出错,原因:{}", e.getMessage(), e);
+        }
         return true;
     }