123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164 |
- 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"}
- }
|