xhb 2 months ago
parent
commit
83ddacace5

+ 5 - 0
incubator-game/src/main/java/com/incubator/game/constant/RedisKeyConstant.java

@@ -81,4 +81,9 @@ public class RedisKeyConstant {
      * 总排行榜
      */
     public static final String ZJ_USER_MASTER_RANK_TOTAL_KEY = "zj:master:rank:total";
+
+    /**
+     * 赛事玩家信息
+     */
+    public static final String COMPETE_PLAYERS = "compete:players:";
 }

+ 38 - 0
incubator-game/src/main/java/com/incubator/game/handler/contest/ToggleIP.java

@@ -0,0 +1,38 @@
+package com.incubator.game.handler.contest;
+
+import com.incubator.common.MessageHandler;
+import com.incubator.common.net.Connection;
+import com.incubator.core.net.ws.NetHandler;
+import com.incubator.core.net.ws.WSRequest;
+import com.incubator.core.net.ws.WSResponse;
+import com.incubator.game.constant.RedisKeyConstant;
+import com.incubator.game.constant.WkServerStatus;
+import com.incubator.game.data.jedis.RedisUtil;
+import com.incubator.message.proto.CommonProto;
+
+import java.util.HashMap;
+import java.util.Map;
+import java.util.concurrent.atomic.AtomicReference;
+
+/**
+ * Author:  xhb
+ * Date:  2025-01-15 11:45
+ * Description: 切换IP地址
+ */
+@MessageHandler(id = CommonProto.Cmd.ToggleIPReq_VALUE)
+public class ToggleIP extends NetHandler {
+    @Override
+    public void onDate(Connection session, WSRequest request, WSResponse response) {
+        response.setCmd(CommonProto.Cmd.ToggleIPRes_VALUE);
+        Map<String, Object> data = new HashMap<>();
+        HashMap<String, WkServerStatus> wkServes = RedisUtil.getWkToRedis(RedisKeyConstant.WK_SERVE);
+        AtomicReference<String> wkIp = new AtomicReference<>("");
+        wkServes.forEach((k,v) ->{
+            if (v.getType().equals("1")){
+                wkIp.set(v.getName());
+            }
+        });
+        data.put("wkIp", wkIp.toString());
+        response.setData(data);
+    }
+}

+ 50 - 0
incubator-game/src/main/java/com/incubator/game/handler/gameinfo/CollectGameInfoHandler.java

@@ -0,0 +1,50 @@
+package com.incubator.game.handler.gameinfo;
+
+import cn.hutool.json.JSONArray;
+import cn.hutool.json.JSONObject;
+import com.incubator.common.MessageHandler;
+import com.incubator.common.net.Connection;
+import com.incubator.core.net.ws.NetHandler;
+import com.incubator.core.net.ws.WSRequest;
+import com.incubator.core.net.ws.WSResponse;
+import com.incubator.game.constant.RedisKeyConstant;
+import com.incubator.game.data.jedis.RedisUtil;
+import com.incubator.game.util.JsonToMapUtil;
+import com.incubator.message.proto.CommonProto;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * Author:  xhb
+ * Date:  2025-01-15 19:20
+ * 收藏记录
+ */
+@MessageHandler(id = CommonProto.Cmd.CollectGameInfoReq_VALUE)
+public class CollectGameInfoHandler  extends NetHandler {
+
+    @Override
+    public void onDate(Connection session, WSRequest request, WSResponse response) {
+        response.setCmd(CommonProto.Cmd.CollectGameInfoRes_VALUE);
+        String userId = session.getPlayerId();
+        String userInfo = RedisUtil.get(RedisKeyConstant.ZJ_USER_GAME_KEY + userId);
+        String gameId = request.getDataValue("gameId", String.class, "");
+        if (userInfo == null) {
+            response.setData(new HashMap<>());
+            return;
+        }
+        JSONArray objects = new JSONArray(userInfo);
+        for (Object object : objects) {
+            JSONObject jsonObject = (JSONObject) object;
+            if (gameId.equals(jsonObject.getStr("gameId"))) {
+                jsonObject.put("isCollected",true);
+                RedisUtil.set(RedisKeyConstant.ZJ_USER_GAME_KEY + userId, objects.toString());
+                break;
+            }
+        }
+        Map<String, Object> map = new HashMap<>();
+        map.put("data", "收藏成功");
+        response.setData(map);
+    }
+}

+ 48 - 0
incubator-game/src/main/java/com/incubator/game/handler/gameinfo/DeleteGameInfoHandler.java

@@ -0,0 +1,48 @@
+package com.incubator.game.handler.gameinfo;
+
+import cn.hutool.json.JSONArray;
+import cn.hutool.json.JSONObject;
+import com.incubator.common.MessageHandler;
+import com.incubator.common.net.Connection;
+import com.incubator.core.net.ws.NetHandler;
+import com.incubator.core.net.ws.WSRequest;
+import com.incubator.core.net.ws.WSResponse;
+import com.incubator.game.constant.RedisKeyConstant;
+import com.incubator.game.data.jedis.RedisUtil;
+import com.incubator.message.proto.CommonProto;
+
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * Author:  xhb
+ * Date:  2025-01-15 19:22
+ * Description:  删除游戏信息处理器
+ */
+@MessageHandler(id = CommonProto.Cmd.DeleteGameInfoReq_VALUE)
+public class DeleteGameInfoHandler extends NetHandler {
+
+    @Override
+    public void onDate(Connection session, WSRequest request, WSResponse response) {
+        response.setCmd(CommonProto.Cmd.DeleteGameInfoRes_VALUE);
+        String userId = session.getPlayerId();
+        String userInfo = RedisUtil.get(RedisKeyConstant.ZJ_USER_GAME_KEY + userId);
+        String gameId = request.getDataValue("gameId", String.class, "");
+        if (userInfo == null) {
+            response.setData(new HashMap<>());
+            return;
+        }
+        JSONArray objects = new JSONArray(userInfo);
+        for (Object object : objects) {
+            JSONObject jsonObject = (JSONObject) object;
+            if (gameId.equals(jsonObject.getStr("gameId"))) {
+                objects.remove(jsonObject);
+                RedisUtil.set(RedisKeyConstant.ZJ_USER_GAME_KEY + userId, objects.toString());
+                break;
+            }
+        }
+        Map<String, Object> map = new HashMap<>();
+        map.put("data", "删除成功");
+        response.setData(map);
+    }
+}

+ 54 - 0
incubator-game/src/main/java/com/incubator/game/handler/gameinfo/GetCollectListHandler.java

@@ -0,0 +1,54 @@
+package com.incubator.game.handler.gameinfo;
+
+import cn.hutool.json.JSONArray;
+import cn.hutool.json.JSONObject;
+import com.incubator.common.MessageHandler;
+import com.incubator.common.net.Connection;
+import com.incubator.core.net.ws.NetHandler;
+import com.incubator.core.net.ws.WSRequest;
+import com.incubator.core.net.ws.WSResponse;
+import com.incubator.game.constant.RedisKeyConstant;
+import com.incubator.game.data.jedis.RedisUtil;
+import com.incubator.game.util.JsonToMapUtil;
+import com.incubator.message.proto.CommonProto;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * Author:  xhb
+ * Date:  2025-01-15 19:24
+ * Description: 获取收藏的游戏信息处理器
+ */
+@MessageHandler(id = CommonProto.Cmd.GetCollectListReq_VALUE)
+public class GetCollectListHandler extends NetHandler {
+
+
+    @Override
+    public void onDate(Connection session, WSRequest request, WSResponse response) {
+        response.setCmd(CommonProto.Cmd.GetCollectListRes_VALUE);
+        String userId = session.getPlayerId();
+        String userInfo = RedisUtil.get(RedisKeyConstant.ZJ_USER_GAME_KEY + userId);
+        if (userInfo == null) {
+            response.setData(new HashMap<>());
+            return;
+        }
+        JSONArray objects = new JSONArray(userInfo);
+        JSONArray jsonArray = new JSONArray();
+        for (Object object : objects) {
+            JSONObject jsonObject = (JSONObject) object;
+            if ((boolean) jsonObject.get("isCollected")) {
+                jsonArray.add(jsonObject);
+            }
+        }
+        Map<String, Object> map = new HashMap<>();
+        if (jsonArray.size()>0){
+            List<Map<String, Object>> mapList = JsonToMapUtil.parseJsonArrayToMapList(jsonArray);
+            map.put("gameRecData", mapList);
+        } else {
+            map.put("gameRecData", new JSONArray());
+        }
+        response.setData(map);
+    }
+}

+ 1 - 1
incubator-game/src/main/java/com/incubator/game/handler/user/GetGameInfoHandler.java → incubator-game/src/main/java/com/incubator/game/handler/gameinfo/GetGameInfoHandler.java

@@ -1,4 +1,4 @@
-package com.incubator.game.handler.user;
+package com.incubator.game.handler.gameinfo;
 
 import cn.hutool.json.JSONArray;
 import cn.hutool.json.JSONObject;

+ 11 - 0
incubator-message/src/main/proto/CommonProto.proto

@@ -57,6 +57,8 @@ enum Cmd {
     JoinCompetitionRoomRes = 100028;   // 加入比赛房间响应
     SubRoomReq = 100029;           // 分组IP房间请求
     SubRoomRes = 100030;           // 分组IP房间响应
+    ToggleIPReq = 100031;            // 切换IP请求
+    ToggleIPRes = 100032;            // 切换IP响应
 
     // 测试消息 200001-200100
     NormalMsgReq = 200001;     // 普通消息请求(客户端)
@@ -180,6 +182,15 @@ enum Cmd {
     //大师分排名
     MasterRankReq = 201103;     // 大师分排名请求
     MasterRankRes = 201104;     // 大师分排名响应
+    //收藏记录
+    CollectGameInfoReq = 201105;     // 收藏记录请求
+    CollectGameInfoRes = 201106;     // 收藏记录响应
+    //删除
+    DeleteGameInfoReq = 201107;     // 删除记录请求
+    DeleteGameInfoRes = 201108;     // 删除记录响应
+    //收藏列表
+    GetCollectListReq = 201109;     // 收藏列表请求
+    GetCollectListRes = 201110;     // 收藏列表响应
 
     //客户反馈
     FeedbackReq = 201201;     // 客户反馈请求