go_dreamfactory/modules/dailytask/api_Info.go
2023-07-20 17:43:32 +08:00

70 lines
1.8 KiB
Go

package dailytask
import (
"fmt"
"go_dreamfactory/comm"
"go_dreamfactory/pb"
)
// 参数校验
func (this *apiComp) InfoCheck(session comm.IUserSession, req *pb.DailytaskInfoReq) (errdata *pb.ErrorData) {
return
}
// /获取自己的排行榜信息
func (this *apiComp) Info(session comm.IUserSession, req *pb.DailytaskInfoReq) (errdata *pb.ErrorData) {
var (
dtask *pb.DBDailytask
tasks []int32
progress []*pb.DBWTaskItem
progressMap map[int32]*pb.DBWTaskItem = make(map[int32]*pb.DBWTaskItem)
TaskProgress []*pb.DBDailytaskGroupProgress
ok bool
err error
)
if errdata = this.InfoCheck(session, req); errdata != nil {
return
}
if dtask, err = this.module.modelDailytask.getUserDTasks(session.GetUserId()); err != nil {
errdata = &pb.ErrorData{
Code: pb.ErrorCode_DBError,
Title: pb.ErrorCode_DBError.ToString(),
Message: err.Error(),
}
return
}
for _, v := range dtask.Groups {
tasks = append(tasks, v.Tasks...)
}
if progress, errdata = this.module.wtask.InquireTaskProgress(session, tasks...); err != nil {
return
}
for _, v := range progress {
progressMap[v.Tid] = v
}
TaskProgress = make([]*pb.DBDailytaskGroupProgress, 0)
for _, v := range dtask.Groups {
pg := &pb.DBDailytaskGroupProgress{Group: v.Group, Tasks: make([]*pb.DBWTaskItem, 0)}
for _, v := range v.Tasks {
if _, ok = progressMap[v]; ok {
pg.Tasks = append(pg.Tasks, progressMap[v])
} else {
errdata = &pb.ErrorData{
Code: pb.ErrorCode_DBError,
Title: pb.ErrorCode_DBError.ToString(),
Message: fmt.Sprintf("on found task:%d", v),
}
return
}
}
TaskProgress = append(TaskProgress, pg)
}
session.SendMsg(string(this.module.GetType()), "info", &pb.DailytaskInfoResp{Task: TaskProgress})
return
}