|  | @@ -1,15 +1,19 @@
 | 
	
		
			
				|  |  |  package com.zanxiang.game.module.sdk.service.impl;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 | 
	
		
			
				|  |  |  import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 | 
	
		
			
				|  |  | +import com.github.sd4324530.jtuple.Tuple2;
 | 
	
		
			
				|  |  |  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.entity.User;
 | 
	
		
			
				|  |  | +import com.zanxiang.game.module.mybatis.entity.UserEvent;
 | 
	
		
			
				|  |  |  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.game.module.sdk.service.IUserEventService;
 | 
	
		
			
				|  |  |  import com.zanxiang.game.module.sdk.service.IUserService;
 | 
	
		
			
				|  |  |  import com.zanxiang.module.util.JsonUtil;
 | 
	
		
			
				|  |  |  import lombok.extern.slf4j.Slf4j;
 | 
	
	
		
			
				|  | @@ -30,11 +34,14 @@ import java.util.Objects;
 | 
	
		
			
				|  |  |  @Service
 | 
	
		
			
				|  |  |  public class GameServiceImpl extends ServiceImpl<GameMapper, Game> implements IGameService {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +    @Autowired
 | 
	
		
			
				|  |  | +    private IUserService userService;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |      @Autowired
 | 
	
		
			
				|  |  |      private IAgentService agentService;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      @Autowired
 | 
	
		
			
				|  |  | -    private IUserService userService;
 | 
	
		
			
				|  |  | +    private IUserEventService userEventService;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      @Override
 | 
	
		
			
				|  |  |      public Map<String, Object> getAdSdkConfig(UserData userData) {
 | 
	
	
		
			
				|  | @@ -46,13 +53,11 @@ public class GameServiceImpl extends ServiceImpl<GameMapper, Game> implements IG
 | 
	
		
			
				|  |  |          if (Objects.equals(game.getCategory(), GameCategoryEnum.CATEGORY_APP.getId())) {
 | 
	
		
			
				|  |  |              return JsonUtil.toMap(game.getAdSdkConfig(), Map.class, Object.class);
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  | -        //不是微信小程序, 不返回配置
 | 
	
		
			
				|  |  | -        if (!Objects.equals(game.getCategory(), GameCategoryEnum.CATEGORY_WX_APPLET.getId())) {
 | 
	
		
			
				|  |  | -            //默认返回不初始化
 | 
	
		
			
				|  |  | -            return Collections.singletonMap("adSdk", 0);
 | 
	
		
			
				|  |  | -        }
 | 
	
		
			
				|  |  | -        //目前只有投腾讯才返回
 | 
	
		
			
				|  |  | -        Agent agent = this.getUserAgent(userData.getUserId());
 | 
	
		
			
				|  |  | +        //查询用户信息以及投放渠道
 | 
	
		
			
				|  |  | +        Tuple2<User, Agent> userAndAgent = this.getUserAndAgent(userData.getUserId());
 | 
	
		
			
				|  |  | +        User user = userAndAgent.first;
 | 
	
		
			
				|  |  | +        Agent agent = userAndAgent.second;
 | 
	
		
			
				|  |  | +        //渠道判断, 目前只有投腾讯才返回
 | 
	
		
			
				|  |  |          if (agent != null) {
 | 
	
		
			
				|  |  |              //腾讯广告
 | 
	
		
			
				|  |  |              if (Objects.equals(agent.getAccountType(), AccountTypeEnum.TENCENT_MINI_GAME.getValue())) {
 | 
	
	
		
			
				|  | @@ -63,22 +68,29 @@ public class GameServiceImpl extends ServiceImpl<GameMapper, Game> implements IG
 | 
	
		
			
				|  |  |                  return Collections.singletonMap("adSdk", 0);
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  | -        //当前调试阶段
 | 
	
		
			
				|  |  | -        if (userData.getUserId() != null && Objects.equals(game.getStatus(), 2)) {
 | 
	
		
			
				|  |  | -            return JsonUtil.toMap(game.getAdSdkConfig(), Map.class, Object.class);
 | 
	
		
			
				|  |  | +        //用户判断, 是否调试阶段和测试用户
 | 
	
		
			
				|  |  | +        if (user != null) {
 | 
	
		
			
				|  |  | +            if (Objects.equals(game.getStatus(), 2) || userEventService.count(new LambdaQueryWrapper<UserEvent>()
 | 
	
		
			
				|  |  | +                    .eq(UserEvent::getGameId, user.getGameId())
 | 
	
		
			
				|  |  | +                    .and(qw -> qw.eq(UserEvent::getUsername, user.getUsername())
 | 
	
		
			
				|  |  | +                            .or().eq(UserEvent::getUsername, user.getOpenId())
 | 
	
		
			
				|  |  | +                            .or().eq(UserEvent::getMobile, user.getMobile()))
 | 
	
		
			
				|  |  | +            ) > 0) {
 | 
	
		
			
				|  |  | +                return JsonUtil.toMap(game.getAdSdkConfig(), Map.class, Object.class);
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |          //默认返回不初始化
 | 
	
		
			
				|  |  |          return Collections.singletonMap("adSdk", 0);
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -    private Agent getUserAgent(Long userId) {
 | 
	
		
			
				|  |  | +    private Tuple2<User, Agent> getUserAndAgent(Long userId) {
 | 
	
		
			
				|  |  |          if (userId == null) {
 | 
	
		
			
				|  |  | -            return null;
 | 
	
		
			
				|  |  | +            return Tuple2.with(null, null);
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |          User user = userService.getById(userId);
 | 
	
		
			
				|  |  |          if (user == null) {
 | 
	
		
			
				|  |  | -            return null;
 | 
	
		
			
				|  |  | +            return Tuple2.with(null, null);
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  | -        return agentService.getById(user.getAgentId());
 | 
	
		
			
				|  |  | +        return Tuple2.with(user, agentService.getById(user.getAgentId()));
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  }
 |