log_message.go 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164
  1. package youngee_talent_service
  2. import (
  3. "log"
  4. "youngmini_server/app/dao"
  5. "youngmini_server/app/model"
  6. "youngmini_server/app/model/youngee_talent_model"
  7. "youngmini_server/app/utils"
  8. "github.com/gogf/gf/frame/g"
  9. "github.com/gogf/gf/net/ghttp"
  10. )
  11. // 获取任务日志
  12. func GetTaskLog(r *ghttp.Request) *TalentHttpResult {
  13. taskId := r.GetQueryInt("task_id", -1)
  14. var taskLog []*model.YounggeeTaskLog
  15. err := g.Model(dao.YounggeeTaskLog.Table).Where("task_id = ?", taskId).Order("log_at").Scan(&taskLog)
  16. if err != nil {
  17. log.Println("GetTaskLog error:", err)
  18. return &TalentHttpResult{Code: -1, Msg: "Get task log failed"}
  19. }
  20. return &TalentHttpResult{Code: 0, Msg: "success", Data: taskLog}
  21. }
  22. // 获取消息通知
  23. func GetMessage(r *ghttp.Request) *TalentHttpResult {
  24. tid, err := utils.SessionTalentInfo.GetTalentIdFromSession(r)
  25. if err != nil {
  26. return &TalentHttpResult{Code: -1, Msg: "Get talent info failed"}
  27. }
  28. var taskMessage []*model.YounggeeMessageInfo
  29. err = g.Model(dao.YounggeeMessageInfo.Table).Where("talent_id = ? and is_deleted = 0", tid).Order("created_at desc").Scan(&taskMessage)
  30. if err != nil {
  31. log.Println("GetMessage error:", err)
  32. return &TalentHttpResult{Code: -2, Msg: "Get task message failed"}
  33. }
  34. return &TalentHttpResult{Code: 0, Msg: "success", Data: taskMessage}
  35. }
  36. // 获取消息通知列表
  37. // GetMessageList 获取消息通知列表,按类型分类
  38. func GetMessageList(r *ghttp.Request) *TalentHttpResult {
  39. // 获取 Talent ID
  40. tid, err := utils.SessionTalentInfo.GetTalentIdFromSession(r)
  41. if err != nil {
  42. return &TalentHttpResult{Code: -1, Msg: "Get talent info failed"}
  43. }
  44. // 获取所有消息数据
  45. var notifications []youngee_talent_model.YounggeeMutilMessInfo
  46. err = g.DB().Model("message_multi_info").Where("talent_id = ? and is_deleted = 1", tid).Scan(&notifications)
  47. if err != nil {
  48. return &TalentHttpResult{Code: -2, Msg: "Get notifications failed"}
  49. }
  50. // 定义所有可能的消息类型
  51. notificationTypes := []int{1, 2, 3, 4, 5, 6}
  52. //最终返回一个数组
  53. var result []youngee_talent_model.NotificationTypeResult
  54. for _, nt := range notificationTypes {
  55. // 获取每种类型的未读数量
  56. count, err := g.DB().Model("message_multi_info").Where("talent_id= ? AND mess_type= ? AND is_readed=?", tid, nt, 1).Count()
  57. if err != nil {
  58. return &TalentHttpResult{Code: -3, Msg: "Failed to get unread count"}
  59. }
  60. // 获取每种类型的所有消息
  61. var typeNotifications []youngee_talent_model.YounggeeMutilMessInfo
  62. err = g.DB().Model("message_multi_info").Where("talent_id= ? AND mess_type= ? AND is_readed=?", tid, nt, 1).Scan(&typeNotifications)
  63. if err != nil {
  64. return &TalentHttpResult{Code: -4, Msg: "Failed to get notifications by type"}
  65. }
  66. //每种类型最新一条消息
  67. var latestMess *youngee_talent_model.YounggeeMutilMessInfo
  68. err = g.DB().Model("message_multi_info").Where("talent_id= ? AND mess_type= ? AND is_readed=?", tid, nt, 1).
  69. Order("created_at DESC").Limit(1).Scan(&latestMess)
  70. // 构建每种类型的结果
  71. result = append(result, youngee_talent_model.NotificationTypeResult{
  72. Type: nt,
  73. UnreadCount: count,
  74. LatestInfo: latestMess,
  75. Data: typeNotifications, // 所有该类型的消息
  76. })
  77. }
  78. return &TalentHttpResult{Code: 0, Msg: "success", Data: result}
  79. }
  80. // 获取消息通知详情页
  81. func GetMessageDetail(r *ghttp.Request) *TalentHttpResult {
  82. tid, err := utils.SessionTalentInfo.GetTalentIdFromSession(r)
  83. if err != nil {
  84. return &TalentHttpResult{Code: -1, Msg: "Get talent info failed"}
  85. }
  86. var taskMessage []*model.YounggeeMessageInfo
  87. err = g.Model("message_multi_info").Where("talent_id = ? and is_deleted = 1", tid).Order("created_at desc").Scan(&taskMessage)
  88. if err != nil {
  89. log.Println("GetMessage error:", err)
  90. return &TalentHttpResult{Code: -2, Msg: "Get task message failed"}
  91. }
  92. return &TalentHttpResult{Code: 0, Msg: "success", Data: taskMessage}
  93. }
  94. // 设置消息已读
  95. func CleanAllUnread(r *ghttp.Request) *TalentHttpResult {
  96. tid, err := utils.SessionTalentInfo.GetTalentIdFromSession(r)
  97. if err != nil {
  98. return &TalentHttpResult{Code: -1, Msg: "Get talent info failed"}
  99. }
  100. _, err = g.Model("message_multi_info").Where("talent_id = ?", tid).Update(g.Map{"is_readed": 2})
  101. if err != nil {
  102. log.Println("UpdateMessage error:", err)
  103. return &TalentHttpResult{Code: -2, Msg: "Update task message failed"}
  104. }
  105. return &TalentHttpResult{Code: 0, Msg: "success"}
  106. }
  107. // 设置类型消息已读
  108. func CleanTypeUnread(r *ghttp.Request) *TalentHttpResult {
  109. tid, err := utils.SessionTalentInfo.GetTalentIdFromSession(r)
  110. mess_type := r.GetQueryInt("mess_type", -1)
  111. if err != nil {
  112. return &TalentHttpResult{Code: -1, Msg: "Get talent info failed"}
  113. }
  114. _, err = g.Model("message_multi_info").Where("talent_id = ? AND mess_type = ?", tid, mess_type).Update(g.Map{"is_readed": 2})
  115. if err != nil {
  116. log.Println("UpdateMessage error:", err)
  117. return &TalentHttpResult{Code: -2, Msg: "Update task message failed"}
  118. }
  119. return &TalentHttpResult{Code: 0, Msg: "success"}
  120. }
  121. // 获取消息通知
  122. func HasUnReadMessage(r *ghttp.Request) *TalentHttpResult {
  123. tid, err := utils.SessionTalentInfo.GetTalentIdFromSession(r)
  124. if err != nil {
  125. return &TalentHttpResult{Code: -1, Msg: "Get talent info failed"}
  126. }
  127. UnReadMessageNum, err := g.Model("message_multi_info").Where("talent_id = ? and is_readed = 1", tid).Count()
  128. if err != nil {
  129. log.Println("GetMessage error:", err)
  130. return &TalentHttpResult{Code: -2, Msg: "Get task message failed"}
  131. }
  132. return &TalentHttpResult{Code: 0, Msg: "success", Data: UnReadMessageNum}
  133. }
  134. // 删除消息
  135. func DeleteMessage(r *ghttp.Request) *TalentHttpResult {
  136. messId := r.GetQueryInt("mess_id", -1)
  137. _, err := g.Model("message_multi_info").Where("id = ?", messId).Update(g.Map{"is_deleted": 2})
  138. if err != nil {
  139. log.Println("UpdateMessage error:", err)
  140. return &TalentHttpResult{Code: -2, Msg: "Update task message failed"}
  141. }
  142. return &TalentHttpResult{Code: 0, Msg: "success"}
  143. }