Przeglądaj źródła

fix : 回传策略新增激活回传开关

bilingfeng 11 miesięcy temu
rodzic
commit
c1374ea556
12 zmienionych plików z 124 dodań i 80 usunięć
  1. 5 0
      game-back/game-back-base/src/main/java/com/zanxiang/game/back/base/pojo/dto/TtUserActiveRpcDTO.java
  2. 1 1
      game-back/game-back-serve/src/main/java/com/zanxiang/game/back/serve/GameBackApplication.java
  3. 7 5
      game-back/game-back-serve/src/main/java/com/zanxiang/game/back/serve/pojo/dto/GameBackPolicyDTO.java
  4. 8 8
      game-back/game-back-serve/src/main/java/com/zanxiang/game/back/serve/pojo/entity/GameBackPolicy.java
  5. 5 0
      game-back/game-back-serve/src/main/java/com/zanxiang/game/back/serve/pojo/vo/GameBackPolicyVO.java
  6. 15 3
      game-back/game-back-serve/src/main/java/com/zanxiang/game/back/serve/rpc/impl/TencentMiniGameBackRpcImpl.java
  7. 34 3
      game-back/game-back-serve/src/main/java/com/zanxiang/game/back/serve/rpc/impl/TtMiniGameBackRpcImpl.java
  8. 6 8
      game-back/game-back-serve/src/main/java/com/zanxiang/game/back/serve/service/impl/GameBackPolicyServiceImpl.java
  9. 15 11
      game-back/game-back-serve/src/main/java/com/zanxiang/game/back/serve/service/impl/GameOceanengineRoleRegisterLogServiceImpl.java
  10. 3 12
      game-back/game-back-serve/src/main/java/com/zanxiang/game/back/serve/service/impl/GameOceanengineUserLogServiceImpl.java
  11. 19 15
      game-back/game-back-serve/src/main/java/com/zanxiang/game/back/serve/service/impl/GameTencentMiniGameRoleRegisterServiceImpl.java
  12. 6 14
      game-back/game-back-serve/src/main/java/com/zanxiang/game/back/serve/service/impl/GameTencentMiniGameUserServiceImpl.java

+ 5 - 0
game-back/game-back-base/src/main/java/com/zanxiang/game/back/base/pojo/dto/TtUserActiveRpcDTO.java

@@ -63,4 +63,9 @@ public class TtUserActiveRpcDTO implements Serializable {
      * 激活/注册时间
      */
     private LocalDateTime activeTime;
+
+    /**
+     * 回传策略 id
+     */
+    private Long backPolicyId;
 }

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

+ 7 - 5
game-back/game-back-serve/src/main/java/com/zanxiang/game/back/serve/pojo/dto/GameBackPolicyDTO.java

@@ -1,8 +1,5 @@
 package com.zanxiang.game.back.serve.pojo.dto;
 
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
 import com.zanxiang.game.back.serve.pojo.vo.GameBackPolicyVO;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.AllArgsConstructor;
@@ -14,7 +11,6 @@ import javax.validation.constraints.NotBlank;
 import javax.validation.constraints.NotNull;
 import java.io.Serializable;
 import java.math.BigDecimal;
-import java.time.LocalDateTime;
 import java.util.List;
 
 /**
@@ -256,7 +252,13 @@ public class GameBackPolicyDTO implements Serializable {
      */
     private BigDecimal supperSmallAmount;
 
+    /**
+     * 拆单策略
+     */
     private List<GameBackPolicyVO.SplitStrategy> splitStrategy;
 
-
+    /**
+     * 激活回传开关
+     */
+    private Boolean activeBackSwitch;
 }

+ 8 - 8
game-back/game-back-serve/src/main/java/com/zanxiang/game/back/serve/pojo/entity/GameBackPolicy.java

@@ -3,16 +3,13 @@ package com.zanxiang.game.back.serve.pojo.entity;
 import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
 
 import java.io.Serializable;
-import java.math.BigDecimal;
 import java.time.LocalDateTime;
-import java.util.List;
-
-import com.zanxiang.game.back.serve.pojo.vo.GameBackPolicyVO;
-import io.swagger.annotations.ApiModelProperty;
-import lombok.*;
-import lombok.experimental.Accessors;
 
 /**
  * <p>
@@ -227,5 +224,8 @@ public class GameBackPolicy implements Serializable {
      */
     private String splitStrategy;
 
-
+    /**
+     * 激活回传开关
+     */
+    private Boolean activeBackSwitch;
 }

+ 5 - 0
game-back/game-back-serve/src/main/java/com/zanxiang/game/back/serve/pojo/vo/GameBackPolicyVO.java

@@ -247,6 +247,11 @@ public class GameBackPolicyVO implements Serializable {
      */
     private List<SplitStrategy> splitStrategy;
 
+    /**
+     * 激活回传开关
+     */
+    private Boolean activeBackSwitch;
+
     @Data
     @NoArgsConstructor
     @AllArgsConstructor

+ 15 - 3
game-back/game-back-serve/src/main/java/com/zanxiang/game/back/serve/rpc/impl/TencentMiniGameBackRpcImpl.java

@@ -6,10 +6,12 @@ import com.zanxiang.game.back.base.pojo.dto.TencentRoleRegisterRpcDTO;
 import com.zanxiang.game.back.base.pojo.dto.TencentUserDTO;
 import com.zanxiang.game.back.base.pojo.enums.OrderStatusEnum;
 import com.zanxiang.game.back.base.rpc.ITencentMiniGameBackRpc;
+import com.zanxiang.game.back.serve.pojo.entity.GameBackPolicy;
 import com.zanxiang.game.back.serve.pojo.entity.GameTencentMiniGameOrder;
 import com.zanxiang.game.back.serve.pojo.entity.GameTencentMiniGameRoleRegister;
 import com.zanxiang.game.back.serve.pojo.entity.GameTencentMiniGameUser;
 import com.zanxiang.game.back.serve.pojo.enums.BackStatusEnum;
+import com.zanxiang.game.back.serve.service.IGameBackPolicyService;
 import com.zanxiang.game.back.serve.service.IGameTencentMiniGameOrderService;
 import com.zanxiang.game.back.serve.service.IGameTencentMiniGameRoleRegisterService;
 import com.zanxiang.game.back.serve.service.IGameTencentMiniGameUserService;
@@ -26,10 +28,15 @@ import java.util.Objects;
 @DubboService
 public class TencentMiniGameBackRpcImpl implements ITencentMiniGameBackRpc {
 
+    @Autowired
+    private IGameBackPolicyService gameBackPolicyService;
+
     @Autowired
     private IGameTencentMiniGameOrderService gameTencentMiniGameOrderService;
+
     @Autowired
     private IGameTencentMiniGameUserService gameTencentMiniGameUserService;
+
     @Autowired
     private IGameTencentMiniGameRoleRegisterService gameTencentMiniGameRoleRegisterService;
 
@@ -105,9 +112,14 @@ public class TencentMiniGameBackRpcImpl implements ITencentMiniGameBackRpc {
                 .createTime(LocalDateTime.now())
                 .build();
         gameTencentMiniGameUserService.save(userLog);
-        return ResultVO.ok(true);
-        // 激活现在默认不回传了,等创角的时候一起回传
-        // return ResultVO.ok(gameTencentMiniGameUserService.userBack(userLog, false));
+        //查询回传策略
+        GameBackPolicy gameBackPolicy = gameBackPolicyService.getById(dto.getBackPolicyId());
+        //判断是否开启激活回传开关
+        if (gameBackPolicy != null && Objects.equals(gameBackPolicy.getActiveBackSwitch(), Boolean.TRUE)) {
+            //激活回传
+            gameTencentMiniGameUserService.userBack(userLog);
+        }
+        return ResultVO.ok(Boolean.TRUE);
     }
 
     @Override

+ 34 - 3
game-back/game-back-serve/src/main/java/com/zanxiang/game/back/serve/rpc/impl/TtMiniGameBackRpcImpl.java

@@ -1,34 +1,52 @@
 package com.zanxiang.game.back.serve.rpc.impl;
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 import com.zanxiang.game.back.base.pojo.dto.TtOrderRpcDTO;
 import com.zanxiang.game.back.base.pojo.dto.TtRoleRegisterRpcDTO;
 import com.zanxiang.game.back.base.pojo.dto.TtUserActiveRpcDTO;
 import com.zanxiang.game.back.base.pojo.enums.OrderStatusEnum;
 import com.zanxiang.game.back.base.rpc.ITtMiniGameBackRpc;
+import com.zanxiang.game.back.serve.pojo.entity.GameBackPolicy;
 import com.zanxiang.game.back.serve.pojo.entity.GameOceanengineOrderLog;
 import com.zanxiang.game.back.serve.pojo.entity.GameOceanengineRoleRegisterLog;
 import com.zanxiang.game.back.serve.pojo.entity.GameOceanengineUserLog;
 import com.zanxiang.game.back.serve.pojo.enums.BackStatusEnum;
+import com.zanxiang.game.back.serve.service.IGameBackPolicyService;
 import com.zanxiang.game.back.serve.service.IGameOceanengineOrderLogService;
 import com.zanxiang.game.back.serve.service.IGameOceanengineRoleRegisterLogService;
 import com.zanxiang.game.back.serve.service.IGameOceanengineUserLogService;
+import com.zanxiang.game.module.base.ServerInfo;
+import com.zanxiang.game.module.base.pojo.vo.AgentRpcVO;
+import com.zanxiang.game.module.base.rpc.IAgentRpc;
 import com.zanxiang.module.util.JsonUtil;
 import com.zanxiang.module.util.pojo.ResultVO;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.dubbo.config.annotation.DubboReference;
 import org.apache.dubbo.config.annotation.DubboService;
 import org.springframework.beans.factory.annotation.Autowired;
 
 import java.time.LocalDateTime;
+import java.util.Collections;
+import java.util.List;
 import java.util.Objects;
 
 @Slf4j
 @DubboService
 public class TtMiniGameBackRpcImpl implements ITtMiniGameBackRpc {
+
+    @Autowired
+    private IGameBackPolicyService gameBackPolicyService;
+
+    @DubboReference(providedBy = ServerInfo.SERVER_DUBBO_NAME)
+    private IAgentRpc agentRpc;
+
     @Autowired
     private IGameOceanengineUserLogService gameOceanengineUserLogService;
+
     @Autowired
     private IGameOceanengineOrderLogService gameOceanengineOrderLogService;
+
     @Autowired
     private IGameOceanengineRoleRegisterLogService gameOceanengineRoleRegisterLogService;
 
@@ -53,9 +71,22 @@ public class TtMiniGameBackRpcImpl implements ITtMiniGameBackRpc {
                 .createTime(LocalDateTime.now())
                 .build();
         gameOceanengineUserLogService.save(userLog);
-        return ResultVO.ok(true);
-        // 激活现在默认不回传了,等创角的时候一起回传
-        // return ResultVO.ok(gameOceanengineUserLogService.callback(userLog, false));
+        //查询策略信息
+        GameBackPolicy gameBackPolicy = null;
+        if (dto.getBackPolicyId() != null) {
+            gameBackPolicy = gameBackPolicyService.getById(dto.getBackPolicyId());
+        } else {
+            List<AgentRpcVO> agentRpcVOList = agentRpc.getByAgentKeys(Collections.singletonList(dto.getAgentKey())).getData();
+            if (CollectionUtils.isNotEmpty(agentRpcVOList)) {
+                gameBackPolicy = gameBackPolicyService.getById(agentRpcVOList.get(0).getId());
+            }
+        }
+        //判断是否开启激活回传开关
+        if (gameBackPolicy != null && Objects.equals(gameBackPolicy.getActiveBackSwitch(), Boolean.TRUE)) {
+            //激活回传
+            gameOceanengineUserLogService.callback(userLog, Boolean.FALSE);
+        }
+        return ResultVO.ok(Boolean.TRUE);
     }
 
     @Override

+ 6 - 8
game-back/game-back-serve/src/main/java/com/zanxiang/game/back/serve/service/impl/GameBackPolicyServiceImpl.java

@@ -11,7 +11,7 @@ import com.zanxiang.erp.security.util.SecurityUtil;
 import com.zanxiang.game.back.serve.dao.mapper.GameBackPolicyMapper;
 import com.zanxiang.game.back.serve.pojo.dto.GameBackPolicyDTO;
 import com.zanxiang.game.back.serve.pojo.dto.GameBackPolicyListDTO;
-import com.zanxiang.game.back.serve.pojo.entity.*;
+import com.zanxiang.game.back.serve.pojo.entity.GameBackPolicy;
 import com.zanxiang.game.back.serve.pojo.vo.GameBackPolicyVO;
 import com.zanxiang.game.back.serve.service.IGameBackPolicyService;
 import com.zanxiang.game.back.serve.service.IGameTencentBackLogService;
@@ -31,10 +31,7 @@ import org.springframework.stereotype.Service;
 import java.math.BigDecimal;
 import java.time.LocalDateTime;
 import java.util.Arrays;
-import java.util.Collections;
-import java.util.Comparator;
 import java.util.List;
-import java.util.function.Function;
 import java.util.stream.Collectors;
 
 /**
@@ -64,9 +61,9 @@ public class GameBackPolicyServiceImpl extends ServiceImpl<GameBackPolicyMapper,
     @Override
     public IPage<GameBackPolicyVO> policyList(GameBackPolicyListDTO dto) {
         return gameBackPolicyService.page(dto.toPage(), new LambdaQueryWrapper<GameBackPolicy>()
-                        .like(StringUtils.isNotBlank(dto.getBackPolicyName()), GameBackPolicy::getBackPolicyName, dto.getBackPolicyName())
-                        .eq(GameBackPolicy::getCreateBy, SecurityUtil.getUserId())
-                        .orderByDesc(GameBackPolicy::getCreateTime))
+                .like(StringUtils.isNotBlank(dto.getBackPolicyName()), GameBackPolicy::getBackPolicyName, dto.getBackPolicyName())
+                .eq(GameBackPolicy::getCreateBy, SecurityUtil.getUserId())
+                .orderByDesc(GameBackPolicy::getCreateTime))
                 .convert(this::toVO);
     }
 
@@ -123,6 +120,7 @@ public class GameBackPolicyServiceImpl extends ServiceImpl<GameBackPolicyMapper,
                 .largeAmount(dto.getLargeAmount() == null ? null : NumberUtil.multiply100(dto.getLargeAmount()).longValue())
                 .supperSmallAmount(dto.getSupperSmallAmount() == null ? null : NumberUtil.multiply100(dto.getSupperSmallAmount()).longValue())
                 .splitStrategy(CollectionUtils.isEmpty(dto.getSplitStrategy()) ? null : JsonUtil.toString(dto.getSplitStrategy()))
+                .activeBackSwitch(dto.getActiveBackSwitch())
                 .build();
         return gameBackPolicyService.save(backPolicy);
     }
@@ -176,8 +174,8 @@ public class GameBackPolicyServiceImpl extends ServiceImpl<GameBackPolicyMapper,
                 .largeAmount(dto.getLargeAmount() == null ? null : NumberUtil.multiply100(dto.getLargeAmount()).longValue())
                 .supperSmallAmount(dto.getSupperSmallAmount() == null ? null : NumberUtil.multiply100(dto.getSupperSmallAmount()).longValue())
                 .splitStrategy(CollectionUtils.isEmpty(dto.getSplitStrategy()) ? null : JsonUtil.toString(dto.getSplitStrategy()))
+                .activeBackSwitch(dto.getActiveBackSwitch())
                 .build();
-
         return gameBackPolicyService.updateById(backPolicy);
     }
 

+ 15 - 11
game-back/game-back-serve/src/main/java/com/zanxiang/game/back/serve/service/impl/GameOceanengineRoleRegisterLogServiceImpl.java

@@ -9,13 +9,11 @@ import com.zanxiang.game.back.serve.dao.mapper.GameOceanengineRoleRegisterLogMap
 import com.zanxiang.game.back.serve.oceanengine.MiniGameCallback;
 import com.zanxiang.game.back.serve.oceanengine.OceanengineCallbackException;
 import com.zanxiang.game.back.serve.pojo.dto.GameOceanengineRoleRegisterLogDTO;
-import com.zanxiang.game.back.serve.pojo.dto.GameOceanengineUserLogDTO;
 import com.zanxiang.game.back.serve.pojo.entity.GameOceanengineBackLog;
 import com.zanxiang.game.back.serve.pojo.entity.GameOceanengineRoleRegisterLog;
 import com.zanxiang.game.back.serve.pojo.entity.GameOceanengineUserLog;
 import com.zanxiang.game.back.serve.pojo.enums.BackStatusEnum;
 import com.zanxiang.game.back.serve.pojo.vo.GameOceanengineRoleRegisterLogVO;
-import com.zanxiang.game.back.serve.pojo.vo.GameOceanengineUserLogVO;
 import com.zanxiang.game.back.serve.service.IGameOceanengineBackLogService;
 import com.zanxiang.game.back.serve.service.IGameOceanengineRoleRegisterLogService;
 import com.zanxiang.game.back.serve.service.IGameOceanengineUserLogService;
@@ -33,11 +31,7 @@ import org.springframework.transaction.annotation.Transactional;
 
 import java.time.LocalDateTime;
 import java.time.LocalTime;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
+import java.util.*;
 import java.util.function.Function;
 import java.util.stream.Collectors;
 
@@ -137,13 +131,23 @@ public class GameOceanengineRoleRegisterLogServiceImpl extends ServiceImpl<GameO
                     .build());
             return BackStatusEnum.FAILED;
         }
-        if (BackStatusEnum.NO.getBackStatus().equals(userLog.getBackStatus())) {
-            // 回传用户激活
+        // 回传用户激活
+        if (Objects.equals(BackStatusEnum.NO.getBackStatus(), userLog.getBackStatus())) {
             gameOceanengineUserLogService.callback(userLog, true);
-        } else {
-            // 注册已回传,则默认认为创角也回传了
+        }
+        //判断创角是否已回传
+        if (gameOceanengineBackLogService.count(new LambdaQueryWrapper<GameOceanengineBackLog>()
+                .eq(GameOceanengineBackLog::getGameId, userLog.getGameId())
+                .eq(GameOceanengineBackLog::getAppId, userLog.getAppId())
+                .eq(GameOceanengineBackLog::getOpenId, userLog.getOpenId())
+                .eq(GameOceanengineBackLog::getAccountId, userLog.getAccountId())
+                .eq(GameOceanengineBackLog::getEventType, MiniGameCallback.EventType.ACTIVE_REGISTER.getEventType())
+                .eq(GameOceanengineBackLog::getBackStatus, BackStatusEnum.SUCCESS.getBackStatus())
+        ) > 0) {
+            //创角已回传
             return BackStatusEnum.NO;
         }
+        //创角回传
         MiniGameCallback.MiniGameCallbackRequest request = MiniGameCallback.MiniGameCallbackRequest.builder()
                 .clue_token(userLog.getClueToken())
                 .open_id(roleRegisterLog.getOpenId())

+ 3 - 12
game-back/game-back-serve/src/main/java/com/zanxiang/game/back/serve/service/impl/GameOceanengineUserLogServiceImpl.java

@@ -10,11 +10,8 @@ import com.zanxiang.game.back.serve.oceanengine.MiniGameCallback;
 import com.zanxiang.game.back.serve.oceanengine.OceanengineCallbackException;
 import com.zanxiang.game.back.serve.pojo.dto.GameOceanengineUserLogDTO;
 import com.zanxiang.game.back.serve.pojo.entity.GameOceanengineBackLog;
-import com.zanxiang.game.back.serve.pojo.entity.GameOceanengineOrderLog;
-import com.zanxiang.game.back.serve.pojo.entity.GameOceanengineUserLog;
 import com.zanxiang.game.back.serve.pojo.entity.GameOceanengineUserLog;
 import com.zanxiang.game.back.serve.pojo.enums.BackStatusEnum;
-import com.zanxiang.game.back.serve.pojo.vo.GameOceanengineOrderLogVO;
 import com.zanxiang.game.back.serve.pojo.vo.GameOceanengineUserLogVO;
 import com.zanxiang.game.back.serve.service.IGameOceanengineBackLogService;
 import com.zanxiang.game.back.serve.service.IGameOceanengineUserLogService;
@@ -28,16 +25,11 @@ import org.apache.commons.lang3.StringUtils;
 import org.apache.dubbo.config.annotation.DubboReference;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Propagation;
 import org.springframework.transaction.annotation.Transactional;
 
 import java.time.LocalDateTime;
 import java.time.LocalTime;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
+import java.util.*;
 import java.util.function.Function;
 import java.util.stream.Collectors;
 
@@ -116,15 +108,14 @@ public class GameOceanengineUserLogServiceImpl extends ServiceImpl<GameOceanengi
 
     private BackStatusEnum doCallback(GameOceanengineUserLog userLog, boolean mustBack) {
         // 是否已经回传过
-        boolean isBack = mustBack ? false : gameOceanengineBackLogService.count(new LambdaQueryWrapper<GameOceanengineBackLog>()
+        if (!mustBack && gameOceanengineBackLogService.count(new LambdaQueryWrapper<GameOceanengineBackLog>()
                 .eq(GameOceanengineBackLog::getGameId, userLog.getGameId())
                 .eq(GameOceanengineBackLog::getAppId, userLog.getAppId())
                 .eq(GameOceanengineBackLog::getOpenId, userLog.getOpenId())
                 .eq(GameOceanengineBackLog::getAccountId, userLog.getAccountId())
                 .eq(GameOceanengineBackLog::getEventType, MiniGameCallback.EventType.ACTIVE.getEventType())
                 .eq(GameOceanengineBackLog::getBackStatus, BackStatusEnum.SUCCESS.getBackStatus())
-        ) > 0;
-        if (isBack) {
+        ) > 0) {
             return BackStatusEnum.NO;
         }
         MiniGameCallback.MiniGameCallbackRequest request = MiniGameCallback.MiniGameCallbackRequest.builder()

+ 19 - 15
game-back/game-back-serve/src/main/java/com/zanxiang/game/back/serve/service/impl/GameTencentMiniGameRoleRegisterServiceImpl.java

@@ -10,14 +10,12 @@ import com.zanxiang.advertising.tencent.base.AdvertisingTencentServer;
 import com.zanxiang.advertising.tencent.base.rpc.IUserActionSetRpc;
 import com.zanxiang.game.back.serve.dao.mapper.GameTencentMiniGameRoleRegisterMapper;
 import com.zanxiang.game.back.serve.pojo.dto.GameTencentMiniGameRoleRegisterDTO;
-import com.zanxiang.game.back.serve.pojo.dto.GameTencentMiniGameUserDTO;
 import com.zanxiang.game.back.serve.pojo.entity.GameTencentMiniGameBackLog;
 import com.zanxiang.game.back.serve.pojo.entity.GameTencentMiniGameRoleRegister;
 import com.zanxiang.game.back.serve.pojo.entity.GameTencentMiniGameUser;
-import com.zanxiang.game.back.serve.pojo.entity.GameTencentUser;
+import com.zanxiang.game.back.serve.pojo.enums.ActionTypeEnum;
 import com.zanxiang.game.back.serve.pojo.enums.BackStatusEnum;
 import com.zanxiang.game.back.serve.pojo.vo.GameTencentMiniGameRoleRegisterVO;
-import com.zanxiang.game.back.serve.pojo.vo.GameTencentMiniGameUserVO;
 import com.zanxiang.game.back.serve.service.IGameTencentMiniGameBackLogService;
 import com.zanxiang.game.back.serve.service.IGameTencentMiniGameRoleRegisterService;
 import com.zanxiang.game.back.serve.service.IGameTencentMiniGameUserService;
@@ -35,11 +33,7 @@ import org.springframework.transaction.annotation.Transactional;
 
 import java.time.LocalDateTime;
 import java.time.LocalTime;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
+import java.util.*;
 import java.util.function.Function;
 import java.util.stream.Collectors;
 
@@ -133,14 +127,24 @@ public class GameTencentMiniGameRoleRegisterServiceImpl extends ServiceImpl<Game
                 .orderByDesc(GameTencentMiniGameUser::getCreateTime)
                 .last("limit 1")
         );
-        if (user != null) {
-            if (BackStatusEnum.NO.getBackStatus().equals(user.getBackStatus())) {
-                gameTencentMiniGameUserService.userBack(user);
-            } else {
-                // 注册已回传,则默认认为创角也回传了
-                return Tuple2.with(BackStatusEnum.SUCCESS, "注册已回传,则默认认为创角也回传了");
-            }
+        //判断注册是否回传
+        if (user != null && Objects.equals(BackStatusEnum.NO.getBackStatus(), user.getBackStatus())) {
+            //注册回传
+            gameTencentMiniGameUserService.userBack(user);
+        }
+        //判断创角是否回传
+        if (gameTencentMiniGameBackLogService.count(new LambdaQueryWrapper<GameTencentMiniGameBackLog>()
+                .eq(GameTencentMiniGameBackLog::getGameId, roleRegisterLog.getGameId())
+                .eq(GameTencentMiniGameBackLog::getWechatAppId, roleRegisterLog.getWechatAppId())
+                .eq(GameTencentMiniGameBackLog::getWechatOpenid, roleRegisterLog.getWechatOpenid())
+                .eq(GameTencentMiniGameBackLog::getAdAccountId, roleRegisterLog.getAdAccountId())
+                .eq(GameTencentMiniGameBackLog::getActionType, ActionTypeEnum.CREATE_ROLE.getActionType())
+                .eq(GameTencentMiniGameBackLog::getBackStatus, BackStatusEnum.SUCCESS.getBackStatus())
+        ) > 0) {
+            //创角已回传
+            return Tuple2.with(BackStatusEnum.NO, "创角已回传,默认不重复传");
         }
+        //创角回传
         return gameTencentMiniGameBackLogService.roleRegisterBack(roleRegisterLog);
     }
 

+ 6 - 14
game-back/game-back-serve/src/main/java/com/zanxiang/game/back/serve/service/impl/GameTencentMiniGameUserServiceImpl.java

@@ -10,12 +10,10 @@ import com.zanxiang.advertising.tencent.base.AdvertisingTencentServer;
 import com.zanxiang.advertising.tencent.base.rpc.IUserActionSetRpc;
 import com.zanxiang.game.back.serve.dao.mapper.GameTencentMiniGameUserMapper;
 import com.zanxiang.game.back.serve.pojo.dto.GameTencentMiniGameUserDTO;
-import com.zanxiang.game.back.serve.pojo.entity.GameOceanengineOrderLog;
-import com.zanxiang.game.back.serve.pojo.entity.GameOceanengineUserLog;
 import com.zanxiang.game.back.serve.pojo.entity.GameTencentMiniGameBackLog;
 import com.zanxiang.game.back.serve.pojo.entity.GameTencentMiniGameUser;
+import com.zanxiang.game.back.serve.pojo.enums.ActionTypeEnum;
 import com.zanxiang.game.back.serve.pojo.enums.BackStatusEnum;
-import com.zanxiang.game.back.serve.pojo.vo.GameOceanengineOrderLogVO;
 import com.zanxiang.game.back.serve.pojo.vo.GameTencentMiniGameUserVO;
 import com.zanxiang.game.back.serve.service.IGameTencentMiniGameBackLogService;
 import com.zanxiang.game.back.serve.service.IGameTencentMiniGameUserService;
@@ -33,11 +31,7 @@ import org.springframework.transaction.annotation.Transactional;
 
 import java.time.LocalDateTime;
 import java.time.LocalTime;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
+import java.util.*;
 import java.util.function.Function;
 import java.util.stream.Collectors;
 
@@ -67,7 +61,6 @@ public class GameTencentMiniGameUserServiceImpl extends ServiceImpl<GameTencentM
         );
     }
 
-
     @Override
     public IPage<GameTencentMiniGameUserVO> listOfPage(GameTencentMiniGameUserDTO dto) {
         IPage<GameTencentMiniGameUser> page = page(dto.toPage(), new LambdaQueryWrapper<GameTencentMiniGameUser>()
@@ -121,17 +114,16 @@ public class GameTencentMiniGameUserServiceImpl extends ServiceImpl<GameTencentM
 
     }
 
-
     private Tuple2<BackStatusEnum, String> doCallback(GameTencentMiniGameUser userLog) {
-        boolean isBack = gameTencentMiniGameBackLogService.count(new LambdaQueryWrapper<GameTencentMiniGameBackLog>()
+        if (gameTencentMiniGameBackLogService.count(new LambdaQueryWrapper<GameTencentMiniGameBackLog>()
                 .eq(GameTencentMiniGameBackLog::getGameId, userLog.getGameId())
                 .eq(GameTencentMiniGameBackLog::getWechatAppId, userLog.getWechatAppId())
                 .eq(GameTencentMiniGameBackLog::getWechatOpenid, userLog.getWechatOpenid())
                 .eq(GameTencentMiniGameBackLog::getAdAccountId, userLog.getAdAccountId())
+                .eq(GameTencentMiniGameBackLog::getActionType, ActionTypeEnum.REGISTER.getActionType())
                 .eq(GameTencentMiniGameBackLog::getBackStatus, BackStatusEnum.SUCCESS.getBackStatus())
-        ) > 0;
-        if (isBack) {
-            return Tuple2.with(BackStatusEnum.SUCCESS, null);
+        ) > 0) {
+            return Tuple2.with(BackStatusEnum.NO, null);
         }
         return gameTencentMiniGameBackLogService.userBack(userLog);
     }