package worldtask import ( "go_dreamfactory/comm" "go_dreamfactory/pb" ) // 任务完成条件 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 *pb.ErrorData) { 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 { rsp.Code = pb.ErrorCode_WorldtaskNoProcess this.sendMsg(session, WorldtaskComplete, rsp) return } myWorldtask, err := this.module.modelWorldtask.getWorldtask(uid) if err != nil { code = pb.ErrorCode_DBError return } myWorldtask.Uid = uid 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}, // ) // this.sendMsg(session, WorldtaskComplete, rsp) // return // } // if wt == nil { // wt = &pb.Worldtask{} // } // if _, b := utils.Findx(wt.CondiIds, req.CondiId); !b { // wt.CondiIds = append(wt.CondiIds, req.CondiId) // } // } // } condIds, err := this.module.ModuleBuried.CheckCondition(uid, req.CondiId) if err == nil && len(condIds) > 0 { wt.CondiIds = append(wt.CondiIds, condIds...) } 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 } this.sendMsg(session, WorldtaskComplete, rsp) //结束任务 if curTaskConf.DeliverNpc == 0 { this.module.modelWorldtask.taskFinish(session, req.GroupId, req.TaskId, myWorldtask, curTaskConf) this.module.modelWorldtask.taskFinishPush(session, req.GroupId, myWorldtask, curTaskConf) } return }