package hunting import ( "go_dreamfactory/comm" "go_dreamfactory/pb" ) //参数校验 func (this *apiComp) RankListCheck(session comm.IUserSession, req *pb.HuntingRankListReq) (errdata *pb.ErrorData) { if req.BoosType == 0 { errdata = &pb.ErrorData{ Code: pb.ErrorCode_ReqParameterError, Title: pb.ErrorCode_ReqParameterError.ToString(), } } return } func (this *apiComp) RankList(session comm.IUserSession, req *pb.HuntingRankListReq) (errdata *pb.ErrorData) { var ( fRank []*pb.DBHuntingRank uids []string err error ranks []*pb.DBHuntingRecord ranksMap map[string]*pb.DBHuntingRecord players []*pb.DBHuntingRank ) if errdata = this.RankListCheck(session, req); errdata != nil { return // 参数校验失败直接返回 } if uids, err = this.module.modulerank.querySRankUser(int(req.BoosType)); err != nil { errdata = &pb.ErrorData{ Code: pb.ErrorCode_DBError, Title: pb.ErrorCode_DBError.ToString(), Message: err.Error(), } return } if ranks, err = this.module.modulerank.queryPlayers(uids); err != nil { errdata = &pb.ErrorData{ Code: pb.ErrorCode_DBError, Title: pb.ErrorCode_DBError.ToString(), Message: err.Error(), } return } ranksMap = make(map[string]*pb.DBHuntingRecord) for _, v := range ranks { ranksMap[v.Uid] = v } players = make([]*pb.DBHuntingRank, 0, len(uids)) for _, v := range uids { if player, ok := ranksMap[v]; ok { players = append(players, &pb.DBHuntingRank{ Uinfo: player.Uinfo, Line: player.Data[req.BoosType].Line[player.Data[req.BoosType].Maxnandu], Difficulty: player.Data[req.BoosType].Maxnandu, Bosstype: req.BoosType, Costtime: player.Data[req.BoosType].Costime[player.Data[req.BoosType].Maxnandu], }) } } session.SendMsg(string(this.module.GetType()), HuntingRankListResp, &pb.HuntingRankListResp{ Ranks: players, Franks: fRank, }) return }