package pagoda import ( "go_dreamfactory/comm" "go_dreamfactory/pb" ) //参数校验 func (this *apiComp) CrossCycleRankListCheck(session comm.IUserSession, req *pb.PagodaCrossCycleRankListReq) (errdata *pb.ErrorData) { return } // 循环塔榜 func (this *apiComp) CrossCycleRankList(session comm.IUserSession, req *pb.PagodaCrossCycleRankListReq) (errdata *pb.ErrorData) { var ( uids []string err error result []*pb.DBCyclePagodaRecord resultMap map[string]*pb.DBCyclePagodaRecord ranks []*pb.DBCycleRank ) if errdata = this.CrossCycleRankListCheck(session, req); errdata != nil { return } if uids, err = this.module.modelCyclePagoda.queryRankUser(); err != nil { errdata = &pb.ErrorData{ Code: pb.ErrorCode_DBError, Title: pb.ErrorCode_DBError.ToString(), Message: err.Error(), } return } if result, err = this.module.modelCyclePagoda.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.DBCyclePagodaRecord) for _, v := range result { resultMap[v.Uid] = v } ranks = make([]*pb.DBCycleRank, 0, len(uids)) for _, v := range uids { if player, ok := resultMap[v]; ok { ranks = append(ranks, &pb.DBCycleRank{ Uinfo: player.Uinfo, Line: player.Data[player.Maxfloor].Line, Floor: player.Maxfloor, Costtime: player.Data[player.Maxfloor].Consttime, }) } } session.SendMsg(string(this.module.GetType()), "crosscycleranklist", &pb.PagodaCrossCycleRankListResp{ Ranks: ranks, }) return }