@Override
  @RPCReponse("e_rooms")
  public ResultVo getRooms(LogicRequest args) {
    // TODO 自动生成的方法存根

    Map<Integer, Object> _count = null;
    Map<Long, PlayerInfoInRoom> omIds = null;
    // 查询更新房间,填充到list
    FlashLoginOp op = null;
    try {
      op = ObjectBeanUtil.JACKSON.readValue(args.getData(), FlashLoginOp.class);
    } catch (IOException e) {
      LOGGER.warn("", e);
    }
    // 保存节点记录
    if (op.getGl() > 0) {
      if (op.getGl() == 1) {
        // LobbyUserHelper.saveUserNodeLog(fbid,
        // UserNodeLog.USER_NODE_TALBE_LOW, 0);
      } else if (op.getGl() == 2) {
        // LobbyUserHelper.saveUserNodeLog(fbid,
        // UserNodeLog.USER_NODE_TALBE_MID, 0);
      } else if (op.getGl() == 3) {
        // LobbyUserHelper.saveUserNodeLog(fbid,
        // UserNodeLog.USER_NODE_TALBE_HIG, 0);
      }
    }

    // 显示最大空座数
    Integer maxEmptyLevelRoom = LogicPropertyUtil.getInteger("option.max.empty.level.room", 1);

    Map<String, Map<Integer, Integer>> emptyLevelRoom =
        new HashMap<String, Map<Integer, Integer>>(); // 某个房间等级下几人场空的房间
    Map<Double, Map<Integer, Integer>> lock =
        new HashMap<Double, Map<Integer, Integer>>(); // 小盲对应的锁
    // 通过roomId比较排序
    Map<String, Rooms> sortRooms = MapUtils.sortKey(LocalCache.ROOMS);
    Iterator iter = sortRooms.entrySet().iterator(); // 获得map的Iterator
    Map<Integer, Integer> mc = null;
    ResultVo vo = null;

    if (op.getGt() == 1) { // 简洁
      // ----------------------------------1----------------------------------
      Rooms room = null;
      Map<String, RoomsAsBB> roomlist = new HashMap<String, RoomsAsBB>();
      List<RoomsAsBB> list = new ArrayList<RoomsAsBB>();

      while (iter.hasNext()) {
        try {
          Entry entry = (Entry) iter.next();
          room = (Rooms) entry.getValue();

          if (op.getGt() == room.getGl()) {
            omIds = LocalCache.PLAYER_ON_ROOM.get(room.getRid());
            room.setCc(omIds == null ? 0 : omIds.size());

            RoomsAsBB rbb = roomlist.get(room.getGid());
            if (rbb != null) {
              rbb.setCc(rbb.getCc() + room.getCc());
            } else {
              rbb = new RoomsAsBB();
              rbb.setGr(room.getGid());
              rbb.setSb(room.getSb());
              rbb.setBb(room.getBb());
              rbb.setDefc(room.getDefc());
              rbb.setCc(room.getCc());
              rbb.setRn("");
            }
            roomlist.put(room.getGid(), rbb);
          }

        } catch (Exception e) {
          // TODO: handle exception
        }
      }

      if (roomlist.size() > 0) {

        Iterator<Entry<String, RoomsAsBB>> riter = roomlist.entrySet().iterator();
        while (riter.hasNext()) {
          try {
            Map.Entry<String, RoomsAsBB> entry = riter.next();

            RoomsAsBB rbb = entry.getValue();
            list.add(rbb);
          } catch (Exception e) {
            // TODO: handle exception
            e.printStackTrace();
          }
        }
      }
      vo = new ResultVo(Definition.ROOMS, Definition.SUCCESS_CODE, list, op.getGt());

    } else if (op.getGt() == 2) { // 复杂
      // --------------------------------2-----------------------------------
      List<Rooms> list = new ArrayList<Rooms>();

      Rooms room = null;
      while (iter.hasNext()) {
        try {
          Entry entry = (Entry) iter.next();
          room = (Rooms) entry.getValue();
          if (op.getGl() == 0 || op.getGl() == room.getGl()) {
            omIds = LocalCache.PLAYER_ON_ROOM.get(room.getRid());
            room.setCc(omIds == null ? 0 : omIds.size());

            // 状态类型筛选
            if (op.getSt() > 0) {
              if (op.getSt() == 5) { // 隐藏满员桌
                if (room.getCc() == room.getMc()) {
                  continue;
                }
              } else if (op.getSt() == 6) { // 隐藏空桌
                if (room.getCc() == 0) {
                  continue;
                }
              } else if (op.getSt() == 56) { // 满足上面两个情况
                if (room.getCc() == room.getMc() || room.getCc() == 0) {
                  continue;
                }
              }
            }

            // 记录空房间数量
            if (omIds == null || omIds.size() == 0) {
              if (emptyLevelRoom.containsKey(room.getGid())) {
                mc = emptyLevelRoom.get(room.getGid());
                if (mc != null && mc.containsKey(room.getMc())) {
                  mc.put(room.getMc(), mc.get(room.getMc()) + 1);
                } else {
                  mc = new HashMap<Integer, Integer>();
                  mc.put(room.getMc(), 1);
                }
                emptyLevelRoom.put(room.getGid(), mc);
              } else {
                mc = new HashMap<Integer, Integer>();
                mc.put(room.getMc(), 1);
                emptyLevelRoom.put(room.getGid(), mc);
              }

              // 空房间数量是否超过设置
              if (mc.get(room.getMc()) > maxEmptyLevelRoom) {
                continue;
              }
            }
            /*
             * if(omIds != null && omIds.size() > 0){ _count =
             * getAp(room.getRid());
             * room.setAp(Double.valueOf(_count.get
             * (0).toString()).intValue());
             * room.setFr(Double.valueOf(_count
             * .get(1).toString()).intValue());
             * room.setRh(Integer.valueOf
             * (_count.get(2).toString())); }else{ room.setAp(0D);
             * room.setFr(0D); room.setRh(0);
             * LobbyCache.GAME_ROOMS_END.remove(room.getRid()); }
             * room.setSt(omIds != null && omIds.containsKey(fbid) ?
             * true : false); //锁 Map<Integer,Integer> lockroom =
             * null; if(lock.containsKey(room.getSb())){ lockroom =
             * lock.get(room.getSb()); }else{ lockroom =
             * LobbyUserHelper.getRoomLock(fbid, room.getSb(),
             * room.getBb()); lock.put(room.getSb(), lockroom); }
             * room.setClk(lockroom.get(0));
             * room.setLk(lockroom.get(1));
             */
            if (room.getCc() > room.getMc()) { // 出现不同步的情况下应急处理
              room.setCc(room.getMc());
            }
            list.add(room);
          }
        } catch (Exception e) {
          break;
        }
      }
      vo = new ResultVo(Definition.ROOMS, Definition.SUCCESS_CODE, list, op.getGl());

    } else if (op.getGt() == 3) { // 比赛
      // ---------------------------------3-------------------------------
    }

    return vo;
  }