edb_monitor_message.go 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120
  1. package edbmonitor
  2. import (
  3. "errors"
  4. edbmonitor "eta/eta_api/models/edb_monitor"
  5. "eta/eta_api/models/edb_monitor/response"
  6. "eta/eta_api/utils"
  7. "time"
  8. "github.com/gorilla/websocket"
  9. "github.com/rdlucklib/rdluck_tools/paging"
  10. )
  11. var (
  12. EDB_MONITOR_MESSAGE_CONNECT_CACHE = "edb_monitor_message_cache:"
  13. )
  14. var MonitorMessageConn = make(map[int]*websocket.Conn)
  15. func ReadEdbMonitorMessage(messageId, adminId int) (msg string, err error) {
  16. message, err := edbmonitor.GetEdbMonitorMessageById(messageId)
  17. if err != nil {
  18. if err.Error() == utils.ErrNoRow() {
  19. msg = "消息不存在"
  20. return
  21. }
  22. msg = "获取消息失败"
  23. return
  24. }
  25. if message.AdminId != adminId {
  26. msg = "您没有权限查看该消息"
  27. err = errors.New("no permission")
  28. return
  29. }
  30. message.IsRead = 1
  31. err = message.Update([]string{"IsRead"})
  32. if err != nil {
  33. msg = "已读失败"
  34. return
  35. }
  36. return
  37. }
  38. func LogMessage(content string, triggerTime time.Time, edbInfoId, edbInfoType, adminId, isRead int) (err error) {
  39. message := &edbmonitor.EdbMonitorMessage{
  40. EdbInfoId: edbInfoId,
  41. EdbInfoType: edbInfoType,
  42. AdminId: adminId,
  43. IsRead: isRead,
  44. Message: content + "触发预警",
  45. MonitorTriggerTime: triggerTime,
  46. CreateTime: time.Now(),
  47. }
  48. _, err = message.Insert()
  49. return err
  50. }
  51. func SendMessages(adminId int, edbInfoId int, edbInfoType int, message string, triggerTime string) (err error) {
  52. conn := MonitorMessageConn[adminId]
  53. if conn == nil {
  54. return errors.New("no connection")
  55. }
  56. msg := response.EdbMonitorMessageResp{
  57. EdbInfoId: edbInfoId,
  58. EdbInfoType: edbInfoType,
  59. Message: message,
  60. TriggerTime: triggerTime,
  61. }
  62. return conn.WriteJSON(msg)
  63. }
  64. func GetHistoryMessages(adminId int) (items []*response.EdbMonitorMessageResp, err error) {
  65. messageList, err := edbmonitor.GetEdbMonitorMessageByAdminId(adminId)
  66. if err != nil {
  67. return
  68. }
  69. items = toEdbMonitorMessageResp(messageList)
  70. return
  71. }
  72. func GetMessageList(adminid int, currentIndex, pageSize int) (resp response.EdbMonitorMessageListResp, err error) {
  73. startSize := utils.StartIndex(currentIndex, pageSize)
  74. total, err := edbmonitor.GetEdbMonitorMessageCountByAdminId(adminid)
  75. if err != nil {
  76. return
  77. }
  78. if total == 0 {
  79. resp.List = make([]*response.EdbMonitorMessageResp, 0)
  80. resp.Paging = paging.GetPaging(currentIndex, pageSize, total)
  81. return
  82. }
  83. messageList, err := edbmonitor.GetEdbMonitorMessagePageByAdminId(adminid, startSize, pageSize)
  84. if err != nil {
  85. return
  86. }
  87. resp.List = toEdbMonitorMessageResp(messageList)
  88. resp.Paging = paging.GetPaging(currentIndex, pageSize, total)
  89. return
  90. }
  91. func toEdbMonitorMessageResp(items []*edbmonitor.EdbMonitorMessage) (list []*response.EdbMonitorMessageResp) {
  92. list = make([]*response.EdbMonitorMessageResp, 0)
  93. for _, message := range items {
  94. item := response.EdbMonitorMessageResp{
  95. EdbMonitorMessageId: message.EdbMonitorMessageId,
  96. EdbInfoId: message.EdbInfoId,
  97. EdbInfoType: message.EdbInfoType,
  98. IsRead: message.IsRead,
  99. Message: message.Message,
  100. TriggerTime: utils.TimeTransferString(utils.FormatDateTime, message.MonitorTriggerTime),
  101. }
  102. list = append(list, &item)
  103. }
  104. return
  105. }