edb_monitor_message.go 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  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. )
  10. var (
  11. EDB_MONITOR_MESSAGE_CONNECT_CACHE = "edb_monitor_message_cache:"
  12. )
  13. var MonitorMessageConn = make(map[int]*websocket.Conn)
  14. func ReadEdbMonitorMessage(messageId, adminId int) (msg string, err error) {
  15. message, err := edbmonitor.GetEdbMonitorMessageById(messageId)
  16. if err != nil {
  17. if err.Error() == utils.ErrNoRow() {
  18. msg = "消息不存在"
  19. return
  20. }
  21. msg = "获取消息失败"
  22. return
  23. }
  24. if message.AdminId != adminId {
  25. msg = "您没有权限查看该消息"
  26. err = errors.New("no permission")
  27. return
  28. }
  29. message.IsRead = 1
  30. err = message.Update([]string{"IsRead"})
  31. if err != nil {
  32. msg = "已读失败"
  33. return
  34. }
  35. return
  36. }
  37. func LogMessage(content string, triggerTime time.Time, edbInfoId, edbInfoType, adminId, isRead int) (err error) {
  38. message := &edbmonitor.EdbMonitorMessage{
  39. EdbInfoId: edbInfoId,
  40. EdbInfoType: edbInfoType,
  41. AdminId: adminId,
  42. IsRead: isRead,
  43. Message: content,
  44. MonitorTriggerTime: triggerTime,
  45. CreateTime: time.Now(),
  46. }
  47. _, err = message.Insert()
  48. return err
  49. }
  50. func SendMessages(adminId int, edbInfoId int, edbInfoType int, message string, triggerTime string) (err error) {
  51. conn := MonitorMessageConn[adminId]
  52. if conn == nil {
  53. return errors.New("no connection")
  54. }
  55. msg := response.EdbMonitorMessageResp{
  56. EdbInfoId: edbInfoId,
  57. EdbInfoType: edbInfoType,
  58. Message: message,
  59. TriggerTime: triggerTime,
  60. }
  61. return conn.WriteJSON(msg)
  62. }
  63. func GetHistoryMessages(adminId int) (items []*response.EdbMonitorMessageResp, err error) {
  64. messageList, err := edbmonitor.GetEdbMonitorMessageByAdminId(adminId)
  65. if err != nil {
  66. return
  67. }
  68. for _, message := range messageList {
  69. item := response.EdbMonitorMessageResp{
  70. EdbMonitorMessageId: message.EdbMonitorMessageId,
  71. EdbInfoId: message.EdbInfoId,
  72. EdbInfoType: message.EdbInfoType,
  73. Message: message.Message,
  74. TriggerTime: utils.TimeTransferString(utils.FormatDateTime, message.MonitorTriggerTime),
  75. }
  76. items = append(items, &item)
  77. }
  78. return
  79. }