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 }