package worldtask import ( "go_dreamfactory/comm" "go_dreamfactory/lego/sys/log" "go_dreamfactory/pb" "go_dreamfactory/utils" "google.golang.org/protobuf/proto" ) // 任务完成条件 func (this *apiComp) CompleteCondiCheck(session comm.IUserSession, req *pb.WorldtaskCompleteCondiReq) (code pb.ErrorCode) { if req.GroupId <= 0 || req.TaskId <= 0 || req.CondiId <= 0 { code = *pb.ErrorCode_ReqParameterError.Enum() } return } func (this *apiComp) CompleteCondi(session comm.IUserSession, req *pb.WorldtaskCompleteCondiReq) (code pb.ErrorCode, data proto.Message) { if code = this.CompleteCondiCheck(session, req); code != pb.ErrorCode_Success { return } rsp := &pb.WorldtaskCompleteCondiResp{} uid := session.GetUserId() // 当前任务配置 curTaskConf, err := this.module.configure.getWorldtaskById(req.TaskId) if err != nil || curTaskConf == nil { code = pb.ErrorCode_ConfigNoFound return } if (len(curTaskConf.Completetask) == 1 && curTaskConf.Completetask[0] == 0) || len(curTaskConf.Completetask) == 0 { code = pb.ErrorCode_WorldtaskNoProcess 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()}) code = pb.ErrorCode_DBError return } wt := myWorldtask.CurrentTask[req.GroupId] if m, err := this.module.service.GetModule(comm.ModuleRtask); err == nil { iwt, ok := m.(comm.IRtask) if ok { if code = iwt.CheckCondi(uid, req.CondiId); code != pb.ErrorCode_Success { rsp.Code = code rsp.CondiId = req.CondiId rsp.TaskId = req.TaskId this.module.Debug("任务完成条件不满足", log.Field{Key: "uid", Value: uid}, log.Field{Key: "taskId", Value: req.TaskId}, log.Field{Key: "condiId", Value: req.CondiId}, ) return } if wt == nil { wt = &pb.Worldtask{} } if _, b := utils.Findx(wt.CondiIds, req.CondiId); !b { wt.CondiIds = append(wt.CondiIds, req.CondiId) } } } myWorldtask.CurrentTask[req.GroupId] = wt update := map[string]interface{}{ "currentTask": myWorldtask.CurrentTask, } if err := this.module.modelWorldtask.Change(uid, update); err != nil { code = pb.ErrorCode_DBError return } session.SendMsg(string(this.module.GetType()), "completecondi", rsp) return }