package library /* * 单个英雄剧情id 奖励 */ import ( "fmt" "go_dreamfactory/comm" "go_dreamfactory/pb" cfg "go_dreamfactory/sys/configure/structs" ) //参数校验 func (this *apiComp) GetStoryRewardCheck(session comm.IUserSession, req *pb.LibraryGetStoryRewardReq) (errdata *pb.ErrorData) { if req.Oid == "" || req.History == 0 { errdata = &pb.ErrorData{ Code: pb.ErrorCode_ReqParameterError, Title: pb.ErrorCode_ReqParameterError.ToString(), } } return } func (this *apiComp) GetStoryReward(session comm.IUserSession, req *pb.LibraryGetStoryRewardReq) (errdata *pb.ErrorData) { var ( update map[string]interface{} atno []*pb.UserAtno ) update = make(map[string]interface{}, 0) if errdata = this.GetStoryRewardCheck(session, req); errdata != nil { return // 参数校验失败直接返回 } _heroFetter := this.module.modelFetter.getOneHeroFetter(session.GetUserId(), req.Oid) if _heroFetter == nil { errdata = &pb.ErrorData{ Code: pb.ErrorCode_ReqParameterError, Title: pb.ErrorCode_ReqParameterError.ToString(), } return } favorConf, err := this.module.configure.GetFavorability(_heroFetter.Heroid, 1) // 取1级的就可以 if err != nil { errdata = &pb.ErrorData{ Code: pb.ErrorCode_ConfigNoFound, Title: pb.ErrorCode_ConfigNoFound.ToString(), Message: err.Error(), } return } // 领取传记往事id for _, v := range _heroFetter.History { if v == req.History { // 已经领取过奖励 errdata = &pb.ErrorData{ Code: pb.ErrorCode_LibraryReward, Title: pb.ErrorCode_LibraryReward.ToString(), } return } } // 等级规则校验 _len := len(_heroFetter.History) if len(favorConf.Favorlv) < _len { if favorConf.Favorlv[_len] > _heroFetter.Favorlv { // 等级不够 errdata = &pb.ErrorData{ Code: pb.ErrorCode_LibraryLvReward, Title: pb.ErrorCode_LibraryLvReward.ToString(), } return } } for iPos, v := range favorConf.BiographyName { var res []*cfg.Gameatn if v == req.History { if iPos == 0 { res = append(res, favorConf.BiographyReward1...) } else if iPos == 1 { res = append(res, favorConf.BiographyReward2...) } else if iPos == 2 { res = append(res, favorConf.BiographyReward3...) } if len(res) > 0 { if errdata, atno = this.module.DispenseAtno(session, res, true); errdata != nil { return } } else { this.module.Errorf("领取奖励配置错误:%d", req.History) errdata = &pb.ErrorData{ Code: pb.ErrorCode_LibraryLvReward, Title: pb.ErrorCode_LibraryLvReward.ToString(), Message: fmt.Sprintf("领取奖励配置错误:%d", req.History), } return } break } } _heroFetter.History = append(_heroFetter.History, req.History) update["history"] = _heroFetter.History this.module.modelFetter.modifyHeroFetterDataByObjId(session.GetUserId(), _heroFetter.Id, update) session.SendMsg(string(this.module.GetType()), LibraryGetStoryRewardResp, &pb.LibraryGetStoryRewardResp{ Data: _heroFetter, Reward: atno, }) go this.module.AsynHandleSession(session.Clone(), func(session comm.IUserSession) { this.module.WriteUserLog(session.GetUserId(), comm.GMResAddType, "LibraryGetStoryRewardReq", atno) }) return }