Przeglądaj źródła

fix : 监测链接接口优化

bilingfeng 1 miesiąc temu
rodzic
commit
6f3ba7c936

+ 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" +

+ 4 - 2
game-back/game-back-serve/src/main/java/com/zanxiang/game/back/serve/controller/api/TencentCallbackApi.java

@@ -11,6 +11,8 @@ import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
+import java.util.Map;
+
 /**
  * 腾讯监测链接
  */
@@ -44,7 +46,7 @@ public class TencentCallbackApi {
     // &processTime=__PROCESS_TIME__&requestId=__REQUEST_ID__&impressionId=__IMPRESSION_ID__&ip=__IP__&userAgent=__USER_AGENT__
     // &callback=__CALLBACK__&encryptedPositionId=__ENCRYPTED_POSITION_ID__&ipv6=__IPV6__&ipMd5=__IP_MD5__&ipv6Md5=__IPV6_MD5__
     @GetMapping("/miniGame/callback")
-    public ResultVO<Boolean> miniGameCallback(GameTencentCallbackDTO dto) {
-        return ResultVO.ok(gameTencentMiniGameCallbackService.callback(dto));
+    public ResultVO<Boolean> miniGameCallback(Map<String, Object> paramMap) {
+        return ResultVO.ok(gameTencentMiniGameCallbackService.callback(paramMap));
     }
 }

+ 3 - 0
game-back/game-back-serve/src/main/java/com/zanxiang/game/back/serve/service/IGameTencentMiniGameCallbackService.java

@@ -5,10 +5,13 @@ import com.zanxiang.game.back.serve.pojo.dto.GameTencentCallbackDTO;
 import com.zanxiang.game.back.serve.pojo.entity.GameTencentMiniGameCallback;
 
 import java.time.LocalDateTime;
+import java.util.Map;
 
 public interface IGameTencentMiniGameCallbackService extends IService<GameTencentMiniGameCallback> {
 
     boolean callback(GameTencentCallbackDTO dto);
 
+    boolean callback(Map<String, Object> paramMap);
+
     String getCallBackUrl(Long gameId, String wechatOpenid, String clickId, LocalDateTime registerTime, boolean matchTime);
 }

+ 38 - 0
game-back/game-back-serve/src/main/java/com/zanxiang/game/back/serve/service/impl/GameTencentMiniGameCallbackServiceImpl.java

@@ -2,6 +2,8 @@ package com.zanxiang.game.back.serve.service.impl;
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.zanxiang.erp.base.ErpServer;
+import com.zanxiang.erp.base.rpc.IDingTalkMsgRpc;
 import com.zanxiang.game.back.serve.dao.mapper.GameTencentMiniGameCallbackMapper;
 import com.zanxiang.game.back.serve.pojo.dto.GameTencentCallbackDTO;
 import com.zanxiang.game.back.serve.pojo.entity.GameTencentMiniGameCallback;
@@ -24,6 +26,7 @@ import org.springframework.stereotype.Service;
 
 import java.time.LocalDate;
 import java.time.LocalDateTime;
+import java.util.Map;
 import java.util.Optional;
 
 @Slf4j
@@ -37,6 +40,9 @@ public class GameTencentMiniGameCallbackServiceImpl extends ServiceImpl<GameTenc
     @DubboReference(providedBy = ServerInfo.SERVER_DUBBO_NAME)
     private IAgentRpc agentRpc;
 
+    @DubboReference(providedBy = ErpServer.SERVER_DUBBO_NAME)
+    private IDingTalkMsgRpc dingTalkMsgRpc;
+
     @Autowired
     private KafkaProducer<String, String> kafkaProducer;
 
@@ -66,6 +72,38 @@ public class GameTencentMiniGameCallbackServiceImpl extends ServiceImpl<GameTenc
         return true;
     }
 
+    @Override
+    public boolean callback(Map<String, Object> paramMap) {
+        GameTencentMiniGameCallback callback = null;
+        try {
+            callback = JsonUtil.toObj(JsonUtil.toString(paramMap), GameTencentMiniGameCallback.class);
+            AgentRpcVO agent = agentRpc.getByTencentAccountId(callback.getAccountId()).getData();
+            if (agent != null) {
+                callback.setAgentKey(agent.getAgentKey());
+                callback.setGameId(agent.getGameId());
+                callback.setWechatAppId(agent.getAppId());
+            } else {
+                callback.setAgentKey("-");
+                callback.setGameId(-1L);
+                log.error("腾讯检测链接数据找不到渠道:{}", JsonUtil.toString(callback));
+            }
+            callback.setDay(callback.getClickTime() == null || callback.getClickTime() < 1000 ? LocalDate.now() : DateUtil.secondToLocalDate(callback.getClickTime()));
+            save(callback);
+        } catch (Exception e) {
+            log.error("接收到腾讯监测链接数据保存异常, paramMap : {}, errorMsg : {}", JsonUtil.toString(paramMap), e.getMessage(), e);
+            //发送钉钉消息通知开发
+            dingTalkMsgRpc.sendByUserId(220L, DateUtil.formatLocalDateTime(LocalDateTime.now()) + " : 腾讯小游戏监测链接数据入库异常");
+        }
+        if (callback != null) {
+            try {
+                kafkaProducer.send(new ProducerRecord<>(tencentCallbackTopic, callback.getAccountId().toString(), JsonUtil.toString(callback)));
+            } catch (Exception e) {
+                log.error(e.getMessage(), e);
+            }
+        }
+        return true;
+    }
+
     @Override
     public String getCallBackUrl(Long gameId, String wechatOpenid, String clickId, LocalDateTime registerTime, boolean matchTime) {
         try {