package youngee_talent_service import ( "log" "youngmini_server/app/dao" "youngmini_server/app/model" "youngmini_server/app/model/youngee_talent_model" "youngmini_server/app/utils" "github.com/gogf/gf/frame/g" "github.com/gogf/gf/net/ghttp" ) // 获取任务日志 func GetTaskLog(r *ghttp.Request) *TalentHttpResult { taskId := r.GetQueryInt("task_id", -1) var taskLog []*model.YounggeeTaskLog err := g.Model(dao.YounggeeTaskLog.Table).Where("task_id = ?", taskId).Order("log_at").Scan(&taskLog) if err != nil { log.Println("GetTaskLog error:", err) return &TalentHttpResult{Code: -1, Msg: "Get task log failed"} } return &TalentHttpResult{Code: 0, Msg: "success", Data: taskLog} } // 获取消息通知 func GetMessage(r *ghttp.Request) *TalentHttpResult { tid, err := utils.SessionTalentInfo.GetTalentIdFromSession(r) if err != nil { return &TalentHttpResult{Code: -1, Msg: "Get talent info failed"} } var taskMessage []*model.YounggeeMessageInfo err = g.Model(dao.YounggeeMessageInfo.Table).Where("talent_id = ? and is_deleted = 0", tid).Order("created_at desc").Scan(&taskMessage) if err != nil { log.Println("GetMessage error:", err) return &TalentHttpResult{Code: -2, Msg: "Get task message failed"} } return &TalentHttpResult{Code: 0, Msg: "success", Data: taskMessage} } // 获取消息通知列表 // GetMessageList 获取消息通知列表,按类型分类 func GetMessageList(r *ghttp.Request) *TalentHttpResult { // 获取 Talent ID tid, err := utils.SessionTalentInfo.GetTalentIdFromSession(r) if err != nil { return &TalentHttpResult{Code: -1, Msg: "Get talent info failed"} } // 获取所有消息数据 var notifications []youngee_talent_model.YounggeeMutilMessInfo err = g.DB().Model("message_multi_info").Where("talent_id = ? and is_deleted = 1", tid).Scan(¬ifications) if err != nil { return &TalentHttpResult{Code: -2, Msg: "Get notifications failed"} } // 定义所有可能的消息类型 notificationTypes := []int{1, 2, 3, 4, 5, 6} //最终返回一个数组 var result []youngee_talent_model.NotificationTypeResult for _, nt := range notificationTypes { // 获取每种类型的未读数量 count, err := g.DB().Model("message_multi_info").Where("talent_id= ? AND mess_type= ? AND is_readed=?", tid, nt, 1).Count() if err != nil { return &TalentHttpResult{Code: -3, Msg: "Failed to get unread count"} } // 获取每种类型的所有消息 var typeNotifications []youngee_talent_model.YounggeeMutilMessInfo err = g.DB().Model("message_multi_info").Where("talent_id= ? AND mess_type= ? AND is_readed=?", tid, nt, 1).Scan(&typeNotifications) if err != nil { return &TalentHttpResult{Code: -4, Msg: "Failed to get notifications by type"} } //每种类型最新一条消息 var latestMess *youngee_talent_model.YounggeeMutilMessInfo err = g.DB().Model("message_multi_info").Where("talent_id= ? AND mess_type= ? AND is_readed=?", tid, nt, 1). Order("created_at DESC").Limit(1).Scan(&latestMess) // 构建每种类型的结果 result = append(result, youngee_talent_model.NotificationTypeResult{ Type: nt, UnreadCount: count, LatestInfo: latestMess, Data: typeNotifications, // 所有该类型的消息 }) } return &TalentHttpResult{Code: 0, Msg: "success", Data: result} } // 获取消息通知详情页 func GetMessageDetail(r *ghttp.Request) *TalentHttpResult { tid, err := utils.SessionTalentInfo.GetTalentIdFromSession(r) if err != nil { return &TalentHttpResult{Code: -1, Msg: "Get talent info failed"} } var taskMessage []*model.YounggeeMessageInfo err = g.Model("message_multi_info").Where("talent_id = ? and is_deleted = 1", tid).Order("created_at desc").Scan(&taskMessage) if err != nil { log.Println("GetMessage error:", err) return &TalentHttpResult{Code: -2, Msg: "Get task message failed"} } return &TalentHttpResult{Code: 0, Msg: "success", Data: taskMessage} } // 设置消息已读 func CleanAllUnread(r *ghttp.Request) *TalentHttpResult { tid, err := utils.SessionTalentInfo.GetTalentIdFromSession(r) if err != nil { return &TalentHttpResult{Code: -1, Msg: "Get talent info failed"} } _, err = g.Model("message_multi_info").Where("talent_id = ?", tid).Update(g.Map{"is_readed": 2}) if err != nil { log.Println("UpdateMessage error:", err) return &TalentHttpResult{Code: -2, Msg: "Update task message failed"} } return &TalentHttpResult{Code: 0, Msg: "success"} } // 设置类型消息已读 func CleanTypeUnread(r *ghttp.Request) *TalentHttpResult { tid, err := utils.SessionTalentInfo.GetTalentIdFromSession(r) mess_type := r.GetQueryInt("mess_type", -1) if err != nil { return &TalentHttpResult{Code: -1, Msg: "Get talent info failed"} } _, err = g.Model("message_multi_info").Where("talent_id = ? AND mess_type = ?", tid, mess_type).Update(g.Map{"is_readed": 2}) if err != nil { log.Println("UpdateMessage error:", err) return &TalentHttpResult{Code: -2, Msg: "Update task message failed"} } return &TalentHttpResult{Code: 0, Msg: "success"} } // 获取消息通知 func HasUnReadMessage(r *ghttp.Request) *TalentHttpResult { tid, err := utils.SessionTalentInfo.GetTalentIdFromSession(r) if err != nil { return &TalentHttpResult{Code: -1, Msg: "Get talent info failed"} } UnReadMessageNum, err := g.Model("message_multi_info").Where("talent_id = ? and is_readed = 1", tid).Count() if err != nil { log.Println("GetMessage error:", err) return &TalentHttpResult{Code: -2, Msg: "Get task message failed"} } return &TalentHttpResult{Code: 0, Msg: "success", Data: UnReadMessageNum} } // 删除消息 func DeleteMessage(r *ghttp.Request) *TalentHttpResult { messId := r.GetQueryInt("mess_id", -1) _, err := g.Model("message_multi_info").Where("id = ?", messId).Update(g.Map{"is_deleted": 2}) if err != nil { log.Println("UpdateMessage error:", err) return &TalentHttpResult{Code: -2, Msg: "Update task message failed"} } return &TalentHttpResult{Code: 0, Msg: "success"} }