同步最新代码

main
DESKTOP-C3M45P4\dengdan 2024-11-28 14:26:21 +08:00
parent 12fa14861e
commit 240ac95690
8 changed files with 103 additions and 58 deletions

View File

@ -44,6 +44,7 @@ public class GetMyServerInfoController extends HttpServlet {
throws IOException {
String openId = request.getParameter("openId");
String sessionId = request.getParameter("sessionId");
String itversion = request.getParameter("sub_channel");
String ipAddress = HttpClient.getIPAddress(request);
LOGGER.info("GetMyServerInfoController==>,openId={},sessionId={},ipAddress={}", openId, sessionId,ipAddress);
response.setCharacterEncoding("UTF-8");
@ -51,7 +52,7 @@ public class GetMyServerInfoController extends HttpServlet {
PrintWriter out = response.getWriter();
try {
DBObject resp = new BasicDBObject();
if (!KSManager.btLoginVerify(openId, sessionId)) {
if (!KSManager.ygLoginVerify(openId, sessionId)) {
resp.put("result", 1);
resp.put("error", "verify error !!");
out.print(resp);
@ -59,13 +60,16 @@ public class GetMyServerInfoController extends HttpServlet {
return;
}
List<DBObject> myServerList = LoginUtil.createMyServerList(openId);
DBObject recommendServer = LoginSDKController.recommendServerList();
DBObject recommendServer = LoginSDKController.recommendServerList(Integer.parseInt(itversion.trim()));
List<DBObject> serverList = new ArrayList<>();
if (recommendServer != null){
serverList.add(ServerManager.serverMapById.get(recommendServer.get("server_id").toString()));
}
for (DBObject dbObject : myServerList){
String serverId = dbObject.get("server_id").toString();
if (serverId.equals(recommendServer.get("server_id").toString())){
continue;
}
DBObject server = ServerManager.serverMapById.get(serverId);
if (server == null){
continue;

View File

@ -1,6 +1,7 @@
package com.ljsd.controller;
import com.ljsd.redis.RedisKey;
import com.ljsd.redis.RedisUtil;
import com.ljsd.sdk.KSManager;
import com.ljsd.timer.ServerManager;
import com.ljsd.util.*;
@ -136,7 +137,6 @@ public class GetUserController extends HttpServlet {
return;
}
}
Integer uid = null;
try {
boolean getUserLock = BaseGlobal.redisApp.tryGetDistributedLock(RedisKey.USER_LOGIN_LOCK, openId, openId, 2000);
@ -166,7 +166,7 @@ public class GetUserController extends HttpServlet {
return;
}
//判断服务器是否达到注册人数上限
Integer registCount = BaseGlobal.redisApp.get(RedisKey.REGIST_NUM, String.valueOf(serverId), Integer.class, -1, false);
Integer registCount = BaseGlobal.redisApp.get(RedisKey.REGIST_NUM, serverId, Integer.class, -1, false);
if (registCount == null) {
registCount = 0;
}
@ -192,8 +192,21 @@ public class GetUserController extends HttpServlet {
BaseGlobal.mongoDBPool.save(MongoKey.USER_INFO, dbObject);
//渠道注册人数
BaseGlobal.redisApp.incr(channel, RedisKey.SUBCHANNEL_REGISTER_NUM);
}else {
String seal = BaseGlobal.redisApp.get(serverId +":" + RedisKey.SEAL_USER,String.valueOf(uid),String.class,-1,false);
if (seal != null) {
String[] temp = seal.split("#");
long start = Long.parseLong(temp[0]) /1000;
int time = Integer.parseInt(temp[1]);
res.put("result", 2);
res.put("serverTime",System.currentTimeMillis()/1000);
res.put("start", start);
res.put("time", time);
out.print(res);
out.flush();
return;
}
}
} catch (Exception e) {
e.printStackTrace();
LOGGER.error("玩家注册异常 openId={} ", openId, e);

View File

@ -74,7 +74,7 @@ public class LoginSDKController extends HttpServlet {
DBObject dbObject = new BasicDBObject();
dbObject.put("_id", openId);
List<DBObject> userInfos = BaseGlobal.mongoDBPool.find(MongoKey.USER_INFO, dbObject);
if (!KSManager.btLoginVerify(openId, sessionId)) {
if (!KSManager.ygLoginVerify(openId, sessionId)) {
resp.put("result", 1);
resp.put("error", "verify error !!");
out.print(resp);
@ -107,54 +107,58 @@ public class LoginSDKController extends HttpServlet {
}
}
public static List<DBObject> recommendServerList(List<DBObject> serverList) throws Exception {
List<DBObject> recommendServers = new ArrayList<>(ServerManager.recommendServers);
List<DBObject> recommendServerList = new ArrayList<>();
for (DBObject dbObject : recommendServers) {
DBObject server = new BasicDBObject();
server.put("server_id", dbObject.get("server_id"));
server.put("pcu", ServerManager.totalCount(String.valueOf(dbObject.get("server_id"))));
server.put("groupId",dbObject.get("groupId"));
recommendServerList.add(server);
}
// if (serverList.size() == 0) {
// return recommendServerList;
// }
// // 没有设置推荐服按照时间最大的为推荐服
// if (recommendServers.size() == 0) {
// serverList.sort((o1, o2) -> (int) ((long) o2.get("open_time") / 1000) - (int) ((long) o1.get("open_time") / 1000));
// DBObject server = new BasicDBObject();
// server.put("server_id", serverList.get(0).get("server_id"));
// recommendServerList.add(server);
// return recommendServerList;
// }
// public static List<DBObject> recommendServerList(List<DBObject> serverList) throws Exception {
// List<DBObject> recommendServers = new ArrayList<>(ServerManager.recommendServers);
// List<DBObject> recommendServerList = new ArrayList<>();
// for (DBObject dbObject : recommendServers) {
// String serverId = String.valueOf(dbObject.get("server_id"));
// Integer registCount = BaseGlobal.redisApp.get(RedisKey.REGIST_NUM, String.valueOf(serverId), Integer.class, -1, false);
// if (null == registCount) {
// registCount = 0;
// }
// dbObject.put("registCount", registCount);
// DBObject server = new BasicDBObject();
// server.put("server_id", dbObject.get("server_id"));
// server.put("pcu", ServerManager.totalCount(String.valueOf(dbObject.get("server_id"))));
// server.put("groupId",dbObject.get("groupId"));
// recommendServerList.add(server);
// }
// // 设置推荐服按照注册人数最小的为推荐服
// recommendServers.sort((o1, o2) -> (int) o2.get("registCount") - (int) o1.get("registCount"));
// DBObject serverInfo = recommendServers.get(recommendServers.size() - 1);
// DBObject server = new BasicDBObject();
// server.put("server_id", serverInfo.get("server_id"));
// recommendServerList.add(server);
return recommendServerList;
}
//// if (serverList.size() == 0) {
//// return recommendServerList;
//// }
//// // 没有设置推荐服按照时间最大的为推荐服
//// if (recommendServers.size() == 0) {
//// serverList.sort((o1, o2) -> (int) ((long) o2.get("open_time") / 1000) - (int) ((long) o1.get("open_time") / 1000));
//// DBObject server = new BasicDBObject();
//// server.put("server_id", serverList.get(0).get("server_id"));
//// recommendServerList.add(server);
//// return recommendServerList;
//// }
//// for (DBObject dbObject : recommendServers) {
//// String serverId = String.valueOf(dbObject.get("server_id"));
//// Integer registCount = BaseGlobal.redisApp.get(RedisKey.REGIST_NUM, String.valueOf(serverId), Integer.class, -1, false);
//// if (null == registCount) {
//// registCount = 0;
//// }
//// dbObject.put("registCount", registCount);
//// }
//// // 设置推荐服按照注册人数最小的为推荐服
//// recommendServers.sort((o1, o2) -> (int) o2.get("registCount") - (int) o1.get("registCount"));
//// DBObject serverInfo = recommendServers.get(recommendServers.size() - 1);
//// DBObject server = new BasicDBObject();
//// server.put("server_id", serverInfo.get("server_id"));
//// recommendServerList.add(server);
// return recommendServerList;
// }
public static DBObject recommendServerList() throws Exception {
public static DBObject recommendServerList(int itversion) throws Exception {
List<DBObject> recommendServers = new ArrayList<>(ServerManager.recommendServers);
for (DBObject dbObject : recommendServers) {
DBObject server = new BasicDBObject();
server.put("server_id", dbObject.get("server_id"));
server.put("groupId",dbObject.get("groupId"));
long time = Long.parseLong(TimeUtil.date3TimeStamp(String.valueOf(dbObject.get("open_time"))));
server.put("open_time", time);
return server;
String[] split = dbObject.get("itversion").toString().split("#");
float minVer = Float.parseFloat(split[0]);
float maxVer = Float.parseFloat(split[1]);
if (itversion >= minVer && itversion <= maxVer){
DBObject server = new BasicDBObject();
server.put("server_id", dbObject.get("server_id"));
server.put("groupId",dbObject.get("groupId"));
long time = Long.parseLong(TimeUtil.date3TimeStamp(String.valueOf(dbObject.get("open_time"))));
server.put("open_time", time);
return server;
}
}
return null;
}

View File

@ -36,7 +36,7 @@ public interface RedisKey {
String SUBCHANNEL_REGISTER_NUM= "SUBCHANNEL_REGISTER_NUM";
String REGIST_NUM = "REGIST_NUM" ;
String REGIST_NUM = "CLUB_REGIST_NUM" ;
/**
* true false
@ -78,4 +78,7 @@ public interface RedisKey {
* id
*/
String RECOMMEND_ID = "RECOMMEND_ID";
String SEAL_USER = "SEAL_USER";
}

View File

@ -34,6 +34,11 @@ public class KSManager {
private static String X7_LOGIN_VERIFY_URL = "https://api.x7sy.com/user/check_v4_login";
/**
*
*/
private static String YG_LOGIN_VERIFY_URL = "http://smi.648sy.com/yxywkldyzaqzf/auth";
public static String OPEN_SERVER_STRATEGY = "1"; // 开服策略1 按注册量开 2 按时间开
@ -70,6 +75,26 @@ public class KSManager {
// int result = jsonObject.getInteger("result");
// System.out.println(response);
// }
/**
*
*
* @param gameId
* @param token
* @return
*/
public static boolean ygLoginVerify(String gameId, String token) {
boolean isOnline = Boolean.parseBoolean(BaseGlobal.properties.getProperty("isOnline"));
if (!isOnline){
return true;
}
Map<String, String> param = new HashMap<>(2);
param.put("uid", gameId);
param.put("token", token);
String paramStr = HttpClient.joinParam(param);
String result = HttpClient.sendGet(YG_LOGIN_VERIFY_URL, paramStr);
JSONObject json = JSONObject.parseObject(result);
return json.getInteger("errno") == 0;
}
/**
* bt
*

View File

@ -23,7 +23,7 @@ public class GlobalVersion {
/**
*
*/
private static int serverBuildVersion = 356;
private static int serverBuildVersion = 380;
public static String getServerVersion()
{

View File

@ -70,7 +70,7 @@ public class LoginUtil {
}
public static void setOpenTime(String serverId,long openTime) throws Exception {
BaseGlobal.redisApp.set("game:" + serverId , RedisKey.SERVER_OPEN_TIME + ":",openTime,-1,false);
BaseGlobal.redisApp.set(serverId , RedisKey.SERVER_OPEN_TIME,openTime,-1,false);
LOGGER.info("setOpenTime==> serverId:{},openTime:{}",serverId,openTime);
}

View File

@ -39,9 +39,5 @@ redis_testOnBorrow=false
redis_connectTimeout=1200000
redis_db = 0
####------------快手url配置---------------
#登录验证地址
login_verify_url = https://open.kuaishou.com/game/user_info
#测试登录验证地址
login_test_verify_url = http://open.test.gifshow.com/game/user_info
####-------------------------------------
# 开服策略1 按注册量开 2 按时间开
strategy = 2