Pārlūkot izejas kodu

Merge branch 'dev' of GameCenter/game-center into master

zhimo 1 gadu atpakaļ
vecāks
revīzija
69a06c6857

+ 51 - 4
game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/service/impl/GameDataServiceImpl.java

@@ -5271,6 +5271,9 @@ public class GameDataServiceImpl implements IGameDataService {
         //渠道单独的查询条件
         Criteria agentCri = getAgentQueryStr(dto);
 
+        //昨日总充值金额查询条件
+        Criteria yesterdayTotalAmountCri = getYesterdayTotalAmountQueryStr(dto);
+
         //查询总记录数
         Sql countSql = Sqls.create(getCountNumSql(cri,agentCri));
         countSql.setCallback(Sqls.callback.integer());
@@ -5278,7 +5281,7 @@ public class GameDataServiceImpl implements IGameDataService {
         pager.setRecordCount(countSql.getInt());
 
         //查询sql
-        Sql sql = Sqls.create(flowMonitorSql(cri,agentCri));
+        Sql sql = Sqls.create(flowMonitorSql(cri,agentCri,yesterdayTotalAmountCri));
         //设置自定义回传类型
         sql.setCallback(Sqls.callback.entities());
         sql.setEntity(dao.getEntity(FlowMonitorVO.class));
@@ -5318,6 +5321,50 @@ public class GameDataServiceImpl implements IGameDataService {
 
     }
 
+    /**
+     * 昨日总充值金额查询条件
+     * @param dto
+     * @return
+     */
+    private Criteria getYesterdayTotalAmountQueryStr(FlowMonitorDTO dto) {
+        Criteria cri = Cnd.cri();
+
+        //SDK类型
+        if (StringUtils.isNotBlank(dto.getSourceSystem())) {
+            cri.where().andEquals("source_system", dto.getSourceSystem());
+        }
+
+        String gameColumn = "game_id";
+        if (dto.getGameDimension() != 1) {
+            gameColumn = "parent_game_id";
+        }
+
+        //拼接游戏ID
+        if (CollectionUtils.isNotEmpty(dto.getGameId())) {
+            cri.where().andInList(gameColumn, dto.getGameId());
+        }
+
+
+        if(dto.getCostBeginDate()!=null && dto.getCostEndDate()!=null){
+            cri.where().andBetween("to_date(reg_time)", dto.getCostBeginDate(), dto.getCostEndDate());
+        }
+
+        //拼接投手ID
+        if (CollectionUtils.isNotEmpty(dto.getPitcherId())) {
+            cri.where().andInList("pitcher_id", dto.getPitcherId());
+        }
+        //拼接渠道ID
+        if (CollectionUtils.isNotEmpty(dto.getAgentId())) {
+            cri.where().andInList("agent_id", dto.getAgentId());
+        }
+        //拼接广告账号id
+        if (CollectionUtils.isNotEmpty(dto.getAccountId())) {
+            cri.where().andInList("account_id", dto.getAccountId());
+        }
+
+        return cri;
+    }
+
 
     public Double getCostCount(FlowMonitorDTO dto){
         //根据维度选择 子表父表
@@ -5646,7 +5693,7 @@ public class GameDataServiceImpl implements IGameDataService {
      * @param cri 条件
      * @return sql
      */
-    public String flowMonitorSql(Criteria cri,Criteria agentCri){
+    public String flowMonitorSql(Criteria cri,Criteria agentCri,Criteria yesterdayTotalAmountCri){
 
         String sql  = """
                 select day as order_date,
@@ -5759,7 +5806,7 @@ public class GameDataServiceImpl implements IGameDataService {
                                                                 account_type,
                                                                 sum(amount) yesterday_amount -- 昨日
                                                          from game_dw.dw_order_day_amount
-                                                         """ + cri + """
+                                                         """ + yesterdayTotalAmountCri + """
                                                          group by source_system, day, pitcher_id, order_agent_id, account_id, parent_game_id,
                                                                   account_type) e
                                                         on a.source_system = e.source_system and a.day = Date(adddate(e.day, 1))
@@ -5849,7 +5896,7 @@ public class GameDataServiceImpl implements IGameDataService {
                                                                 account_type,
                                                                 sum(amount) yesterday_amount -- 昨日
                                                          from game_dw.dw_order_day_amount
-                                                         """ + cri + """
+                                                         """ + yesterdayTotalAmountCri + """
                                                          and order_agent_id = 0
                                                          group by source_system, day, pitcher_id, order_agent_id, account_id, parent_game_id,
                                                                   account_type) e

+ 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线上并发问题> ( ´・・)ノ(._.`) \n" +
+        System.out.println("赞象SDK服务启动成功 <解决线上导量用户多端兼容的问题> ( ´・・)ノ(._.`) \n" +
                 " ___________ _   __\n" +
                 "/  ___|  _  \\ | / /\n" +
                 "\\ `--.| | | | |/ / \n" +

+ 21 - 14
game-module/game-module-sdk/src/main/java/com/zanxiang/game/module/sdk/service/impl/UserTokenServiceImpl.java

@@ -2,6 +2,7 @@ package com.zanxiang.game.module.sdk.service.impl;
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.zanxiang.game.module.base.pojo.enums.BanStatusEnum;
 import com.zanxiang.game.module.base.util.DateUtils;
@@ -34,9 +35,12 @@ import reactor.util.function.Tuple2;
 import reactor.util.function.Tuples;
 
 import java.time.LocalDateTime;
+import java.util.List;
 import java.util.Objects;
+import java.util.Set;
 import java.util.UUID;
 import java.util.concurrent.TimeUnit;
+import java.util.stream.Collectors;
 
 /**
  * @author : lingfeng
@@ -76,7 +80,7 @@ public class UserTokenServiceImpl extends ServiceImpl<UserTokenMapper, UserToken
         //用户信息
         User user = userService.getById(userId);
         //获取检测token
-        UserToken userToken = this.getCheckUserToken(userId, token, user.getRelationUserId());
+        UserToken userToken = this.getCheckUserToken(userId, token);
         //判断token是否存在, 并且没有过期
         if (userToken == null || userToken.getExpireTime() < DateUtils.localDateTimeToSecond(LocalDateTime.now())) {
             log.error("token验证失败 , token不存在或者已经失效, appId : {}, userId : {}, token : {}", appId, userId, token);
@@ -104,10 +108,8 @@ public class UserTokenServiceImpl extends ServiceImpl<UserTokenMapper, UserToken
             log.error("token验证失败 , 游戏拓展信息不存在, appId : {}, userId : {}", appId, userId);
             return ResultVO.fail(TokenCheckEnum.PARAM_LACK.getMsg());
         }
-        //用户信息
-        User user = userService.getById(userId);
         //获取检测token
-        UserToken userToken = this.getCheckUserToken(userId, token, user.getRelationUserId());
+        UserToken userToken = this.getCheckUserToken(userId, token);
         //判断token是否存在, 并且没有过期
         if (userToken == null || userToken.getExpireTime() < DateUtils.localDateTimeToSecond(LocalDateTime.now())) {
             log.error("token验证失败 , token不存在或者已经失效, appId : {}, userId : {}, token : {}", appId, userId, token);
@@ -140,21 +142,26 @@ public class UserTokenServiceImpl extends ServiceImpl<UserTokenMapper, UserToken
         return Tuples.of(sb.toString(), mySign);
     }
 
-    private UserToken getCheckUserToken(Long userId, String token, Long relationUserId) {
-        //查询token是否存在
+    private UserToken getCheckUserToken(Long userId, String token) {
+        //非导量用户
         UserToken userToken = super.getOne(new LambdaQueryWrapper<UserToken>()
                 .eq(UserToken::getToken, token)
-                .eq(relationUserId == null, UserToken::getUserId, userId));
-        //非导量玩家
-        if (Objects.equals(userToken.getUserId(), userId)) {
+                .eq(UserToken::getUserId, userId));
+        if (userToken != null) {
             return userToken;
         }
-        //导量玩家
-        User relationUser = userService.getById(userToken.getUserId());
-        if (Objects.equals(relationUser.getRelationUserId(), userId)) {
-            return userToken;
+        //导量处理
+        List<User> relationUserList = userService.list(new LambdaQueryWrapper<User>()
+                .eq(User::getRelationUserId, userId));
+        //不存在导量用户
+        if (CollectionUtils.isEmpty(relationUserList)) {
+            return null;
         }
-        return null;
+        Set<Long> relationUserIdSet = relationUserList.stream().map(User::getId)
+                .collect(Collectors.toSet());
+        return super.getOne(new LambdaQueryWrapper<UserToken>()
+                .eq(UserToken::getToken, token)
+                .in(UserToken::getUserId, relationUserIdSet));
     }
 
     @Override