diff --git a/src/main/java/com/ljsd/controller/GetServerListController.java b/src/main/java/com/ljsd/controller/GetServerListController.java index 74c8d12..7e1cf90 100644 --- a/src/main/java/com/ljsd/controller/GetServerListController.java +++ b/src/main/java/com/ljsd/controller/GetServerListController.java @@ -15,7 +15,6 @@ import java.io.IOException; import java.io.PrintWriter; import java.util.*; import java.util.concurrent.ConcurrentHashMap; -import java.util.stream.Collectors; public class GetServerListController extends HttpServlet { private final static String _COLLECTION_NAME = "server_info"; @@ -43,29 +42,27 @@ public class GetServerListController extends HttpServlet { String openId = request.getParameter("openId"); String channel = request.getParameter("channel"); String sub_channel = request.getParameter("sub_channel"); - String server_version = request.getParameter("server_version"); String plat = request.getParameter("plat"); if (StringUtils.checkIsEmpty(openId) || StringUtils.checkIsEmpty(channel) || - StringUtils.checkIsEmpty(sub_channel) || StringUtils.checkIsEmpty(plat) || StringUtils.checkIsEmpty(server_version)) { + StringUtils.checkIsEmpty(sub_channel) || StringUtils.checkIsEmpty(plat)) { response.sendError(400, "parm is wrong"); return; } -// DBObject req = new BasicDBObject(); -// req.put("channel", channel); -// req.put("sub_channel", sub_channel); -// req.put("plat", plat); -// req.put("server_version", Integer.valueOf(server_version)); + DBObject req = new BasicDBObject(); + req.put("channel", channel); + req.put("sub_channel", sub_channel); + req.put("plat", plat); List serverList = new ArrayList<>(); - // long local = System.currentTimeMillis(); - // if ((local - lastRefreshTime) > 10 * 1000 || serverInfosCache.isEmpty()) { + long local = System.currentTimeMillis(); + if ((local - lastRefreshTime) > 10 * 1000 || serverInfosCache.isEmpty()) { serverInfosCache.clear(); - // lastRefreshTime = local; + lastRefreshTime = local; recommend = ""; whiteListCache = BaseGlobal.getInstance().mongoDBPool.findOne(_WHITE_LIST, openId); - List serverInfoList = BaseGlobal.getInstance().mongoDBPool.findAll(_COLLECTION_NAME); + List serverInfoList = BaseGlobal.getInstance().mongoDBPool.find(_COLLECTION_NAME, req); SortedSet newServerList = new TreeSet<>(); - String maxNumServerId = ""; + String maxNumServerId= ""; int maxNum = 0; for (DBObject serverInfo : serverInfoList) { int state = Integer.parseInt(serverInfo.get("state").toString()); @@ -80,16 +77,16 @@ public class GetServerListController extends HttpServlet { } //state - String server_id = serverInfo.get("server_id").toString(); + String server_id=serverInfo.get("server_id").toString(); int num = getOnlineNum(server_id); if (whiteListCache != null && state == 1) { state = 2; } else { if (state == 5) { - state = getState(server_id, num); + state = getState(server_id,num); } } - if (state == 2 && maxNum < num) { + if(state==2&&maxNum collect = serverInfosCache.values().stream().filter(dbObject -> { -// -// if(dbObject.containsField("channel")&&!dbObject.get("channel").equals(channel) ){ -// return false; -// } -// if(dbObject.containsField("sub_channel")&&!dbObject.get("sub_channel").equals(sub_channel)){ -// return false; -// } if( dbObject.containsField("plat")&&! dbObject.get("plat").equals(plat)){ -// return false; -// } if( dbObject.containsField("server_version")&&!dbObject.get("server_version").equals(server_version)){ -// return false; -// } -// return true; -// }).collect(Collectors.toSet()); -// serverList.addAll(collect); -// } + } else { + serverList.addAll(serverInfosCache.values()); + } //获取我的服务器列表 Map userServerInfoMap = BaseGlobal.getInstance().redisApp.hgetAll(RedisKey.USER_SERVER_INFO, openId, UserRecentLoginInfo.class, -1, false); @@ -152,13 +135,13 @@ public class GetServerListController extends HttpServlet { List myServerList = new ArrayList<>(); long time = 0; for (Map.Entry entry : userServerInfoMap.entrySet()) { - if (!serverInfosCache.keySet().contains(entry.getKey())) { + if(!serverInfosCache.keySet().contains(entry.getKey())){ //服务器已清除 continue; } myServerList.add(entry.getKey()); if (entry.getValue().getLoginTime() > time) { - time = entry.getValue().getLoginTime(); + time =entry.getValue().getLoginTime(); myLastServer = getDBObject(entry.getKey(), entry.getValue()); } } @@ -169,7 +152,7 @@ public class GetServerListController extends HttpServlet { resp.put("myServerList", myServerList); if (null != myLastServer) resp.put("lastServer", myLastServer); - if (recommend != null && !recommend.equals("")) { + if(recommend!=null&&!recommend.equals("")){ resp.put("recommend", recommend); } out.print(resp.toString()); @@ -195,7 +178,7 @@ public class GetServerListController extends HttpServlet { this.doGet(request, response); } - private int getState(String server_id, int num) throws Exception { + private int getState(String server_id,int num) throws Exception { int state = 2; Map globalCfgMap = BaseGlobal.getInstance().redisApp.hgetAll(RedisKey.GLOBAL_SYS_PRO, "", String.class, -1, false); int crowdnum = Integer.valueOf(globalCfgMap.getOrDefault("crowdnum", "0"));