package mainline import ( "fmt" "go_dreamfactory/comm" "go_dreamfactory/pb" cfg "go_dreamfactory/sys/configure/structs" ) // 参数校验 func (this *apiComp) TaskChapteRewardCheck(session comm.IUserSession, req *pb.MainlineTaskChapteRewardReq) (errdata *pb.ErrorData) { return } // 章节任务奖励领取 func (this *apiComp) TaskChapteReward(session comm.IUserSession, req *pb.MainlineTaskChapteRewardReq) (errdata *pb.ErrorData) { var ( dtask *pb.DBMainTask conf *cfg.GameMainChapterData award []*pb.UserAtno ok bool err error ) if errdata = this.TaskChapteRewardCheck(session, req); errdata != nil { return } if conf, err = this.module.configure.GetMainChapterConf(req.Chapteid); err != nil { errdata = &pb.ErrorData{ Code: pb.ErrorCode_DBError, Title: pb.ErrorCode_DBError.ToString(), Message: err.Error(), } return } if dtask, err = this.module.modelTask.getUserDTasks(session.GetUserId()); err != nil { errdata = &pb.ErrorData{ Code: pb.ErrorCode_DBError, Title: pb.ErrorCode_DBError.ToString(), Message: err.Error(), } return } if _, ok := dtask.Reward[req.Chapteid]; ok { errdata = &pb.ErrorData{ Code: pb.ErrorCode_ReqParameterError, Title: pb.ErrorCode_ReqParameterError.ToString(), Message: fmt.Sprintf("Chapteid %d received", req.Chapteid), } return } if taskids := this.module.configure.getgroupTasks(req.Chapteid); len(taskids) > 0 { tids := make([]int32, 0) for _, v := range taskids { tids = append(tids, v.Taskid) } if ok, _, _ = this.module.ModuleBuried.CheckCondition(session, tids...); !ok { errdata = &pb.ErrorData{ Code: pb.ErrorCode_ReqParameterError, Title: pb.ErrorCode_ReqParameterError.ToString(), Message: "task no finish", } return } } else { // 配置出错 errdata = &pb.ErrorData{ Code: pb.ErrorCode_ReqParameterError, Title: pb.ErrorCode_ReqParameterError.ToString(), Message: fmt.Sprintf("getgroupTasks %d err", req.Chapteid), } return } if errdata, award = this.module.DispenseAtno(session, []*cfg.Gameatn{conf.Reward}, true); errdata != nil { return } dtask.Reward[req.Chapteid] = true // 更新数据 this.module.modelTask.Change(session.GetUserId(), map[string]interface{}{ "reward": dtask.Reward, }) session.SendMsg(string(this.module.GetType()), "taskreceive", &pb.MainlineTaskChapteRewardResp{ Task: dtask, Award: award, }) go this.module.AsynHandleSession(session.Clone(), func(session comm.IUserSession) { this.module.WriteUserLog(session.GetUserId(), req, comm.GMResAddType, "MainlineTaskChapteRewardReq", award) }) return }