Browse Source

头条回传优化

wcc 9 tháng trước cách đây
mục cha
commit
142711d1b0
16 tập tin đã thay đổi với 95 bổ sung215 xóa
  1. 0 33
      game-back/game-back-base/src/main/java/com/zanxiang/game/back/base/pojo/dto/TtAppOrderBackQueryRpcDTO.java
  2. 0 33
      game-back/game-back-base/src/main/java/com/zanxiang/game/back/base/pojo/dto/TtAppRoleRegisterBackQueryRpcDTO.java
  3. 0 33
      game-back/game-back-base/src/main/java/com/zanxiang/game/back/base/pojo/dto/TtAppUserBackQueryRpcDTO.java
  4. 2 0
      game-back/game-back-serve/src/main/java/com/zanxiang/game/back/serve/pojo/entity/GameOceanengineAppBackLog.java
  5. 2 0
      game-back/game-back-serve/src/main/java/com/zanxiang/game/back/serve/pojo/entity/GameOceanengineAppOrderLog.java
  6. 2 0
      game-back/game-back-serve/src/main/java/com/zanxiang/game/back/serve/pojo/entity/GameOceanengineAppRoleRegisterLog.java
  7. 2 0
      game-back/game-back-serve/src/main/java/com/zanxiang/game/back/serve/pojo/entity/GameOceanengineAppUserLog.java
  8. 2 0
      game-back/game-back-serve/src/main/java/com/zanxiang/game/back/serve/pojo/entity/GameTencentAppBackLog.java
  9. 2 0
      game-back/game-back-serve/src/main/java/com/zanxiang/game/back/serve/pojo/entity/GameTencentAppOrder.java
  10. 2 0
      game-back/game-back-serve/src/main/java/com/zanxiang/game/back/serve/pojo/entity/GameTencentAppOrderSplitLog.java
  11. 2 0
      game-back/game-back-serve/src/main/java/com/zanxiang/game/back/serve/pojo/entity/GameTencentAppRoleRegister.java
  12. 2 0
      game-back/game-back-serve/src/main/java/com/zanxiang/game/back/serve/pojo/entity/GameTencentAppUser.java
  13. 60 49
      game-back/game-back-serve/src/main/java/com/zanxiang/game/back/serve/rpc/impl/TtAppBackRpcImpl.java
  14. 11 49
      game-back/game-back-serve/src/main/java/com/zanxiang/game/back/serve/service/impl/GameOceanengineAppOrderLogServiceImpl.java
  15. 4 12
      game-back/game-back-serve/src/main/java/com/zanxiang/game/back/serve/service/impl/GameOceanengineAppRoleRegisterLogServiceImpl.java
  16. 2 6
      game-back/game-back-serve/src/main/java/com/zanxiang/game/back/serve/service/impl/GameOceanengineAppUserLogServiceImpl.java

+ 0 - 33
game-back/game-back-base/src/main/java/com/zanxiang/game/back/base/pojo/dto/TtAppOrderBackQueryRpcDTO.java

@@ -18,10 +18,6 @@ public class TtAppOrderBackQueryRpcDTO implements Serializable {
      * sdk 里面的用户 id(要求唯一)
      */
     private String userId;
-    /**
-     * 微信小游戏上报组件
-     */
-    private TtAccountRpcDTO accountReport;
     /**
      * 订单编号
      */
@@ -30,33 +26,4 @@ public class TtAppOrderBackQueryRpcDTO implements Serializable {
      * 渠道标识
      */
     private String agentKey;
-    /**
-     * 用户设备mac地址
-     */
-    private String mac;
-
-    /**
-     * 设备唯一编号IMEI
-     */
-    private String imei;
-
-    /**
-     * 设备OAID
-     */
-    private String oaid;
-
-    /**
-     * 安卓id, (仅安卓设备才有值)
-     */
-    private String androidId;
-
-    /**
-     * IOS设备IDFA
-     */
-    private String idfa;
-
-    /**
-     * IOS设备CAID
-     */
-    private String caid;
 }

+ 0 - 33
game-back/game-back-base/src/main/java/com/zanxiang/game/back/base/pojo/dto/TtAppRoleRegisterBackQueryRpcDTO.java

@@ -19,43 +19,10 @@ public class TtAppRoleRegisterBackQueryRpcDTO implements Serializable {
      * sdk 里面的用户 id(要求唯一)
      */
     private String userId;
-    /**
-     * 微信小游戏上报组件
-     */
-    private TtAccountRpcDTO accountReport;
     /**
      * 渠道标识
      */
     private String agentKey;
 
     private String roleId;
-    /**
-     * 用户设备mac地址
-     */
-    private String mac;
-
-    /**
-     * 设备唯一编号IMEI
-     */
-    private String imei;
-
-    /**
-     * 设备OAID
-     */
-    private String oaid;
-
-    /**
-     * 安卓id, (仅安卓设备才有值)
-     */
-    private String androidId;
-
-    /**
-     * IOS设备IDFA
-     */
-    private String idfa;
-
-    /**
-     * IOS设备CAID
-     */
-    private String caid;
 }

+ 0 - 33
game-back/game-back-base/src/main/java/com/zanxiang/game/back/base/pojo/dto/TtAppUserBackQueryRpcDTO.java

@@ -22,37 +22,4 @@ public class TtAppUserBackQueryRpcDTO implements Serializable {
      * 渠道标识
      */
     private String agentKey;
-    /**
-     * 微信小游戏上报组件
-     */
-    private TtAccountRpcDTO accountReport;
-    /**
-     * 用户设备mac地址
-     */
-    private String mac;
-
-    /**
-     * 设备唯一编号IMEI
-     */
-    private String imei;
-
-    /**
-     * 设备OAID
-     */
-    private String oaid;
-
-    /**
-     * 安卓id, (仅安卓设备才有值)
-     */
-    private String androidId;
-
-    /**
-     * IOS设备IDFA
-     */
-    private String idfa;
-
-    /**
-     * IOS设备CAID
-     */
-    private String caid;
 }

+ 2 - 0
game-back/game-back-serve/src/main/java/com/zanxiang/game/back/serve/pojo/entity/GameOceanengineAppBackLog.java

@@ -25,6 +25,8 @@ public class GameOceanengineAppBackLog implements Serializable {
     @TableId(value = "id", type = IdType.AUTO)
     private Long id;
 
+    private String userId;
+
     /**
      * 用户设备mac地址
      */

+ 2 - 0
game-back/game-back-serve/src/main/java/com/zanxiang/game/back/serve/pojo/entity/GameOceanengineAppOrderLog.java

@@ -30,6 +30,8 @@ public class GameOceanengineAppOrderLog implements Serializable {
     @TableId(value = "id", type = IdType.AUTO)
     private Long id;
 
+    private String userId;
+
     /**
      * 用户设备mac地址
      */

+ 2 - 0
game-back/game-back-serve/src/main/java/com/zanxiang/game/back/serve/pojo/entity/GameOceanengineAppRoleRegisterLog.java

@@ -30,6 +30,8 @@ public class GameOceanengineAppRoleRegisterLog implements Serializable {
     @TableId(value = "id", type = IdType.AUTO)
     private Long id;
 
+    private String userId;
+
     /**
      * 用户设备mac地址
      */

+ 2 - 0
game-back/game-back-serve/src/main/java/com/zanxiang/game/back/serve/pojo/entity/GameOceanengineAppUserLog.java

@@ -30,6 +30,8 @@ public class GameOceanengineAppUserLog implements Serializable {
     @TableId(value = "id", type = IdType.AUTO)
     private Long id;
 
+    private String userId;
+
     /**
      * 用户设备mac地址
      */

+ 2 - 0
game-back/game-back-serve/src/main/java/com/zanxiang/game/back/serve/pojo/entity/GameTencentAppBackLog.java

@@ -30,6 +30,8 @@ public class GameTencentAppBackLog implements Serializable {
     @TableId(value = "id", type = IdType.AUTO)
     private Long id;
 
+    private String userId;
+
     /**
      * 游戏id
      */

+ 2 - 0
game-back/game-back-serve/src/main/java/com/zanxiang/game/back/serve/pojo/entity/GameTencentAppOrder.java

@@ -30,6 +30,8 @@ public class GameTencentAppOrder implements Serializable {
     @TableId(value = "id", type = IdType.AUTO)
     private Long id;
 
+    private String userId;
+
     /**
      * 渠道号
      */

+ 2 - 0
game-back/game-back-serve/src/main/java/com/zanxiang/game/back/serve/pojo/entity/GameTencentAppOrderSplitLog.java

@@ -31,6 +31,8 @@ public class GameTencentAppOrderSplitLog implements Serializable {
     @TableId(value = "id", type = IdType.AUTO)
     private Long id;
 
+    private String userId;
+
     /**
      * 回传日期
      */

+ 2 - 0
game-back/game-back-serve/src/main/java/com/zanxiang/game/back/serve/pojo/entity/GameTencentAppRoleRegister.java

@@ -30,6 +30,8 @@ public class GameTencentAppRoleRegister implements Serializable {
     @TableId(value = "id", type = IdType.AUTO)
     private Long id;
 
+    private String userId;
+
     /**
      * 渠道号
      */

+ 2 - 0
game-back/game-back-serve/src/main/java/com/zanxiang/game/back/serve/pojo/entity/GameTencentAppUser.java

@@ -30,6 +30,8 @@ public class GameTencentAppUser implements Serializable {
     @TableId(value = "id", type = IdType.AUTO)
     private Long id;
 
+    private String userId;
+
     /**
      * 渠道号
      */

+ 60 - 49
game-back/game-back-serve/src/main/java/com/zanxiang/game/back/serve/rpc/impl/TtAppBackRpcImpl.java

@@ -12,6 +12,7 @@ import com.zanxiang.game.back.serve.service.IGameOceanengineAppRoleRegisterLogSe
 import com.zanxiang.game.back.serve.service.IGameOceanengineAppUserLogService;
 import com.zanxiang.game.module.base.ServerInfo;
 import com.zanxiang.game.module.base.rpc.IAgentRpc;
+import com.zanxiang.module.redis.service.IDistributedLockComponent;
 import com.zanxiang.module.util.JsonUtil;
 import com.zanxiang.module.util.pojo.ResultVO;
 import lombok.extern.slf4j.Slf4j;
@@ -22,6 +23,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 
 import java.time.LocalDateTime;
 import java.util.Objects;
+import java.util.concurrent.TimeUnit;
 
 @Slf4j
 @DubboService
@@ -37,6 +39,8 @@ public class TtAppBackRpcImpl implements ITtAppBackRpc {
     private IGameOceanengineAppRoleRegisterLogService gameOceanengineAppRoleRegisterLogService;
     @Autowired
     private IGameOceanengineAppOrderLogService gameOceanengineAppOrderLogService;
+    @Autowired
+    private IDistributedLockComponent distributedLockComponent;
 
     @Override
     public ResultVO<Boolean> userActiveReport(TtUserActiveAppRpcDTO dto) {
@@ -59,16 +63,17 @@ public class TtAppBackRpcImpl implements ITtAppBackRpc {
         if(StringUtils.isBlank(dto.getCaid())) {
             dto.setCaid("");
         }
-        if(StringUtils.isBlank(dto.getMac())
+        if(StringUtils.isBlank(dto.getUserId()) || (StringUtils.isBlank(dto.getMac())
                 && StringUtils.isBlank(dto.getImei())
                 && StringUtils.isBlank(dto.getOaid())
                 && StringUtils.isBlank(dto.getAndroidId())
                 && StringUtils.isBlank(dto.getIdfa())
-                && StringUtils.isBlank(dto.getCaid())) {
+                && StringUtils.isBlank(dto.getCaid()))) {
             return ResultVO.fail("找不到用户唯一标识");
         }
 
         GameOceanengineAppUserLog userLog = GameOceanengineAppUserLog.builder()
+                .userId(dto.getUserId())
                 .mac(dto.getMac())
                 .imei(dto.getImei())
                 .oaid(dto.getOaid())
@@ -112,50 +117,53 @@ public class TtAppBackRpcImpl implements ITtAppBackRpc {
         if(StringUtils.isBlank(dto.getCaid())) {
             dto.setCaid("");
         }
-        if(StringUtils.isBlank(dto.getMac())
+        if(StringUtils.isBlank(dto.getUserId()) || (StringUtils.isBlank(dto.getMac())
                 && StringUtils.isBlank(dto.getImei())
                 && StringUtils.isBlank(dto.getOaid())
                 && StringUtils.isBlank(dto.getAndroidId())
                 && StringUtils.isBlank(dto.getIdfa())
-                && StringUtils.isBlank(dto.getCaid())) {
+                && StringUtils.isBlank(dto.getCaid()))) {
             return ResultVO.fail("找不到用户唯一标识");
         }
-        GameOceanengineAppOrderLog orderLog = GameOceanengineAppOrderLog.builder()
-                .mac(dto.getMac())
-                .imei(dto.getImei())
-                .oaid(dto.getOaid())
-                .androidId(dto.getAndroidId())
-                .idfa(dto.getIdfa())
-                .caid(dto.getCaid())
-                .gameId(dto.getGameId())
-                .backPolicyId(dto.getBackPolicyId())
-                .accountId(dto.getAccountReport().getAccountId())
-                .agentKey(dto.getAgentKey())
-                .regTime(dto.getRegTime())
-                .orderNo(dto.getOrderId())
-                .amount(dto.getRechargeMoney())
-                .orderStatus(dto.getOrderStatus())
-                .createTime(dto.getCreateTime())
-                .payTime(dto.getPayTime())
-                .backStatus(BackStatusEnum.NO.getBackStatus())
-                .roleId(dto.getRoleId())
-                .roleName(dto.getRoleName())
-                .build();
-        boolean isFirstOrder = gameOceanengineAppOrderLogService.getOne(new LambdaQueryWrapper<GameOceanengineAppOrderLog>()
-                .eq(GameOceanengineAppOrderLog::getGameId, orderLog.getGameId())
-                .eq(GameOceanengineAppOrderLog::getMac, orderLog.getMac())
-                .eq(GameOceanengineAppOrderLog::getImei, orderLog.getImei())
-                .eq(GameOceanengineAppOrderLog::getOaid, orderLog.getOaid())
-                .eq(GameOceanengineAppOrderLog::getAndroidId, orderLog.getAndroidId())
-                .eq(GameOceanengineAppOrderLog::getIdfa, orderLog.getIdfa())
-                .eq(GameOceanengineAppOrderLog::getCaid, orderLog.getCaid())
-                .eq(GameOceanengineAppOrderLog::getAccountId, orderLog.getAccountId())
-                .eq(GameOceanengineAppOrderLog::getOrderStatus, OrderStatusEnum.SUCCESS_PAY.getValue())
-                .last("limit 1")
-        ) == null;
-        orderLog.setIsFirstOrder(isFirstOrder);
-        gameOceanengineAppOrderLogService.save(orderLog);
-        return ResultVO.ok(gameOceanengineAppOrderLogService.callback(orderLog));
+        // 此处加锁防止 cp 方调用过快,导致查询回传结果时判断逻辑没走完
+        String lockKey = com.zanxiang.game.back.base.ServerInfo.SERVER_NAME + ":TtAppOrderBack:" + dto.getGameId() + ":" + dto.getOrderId();
+        distributedLockComponent.doLock(lockKey, 0L, 60L, TimeUnit.SECONDS);
+        try {
+            GameOceanengineAppOrderLog orderLog = GameOceanengineAppOrderLog.builder()
+                    .userId(dto.getUserId())
+                    .mac(dto.getMac())
+                    .imei(dto.getImei())
+                    .oaid(dto.getOaid())
+                    .androidId(dto.getAndroidId())
+                    .idfa(dto.getIdfa())
+                    .caid(dto.getCaid())
+                    .gameId(dto.getGameId())
+                    .backPolicyId(dto.getBackPolicyId())
+                    .accountId(dto.getAccountReport().getAccountId())
+                    .agentKey(dto.getAgentKey())
+                    .regTime(dto.getRegTime())
+                    .orderNo(dto.getOrderId())
+                    .amount(dto.getRechargeMoney())
+                    .orderStatus(dto.getOrderStatus())
+                    .createTime(dto.getCreateTime())
+                    .payTime(dto.getPayTime())
+                    .backStatus(BackStatusEnum.NO.getBackStatus())
+                    .roleId(dto.getRoleId())
+                    .roleName(dto.getRoleName())
+                    .build();
+            boolean isFirstOrder = gameOceanengineAppOrderLogService.getOne(new LambdaQueryWrapper<GameOceanengineAppOrderLog>()
+                    .eq(GameOceanengineAppOrderLog::getGameId, orderLog.getGameId())
+                    .eq(GameOceanengineAppOrderLog::getUserId, orderLog.getUserId())
+                    .eq(GameOceanengineAppOrderLog::getAccountId, orderLog.getAccountId())
+                    .eq(GameOceanengineAppOrderLog::getOrderStatus, OrderStatusEnum.SUCCESS_PAY.getValue())
+                    .last("limit 1")
+            ) == null;
+            orderLog.setIsFirstOrder(isFirstOrder);
+            gameOceanengineAppOrderLogService.save(orderLog);
+            return ResultVO.ok(gameOceanengineAppOrderLogService.callback(orderLog));
+        } finally {
+            distributedLockComponent.unlock(lockKey);
+        }
     }
 
     @Override
@@ -179,15 +187,16 @@ public class TtAppBackRpcImpl implements ITtAppBackRpc {
         if(StringUtils.isBlank(dto.getCaid())) {
             dto.setCaid("");
         }
-        if(StringUtils.isBlank(dto.getMac())
+        if(StringUtils.isBlank(dto.getUserId()) || (StringUtils.isBlank(dto.getMac())
                 && StringUtils.isBlank(dto.getImei())
                 && StringUtils.isBlank(dto.getOaid())
                 && StringUtils.isBlank(dto.getAndroidId())
                 && StringUtils.isBlank(dto.getIdfa())
-                && StringUtils.isBlank(dto.getCaid())) {
+                && StringUtils.isBlank(dto.getCaid()))) {
             return ResultVO.fail("找不到用户唯一标识");
         }
         GameOceanengineAppRoleRegisterLog roleRegisterLog = GameOceanengineAppRoleRegisterLog.builder()
+                .userId(dto.getUserId())
                 .mac(dto.getMac())
                 .imei(dto.getImei())
                 .oaid(dto.getOaid())
@@ -209,22 +218,23 @@ public class TtAppBackRpcImpl implements ITtAppBackRpc {
 
     @Override
     public ResultVO<Boolean> userBackQuery(TtAppUserBackQueryRpcDTO dto) {
+        log.error("头条APP用户回传结果查询:{}", JsonUtil.toString(dto));
         return ResultVO.ok(Boolean.TRUE);
     }
 
     @Override
     public ResultVO<Boolean> orderBackQuery(TtAppOrderBackQueryRpcDTO dto) {
+        log.error("头条APP订单回传结果查询:{}", JsonUtil.toString(dto));
+
+        // 加锁最大等待 60s
+        String lockKey = com.zanxiang.game.back.base.ServerInfo.SERVER_NAME + ":TtAppOrderBack:" + dto.getGameId() + ":" + dto.getOrderId();
+        distributedLockComponent.doLock(lockKey, 60, 1L, TimeUnit.SECONDS);
+
         GameOceanengineAppOrderLog orderLog = gameOceanengineAppOrderLogService.getOne(new LambdaQueryWrapper<GameOceanengineAppOrderLog>()
                 .eq(GameOceanengineAppOrderLog::getOrderNo, dto.getOrderId())
                 .eq(GameOceanengineAppOrderLog::getGameId, dto.getGameId())
                 .eq(GameOceanengineAppOrderLog::getAgentKey, dto.getAgentKey())
-                .eq(GameOceanengineAppOrderLog::getAccountId, dto.getAccountReport().getAccountId())
-                .eq(GameOceanengineAppOrderLog::getMac, dto.getMac())
-                .eq(GameOceanengineAppOrderLog::getImei, dto.getImei())
-                .eq(GameOceanengineAppOrderLog::getOaid, dto.getOaid())
-                .eq(GameOceanengineAppOrderLog::getAndroidId, dto.getAndroidId())
-                .eq(GameOceanengineAppOrderLog::getIdfa, dto.getIdfa())
-                .eq(GameOceanengineAppOrderLog::getCaid, dto.getCaid())
+                .eq(GameOceanengineAppOrderLog::getUserId, dto.getUserId())
         );
         if  (orderLog == null) {
             return ResultVO.ok(Boolean.FALSE);
@@ -234,6 +244,7 @@ public class TtAppBackRpcImpl implements ITtAppBackRpc {
 
     @Override
     public ResultVO<Boolean> roleRegisterBackQuery(TtAppRoleRegisterBackQueryRpcDTO dto) {
+        log.error("头条APP创角回传结果查询:{}", JsonUtil.toString(dto));
         return ResultVO.ok(Boolean.TRUE);
     }
 }

+ 11 - 49
game-back/game-back-serve/src/main/java/com/zanxiang/game/back/serve/service/impl/GameOceanengineAppOrderLogServiceImpl.java

@@ -59,7 +59,7 @@ implements IGameOceanengineAppOrderLogService {
                 orderLog.getPayTime(),
                 // 此处使用用户最近一次的重新染色时间
                 userLog.getCreateTime(),
-                null,
+                orderLog.getUserId(),
                 new OceanengineOrderBackPolicyCheck(this, userLog, orderLog, gameBackPolicy)
         );
         boolean doBack = backInfo.first;
@@ -94,6 +94,7 @@ implements IGameOceanengineAppOrderLogService {
         GameOceanengineAppUserLog userLog = userLog(orderLog);
         if (userLog == null) {
             gameOceanengineAppBackLogService.save(GameOceanengineAppBackLog.builder()
+                    .userId(orderLog.getUserId())
                     .mac(orderLog.getMac())
                     .imei(orderLog.getImei())
                     .oaid(orderLog.getOaid())
@@ -115,6 +116,7 @@ implements IGameOceanengineAppOrderLogService {
         BackStatusEnum backStatus = BackStatusEnum.SUCCESS;
         String errMsg = null;
         gameOceanengineAppBackLogService.save(GameOceanengineAppBackLog.builder()
+                .userId(orderLog.getUserId())
                 .mac(orderLog.getMac())
                 .imei(orderLog.getImei())
                 .oaid(orderLog.getOaid())
@@ -136,12 +138,7 @@ implements IGameOceanengineAppOrderLogService {
     private GameOceanengineAppUserLog userLog(GameOceanengineAppOrderLog orderLog) {
         return gameOceanengineAppUserLogService.getOne(new LambdaQueryWrapper<GameOceanengineAppUserLog>()
                 .eq(GameOceanengineAppUserLog::getGameId, orderLog.getGameId())
-                .eq(GameOceanengineAppUserLog::getMac, orderLog.getMac())
-                .eq(GameOceanengineAppUserLog::getImei, orderLog.getImei())
-                .eq(GameOceanengineAppUserLog::getOaid, orderLog.getOaid())
-                .eq(GameOceanengineAppUserLog::getAndroidId, orderLog.getAndroidId())
-                .eq(GameOceanengineAppUserLog::getIdfa, orderLog.getIdfa())
-                .eq(GameOceanengineAppUserLog::getCaid, orderLog.getCaid())
+                .eq(GameOceanengineAppUserLog::getUserId, orderLog.getUserId())
                 .eq(GameOceanengineAppUserLog::getAccountId, orderLog.getAccountId())
                 .orderByDesc(GameOceanengineAppUserLog::getCreateTime)
                 .last("limit 1")
@@ -239,12 +236,7 @@ implements IGameOceanengineAppOrderLogService {
                         .eq(GameOceanengineAppOrderLog::getBackPolicyId, gameBackPolicy.getId())
                         .eq(GameOceanengineAppOrderLog::getOrderStatus, OrderStatusEnum.SUCCESS_PAY.getValue())
                         .eq(GameOceanengineAppOrderLog::getBackStatus, BackStatusEnum.SUCCESS.getBackStatus())
-                        .eq(GameOceanengineAppOrderLog::getMac, userLog.getMac())
-                        .eq(GameOceanengineAppOrderLog::getImei, userLog.getImei())
-                        .eq(GameOceanengineAppOrderLog::getOaid, userLog.getOaid())
-                        .eq(GameOceanengineAppOrderLog::getAndroidId, userLog.getAndroidId())
-                        .eq(GameOceanengineAppOrderLog::getIdfa, userLog.getIdfa())
-                        .eq(GameOceanengineAppOrderLog::getCaid, userLog.getCaid())
+                        .eq(GameOceanengineAppOrderLog::getUserId, userId)
                         .eq(GameOceanengineAppOrderLog::getIsFirstOrder, firstPolicy)
                         .ne(GameOceanengineAppOrderLog::getOrderNo, orderLog.getOrderNo())
                 );
@@ -255,12 +247,7 @@ implements IGameOceanengineAppOrderLogService {
                         .eq(GameOceanengineAppOrderLog::getBackPolicyId, gameBackPolicy.getId())
                         .eq(GameOceanengineAppOrderLog::getOrderStatus, OrderStatusEnum.SUCCESS_PAY.getValue())
                         .eq(GameOceanengineAppOrderLog::getBackStatus, BackStatusEnum.SUCCESS.getBackStatus())
-                        .eq(GameOceanengineAppOrderLog::getMac, userLog.getMac())
-                        .eq(GameOceanengineAppOrderLog::getImei, userLog.getImei())
-                        .eq(GameOceanengineAppOrderLog::getOaid, userLog.getOaid())
-                        .eq(GameOceanengineAppOrderLog::getAndroidId, userLog.getAndroidId())
-                        .eq(GameOceanengineAppOrderLog::getIdfa, userLog.getIdfa())
-                        .eq(GameOceanengineAppOrderLog::getCaid, userLog.getCaid())
+                        .eq(GameOceanengineAppOrderLog::getUserId, userId)
                         .apply(firstPolicy, "date(reg_time) = date(pay_time)")
                         .apply(!firstPolicy, "date(reg_time) != date(pay_time)")
                         .ne(GameOceanengineAppOrderLog::getOrderNo, orderLog.getOrderNo())
@@ -272,12 +259,7 @@ implements IGameOceanengineAppOrderLogService {
                         .eq(GameOceanengineAppOrderLog::getBackPolicyId, gameBackPolicy.getId())
                         .eq(GameOceanengineAppOrderLog::getOrderStatus, OrderStatusEnum.SUCCESS_PAY.getValue())
                         .eq(GameOceanengineAppOrderLog::getBackStatus, BackStatusEnum.SUCCESS.getBackStatus())
-                        .eq(GameOceanengineAppOrderLog::getMac, userLog.getMac())
-                        .eq(GameOceanengineAppOrderLog::getImei, userLog.getImei())
-                        .eq(GameOceanengineAppOrderLog::getOaid, userLog.getOaid())
-                        .eq(GameOceanengineAppOrderLog::getAndroidId, userLog.getAndroidId())
-                        .eq(GameOceanengineAppOrderLog::getIdfa, userLog.getIdfa())
-                        .eq(GameOceanengineAppOrderLog::getCaid, userLog.getCaid())
+                        .eq(GameOceanengineAppOrderLog::getUserId, userId)
                         .apply(firstPolicy, "TIMESTAMPDIFF(HOUR, reg_time, pay_time) < 24")
                         .apply(!firstPolicy, "TIMESTAMPDIFF(HOUR, reg_time, pay_time) >= 24")
                         .ne(GameOceanengineAppOrderLog::getOrderNo, orderLog.getOrderNo())
@@ -289,12 +271,7 @@ implements IGameOceanengineAppOrderLogService {
                         .eq(GameOceanengineAppOrderLog::getBackPolicyId, gameBackPolicy.getId())
                         .eq(GameOceanengineAppOrderLog::getOrderStatus, OrderStatusEnum.SUCCESS_PAY.getValue())
                         .eq(GameOceanengineAppOrderLog::getBackStatus, BackStatusEnum.SUCCESS.getBackStatus())
-                        .eq(GameOceanengineAppOrderLog::getMac, userLog.getMac())
-                        .eq(GameOceanengineAppOrderLog::getImei, userLog.getImei())
-                        .eq(GameOceanengineAppOrderLog::getOaid, userLog.getOaid())
-                        .eq(GameOceanengineAppOrderLog::getAndroidId, userLog.getAndroidId())
-                        .eq(GameOceanengineAppOrderLog::getIdfa, userLog.getIdfa())
-                        .eq(GameOceanengineAppOrderLog::getCaid, userLog.getCaid())
+                        .eq(GameOceanengineAppOrderLog::getUserId, userId)
                         .apply(firstPolicy, "TIMESTAMPDIFF(HOUR, reg_time, pay_time) < 48")
                         .apply(!firstPolicy, "TIMESTAMPDIFF(HOUR, reg_time, pay_time) >= 48")
                         .ne(GameOceanengineAppOrderLog::getOrderNo, orderLog.getOrderNo())
@@ -306,12 +283,7 @@ implements IGameOceanengineAppOrderLogService {
                         .eq(GameOceanengineAppOrderLog::getBackPolicyId, gameBackPolicy.getId())
                         .eq(GameOceanengineAppOrderLog::getOrderStatus, OrderStatusEnum.SUCCESS_PAY.getValue())
                         .eq(GameOceanengineAppOrderLog::getBackStatus, BackStatusEnum.SUCCESS.getBackStatus())
-                        .eq(GameOceanengineAppOrderLog::getMac, userLog.getMac())
-                        .eq(GameOceanengineAppOrderLog::getImei, userLog.getImei())
-                        .eq(GameOceanengineAppOrderLog::getOaid, userLog.getOaid())
-                        .eq(GameOceanengineAppOrderLog::getAndroidId, userLog.getAndroidId())
-                        .eq(GameOceanengineAppOrderLog::getIdfa, userLog.getIdfa())
-                        .eq(GameOceanengineAppOrderLog::getCaid, userLog.getCaid())
+                        .eq(GameOceanengineAppOrderLog::getUserId, userId)
                         .ne(GameOceanengineAppOrderLog::getOrderNo, orderLog.getOrderNo())
                 );
             } else {
@@ -342,12 +314,7 @@ implements IGameOceanengineAppOrderLogService {
                     .eq(GameOceanengineAppOrderLog::getBackPolicyId, gameBackPolicy.getId())
                     .eq(GameOceanengineAppOrderLog::getOrderStatus, OrderStatusEnum.SUCCESS_PAY.getValue())
                     .eq(GameOceanengineAppOrderLog::getBackStatus, BackStatusEnum.SUCCESS.getBackStatus())
-                    .eq(GameOceanengineAppOrderLog::getMac, userLog.getMac())
-                    .eq(GameOceanengineAppOrderLog::getImei, userLog.getImei())
-                    .eq(GameOceanengineAppOrderLog::getOaid, userLog.getOaid())
-                    .eq(GameOceanengineAppOrderLog::getAndroidId, userLog.getAndroidId())
-                    .eq(GameOceanengineAppOrderLog::getIdfa, userLog.getIdfa())
-                    .eq(GameOceanengineAppOrderLog::getCaid, userLog.getCaid())
+                    .eq(GameOceanengineAppOrderLog::getUserId, userId)
                     .apply("TIMESTAMPDIFF(MINUTE, reg_time, pay_time) > {0}", markUpTime)
                     .ne(GameOceanengineAppOrderLog::getOrderNo, orderLog.getOrderNo())
             );
@@ -361,12 +328,7 @@ implements IGameOceanengineAppOrderLogService {
                     .eq(GameOceanengineAppOrderLog::getAccountId, orderLog.getAccountId())
                     .eq(GameOceanengineAppOrderLog::getBackPolicyId, gameBackPolicy.getId())
                     .eq(GameOceanengineAppOrderLog::getOrderStatus, OrderStatusEnum.SUCCESS_PAY.getValue())
-                    .eq(GameOceanengineAppOrderLog::getMac, userLog.getMac())
-                    .eq(GameOceanengineAppOrderLog::getImei, userLog.getImei())
-                    .eq(GameOceanengineAppOrderLog::getOaid, userLog.getOaid())
-                    .eq(GameOceanengineAppOrderLog::getAndroidId, userLog.getAndroidId())
-                    .eq(GameOceanengineAppOrderLog::getIdfa, userLog.getIdfa())
-                    .eq(GameOceanengineAppOrderLog::getCaid, userLog.getCaid())
+                    .eq(GameOceanengineAppOrderLog::getUserId, userLog.getUserId())
                     .ne(GameOceanengineAppOrderLog::getOrderNo, orderLog.getOrderNo())
             ).getAmount();
         }

+ 4 - 12
game-back/game-back-serve/src/main/java/com/zanxiang/game/back/serve/service/impl/GameOceanengineAppRoleRegisterLogServiceImpl.java

@@ -42,18 +42,14 @@ implements IGameOceanengineAppRoleRegisterLogService {
     private BackStatusEnum doCallback(GameOceanengineAppRoleRegisterLog roleRegisterLog) {
         GameOceanengineAppUserLog userLog = gameOceanengineAppUserLogService.getOne(new LambdaQueryWrapper<GameOceanengineAppUserLog>()
                 .eq(GameOceanengineAppUserLog::getGameId, roleRegisterLog.getGameId())
-                .eq(GameOceanengineAppUserLog::getMac, roleRegisterLog.getMac())
-                .eq(GameOceanengineAppUserLog::getImei, roleRegisterLog.getImei())
-                .eq(GameOceanengineAppUserLog::getOaid, roleRegisterLog.getOaid())
-                .eq(GameOceanengineAppUserLog::getAndroidId, roleRegisterLog.getAndroidId())
-                .eq(GameOceanengineAppUserLog::getIdfa, roleRegisterLog.getIdfa())
-                .eq(GameOceanengineAppUserLog::getCaid, roleRegisterLog.getCaid())
+                .eq(GameOceanengineAppUserLog::getUserId, roleRegisterLog.getUserId())
                 .eq(GameOceanengineAppUserLog::getAccountId, roleRegisterLog.getAccountId())
                 .orderByDesc(GameOceanengineAppUserLog::getCreateTime)
                 .last("limit 1")
         );
         if (userLog == null) {
             gameOceanengineAppBackLogService.save(GameOceanengineAppBackLog.builder()
+                    .userId(roleRegisterLog.getUserId())
                     .mac(roleRegisterLog.getMac())
                     .imei(roleRegisterLog.getImei())
                     .oaid(roleRegisterLog.getOaid())
@@ -73,12 +69,7 @@ implements IGameOceanengineAppRoleRegisterLogService {
         //判断创角是否已回传
         if (gameOceanengineAppBackLogService.count(new LambdaQueryWrapper<GameOceanengineAppBackLog>()
                 .eq(GameOceanengineAppBackLog::getGameId, userLog.getGameId())
-                .eq(GameOceanengineAppBackLog::getMac, userLog.getMac())
-                .eq(GameOceanengineAppBackLog::getImei, userLog.getImei())
-                .eq(GameOceanengineAppBackLog::getOaid, userLog.getOaid())
-                .eq(GameOceanengineAppBackLog::getAndroidId, userLog.getAndroidId())
-                .eq(GameOceanengineAppBackLog::getIdfa, userLog.getIdfa())
-                .eq(GameOceanengineAppBackLog::getCaid, userLog.getCaid())
+                .eq(GameOceanengineAppBackLog::getUserId, userLog.getUserId())
                 .eq(GameOceanengineAppBackLog::getAccountId, userLog.getAccountId())
                 .eq(GameOceanengineAppBackLog::getEventType, MiniGameCallback.EventType.ACTIVE_REGISTER.getEventType())
                 .eq(GameOceanengineAppBackLog::getBackStatus, BackStatusEnum.SUCCESS.getBackStatus())
@@ -89,6 +80,7 @@ implements IGameOceanengineAppRoleRegisterLogService {
         BackStatusEnum backStatus = BackStatusEnum.SUCCESS;
         String errMsg = null;
         gameOceanengineAppBackLogService.save(GameOceanengineAppBackLog.builder()
+                .userId(roleRegisterLog.getUserId())
                 .mac(roleRegisterLog.getMac())
                 .imei(roleRegisterLog.getImei())
                 .oaid(roleRegisterLog.getOaid())

+ 2 - 6
game-back/game-back-serve/src/main/java/com/zanxiang/game/back/serve/service/impl/GameOceanengineAppUserLogServiceImpl.java

@@ -44,12 +44,7 @@ implements IGameOceanengineAppUserLogService {
         // 是否已经回传过
         if (!mustBack && gameOceanengineAppBackLogService.count(new LambdaQueryWrapper<GameOceanengineAppBackLog>()
                 .eq(GameOceanengineAppBackLog::getGameId, userLog.getGameId())
-                .eq(GameOceanengineAppBackLog::getMac, userLog.getMac())
-                .eq(GameOceanengineAppBackLog::getImei, userLog.getImei())
-                .eq(GameOceanengineAppBackLog::getOaid, userLog.getOaid())
-                .eq(GameOceanengineAppBackLog::getAndroidId, userLog.getAndroidId())
-                .eq(GameOceanengineAppBackLog::getIdfa, userLog.getIdfa())
-                .eq(GameOceanengineAppBackLog::getCaid, userLog.getCaid())
+                .eq(GameOceanengineAppBackLog::getUserId, userLog.getUserId())
                 .eq(GameOceanengineAppBackLog::getAccountId, userLog.getAccountId())
                 .eq(GameOceanengineAppBackLog::getEventType, MiniGameCallback.EventType.ACTIVE.getEventType())
                 .eq(GameOceanengineAppBackLog::getBackStatus, BackStatusEnum.SUCCESS.getBackStatus())
@@ -58,6 +53,7 @@ implements IGameOceanengineAppUserLogService {
         }
         BackStatusEnum backStatus = BackStatusEnum.SUCCESS;
         gameOceanengineAppBackLogService.save(GameOceanengineAppBackLog.builder()
+                .userId(userLog.getUserId())
                 .mac(userLog.getMac())
                 .imei(userLog.getImei())
                 .oaid(userLog.getOaid())