go_dreamfactory/modules/worldtask/api_mine.go
2023-06-09 13:53:38 +08:00

105 lines
2.6 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 k, 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 {
if mw, ok := myWorldtask.CurrentTasks[k]; ok {
for _, task := range mw.TaskMap {
for _, cond := range conds {
if _, ok := utils.Findx(v, cond.Conid); ok {
task.Conds = append(task.Conds, cond)
}
}
}
}
}
rsp := &pb.WorldtaskMineResp{
Task: myWorldtask,
}
this.sendMsg(session, WorldtaskSubtypeMine, rsp)
return
}