package integral import ( "go_dreamfactory/comm" "go_dreamfactory/pb" cfg "go_dreamfactory/sys/configure/structs" ) //参数校验 func (this *apiComp) ChallengeOverCheck(session comm.IUserSession, req *pb.IntegralChallengeOverReq) (errdata *pb.ErrorData) { if req.Nandu <= 0 { errdata = &pb.ErrorData{ Code: pb.ErrorCode_ReqParameterError, Title: pb.ErrorCode_ReqParameterError.ToString(), } return } return } ///挑战主线关卡 func (this *apiComp) ChallengeOver(session comm.IUserSession, req *pb.IntegralChallengeOverReq) (errdata *pb.ErrorData) { var ( update map[string]interface{} res []*cfg.Gameatn first bool // 是否是首通 ) update = make(map[string]interface{}, 0) if errdata = this.ChallengeOverCheck(session, req); errdata != nil { return // 参数校验失败直接返回 } list, err := this.module.modelIntegral.getIntegralList(session.GetUserId()) if err != nil { errdata = &pb.ErrorData{ Code: pb.ErrorCode_PagodaNotFound, Title: pb.ErrorCode_PagodaNotFound.ToString(), } return } if _, ok := list.Score[req.Nandu]; !ok { list.Score[req.Nandu] = req.Score update["score"] = list.Score first = true } cfgData, err := this.module.configure.GetStageBoss(list.Hid, req.Nandu) if err != nil { errdata = &pb.ErrorData{ Code: pb.ErrorCode_ConfigNoFound, // 道具数量不足 Title: pb.ErrorCode_ConfigNoFound.ToString(), Message: err.Error(), } return } // check errdata, _ = this.module.battle.CheckBattleReport(session, req.Report) if errdata != nil { return } userinfo, err := this.module.ModuleUser.GetUser(session.GetUserId()) if err != nil { errdata = &pb.ErrorData{ Code: pb.ErrorCode_DBError, Title: pb.ErrorCode_DBError.ToString(), Message: err.Error(), } return } list.Count++ update["count"] = list.Count // 更新积分数据 if list.Score[req.Nandu] < req.Score { list.Score[req.Nandu] = req.Score update["score"] = list.Score } if list.Maxscore < req.Score { // 更新最大积分数据 list.Maxscore = req.Score update["maxscore"] = list.Maxscore } list.Totalscore += req.Score update["totalscore"] = list.Totalscore if first { for _, v := range cfgData.Firstprize { // 发放通关随机奖励 res = append(res, v) } } reward := this.module.ModuleTools.GetGroupDataByLottery(cfgData.Drop, userinfo.Vip, userinfo.Lv) res = append(res, reward...) if len(res) > 0 { if errdata = this.module.DispenseRes(session, res, true); errdata != nil { return } go this.module.AsynHandleSession(session.Clone(), func(session comm.IUserSession) { this.module.WriteUserLog(session.GetUserId(), req, comm.GMResAddType, "IntegralChallengeOverReq", res) }) } err = this.module.modelIntegral.modifyIntegralData(session.GetUserId(), update) session.SendMsg(string(this.module.GetType()), "challengeover", &pb.IntegralChallengeOverResp{ Data: list, }) return }