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 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 { for _, v := range taskids { if progress, err := this.module.ModuleBuried.CheckCondition(session.GetUserId(), v.Taskid); err == nil { for _, v := range progress { if v.State == pb.BuriedItemFinishState_buried_unfinish { errdata = &pb.ErrorData{ Code: pb.ErrorCode_ReqParameterError, Title: pb.ErrorCode_ReqParameterError.ToString(), Message: "task no finish", } return } } } else { errdata = &pb.ErrorData{ Code: pb.ErrorCode_ExternalModule, Title: pb.ErrorCode_ExternalModule.ToString(), Message: comm.NewExternalModuleErr("Buried", "CheckCondition", v.Taskid).Error(), } 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(), comm.GMResAddType, "MainlineTaskChapteRewardReq", award) }) return }