package pagoda import ( "go_dreamfactory/comm" "go_dreamfactory/pb" ) //参数校验 func (this *apiComp) RankListCheck(session comm.IUserSession, req *pb.PagodaRankListReq) (errdata *pb.ErrorData) { if req.Cid == 0 { errdata = &pb.ErrorData{ Code: pb.ErrorCode_ReqParameterError, Title: pb.ErrorCode_ReqParameterError.ToString(), } return } return } func (this *apiComp) RankList(session comm.IUserSession, req *pb.PagodaRankListReq) (errdata *pb.ErrorData) { var ( szRank []*pb.PagodaRank ) if errdata = this.RankListCheck(session, req); errdata != nil { return } var ( uids []string err error result []*pb.DBPagodaRecord resultMap map[string]*pb.DBPagodaRecord ) if uids, err = this.module.modulerank.queryRankUser(req.Cid); err != nil { errdata = &pb.ErrorData{ Code: pb.ErrorCode_DBError, Title: pb.ErrorCode_DBError.ToString(), Message: err.Error(), } return } if result, err = this.module.modulerank.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.DBPagodaRecord) for _, v := range result { resultMap[v.Uid] = v } szRank = make([]*pb.PagodaRank, 0, len(uids)) for _, v := range uids { if player, ok := resultMap[v]; ok { szRank = append(szRank, &pb.PagodaRank{ Uinfo: player.Uinfo, Line: player.Data[req.Cid].Line, Floor: req.Cid, Costtime: player.Data[req.Cid].Consttime, }) } } session.SendMsg(string(this.module.GetType()), PagodaRankListResp, &pb.PagodaRankListResp{ Ranks: szRank, Franks: []*pb.PagodaRank{}, }) return }