Pārlūkot izejas kodu

fix : 腾讯媒体sdk解决初始化配置控制的问题

bilingfeng 4 mēneši atpakaļ
vecāks
revīzija
ae347a2d4b

+ 1 - 1
game-module/game-module-sdk/src/main/java/com/zanxiang/game/module/sdk/SDKApplication.java

@@ -23,7 +23,7 @@ public class SDKApplication {
 
     public static void main(String[] args) {
         SpringApplication.run(SDKApplication.class, args);
-        System.out.println("赞象SDK服务启动成功 <腾讯媒体sdk回传调试BUG修改> ( ´・・)ノ(._.`) \n" +
+        System.out.println("赞象SDK服务启动成功 <腾讯媒体sdk解决初始化配置控制的问题> ( ´・・)ノ(._.`) \n" +
                 " ___________ _   __\n" +
                 "/  ___|  _  \\ | / /\n" +
                 "\\ `--.| | | | |/ / \n" +

+ 8 - 0
game-module/game-module-sdk/src/main/java/com/zanxiang/game/module/sdk/service/IAgentService.java

@@ -31,6 +31,14 @@ public interface IAgentService extends IService<Agent> {
      */
     Tuple3<Long, Map<String, String>, String> getUserAgentId(Game game, UserData userData);
 
+    /**
+     * 根据channel解析获取渠道信息
+     *
+     * @param urlParamMap : 渠道解析信息
+     * @return : 返回渠道对象
+     */
+    Agent getAgentByKey(Map<String, String> urlParamMap);
+
     /**
      * channel解析
      *

+ 2 - 1
game-module/game-module-sdk/src/main/java/com/zanxiang/game/module/sdk/service/impl/AgentServiceImpl.java

@@ -316,7 +316,8 @@ public class AgentServiceImpl extends ServiceImpl<AgentMapper, Agent> implements
         return userVisitLogList.stream().filter(user -> Objects.equals(user.getId(), minId)).findFirst().orElse(null);
     }
 
-    private Agent getAgentByKey(Map<String, String> urlParamMap) {
+    @Override
+    public Agent getAgentByKey(Map<String, String> urlParamMap) {
         //参数不存在
         if (CollectionUtils.isEmpty(urlParamMap)) {
             return null;

+ 28 - 1
game-module/game-module-sdk/src/main/java/com/zanxiang/game/module/sdk/service/impl/GameServiceImpl.java

@@ -1,17 +1,23 @@
 package com.zanxiang.game.module.sdk.service.impl;
 
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.zanxiang.game.module.base.pojo.enums.AccountTypeEnum;
+import com.zanxiang.game.module.base.pojo.enums.GameCategoryEnum;
+import com.zanxiang.game.module.mybatis.entity.Agent;
 import com.zanxiang.game.module.mybatis.entity.Game;
 import com.zanxiang.game.module.mybatis.mapper.GameMapper;
 import com.zanxiang.game.module.sdk.pojo.param.UserData;
+import com.zanxiang.game.module.sdk.service.IAgentService;
 import com.zanxiang.game.module.sdk.service.IGameService;
 import com.zanxiang.module.util.JsonUtil;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.logging.log4j.util.Strings;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import java.util.Collections;
 import java.util.Map;
+import java.util.Objects;
 
 /**
  * @author : lingfeng
@@ -22,12 +28,33 @@ import java.util.Map;
 @Service
 public class GameServiceImpl extends ServiceImpl<GameMapper, Game> implements IGameService {
 
+    @Autowired
+    private IAgentService agentService;
+
     @Override
     public Map<String, Object> getAdSdkConfig(UserData userData) {
         Game game = super.getById(userData.getGameId());
         if (Strings.isBlank(game.getAdSdkConfig())) {
             return Collections.singletonMap("adSdk", 0);
         }
-        return JsonUtil.toMap(game.getAdSdkConfig(), Map.class, Object.class);
+        //判断是否为APP, APP直接返回配置
+        if (Objects.equals(game.getCategory(), GameCategoryEnum.CATEGORY_APP.getId())) {
+            return JsonUtil.toMap(game.getAdSdkConfig(), Map.class, Object.class);
+        }
+        //微信小游戏, 根据channel, 判断当前是投的腾讯还是头条
+        if (Objects.equals(game.getCategory(), GameCategoryEnum.CATEGORY_WX_APPLET.getId())) {
+            //当前调试阶段
+            if (Objects.equals(game.getStatus(), 2)) {
+                return JsonUtil.toMap(game.getAdSdkConfig(), Map.class, Object.class);
+            }
+            //非调试阶段, 目前只有投腾讯才返回
+            Map<String, String> urlParamMap = agentService.channelTransform(userData.getChannel());
+            Agent agent = agentService.getAgentByKey(urlParamMap);
+            if (agent != null && Objects.equals(agent.getAccountType(), AccountTypeEnum.TENCENT_MINI_GAME.getValue())) {
+                return JsonUtil.toMap(game.getAdSdkConfig(), Map.class, Object.class);
+            }
+        }
+        //默认返回不初始化
+        return Collections.singletonMap("adSdk", 0);
     }
 }