Sfoglia il codice sorgente

fix:历史消息仅显示最新一条

zqbao 4 mesi fa
parent
commit
fe4081cf4c

+ 16 - 10
controllers/edb_monitor/edb_monitor_message.go

@@ -97,26 +97,32 @@ func (m *EdbMonitorMessageController) Connect() {
 	success := make(chan int, 10)
 	go func() {
 		defer close(success)
-		for _, msg := range messageList {
-			err = edbmonitor.SendMessages(sysUser.AdminId, msg.EdbInfoId, msg.EdbInfoType, msg.EdbClassifyId, msg.EdbUniqueCode, msg.Message, msg.TriggerTime)
-			if err != nil {
-				utils.FileLog.Error("指标预警信息发送失败,err:%s, adminId:%d", err.Error(), sysUser.AdminId)
+		for i, msg := range messageList {
+			if i == 0 {
+				// 多条消息仅发送最新一条
+				err = edbmonitor.SendMessages(sysUser.AdminId, msg.EdbInfoId, msg.EdbInfoType, msg.EdbClassifyId, msg.EdbUniqueCode, msg.Message, msg.TriggerTime)
+				if err != nil {
+					utils.FileLog.Error("指标预警信息发送失败,err:%s, adminId:%d", err.Error(), sysUser.AdminId)
+				} else {
+					success <- msg.EdbMonitorMessageId
+				}
 			} else {
 				success <- msg.EdbMonitorMessageId
 			}
-			time.Sleep(3 * time.Second)
 		}
 	}()
 	go func() {
+		readList := make([]int, 0)
 		for {
 			msgId, ok := <-success
 			if !ok {
-				return
-			}
-			_, err = edbmonitor.ReadEdbMonitorMessage(msgId, sysUser.AdminId)
-			if err != nil {
-				utils.FileLog.Error("指标预警信息已读失败,err:%s, adminId:%d", err.Error(), sysUser.AdminId)
+				break
 			}
+			readList = append(readList, msgId)
+		}
+		_, err = edbmonitor.ReadEdbMonitorMessageList(readList, sysUser.AdminId)
+		if err != nil {
+			utils.FileLog.Error("指标预警信息已读失败,err:%s, adminId:%d", err.Error(), sysUser.AdminId)
 		}
 	}()
 

+ 12 - 1
models/edb_monitor/edb_monitor_message.go

@@ -1,6 +1,7 @@
 package edbmonitor
 
 import (
+	"eta/eta_api/utils"
 	"fmt"
 	"time"
 
@@ -32,6 +33,16 @@ func (m *EdbMonitorMessage) Update(cols []string) (err error) {
 	return
 }
 
+func BatchModifyEdbMonitorMessageIsRead(ids []int, adminId int) (err error) {
+	if len(ids) == 0 {
+		return
+	}
+	o := orm.NewOrmUsingDB("data")
+	sql := `UPDATE edb_monitor_message SET is_read =1 WHERE admin_id =? AND is_read = 0 AND edb_monitor_message_id IN (` + utils.GetOrmInReplace(len(ids)) + `)`
+	_, err = o.Raw(sql, adminId, ids).Exec()
+	return
+}
+
 func (m *EdbMonitorMessage) GetCountByCondition(condition string, pars []interface{}) (count int, err error) {
 	o := orm.NewOrmUsingDB("data")
 	sql := fmt.Sprintf(`SELECT COUNT(1) FROM edb_monitor_message WHERE 1=1 %s`, condition)
@@ -48,7 +59,7 @@ func GetEdbMonitorMessageById(id int) (item *EdbMonitorMessage, err error) {
 
 func GetEdbMonitorMessageByAdminId(adminId int) (items []*EdbMonitorMessage, err error) {
 	o := orm.NewOrmUsingDB("data")
-	sql := "SELECT * FROM edb_monitor_message WHERE admin_id =? AND is_read = 0 ORDER BY create_time ASC"
+	sql := "SELECT * FROM edb_monitor_message WHERE admin_id =? AND is_read = 0 ORDER BY create_time DESC"
 	_, err = o.Raw(sql, adminId).QueryRows(&items)
 	return
 }

+ 9 - 0
services/edb_monitor/edb_monitor_message.go

@@ -42,6 +42,15 @@ func ReadEdbMonitorMessage(messageId, adminId int) (msg string, err error) {
 	return
 }
 
+func ReadEdbMonitorMessageList(messageId []int, adminId int) (msg string, err error) {
+	err = edbmonitor.BatchModifyEdbMonitorMessageIsRead(messageId, adminId)
+	if err != nil {
+		msg = "已读失败"
+		return
+	}
+	return
+}
+
 func EdbMonitorMessageHealth(adminId int) (isClose bool, err error) {
 	conn := MonitorMessageConn[adminId]
 	if conn == nil {