package pagoda import ( "go_dreamfactory/comm" "go_dreamfactory/pb" ) //参数校验 func (this *apiComp) CrossRaceRankListCheck(session comm.IUserSession, req *pb.PagodaCrossRaceRankListReq) (errdata *pb.ErrorData) { return } // 六合塔榜 func (this *apiComp) CrossRaceRankList(session comm.IUserSession, req *pb.PagodaCrossRaceRankListReq) (errdata *pb.ErrorData) { var ( uids []string err error result []*pb.DBRacePagodaRecord resultMap map[string]*pb.DBRacePagodaRecord ranks []*pb.DBRaceRank ) if errdata = this.CrossRaceRankListCheck(session, req); errdata != nil { return } if uids, err = this.module.modelRacePagoda.queryRankUser(); err != nil { errdata = &pb.ErrorData{ Code: pb.ErrorCode_DBError, Title: pb.ErrorCode_DBError.ToString(), Message: err.Error(), } return } if result, err = this.module.modelRacePagoda.queryPlayers(uids); err != nil { errdata = &pb.ErrorData{ Code: pb.ErrorCode_DBError, Title: pb.ErrorCode_DBError.ToString(), Message: err.Error(), } return } resultMap = make(map[string]*pb.DBRacePagodaRecord) for _, v := range result { resultMap[v.Uid] = v } ranks = make([]*pb.DBRaceRank, 0, len(uids)) for _, v := range uids { if player, ok := resultMap[v]; ok { ranks = append(ranks, &pb.DBRaceRank{ Uinfo: player.Uinfo, Line: player.Data[player.Maxfloor].Line, Floor: player.Maxfloor, Costtime: player.Data[player.Maxfloor].Consttime, }) } } session.SendMsg(string(this.module.GetType()), PagodaCrossRaceRankListReq, &pb.PagodaCrossRaceRankListResp{ Ranks: ranks, }) return }