go_dreamfactory/modules/worldtask/api_mine.go
2023-06-15 23:51:50 +08:00

107 lines
2.7 KiB
Go

package worldtask
import (
"go_dreamfactory/comm"
"go_dreamfactory/lego/sys/log"
"go_dreamfactory/pb"
"go_dreamfactory/utils"
)
var (
dailyDes int32 = 1
weekDes int32 = 4
)
// 我的世界任务
func (this *apiComp) MineCheck(session comm.IUserSession, req *pb.WorldtaskMineReq) (errdata *pb.ErrorData) {
return
}
func (this *apiComp) Mine(session comm.IUserSession, req *pb.WorldtaskMineReq) (errdata *pb.ErrorData) {
uid := session.GetUserId()
user := this.module.ModuleUser.GetUser(uid)
if user == nil {
errdata = &pb.ErrorData{
Code: pb.ErrorCode_UserNofound,
Title: pb.ErrorCode_UserNofound.ToString(),
Message: "战斗记录是空",
}
return
}
myWorldtask, err := this.module.modelWorldtask.getWorldtask(uid)
if err != nil {
this.module.Error("获取玩家世界任务失败", log.Field{Key: "uid", Value: uid}, log.Field{Key: "err", Value: err.Error()})
errdata = &pb.ErrorData{
Code: pb.ErrorCode_DBError,
Title: pb.ErrorCode_DBError.ToString(),
Message: err.Error(),
}
return
}
if myWorldtask.CurrentTasks == nil {
myWorldtask.CurrentTasks = make(map[int32]*pb.Worldtasks)
}
//查询当前所有任务组下的完成条件数据
var condIds []int32
// condMap := make(map[int32][]int32)
for _, v := range myWorldtask.CurrentTasks {
for _, t := range v.TaskMap {
cfg, err := this.module.configure.getWorldtaskById(t.TaskId)
if err != nil {
errdata = &pb.ErrorData{
Code: pb.ErrorCode_ConfigNoFound,
Title: pb.ErrorCode_ConfigNoFound.ToString(),
Message: err.Error(),
}
return
}
if (len(cfg.Completetask) >= 1 && cfg.Completetask[0] > 0) &&
len(cfg.Completetask) > 0 {
condIds = append(condIds, cfg.Completetask...)
// condMap[k] = cfg.Completetask
}
}
}
condIds = utils.RemoveDuplicate(condIds)
// this.module.modelWorldtask.updateRandomTask(uid, myWorldtask)
// 查询任务的条件进度
conds, err := this.module.ModuleBuried.CheckCondition(uid, condIds...)
if err != nil {
errdata = &pb.ErrorData{
Code: pb.ErrorCode_ExternalModule,
Title: pb.ErrorCode_ExternalModule.ToString(),
Message: comm.NewExternalModuleErr("buried", "CheckCondition", condIds).Error(),
}
return
}
// for k, v := range condMap {
for _, mw := range myWorldtask.CurrentTasks {
for _, task := range mw.TaskMap {
task.Conds = make([]*pb.ConIProgress, 0)
_cfg, _ := this.module.configure.getWorldtaskById(task.TaskId)
for _, cond := range conds {
if _, ok := utils.Findx(_cfg.Completetask, cond.Conid); ok {
task.Conds = append(task.Conds, cond)
}
}
}
}
// }
rsp := &pb.WorldtaskMineResp{
Task: myWorldtask,
}
this.sendMsg(session, WorldtaskSubtypeMine, rsp)
return
}