Przeglądaj źródła

fix : 排除已经在游戏里面注册的人

bilingfeng 1 miesiąc temu
rodzic
commit
8c6318f5ec

+ 1 - 1
game-back/game-back-serve/src/main/java/com/zanxiang/game/back/serve/GameBackApplication.java

@@ -18,7 +18,7 @@ public class GameBackApplication {
 
     public static void main(String[] args) {
         SpringApplication.run(GameBackApplication.class, args);
-        System.out.println("腾讯广告新增监测链接注册回传 (´・・)ノ(._.`)  \n" +
+        System.out.println("腾讯广告新增监测链接注册回传(排除已经在游戏里面注册的人) (´・・)ノ(._.`)  \n" +
                 " ______  __     __     \n" +
                 "/_____/\\/__/\\ /__/\\    \n" +
                 "\\:::__\\/\\ \\::\\\\:.\\ \\   \n" +

+ 16 - 3
game-back/game-back-serve/src/main/java/com/zanxiang/game/back/serve/service/impl/GameTencentMiniGameCallbackServiceImpl.java

@@ -7,12 +7,14 @@ import com.zanxiang.game.back.serve.pojo.dto.GameTencentCallbackDTO;
 import com.zanxiang.game.back.serve.pojo.entity.GameBackPolicy;
 import com.zanxiang.game.back.serve.pojo.entity.GameTencentMiniGameBackLog;
 import com.zanxiang.game.back.serve.pojo.entity.GameTencentMiniGameCallback;
+import com.zanxiang.game.back.serve.pojo.entity.GameTencentMiniGameUser;
 import com.zanxiang.game.back.serve.pojo.enums.ActionTypeEnum;
 import com.zanxiang.game.back.serve.pojo.enums.BackStatusEnum;
 import com.zanxiang.game.back.serve.pojo.enums.BackTypeEnum;
 import com.zanxiang.game.back.serve.service.IGameBackPolicyService;
 import com.zanxiang.game.back.serve.service.IGameTencentMiniGameBackLogService;
 import com.zanxiang.game.back.serve.service.IGameTencentMiniGameCallbackService;
+import com.zanxiang.game.back.serve.service.IGameTencentMiniGameUserService;
 import com.zanxiang.game.module.base.ServerInfo;
 import com.zanxiang.game.module.base.pojo.vo.AgentRpcVO;
 import com.zanxiang.game.module.base.rpc.IAgentRpc;
@@ -53,6 +55,9 @@ public class GameTencentMiniGameCallbackServiceImpl extends ServiceImpl<GameTenc
     @Autowired
     private IGameBackPolicyService gameBackPolicyService;
 
+    @Autowired
+    private IGameTencentMiniGameUserService gameTencentMiniGameUserService;
+
     @Autowired
     private IGameTencentMiniGameBackLogService gameTencentMiniGameBackLogService;
 
@@ -82,7 +87,7 @@ public class GameTencentMiniGameCallbackServiceImpl extends ServiceImpl<GameTenc
         //监测链接执行注册回传
         try {
             this.linkCallBack(callback, agent);
-        }catch (Exception e){
+        } catch (Exception e) {
             log.error(e.getMessage(), e);
         }
         return true;
@@ -90,12 +95,12 @@ public class GameTencentMiniGameCallbackServiceImpl extends ServiceImpl<GameTenc
 
     private void linkCallBack(GameTencentMiniGameCallback callback, AgentRpcVO agent) {
         //渠道参数判断
-        if (agent == null || agent.getBackPolicyId() == null){
+        if (agent == null || agent.getBackPolicyId() == null) {
             return;
         }
         //查询策略, 判断是否开启监测链接回传
         GameBackPolicy gameBackPolicy = gameBackPolicyService.getById(agent.getBackPolicyId());
-        if (!Objects.equals(gameBackPolicy.getLinkCallBack(), Boolean.TRUE)){
+        if (!Objects.equals(gameBackPolicy.getLinkCallBack(), Boolean.TRUE)) {
             return;
         }
         //参数校验, 判断是否符合回传条件
@@ -104,6 +109,14 @@ public class GameTencentMiniGameCallbackServiceImpl extends ServiceImpl<GameTenc
             log.error("监测链接回传参数不全, id : {}", callback.getId());
             return;
         }
+        //判断是否是新用户, 已注册的老用户不回传
+        if (gameTencentMiniGameUserService.count(new LambdaQueryWrapper<GameTencentMiniGameUser>()
+                .eq(GameTencentMiniGameUser::getGameId, callback.getGameId())
+                .eq(GameTencentMiniGameUser::getWechatAppId, callback.getWechatAppId())
+                .eq(GameTencentMiniGameUser::getWechatOpenid, callback.getWechatOpenid())
+        ) > 0) {
+            return;
+        }
         //线程锁, 防止重复请求
         String lockKey = com.zanxiang.game.back.base.ServerInfo.SERVER_NAME + ":tencentMiniLinkCallBack:"
                 + callback.getGameId() + ":" + callback.getAccountId() + ":"