diff --git a/src/main/java/com/ljsd/controller/GetServerListController.java b/src/main/java/com/ljsd/controller/GetServerListController.java index 7e1cf90..74c8d12 100644 --- a/src/main/java/com/ljsd/controller/GetServerListController.java +++ b/src/main/java/com/ljsd/controller/GetServerListController.java @@ -15,6 +15,7 @@ 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"; @@ -42,27 +43,29 @@ 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(sub_channel) || StringUtils.checkIsEmpty(plat) || StringUtils.checkIsEmpty(server_version)) { 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); +// 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)); 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.find(_COLLECTION_NAME, req); + List serverInfoList = BaseGlobal.getInstance().mongoDBPool.findAll(_COLLECTION_NAME); SortedSet newServerList = new TreeSet<>(); - String maxNumServerId= ""; + String maxNumServerId = ""; int maxNum = 0; for (DBObject serverInfo : serverInfoList) { int state = Integer.parseInt(serverInfo.get("state").toString()); @@ -77,16 +80,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 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); +// } //获取我的服务器列表 Map userServerInfoMap = BaseGlobal.getInstance().redisApp.hgetAll(RedisKey.USER_SERVER_INFO, openId, UserRecentLoginInfo.class, -1, false); @@ -135,13 +152,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()); } } @@ -152,7 +169,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()); @@ -178,7 +195,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"));