소스 검색

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

root 1 년 전
부모
커밋
20fd513f36
53개의 변경된 파일1717개의 추가작업 그리고 145개의 파일을 삭제
  1. 1 1
      game-back/game-back-base/src/main/java/com/zanxiang/game/back/base/pojo/dto/TencentOrderRpcDTO.java
  2. 64 0
      game-back/game-back-base/src/main/java/com/zanxiang/game/back/base/pojo/dto/TencentRoleRegisterRpcDTO.java
  3. 1 1
      game-back/game-back-base/src/main/java/com/zanxiang/game/back/base/pojo/dto/TencentUserRpcDTO.java
  4. 50 0
      game-back/game-back-base/src/main/java/com/zanxiang/game/back/base/pojo/dto/TtRoleRegisterRpcDTO.java
  5. 12 5
      game-back/game-back-base/src/main/java/com/zanxiang/game/back/base/rpc/ITencentMiniGameBackRpc.java
  6. 7 4
      game-back/game-back-base/src/main/java/com/zanxiang/game/back/base/rpc/ITencentUserActionBackRpc.java
  7. 6 0
      game-back/game-back-base/src/main/java/com/zanxiang/game/back/base/rpc/ITtMiniGameBackRpc.java
  8. 17 0
      game-back/game-back-serve/src/main/java/com/zanxiang/game/back/serve/config/NacosDynamicParamConfig.java
  9. 7 0
      game-back/game-back-serve/src/main/java/com/zanxiang/game/back/serve/dao/mapper/GameOceanengineRoleRegisterLogMapper.java
  10. 7 0
      game-back/game-back-serve/src/main/java/com/zanxiang/game/back/serve/dao/mapper/GameTencentMiniGameRoleRegisterMapper.java
  11. 7 0
      game-back/game-back-serve/src/main/java/com/zanxiang/game/back/serve/dao/mapper/GameTencentRoleRegisterMapper.java
  12. 47 0
      game-back/game-back-serve/src/main/java/com/zanxiang/game/back/serve/pojo/dto/GameOceanengineRoleRegisterLogDTO.java
  13. 51 0
      game-back/game-back-serve/src/main/java/com/zanxiang/game/back/serve/pojo/dto/GameTencentMiniGameRoleRegisterDTO.java
  14. 77 0
      game-back/game-back-serve/src/main/java/com/zanxiang/game/back/serve/pojo/dto/GameTencentRoleRegisterDTO.java
  15. 80 0
      game-back/game-back-serve/src/main/java/com/zanxiang/game/back/serve/pojo/entity/GameOceanengineRoleRegisterLog.java
  16. 75 0
      game-back/game-back-serve/src/main/java/com/zanxiang/game/back/serve/pojo/entity/GameTencentMiniGameRoleRegister.java
  17. 89 0
      game-back/game-back-serve/src/main/java/com/zanxiang/game/back/serve/pojo/entity/GameTencentRoleRegister.java
  18. 1 0
      game-back/game-back-serve/src/main/java/com/zanxiang/game/back/serve/pojo/enums/ActionTypeEnum.java
  19. 60 0
      game-back/game-back-serve/src/main/java/com/zanxiang/game/back/serve/pojo/vo/GameOceanengineRoleRegisterLogVO.java
  20. 77 0
      game-back/game-back-serve/src/main/java/com/zanxiang/game/back/serve/pojo/vo/GameTencentMiniGameRoleRegisterVO.java
  21. 86 0
      game-back/game-back-serve/src/main/java/com/zanxiang/game/back/serve/pojo/vo/GameTencentRoleRegisterVO.java
  22. 54 6
      game-back/game-back-serve/src/main/java/com/zanxiang/game/back/serve/rpc/impl/TencentMiniGameBackRpcImpl.java
  23. 30 5
      game-back/game-back-serve/src/main/java/com/zanxiang/game/back/serve/rpc/impl/TencentUserActionBackRpcImpl.java
  24. 27 0
      game-back/game-back-serve/src/main/java/com/zanxiang/game/back/serve/rpc/impl/TtMiniGameBackRpcImpl.java
  25. 18 0
      game-back/game-back-serve/src/main/java/com/zanxiang/game/back/serve/service/IGameOceanengineRoleRegisterLogService.java
  26. 3 0
      game-back/game-back-serve/src/main/java/com/zanxiang/game/back/serve/service/IGameTencentMiniGameBackLogService.java
  27. 18 0
      game-back/game-back-serve/src/main/java/com/zanxiang/game/back/serve/service/IGameTencentMiniGameRoleRegisterService.java
  28. 18 0
      game-back/game-back-serve/src/main/java/com/zanxiang/game/back/serve/service/IGameTencentRoleRegisterService.java
  29. 8 1
      game-back/game-back-serve/src/main/java/com/zanxiang/game/back/serve/service/impl/GameOceanengineOrderLogServiceImpl.java
  30. 173 0
      game-back/game-back-serve/src/main/java/com/zanxiang/game/back/serve/service/impl/GameOceanengineRoleRegisterLogServiceImpl.java
  31. 1 0
      game-back/game-back-serve/src/main/java/com/zanxiang/game/back/serve/service/impl/GameOceanengineUserLogServiceImpl.java
  32. 19 0
      game-back/game-back-serve/src/main/java/com/zanxiang/game/back/serve/service/impl/GameTencentMiniGameBackLogServiceImpl.java
  33. 5 0
      game-back/game-back-serve/src/main/java/com/zanxiang/game/back/serve/service/impl/GameTencentMiniGameOrderServiceImpl.java
  34. 132 0
      game-back/game-back-serve/src/main/java/com/zanxiang/game/back/serve/service/impl/GameTencentMiniGameRoleRegisterServiceImpl.java
  35. 166 0
      game-back/game-back-serve/src/main/java/com/zanxiang/game/back/serve/service/impl/GameTencentRoleRegisterServiceImpl.java
  36. 1 1
      game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/controller/AdsGameServerController.java
  37. 12 4
      game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/controller/ChoiceListController.java
  38. 42 0
      game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/pojo/dto/GameServerListDTO.java
  39. 8 2
      game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/pojo/dto/RoleRechargeRankingDTO.java
  40. 50 0
      game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/pojo/vo/GameServerVO.java
  41. 12 8
      game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/service/IGameServerService.java
  42. 55 12
      game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/service/impl/GameServerServiceImpl.java
  43. 9 4
      game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/service/impl/RoleManageServiceImpl.java
  44. 1 1
      game-module/game-module-sdk/src/main/java/com/zanxiang/game/module/sdk/SDKApplication.java
  45. 5 6
      game-module/game-module-sdk/src/main/java/com/zanxiang/game/module/sdk/service/IAliApiService.java
  46. 5 30
      game-module/game-module-sdk/src/main/java/com/zanxiang/game/module/sdk/service/impl/AliApiServiceImpl.java
  47. 8 8
      game-module/game-module-sdk/src/main/java/com/zanxiang/game/module/sdk/service/impl/CallBackServiceImpl.java
  48. 2 9
      game-module/game-module-sdk/src/main/java/com/zanxiang/game/module/sdk/service/impl/GameAppletServiceImpl.java
  49. 6 8
      game-module/game-module-sdk/src/main/java/com/zanxiang/game/module/sdk/service/impl/LoginServiceImpl.java
  50. 1 6
      game-module/game-module-sdk/src/main/java/com/zanxiang/game/module/sdk/service/impl/PerformOrderServiceImpl.java
  51. 1 13
      game-module/game-module-sdk/src/main/java/com/zanxiang/game/module/sdk/service/impl/UserCardServiceImpl.java
  52. 1 6
      game-module/game-module-sdk/src/main/java/com/zanxiang/game/module/sdk/service/impl/UserServiceImpl.java
  53. 4 4
      game-module/game-module-sdk/src/main/resources/logback.xml

+ 1 - 1
game-back/game-back-base/src/main/java/com/zanxiang/game/back/base/pojo/dto/TencentOrderDTO.java → game-back/game-back-base/src/main/java/com/zanxiang/game/back/base/pojo/dto/TencentOrderRpcDTO.java

@@ -12,7 +12,7 @@ import java.time.LocalDateTime;
 @NoArgsConstructor
 @AllArgsConstructor
 @Builder
-public class TencentOrderDTO implements Serializable {
+public class TencentOrderRpcDTO implements Serializable {
     private static final long serialVersionUID = 1L;
     /**
      * 回传策略ID

+ 64 - 0
game-back/game-back-base/src/main/java/com/zanxiang/game/back/base/pojo/dto/TencentRoleRegisterRpcDTO.java

@@ -0,0 +1,64 @@
+package com.zanxiang.game.back.base.pojo.dto;
+
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+
+@Data
+@Builder
+@AllArgsConstructor
+@NoArgsConstructor
+public class TencentRoleRegisterRpcDTO implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+
+    /**
+     * 回传策略ID
+     */
+    private Long backPolicyId;
+    /**
+     * 游戏ID
+     */
+    private Long gameId;
+
+    /**
+     * 广告账号ID
+     */
+    private Long adAccountId;
+    /**
+     * 注册时间
+     */
+    private LocalDateTime registerTime;
+
+    /**
+     * 渠道号
+     */
+    private String channel;
+
+    /**
+     * openid
+     */
+    private String wechatOpenid;
+
+    /**
+     * appid
+     */
+    private String wechatAppId;
+
+    /**
+     * 数据源ID
+     */
+    private Long userActionSetId;
+    /**
+     * 渠道标识
+     */
+    private String agentKey;
+
+    private Long roleId;
+
+    private String roleName;
+}

+ 1 - 1
game-back/game-back-base/src/main/java/com/zanxiang/game/back/base/pojo/dto/TencentUserDTO.java → game-back/game-back-base/src/main/java/com/zanxiang/game/back/base/pojo/dto/TencentUserRpcDTO.java

@@ -12,7 +12,7 @@ import java.time.LocalDateTime;
 @NoArgsConstructor
 @AllArgsConstructor
 @Builder
-public class TencentUserDTO implements Serializable {
+public class TencentUserRpcDTO implements Serializable {
     private static final long serialVersionUID = 1L;
     /**
      * 回传策略ID

+ 50 - 0
game-back/game-back-base/src/main/java/com/zanxiang/game/back/base/pojo/dto/TtRoleRegisterRpcDTO.java

@@ -0,0 +1,50 @@
+package com.zanxiang.game.back.base.pojo.dto;
+
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+
+@Data
+@Builder
+@AllArgsConstructor
+@NoArgsConstructor
+public class TtRoleRegisterRpcDTO implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 游戏 id
+     */
+    private Long gameId;
+    /**
+     * 微信小游戏上报组件
+     */
+    private TtAccountRpcDTO accountReport;
+    /**
+     * 小游戏 appId
+     */
+    private String wechatAppId;
+    /**
+     * 小游戏 openId
+     */
+    private String wechatOpenId;
+    /**
+     * 小游戏 unionId
+     */
+    private String wechatUnionId;
+    /**
+     * 渠道标识
+     */
+    private String agentKey;
+
+    private Long roleId;
+
+    private String roleName;
+    /**
+     * 激活/注册时间
+     */
+    private LocalDateTime registerTime;
+}

+ 12 - 5
game-back/game-back-base/src/main/java/com/zanxiang/game/back/base/rpc/ITencentMiniGameBackRpc.java

@@ -1,20 +1,27 @@
 package com.zanxiang.game.back.base.rpc;
 
-import com.zanxiang.game.back.base.pojo.dto.TencentOrderDTO;
-import com.zanxiang.game.back.base.pojo.dto.TencentUserDTO;
+import com.zanxiang.game.back.base.pojo.dto.TencentOrderRpcDTO;
+import com.zanxiang.game.back.base.pojo.dto.TencentRoleRegisterRpcDTO;
+import com.zanxiang.game.back.base.pojo.dto.TencentUserRpcDTO;
 import com.zanxiang.module.util.pojo.ResultVO;
 
 /**
- * 腾讯小游戏回传
+ * 腾讯小游戏回传(文档中的方案 B)
+ * 文档地址:https://docs.qq.com/doc/DRkpGUU5jSFVxQVFN
  */
 public interface ITencentMiniGameBackRpc {
     /**
      * 订单回传
      */
-    ResultVO<Boolean> backOrder(TencentOrderDTO dto);
+    ResultVO<Boolean> backOrder(TencentOrderRpcDTO dto);
 
     /**
      * 用户回传
      */
-    ResultVO<Boolean> backUser(TencentUserDTO dto);
+    ResultVO<Boolean> backUser(TencentUserRpcDTO dto);
+
+    /**
+     * 用户回传
+     */
+    ResultVO<Boolean> backRoleRegister(TencentRoleRegisterRpcDTO dto);
 }

+ 7 - 4
game-back/game-back-base/src/main/java/com/zanxiang/game/back/base/rpc/ITencentUserActionBackRpc.java

@@ -1,7 +1,8 @@
 package com.zanxiang.game.back.base.rpc;
 
-import com.zanxiang.game.back.base.pojo.dto.TencentOrderDTO;
-import com.zanxiang.game.back.base.pojo.dto.TencentUserDTO;
+import com.zanxiang.game.back.base.pojo.dto.TencentOrderRpcDTO;
+import com.zanxiang.game.back.base.pojo.dto.TencentRoleRegisterRpcDTO;
+import com.zanxiang.game.back.base.pojo.dto.TencentUserRpcDTO;
 import com.zanxiang.module.util.pojo.ResultVO;
 
 /**
@@ -11,10 +12,12 @@ public interface ITencentUserActionBackRpc {
     /**
      * 订单回传
      */
-    ResultVO<Boolean> backOrder(TencentOrderDTO dto);
+    ResultVO<Boolean> backOrder(TencentOrderRpcDTO dto);
 
     /**
      * 用户回传
      */
-    ResultVO<Boolean> backUser(TencentUserDTO dto);
+    ResultVO<Boolean> backUser(TencentUserRpcDTO dto);
+
+    ResultVO<Boolean> backRoleRegister(TencentRoleRegisterRpcDTO dto);
 }

+ 6 - 0
game-back/game-back-base/src/main/java/com/zanxiang/game/back/base/rpc/ITtMiniGameBackRpc.java

@@ -1,6 +1,7 @@
 package com.zanxiang.game.back.base.rpc;
 
 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.module.util.pojo.ResultVO;
 
@@ -19,4 +20,9 @@ public interface ITtMiniGameBackRpc {
      * 用户下单、支付上报
      */
     ResultVO<Boolean> orderReport(TtOrderRpcDTO dto);
+
+    /**
+     * 创角上报
+     */
+    ResultVO<Boolean> roleRegisterReport(TtRoleRegisterRpcDTO dto);
 }

+ 17 - 0
game-back/game-back-serve/src/main/java/com/zanxiang/game/back/serve/config/NacosDynamicParamConfig.java

@@ -0,0 +1,17 @@
+package com.zanxiang.game.back.serve.config;
+
+import lombok.Getter;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.cloud.context.config.annotation.RefreshScope;
+import org.springframework.stereotype.Component;
+
+@Getter
+@Component
+@RefreshScope
+public class NacosDynamicParamConfig {
+    /**
+     * 按关键行为回传的广告账号列表
+     */
+    @Value("${nacos.dynamic.backOfKeyAccountIds:test}")
+    private String backOfKeyAccountIds;
+}

+ 7 - 0
game-back/game-back-serve/src/main/java/com/zanxiang/game/back/serve/dao/mapper/GameOceanengineRoleRegisterLogMapper.java

@@ -0,0 +1,7 @@
+package com.zanxiang.game.back.serve.dao.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.zanxiang.game.back.serve.pojo.entity.GameOceanengineRoleRegisterLog;
+
+public interface GameOceanengineRoleRegisterLogMapper extends BaseMapper<GameOceanengineRoleRegisterLog> {
+}

+ 7 - 0
game-back/game-back-serve/src/main/java/com/zanxiang/game/back/serve/dao/mapper/GameTencentMiniGameRoleRegisterMapper.java

@@ -0,0 +1,7 @@
+package com.zanxiang.game.back.serve.dao.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.zanxiang.game.back.serve.pojo.entity.GameTencentMiniGameRoleRegister;
+
+public interface GameTencentMiniGameRoleRegisterMapper extends BaseMapper<GameTencentMiniGameRoleRegister> {
+}

+ 7 - 0
game-back/game-back-serve/src/main/java/com/zanxiang/game/back/serve/dao/mapper/GameTencentRoleRegisterMapper.java

@@ -0,0 +1,7 @@
+package com.zanxiang.game.back.serve.dao.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.zanxiang.game.back.serve.pojo.entity.GameTencentRoleRegister;
+
+public interface GameTencentRoleRegisterMapper extends BaseMapper<GameTencentRoleRegister> {
+}

+ 47 - 0
game-back/game-back-serve/src/main/java/com/zanxiang/game/back/serve/pojo/dto/GameOceanengineRoleRegisterLogDTO.java

@@ -0,0 +1,47 @@
+package com.zanxiang.game.back.serve.pojo.dto;
+
+import com.zanxiang.game.back.serve.pojo.entity.GameOceanengineRoleRegisterLog;
+import com.zanxiang.module.web.pojo.BaseListDTO;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.time.LocalDate;
+
+/**
+ * 头条订单上报日志
+ */
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+@Builder
+public class GameOceanengineRoleRegisterLogDTO extends BaseListDTO<GameOceanengineRoleRegisterLog> {
+    @ApiModelProperty("小游戏ID")
+    private String appId;
+
+    @ApiModelProperty("用户OpenID")
+    private String openId;
+
+    @ApiModelProperty("游戏ID")
+    private Long gameId;
+
+    @ApiModelProperty("广告账号ID")
+    private Long accountId;
+
+    @ApiModelProperty("渠道标识")
+    private String agentKey;
+
+    @ApiModelProperty("角色名称")
+    private String roleName;
+
+    @ApiModelProperty("回传状态")
+    private Integer backStatus;
+
+    @ApiModelProperty("注册时间")
+    private LocalDate registerTimeBegin;
+
+    @ApiModelProperty("注册时间")
+    private LocalDate registerTimeEnd;
+}

+ 51 - 0
game-back/game-back-serve/src/main/java/com/zanxiang/game/back/serve/pojo/dto/GameTencentMiniGameRoleRegisterDTO.java

@@ -0,0 +1,51 @@
+package com.zanxiang.game.back.serve.pojo.dto;
+
+import com.zanxiang.game.back.serve.pojo.entity.GameTencentMiniGameRoleRegister;
+import com.zanxiang.game.back.serve.pojo.entity.GameTencentMiniGameUser;
+import com.zanxiang.module.web.pojo.BaseListDTO;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.time.LocalDate;
+
+/**
+ * 游戏腾讯用户表
+ */
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+@Builder
+public class GameTencentMiniGameRoleRegisterDTO extends BaseListDTO<GameTencentMiniGameRoleRegister> {
+    @ApiModelProperty("渠道号")
+    private String agentKey;
+
+    @ApiModelProperty("游戏ID")
+    private Long gameId;
+
+    @ApiModelProperty("广告账号ID")
+    private Long adAccountId;
+
+    @ApiModelProperty("openid")
+    private String wechatOpenid;
+
+    @ApiModelProperty("appid")
+    private String wechatAppId;
+
+    @ApiModelProperty("回传状态")
+    private Integer backStatus;
+
+    @ApiModelProperty("注册时间")
+    private LocalDate registerTimeBegin;
+
+    @ApiModelProperty("注册时间")
+    private LocalDate registerTimeEnd;
+
+    @ApiModelProperty("角色ID")
+    private Long roleId;
+
+    @ApiModelProperty("角色名称")
+    private String roleName;
+}

+ 77 - 0
game-back/game-back-serve/src/main/java/com/zanxiang/game/back/serve/pojo/dto/GameTencentRoleRegisterDTO.java

@@ -0,0 +1,77 @@
+package com.zanxiang.game.back.serve.pojo.dto;
+
+import com.zanxiang.game.back.serve.pojo.entity.GameTencentOrder;
+import com.zanxiang.game.back.serve.pojo.entity.GameTencentRoleRegister;
+import com.zanxiang.module.web.pojo.BaseListDTO;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.time.LocalDate;
+
+/**
+ * <p>
+ * 游戏腾讯订单表
+ * </p>
+ *
+ * @author auto
+ * @since 2023-06-01
+ */
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+@Builder
+public class GameTencentRoleRegisterDTO extends BaseListDTO<GameTencentRoleRegister> {
+    /**
+     * 渠道号
+     */
+    @ApiModelProperty("渠道号")
+    private String channel;
+
+    /**
+     * 游戏ID
+     */
+    @ApiModelProperty("游戏ID")
+    private Long gameId;
+
+    /**
+     * 广告账号ID
+     */
+    @ApiModelProperty("广告账号ID")
+    private Long adAccountId;
+
+    /**
+     * openid
+     */
+    @ApiModelProperty("openid")
+    private String wechatOpenid;
+
+    /**
+     * appid
+     */
+    @ApiModelProperty("appid")
+    private String wechatAppId;
+
+    /**
+     * 0:未回传;1:回传
+     */
+    @ApiModelProperty("-1:回传失败;0:未回传;1:回传")
+    private Integer isBack;
+
+    /**
+     * 数据源ID
+     */
+    @ApiModelProperty("数据源ID")
+    private Long userActionSetId;
+
+    @ApiModelProperty("角色名称")
+    private String roleName;
+
+    @ApiModelProperty("注册时间")
+    private LocalDate registerBegin;
+
+    @ApiModelProperty("注册时间")
+    private LocalDate registerEnd;
+}

+ 80 - 0
game-back/game-back-serve/src/main/java/com/zanxiang/game/back/serve/pojo/entity/GameOceanengineRoleRegisterLog.java

@@ -0,0 +1,80 @@
+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.time.LocalDateTime;
+
+/**
+ * 头条订单上报日志
+ */
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+@Builder
+@TableName("t_game_oceanengine_role_register_log")
+public class GameOceanengineRoleRegisterLog implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
+    /**
+     * 小游戏 id
+     */
+    private String appId;
+    /**
+     * 用户 open_id
+     */
+    private String openId;
+    /**
+     * 用户 union_id
+     */
+    private String unionId;
+    /**
+     * 游戏 id
+     */
+    private Long gameId;
+    /**
+     * 广告账号_id
+     */
+    private Long accountId;
+    /**
+     * 广告回传 token
+     */
+    private String accountReportToken;
+    /**
+     * 广告回传 url
+     */
+    private String accountReportUrl;
+    /**
+     * 渠道标识
+     */
+    private String agentKey;
+    /**
+     * 角色 id
+     */
+    private Long roleId;
+    /**
+     * 角色名称
+     */
+    private String roleName;
+    /**
+     * 支付时间
+     */
+    private LocalDateTime registerTime;
+    /**
+     * 回传状态
+     */
+    private Integer backStatus;
+    /**
+     * 下单时间
+     */
+    private LocalDateTime createTime;
+
+}

+ 75 - 0
game-back/game-back-serve/src/main/java/com/zanxiang/game/back/serve/pojo/entity/GameTencentMiniGameRoleRegister.java

@@ -0,0 +1,75 @@
+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.time.LocalDateTime;
+
+/**
+ * <p>
+ * 游戏腾讯订单表
+ * </p>
+ *
+ * @author auto
+ * @since 2023-06-01
+ */
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+@Builder
+@TableName("t_game_tencent_mini_game_role_register")
+public class GameTencentMiniGameRoleRegister implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
+    /**
+     * 渠道号
+     */
+    private String agentKey;
+
+    /**
+     * 游戏ID
+     */
+    private Long gameId;
+
+    /**
+     * 广告账号ID
+     */
+    private Long adAccountId;
+
+    /**
+     * openid
+     */
+    private String wechatOpenid;
+
+    /**
+     * appid
+     */
+    private String wechatAppId;
+
+    private String clickId;
+    /**
+     * 回传状态
+     */
+    private Integer backStatus;
+
+    private LocalDateTime createTime;
+
+    private Long roleId;
+
+    private String roleName;
+
+    /**
+     * 注册时间
+     */
+    private LocalDateTime registerTime;
+
+    private String backMsg;
+}

+ 89 - 0
game-back/game-back-serve/src/main/java/com/zanxiang/game/back/serve/pojo/entity/GameTencentRoleRegister.java

@@ -0,0 +1,89 @@
+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.time.LocalDateTime;
+
+/**
+ * <p>
+ * 游戏腾讯订单表
+ * </p>
+ *
+ * @author auto
+ * @since 2023-06-01
+ */
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+@Builder
+@TableName("t_game_tencent_role_register")
+public class GameTencentRoleRegister implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
+    /**
+     * 回传策略ID
+     */
+    private Long backPolicyId;
+    /**
+     * 渠道号
+     */
+    private String channel;
+
+    /**
+     * 游戏ID
+     */
+    private Long gameId;
+
+    /**
+     * 广告账号ID
+     */
+    private Long adAccountId;
+
+    /**
+     * 注册时间
+     */
+    private LocalDateTime registerTime;
+
+    /**
+     * openid
+     */
+    private String wechatOpenid;
+
+    /**
+     * appid
+     */
+    private String wechatAppId;
+
+    /**
+     * 0:未回传;1:回传
+     */
+    private Integer isBack;
+
+    /**
+     * 数据源ID
+     */
+    private Long userActionSetId;
+
+    private LocalDateTime createTime;
+
+    /**
+     * 回传日志
+     */
+    private String backLog;
+
+    private Long roleId;
+
+    private String roleName;
+
+    private String backMsg;
+}

+ 1 - 0
game-back/game-back-serve/src/main/java/com/zanxiang/game/back/serve/pojo/enums/ActionTypeEnum.java

@@ -8,6 +8,7 @@ import lombok.Getter;
 public enum ActionTypeEnum {
     REGISTER("REGISTER","注册"),
     PURCHASE("PURCHASE","付费"),
+    CREATE_ROLE("CREATE_ROLE","创角"),
     COMPLETE_ORDER("COMPLETE_ORDER","下单");
 
 

+ 60 - 0
game-back/game-back-serve/src/main/java/com/zanxiang/game/back/serve/pojo/vo/GameOceanengineRoleRegisterLogVO.java

@@ -0,0 +1,60 @@
+package com.zanxiang.game.back.serve.pojo.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.time.LocalDateTime;
+
+/**
+ * 头条订单上报日志
+ */
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+@Builder
+public class GameOceanengineRoleRegisterLogVO {
+    @ApiModelProperty("主键ID")
+    private Long id;
+
+    @ApiModelProperty("小游戏ID")
+    private String appId;
+
+    @ApiModelProperty("用户OpenID")
+    private String openId;
+
+    @ApiModelProperty("用户UnionID")
+    private String unionId;
+
+    @ApiModelProperty("游戏ID")
+    private Long gameId;
+
+    @ApiModelProperty("广告账号ID")
+    private Long accountId;
+
+    @ApiModelProperty("广告回传Token")
+    private String accountReportToken;
+
+    @ApiModelProperty("广告回传URL")
+    private String accountReportUrl;
+
+    @ApiModelProperty("渠道标识")
+    private String agentKey;
+
+    @ApiModelProperty("渠道名称")
+    private String agentName;
+
+    @ApiModelProperty("角色 id")
+    private Long roleId;
+
+    @ApiModelProperty("角色名称")
+    private String roleName;
+
+    @ApiModelProperty("注册/激活时间")
+    private LocalDateTime registerTime;
+
+    @ApiModelProperty("回传状态")
+    private Integer backStatus;
+}

+ 77 - 0
game-back/game-back-serve/src/main/java/com/zanxiang/game/back/serve/pojo/vo/GameTencentMiniGameRoleRegisterVO.java

@@ -0,0 +1,77 @@
+package com.zanxiang.game.back.serve.pojo.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.time.LocalDateTime;
+
+/**
+ * <p>
+ * 游戏腾讯用户表
+ * </p>
+ *
+ * @author auto
+ * @since 2023-06-01
+ */
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+@Builder
+public class GameTencentMiniGameRoleRegisterVO {
+    private Long id;
+
+    /**
+     * 渠道号
+     */
+    @ApiModelProperty("渠道号")
+    private String agentKey;
+
+    @ApiModelProperty("渠道名称")
+    private String agentName;
+
+    /**
+     * 游戏ID
+     */
+    @ApiModelProperty("游戏ID")
+    private Long gameId;
+
+    /**
+     * 广告账号ID
+     */
+    @ApiModelProperty("广告账号ID")
+    private Long adAccountId;
+
+    /**
+     * 注册时间
+     */
+    @ApiModelProperty("注册时间")
+    private LocalDateTime registerTime;
+
+    /**
+     * openid
+     */
+    @ApiModelProperty("openid")
+    private String wechatOpenid;
+
+    /**
+     * appid
+     */
+    @ApiModelProperty("appid")
+    private String wechatAppId;
+
+    /**
+     * 0:未回传;1:回传
+     */
+    @ApiModelProperty("回传状态:-1:回传失败;0:未回传;1:已回传")
+    private Integer backStatus;
+
+    @ApiModelProperty("创建时间")
+    private LocalDateTime createTime;
+
+    private Long roleId;
+
+    private String roleName;
+}

+ 86 - 0
game-back/game-back-serve/src/main/java/com/zanxiang/game/back/serve/pojo/vo/GameTencentRoleRegisterVO.java

@@ -0,0 +1,86 @@
+package com.zanxiang.game.back.serve.pojo.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.time.LocalDateTime;
+
+/**
+ * <p>
+ * 游戏腾讯订单表
+ * </p>
+ *
+ * @author auto
+ * @since 2023-06-01
+ */
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+@Builder
+public class GameTencentRoleRegisterVO {
+    private Long id;
+
+    /**
+     * 渠道号
+     */
+    @ApiModelProperty("渠道号")
+    private String channel;
+
+    @ApiModelProperty("渠道名称")
+    private String agentName;
+
+    /**
+     * 游戏ID
+     */
+    @ApiModelProperty("游戏ID")
+    private Long gameId;
+
+    /**
+     * 广告账号ID
+     */
+    @ApiModelProperty("广告账号ID")
+    private Long adAccountId;
+
+    /**
+     * 注册时间
+     */
+    @ApiModelProperty("注册时间")
+    private LocalDateTime registerTime;
+
+    /**
+     * openid
+     */
+    @ApiModelProperty("openid")
+    private String wechatOpenid;
+
+    /**
+     * appid
+     */
+    @ApiModelProperty("appid")
+    private String wechatAppId;
+
+    /**
+     * 0:未回传;1:回传
+     */
+    @ApiModelProperty("回传状态 -1:回传失败;0:未回传;1:已回传")
+    private Integer isBack;
+
+    @ApiModelProperty("创建时间")
+    private LocalDateTime createTime;
+
+    /**
+     * 回传日志
+     */
+    @ApiModelProperty("回传日志")
+    private String backLog;
+
+    @ApiModelProperty("回传日志")
+    private String backMsg;
+
+    private Long roleId;
+
+    private String roleName;
+}

+ 54 - 6
game-back/game-back-serve/src/main/java/com/zanxiang/game/back/serve/rpc/impl/TencentMiniGameBackRpcImpl.java

@@ -1,14 +1,17 @@
 package com.zanxiang.game.back.serve.rpc.impl;
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import com.zanxiang.game.back.base.pojo.dto.TencentOrderDTO;
-import com.zanxiang.game.back.base.pojo.dto.TencentUserDTO;
+import com.zanxiang.game.back.base.pojo.dto.TencentOrderRpcDTO;
+import com.zanxiang.game.back.base.pojo.dto.TencentRoleRegisterRpcDTO;
+import com.zanxiang.game.back.base.pojo.dto.TencentUserRpcDTO;
 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.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.IGameTencentMiniGameOrderService;
+import com.zanxiang.game.back.serve.service.IGameTencentMiniGameRoleRegisterService;
 import com.zanxiang.game.back.serve.service.IGameTencentMiniGameUserService;
 import com.zanxiang.module.util.JsonUtil;
 import com.zanxiang.module.util.pojo.ResultVO;
@@ -27,9 +30,11 @@ public class TencentMiniGameBackRpcImpl implements ITencentMiniGameBackRpc {
     private IGameTencentMiniGameOrderService gameTencentMiniGameOrderService;
     @Autowired
     private IGameTencentMiniGameUserService gameTencentMiniGameUserService;
+    @Autowired
+    private IGameTencentMiniGameRoleRegisterService gameTencentMiniGameRoleRegisterService;
 
     @Override
-    public ResultVO<Boolean> backOrder(TencentOrderDTO dto) {
+    public ResultVO<Boolean> backOrder(TencentOrderRpcDTO dto) {
         if (Objects.equals(OrderStatusEnum.SUCCESS_PAY.getValue(), dto.getOrderStatus())) {
             log.error("腾讯小游戏订单回传收到:{}。", JsonUtil.toString(dto));
         } else {
@@ -45,6 +50,15 @@ public class TencentMiniGameBackRpcImpl implements ITencentMiniGameBackRpc {
                 .eq(GameTencentMiniGameOrder::getWechatOpenid, dto.getWechatOpenid())
                 .last("limit 1")
         ) == null;
+        GameTencentMiniGameUser userLog = gameTencentMiniGameUserService.getOne(new LambdaQueryWrapper<GameTencentMiniGameUser>()
+                .select(GameTencentMiniGameUser::getBackStatus, GameTencentMiniGameUser::getClickId)
+                .eq(GameTencentMiniGameUser::getGameId, dto.getGameId())
+                .eq(GameTencentMiniGameUser::getWechatAppId, dto.getWechatAppId())
+                .eq(GameTencentMiniGameUser::getWechatOpenid, dto.getWechatOpenid())
+                .eq(GameTencentMiniGameUser::getAdAccountId, dto.getAdAccountId())
+                .orderByDesc(GameTencentMiniGameUser::getCreateTime)
+                .last("limit 1")
+        );
         GameTencentMiniGameOrder orderLog = GameTencentMiniGameOrder.builder()
                 .adAccountId(dto.getAdAccountId())
                 .gameId(dto.getGameId())
@@ -61,17 +75,22 @@ public class TencentMiniGameBackRpcImpl implements ITencentMiniGameBackRpc {
                 .createTime(LocalDateTime.now())
                 .backStatus(BackStatusEnum.NO.getBackStatus())
                 .backPolicyId(dto.getBackPolicyId())
-                .clickId(dto.getClickId())
+                .clickId(userLog == null ? null : userLog.getClickId())
                 .roleId(dto.getRoleId())
                 .roleName(dto.getRoleName())
                 .isFirstOrder(isFirstOrder)
                 .build();
         gameTencentMiniGameOrderService.save(orderLog);
-        return ResultVO.ok(gameTencentMiniGameOrderService.orderBack(orderLog, false, null));
+        if (userLog == null) {
+            log.error("腾讯小游戏订单回传失败,找不到回传的用户 orderId: {}", orderLog.getOrderId());
+            return ResultVO.fail("找不到回传用户");
+        } else {
+            return ResultVO.ok(gameTencentMiniGameOrderService.orderBack(orderLog, false, null));
+        }
     }
 
     @Override
-    public ResultVO<Boolean> backUser(TencentUserDTO dto) {
+    public ResultVO<Boolean> backUser(TencentUserRpcDTO dto) {
         log.error("腾讯小游戏用户回传收到:{}", JsonUtil.toString(dto));
         GameTencentMiniGameUser userLog = GameTencentMiniGameUser.builder()
                 .adAccountId(dto.getAdAccountId())
@@ -88,4 +107,33 @@ public class TencentMiniGameBackRpcImpl implements ITencentMiniGameBackRpc {
         gameTencentMiniGameUserService.save(userLog);
         return ResultVO.ok(gameTencentMiniGameUserService.userBack(userLog, false));
     }
+
+    @Override
+    public ResultVO<Boolean> backRoleRegister(TencentRoleRegisterRpcDTO dto) {
+        log.error("腾讯小游戏创角回传收到:{}", JsonUtil.toString(dto));
+        GameTencentMiniGameUser userLog = gameTencentMiniGameUserService.getOne(new LambdaQueryWrapper<GameTencentMiniGameUser>()
+                .select(GameTencentMiniGameUser::getBackStatus, GameTencentMiniGameUser::getClickId)
+                .eq(GameTencentMiniGameUser::getGameId, dto.getGameId())
+                .eq(GameTencentMiniGameUser::getWechatAppId, dto.getWechatAppId())
+                .eq(GameTencentMiniGameUser::getWechatOpenid, dto.getWechatOpenid())
+                .eq(GameTencentMiniGameUser::getAdAccountId, dto.getAdAccountId())
+                .orderByDesc(GameTencentMiniGameUser::getCreateTime)
+                .last("limit 1")
+        );
+        GameTencentMiniGameRoleRegister roleRegisterLog = GameTencentMiniGameRoleRegister.builder()
+                .agentKey(dto.getAgentKey())
+                .gameId(dto.getGameId())
+                .adAccountId(dto.getAdAccountId())
+                .wechatAppId(dto.getWechatAppId())
+                .wechatOpenid(dto.getWechatOpenid())
+                .clickId(userLog == null ? null : userLog.getClickId())
+                .registerTime(dto.getRegisterTime())
+                .backStatus(BackStatusEnum.NO.getBackStatus())
+                .createTime(LocalDateTime.now())
+                .roleId(dto.getRoleId())
+                .roleName(dto.getRoleName())
+                .build();
+        gameTencentMiniGameRoleRegisterService.save(roleRegisterLog);
+        return ResultVO.ok(gameTencentMiniGameRoleRegisterService.roleRegisterBack(roleRegisterLog));
+    }
 }

+ 30 - 5
game-back/game-back-serve/src/main/java/com/zanxiang/game/back/serve/rpc/impl/TencentUserActionBackRpcImpl.java

@@ -2,15 +2,17 @@ package com.zanxiang.game.back.serve.rpc.impl;
 
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import com.zanxiang.game.back.base.pojo.dto.TencentOrderDTO;
-import com.zanxiang.game.back.base.pojo.dto.TencentUserDTO;
+import com.zanxiang.game.back.base.pojo.dto.TencentOrderRpcDTO;
+import com.zanxiang.game.back.base.pojo.dto.TencentRoleRegisterRpcDTO;
+import com.zanxiang.game.back.base.pojo.dto.TencentUserRpcDTO;
 import com.zanxiang.game.back.base.pojo.enums.OrderStatusEnum;
 import com.zanxiang.game.back.base.rpc.ITencentUserActionBackRpc;
 import com.zanxiang.game.back.serve.pojo.entity.GameTencentOrder;
+import com.zanxiang.game.back.serve.pojo.entity.GameTencentRoleRegister;
 import com.zanxiang.game.back.serve.pojo.entity.GameTencentUser;
 import com.zanxiang.game.back.serve.pojo.enums.BackStatusEnum;
-import com.zanxiang.game.back.serve.service.IGameBackPolicyService;
 import com.zanxiang.game.back.serve.service.IGameTencentOrderService;
+import com.zanxiang.game.back.serve.service.IGameTencentRoleRegisterService;
 import com.zanxiang.game.back.serve.service.IGameTencentUserService;
 import com.zanxiang.module.util.JsonUtil;
 import com.zanxiang.module.util.pojo.ResultVO;
@@ -29,9 +31,11 @@ public class TencentUserActionBackRpcImpl implements ITencentUserActionBackRpc {
     private IGameTencentOrderService gameTencentOrderService;
     @Autowired
     private IGameTencentUserService gameTencentUserService;
+    @Autowired
+    private IGameTencentRoleRegisterService gameTencentRoleRegisterService;
 
     @Override
-    public ResultVO<Boolean> backOrder(TencentOrderDTO dto) {
+    public ResultVO<Boolean> backOrder(TencentOrderRpcDTO dto) {
         if (Objects.equals(OrderStatusEnum.SUCCESS_PAY.getValue(), dto.getOrderStatus())) {
             log.error("腾讯H5订单回传收到:{}。", JsonUtil.toString(dto));
         } else {
@@ -74,7 +78,7 @@ public class TencentUserActionBackRpcImpl implements ITencentUserActionBackRpc {
     }
 
     @Override
-    public ResultVO<Boolean> backUser(TencentUserDTO dto) {
+    public ResultVO<Boolean> backUser(TencentUserRpcDTO dto) {
         log.error("腾讯H5用户回传收到:{}", JsonUtil.toString(dto));
         GameTencentUser gameTencentUser = GameTencentUser.builder()
                 .adAccountId(dto.getAdAccountId())
@@ -91,4 +95,25 @@ public class TencentUserActionBackRpcImpl implements ITencentUserActionBackRpc {
         gameTencentUserService.save(gameTencentUser);
         return ResultVO.ok(gameTencentUserService.userBack(gameTencentUser, false));
     }
+
+    @Override
+    public ResultVO<Boolean> backRoleRegister(TencentRoleRegisterRpcDTO dto) {
+        log.error("腾讯H5创角回传收到:{}", JsonUtil.toString(dto));
+        GameTencentRoleRegister roleRegister = GameTencentRoleRegister.builder()
+                .backPolicyId(dto.getBackPolicyId())
+                .channel(dto.getChannel())
+                .gameId(dto.getGameId())
+                .adAccountId(dto.getAdAccountId())
+                .registerTime(dto.getRegisterTime())
+                .wechatAppId(dto.getWechatAppId())
+                .wechatOpenid(dto.getWechatOpenid())
+                .isBack(BackStatusEnum.NO.getBackStatus())
+                .userActionSetId(dto.getUserActionSetId())
+                .createTime(LocalDateTime.now())
+                .roleId(dto.getRoleId())
+                .roleName(dto.getRoleName())
+                .build();
+        gameTencentRoleRegisterService.save(roleRegister);
+        return ResultVO.ok(gameTencentRoleRegisterService.roleRegisterBack(roleRegister));
+    }
 }

+ 27 - 0
game-back/game-back-serve/src/main/java/com/zanxiang/game/back/serve/rpc/impl/TtMiniGameBackRpcImpl.java

@@ -2,13 +2,16 @@ package com.zanxiang.game.back.serve.rpc.impl;
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 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.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.IGameOceanengineOrderLogService;
+import com.zanxiang.game.back.serve.service.IGameOceanengineRoleRegisterLogService;
 import com.zanxiang.game.back.serve.service.IGameOceanengineUserLogService;
 import com.zanxiang.module.util.JsonUtil;
 import com.zanxiang.module.util.pojo.ResultVO;
@@ -26,6 +29,8 @@ public class TtMiniGameBackRpcImpl implements ITtMiniGameBackRpc {
     private IGameOceanengineUserLogService gameOceanengineUserLogService;
     @Autowired
     private IGameOceanengineOrderLogService gameOceanengineOrderLogService;
+    @Autowired
+    private IGameOceanengineRoleRegisterLogService gameOceanengineRoleRegisterLogService;
 
     @Override
     public ResultVO<Boolean> userActiveReport(TtUserActiveRpcDTO dto) {
@@ -91,4 +96,26 @@ public class TtMiniGameBackRpcImpl implements ITtMiniGameBackRpc {
         gameOceanengineOrderLogService.save(orderLog);
         return ResultVO.ok(gameOceanengineOrderLogService.callback(orderLog, false, null));
     }
+
+    @Override
+    public ResultVO<Boolean> roleRegisterReport(TtRoleRegisterRpcDTO dto) {
+        log.error("头条小游戏创角回传收到:{}", JsonUtil.toString(dto));
+        GameOceanengineRoleRegisterLog roleRegisterLog = GameOceanengineRoleRegisterLog.builder()
+                .appId(dto.getWechatAppId())
+                .openId(dto.getWechatOpenId())
+                .unionId(dto.getWechatUnionId())
+                .gameId(dto.getGameId())
+                .accountId(dto.getAccountReport().getAccountId())
+                .accountReportToken(dto.getAccountReport().getReportToken())
+                .accountReportUrl(dto.getAccountReport().getReportUrl())
+                .agentKey(dto.getAgentKey())
+                .roleId(dto.getRoleId())
+                .roleName(dto.getRoleName())
+                .registerTime(dto.getRegisterTime())
+                .backStatus(BackStatusEnum.NO.getBackStatus())
+                .createTime(LocalDateTime.now())
+                .build();
+        gameOceanengineRoleRegisterLogService.save(roleRegisterLog);
+        return ResultVO.ok(gameOceanengineRoleRegisterLogService.callback(roleRegisterLog));
+    }
 }

+ 18 - 0
game-back/game-back-serve/src/main/java/com/zanxiang/game/back/serve/service/IGameOceanengineRoleRegisterLogService.java

@@ -0,0 +1,18 @@
+package com.zanxiang.game.back.serve.service;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.zanxiang.game.back.serve.pojo.dto.GameOceanengineRoleRegisterLogDTO;
+import com.zanxiang.game.back.serve.pojo.entity.GameOceanengineRoleRegisterLog;
+import com.zanxiang.game.back.serve.pojo.vo.GameOceanengineRoleRegisterLogVO;
+
+import java.util.List;
+
+public interface IGameOceanengineRoleRegisterLogService extends IService<GameOceanengineRoleRegisterLog> {
+
+    boolean callback(GameOceanengineRoleRegisterLog roleRegisterLog);
+
+    IPage<GameOceanengineRoleRegisterLogVO> oceanengineUserLogList(GameOceanengineRoleRegisterLogDTO dto);
+
+    boolean oceanengineUserReport(List<Long> ids);
+}

+ 3 - 0
game-back/game-back-serve/src/main/java/com/zanxiang/game/back/serve/service/IGameTencentMiniGameBackLogService.java

@@ -3,6 +3,7 @@ package com.zanxiang.game.back.serve.service;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.zanxiang.game.back.serve.pojo.entity.GameTencentMiniGameBackLog;
 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;
 
@@ -11,4 +12,6 @@ public interface IGameTencentMiniGameBackLogService extends IService<GameTencent
     BackStatusEnum userBack(GameTencentMiniGameUser userLog);
 
     BackStatusEnum orderBack(GameTencentMiniGameOrder orderLog);
+
+    BackStatusEnum roleRegisterBack(GameTencentMiniGameRoleRegister roleRegisterLog);
 }

+ 18 - 0
game-back/game-back-serve/src/main/java/com/zanxiang/game/back/serve/service/IGameTencentMiniGameRoleRegisterService.java

@@ -0,0 +1,18 @@
+package com.zanxiang.game.back.serve.service;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.zanxiang.game.back.serve.pojo.dto.GameTencentMiniGameRoleRegisterDTO;
+import com.zanxiang.game.back.serve.pojo.entity.GameTencentMiniGameRoleRegister;
+import com.zanxiang.game.back.serve.pojo.vo.GameTencentMiniGameRoleRegisterVO;
+
+import java.util.List;
+
+public interface IGameTencentMiniGameRoleRegisterService extends IService<GameTencentMiniGameRoleRegister> {
+
+    boolean roleRegisterBack(GameTencentMiniGameRoleRegister roleRegisterLog);
+
+    IPage<GameTencentMiniGameRoleRegisterVO> listOfPage(GameTencentMiniGameRoleRegisterDTO dto);
+
+    boolean doReport(List<Long> userLogIds);
+}

+ 18 - 0
game-back/game-back-serve/src/main/java/com/zanxiang/game/back/serve/service/IGameTencentRoleRegisterService.java

@@ -0,0 +1,18 @@
+package com.zanxiang.game.back.serve.service;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.zanxiang.game.back.serve.pojo.dto.GameTencentRoleRegisterDTO;
+import com.zanxiang.game.back.serve.pojo.entity.GameTencentRoleRegister;
+import com.zanxiang.game.back.serve.pojo.vo.GameTencentRoleRegisterVO;
+
+import java.util.List;
+
+public interface IGameTencentRoleRegisterService extends IService<GameTencentRoleRegister> {
+
+    boolean roleRegisterBack(GameTencentRoleRegister roleRegisterLog);
+
+    IPage<GameTencentRoleRegisterVO> tencentLogList(GameTencentRoleRegisterDTO dto);
+
+    boolean tencentUserReport(List<Long> ids);
+}

+ 8 - 1
game-back/game-back-serve/src/main/java/com/zanxiang/game/back/serve/service/impl/GameOceanengineOrderLogServiceImpl.java

@@ -8,6 +8,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.github.sd4324530.jtuple.Tuple3;
 import com.github.sd4324530.jtuple.Tuples;
 import com.zanxiang.game.back.base.pojo.enums.OrderStatusEnum;
+import com.zanxiang.game.back.serve.config.NacosDynamicParamConfig;
 import com.zanxiang.game.back.serve.dao.mapper.GameOceanengineOrderLogMapper;
 import com.zanxiang.game.back.serve.oceanengine.MiniGameCallback;
 import com.zanxiang.game.back.serve.oceanengine.OceanengineCallbackException;
@@ -37,6 +38,7 @@ import org.springframework.transaction.annotation.Transactional;
 import java.time.LocalDateTime;
 import java.time.LocalTime;
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.Collections;
 import java.util.List;
 import java.util.Map;
@@ -59,6 +61,8 @@ public class GameOceanengineOrderLogServiceImpl extends ServiceImpl<GameOceaneng
     private IGameOceanengineBackLogService gameOceanengineBackLogService;
     @DubboReference(providedBy = ServerInfo.SERVER_DUBBO_NAME)
     private IAgentRpc agentRpc;
+    @Autowired
+    private NacosDynamicParamConfig dynamicParamConfig;
 
     @Override
     @Transactional(rollbackFor = Exception.class)
@@ -341,11 +345,14 @@ public class GameOceanengineOrderLogServiceImpl extends ServiceImpl<GameOceaneng
                     .build());
             return BackStatusEnum.FAILED;
         }
+        Set<Long> keyAccountIds = StringUtils.isBlank(dynamicParamConfig.getBackOfKeyAccountIds()) ? Collections.emptySet() :
+                Arrays.stream(dynamicParamConfig.getBackOfKeyAccountIds().split(",")).map(Long::parseLong).collect(Collectors.toSet());
+        Integer eventType = keyAccountIds.contains(orderLog.getAccountId()) ? MiniGameCallback.EventType.GAME_ADDICTION.getEventType() : MiniGameCallback.EventType.ACTIVE_PAY.getEventType();
         MiniGameCallback.MiniGameCallbackRequest request = MiniGameCallback.MiniGameCallbackRequest.builder()
                 .clue_token(userLog.getClueToken())
                 .open_id(orderLog.getOpenId())
                 .union_id(orderLog.getUnionId())
-                .event_type(String.valueOf(MiniGameCallback.EventType.ACTIVE_PAY.getEventType()))
+                .event_type(String.valueOf(eventType))
                 .props(MiniGameCallback.MiniGameCallbackRequest.MiniGameCallbackRequestProps.builder()
                         .pay_amount(orderLog.getBackMoney())
                         .build())

+ 173 - 0
game-back/game-back-serve/src/main/java/com/zanxiang/game/back/serve/service/impl/GameOceanengineRoleRegisterLogServiceImpl.java

@@ -0,0 +1,173 @@
+package com.zanxiang.game.back.serve.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.zanxiang.game.back.serve.dao.mapper.GameOceanengineRoleRegisterLogMapper;
+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;
+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.bean.BeanUtil;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.collections4.CollectionUtils;
+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.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.function.Function;
+import java.util.stream.Collectors;
+
+@Slf4j
+@Service
+public class GameOceanengineRoleRegisterLogServiceImpl extends ServiceImpl<GameOceanengineRoleRegisterLogMapper, GameOceanengineRoleRegisterLog>
+        implements IGameOceanengineRoleRegisterLogService {
+
+    @Autowired
+    private MiniGameCallback miniGameCallback;
+    @Autowired
+    private IGameOceanengineUserLogService gameOceanengineUserLogService;
+    @Autowired
+    private IGameOceanengineBackLogService gameOceanengineBackLogService;
+    @DubboReference(providedBy = ServerInfo.SERVER_DUBBO_NAME)
+    private IAgentRpc agentRpc;
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public boolean callback(GameOceanengineRoleRegisterLog roleRegisterLog) {
+        BackStatusEnum backStatus = doCallback(roleRegisterLog);
+        return update(new LambdaUpdateWrapper<GameOceanengineRoleRegisterLog>()
+                .set(GameOceanengineRoleRegisterLog::getBackStatus, backStatus.getBackStatus())
+                .eq(GameOceanengineRoleRegisterLog::getId, roleRegisterLog.getId())
+        );
+    }
+
+    @Override
+    public IPage<GameOceanengineRoleRegisterLogVO> oceanengineUserLogList(GameOceanengineRoleRegisterLogDTO dto) {
+        IPage<GameOceanengineRoleRegisterLog> page = page(dto.toPage(), new LambdaQueryWrapper<GameOceanengineRoleRegisterLog>()
+                .eq(StringUtils.isNotBlank(dto.getAgentKey()), GameOceanengineRoleRegisterLog::getAgentKey, dto.getAgentKey())
+                .ge(dto.getRegisterTimeBegin() != null, GameOceanengineRoleRegisterLog::getRegisterTime, dto.getRegisterTimeBegin() == null ? null : LocalDateTime.of(dto.getRegisterTimeBegin(), LocalTime.MIDNIGHT))
+                .le(dto.getRegisterTimeEnd() != null, GameOceanengineRoleRegisterLog::getRegisterTime, dto.getRegisterTimeEnd() == null ? null : LocalDateTime.of(dto.getRegisterTimeEnd(), LocalTime.MAX))
+                .eq(null != dto.getGameId(), GameOceanengineRoleRegisterLog::getGameId, dto.getGameId())
+                .eq(null != dto.getAccountId(), GameOceanengineRoleRegisterLog::getAccountId, dto.getAccountId())
+                .eq(StringUtils.isNotBlank(dto.getAppId()), GameOceanengineRoleRegisterLog::getAppId, dto.getAppId())
+                .eq(StringUtils.isNotBlank(dto.getOpenId()), GameOceanengineRoleRegisterLog::getOpenId, dto.getOpenId())
+                .eq(null != dto.getBackStatus(), GameOceanengineRoleRegisterLog::getBackStatus, dto.getBackStatus())
+                .eq(StringUtils.isNotBlank(dto.getRoleName()), GameOceanengineRoleRegisterLog::getRoleName, dto.getRoleName())
+                .orderByDesc(GameOceanengineRoleRegisterLog::getCreateTime)
+        );
+        IPage<GameOceanengineRoleRegisterLogVO> result = new Page<>(page.getCurrent(), page.getSize(), page.getTotal());
+        if (CollectionUtils.isEmpty(page.getRecords())) {
+            return result;
+        }
+        result.setRecords(toVOBatch(page.getRecords()));
+        return result;
+    }
+
+    private List<GameOceanengineRoleRegisterLogVO> toVOBatch(List<GameOceanengineRoleRegisterLog> logList) {
+        if (CollectionUtils.isEmpty(logList)) {
+            return Collections.emptyList();
+        }
+        Set<String> agentKeys = logList.stream().map(GameOceanengineRoleRegisterLog::getAgentKey).filter(StringUtils::isNotBlank).collect(Collectors.toSet());
+        Map<String, AgentRpcVO> agentMap = CollectionUtils.isEmpty(agentKeys) ? Collections.emptyMap() : agentRpc.getByAgentKeys(new ArrayList<>(agentKeys))
+                .getData().stream().collect(Collectors.toMap(AgentRpcVO::getAgentKey, Function.identity()));
+        return logList.stream().map(log -> {
+            GameOceanengineRoleRegisterLogVO vo = BeanUtil.copy(log, GameOceanengineRoleRegisterLogVO.class);
+            if (StringUtils.isNotBlank(log.getAgentKey())) {
+                AgentRpcVO agent = agentMap.get(log.getAgentKey());
+                if (agent != null) {
+                    vo.setAgentName(agent.getAgentName());
+                }
+            }
+            return vo;
+        }).collect(Collectors.toList());
+    }
+
+    @Override
+    public boolean oceanengineUserReport(List<Long> ids) {
+        listByIds(ids).forEach(this::callback);
+        return true;
+    }
+
+    private BackStatusEnum doCallback(GameOceanengineRoleRegisterLog roleRegisterLog) {
+        GameOceanengineUserLog userLog = gameOceanengineUserLogService.getOne(new LambdaQueryWrapper<GameOceanengineUserLog>()
+                .eq(GameOceanengineUserLog::getGameId, roleRegisterLog.getGameId())
+                .eq(GameOceanengineUserLog::getAppId, roleRegisterLog.getAppId())
+                .eq(GameOceanengineUserLog::getOpenId, roleRegisterLog.getOpenId())
+                .eq(GameOceanengineUserLog::getAccountId, roleRegisterLog.getAccountId())
+                .last("limit 1")
+        );
+        if (userLog == null) {
+            gameOceanengineBackLogService.save(GameOceanengineBackLog.builder()
+                    .appId(roleRegisterLog.getAppId())
+                    .openId(roleRegisterLog.getOpenId())
+                    .unionId(roleRegisterLog.getUnionId())
+                    .gameId(roleRegisterLog.getGameId())
+                    .accountId(roleRegisterLog.getAccountId())
+                    .clueToken("")
+                    .eventType(String.valueOf(MiniGameCallback.EventType.ACTIVE_REGISTER.getEventType()))
+                    .eventLogId(roleRegisterLog.getId())
+                    .createTime(LocalDateTime.now())
+                    .backStatus(BackStatusEnum.FAILED.getBackStatus())
+                    .errMsg("找不到用户注册信息")
+                    .build());
+            return BackStatusEnum.FAILED;
+        }
+        MiniGameCallback.MiniGameCallbackRequest request = MiniGameCallback.MiniGameCallbackRequest.builder()
+                .clue_token(userLog.getClueToken())
+                .open_id(roleRegisterLog.getOpenId())
+                .union_id(roleRegisterLog.getUnionId())
+                .event_type(String.valueOf(MiniGameCallback.EventType.ACTIVE_REGISTER.getEventType()))
+                .build();
+        BackStatusEnum backStatus = BackStatusEnum.SUCCESS;
+        String errMsg = null;
+        try {
+            miniGameCallback.doCallback(userLog.getAccountReportUrl(), userLog.getAccountReportToken(), request);
+        } catch (OceanengineCallbackException e) {
+            log.error(e.getMessage(), e);
+            backStatus = BackStatusEnum.FAILED;
+            errMsg = e.getMsg();
+        } catch (Exception e) {
+            log.error(e.getMessage(), e);
+            backStatus = BackStatusEnum.FAILED;
+            errMsg = "系统异常:" + e.getMessage();
+        }
+        gameOceanengineBackLogService.save(GameOceanengineBackLog.builder()
+                .appId(roleRegisterLog.getAppId())
+                .openId(roleRegisterLog.getOpenId())
+                .unionId(roleRegisterLog.getUnionId())
+                .gameId(roleRegisterLog.getGameId())
+                .accountId(roleRegisterLog.getAccountId())
+                .clueToken(userLog.getClueToken())
+                .eventType(request.getEvent_type())
+                .eventLogId(roleRegisterLog.getId())
+                .createTime(LocalDateTime.now())
+                .backStatus(backStatus.getBackStatus())
+                .errMsg(errMsg)
+                .build());
+        return backStatus;
+    }
+}

+ 1 - 0
game-back/game-back-serve/src/main/java/com/zanxiang/game/back/serve/service/impl/GameOceanengineUserLogServiceImpl.java

@@ -119,6 +119,7 @@ public class GameOceanengineUserLogServiceImpl extends ServiceImpl<GameOceanengi
                 .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)
         ) > 0;
         if (isBack) {

+ 19 - 0
game-back/game-back-serve/src/main/java/com/zanxiang/game/back/serve/service/impl/GameTencentMiniGameBackLogServiceImpl.java

@@ -6,6 +6,7 @@ import com.zanxiang.game.back.base.pojo.enums.OrderStatusEnum;
 import com.zanxiang.game.back.serve.dao.mapper.GameTencentMiniGameBackLogMapper;
 import com.zanxiang.game.back.serve.pojo.entity.GameTencentMiniGameBackLog;
 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.ActionTypeEnum;
 import com.zanxiang.game.back.serve.pojo.enums.BackStatusEnum;
@@ -77,6 +78,24 @@ public class GameTencentMiniGameBackLogServiceImpl extends ServiceImpl<GameTence
         return BackStatusEnum.getByValue(backLog.getBackStatus());
     }
 
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public BackStatusEnum roleRegisterBack(GameTencentMiniGameRoleRegister roleRegisterLog) {
+        GameTencentMiniGameBackLog backLog = GameTencentMiniGameBackLog.builder()
+                .gameId(roleRegisterLog.getGameId())
+                .adAccountId(roleRegisterLog.getAdAccountId())
+                .clickId(roleRegisterLog.getClickId())
+                .actionTime(roleRegisterLog.getRegisterTime())
+                .wechatOpenid(roleRegisterLog.getWechatOpenid())
+                .wechatAppId(roleRegisterLog.getWechatAppId())
+                .actionType(ActionTypeEnum.CREATE_ROLE.getActionType())
+                .createTime(LocalDateTime.now())
+                .build();
+        callback(backLog);
+        save(backLog);
+        return BackStatusEnum.getByValue(backLog.getBackStatus());
+    }
+
     private void callback(GameTencentMiniGameBackLog backLog) {
         Map<String, Object> actionParam = null;
         if (backLog.getAmount() != null) {

+ 5 - 0
game-back/game-back-serve/src/main/java/com/zanxiang/game/back/serve/service/impl/GameTencentMiniGameOrderServiceImpl.java

@@ -1,6 +1,7 @@
 package com.zanxiang.game.back.serve.service.impl;
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@@ -15,12 +16,14 @@ import com.zanxiang.game.back.serve.dao.mapper.GameTencentMiniGameOrderMapper;
 import com.zanxiang.game.back.serve.pojo.dto.GameTencentMiniGameOrderDTO;
 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.GameTencentMiniGameUser;
 import com.zanxiang.game.back.serve.pojo.enums.BackStatusEnum;
 import com.zanxiang.game.back.serve.pojo.enums.BackUnitEnum;
 import com.zanxiang.game.back.serve.pojo.vo.GameTencentMiniGameOrderVO;
 import com.zanxiang.game.back.serve.service.IGameBackPolicyService;
 import com.zanxiang.game.back.serve.service.IGameTencentMiniGameBackLogService;
 import com.zanxiang.game.back.serve.service.IGameTencentMiniGameOrderService;
+import com.zanxiang.game.back.serve.service.IGameTencentMiniGameUserService;
 import com.zanxiang.game.back.serve.utils.BackPolicyUtil;
 import com.zanxiang.game.back.serve.utils.OrderUtil;
 import com.zanxiang.game.module.base.ServerInfo;
@@ -58,6 +61,8 @@ public class GameTencentMiniGameOrderServiceImpl extends ServiceImpl<GameTencent
     @Autowired
     private IGameTencentMiniGameBackLogService gameTencentMiniGameBackLogService;
     @Autowired
+    private IGameTencentMiniGameUserService gameTencentMiniGameUserService;
+    @Autowired
     private IGameBackPolicyService gameBackPolicyService;
     @DubboReference(providedBy = ServerInfo.SERVER_DUBBO_NAME)
     private IAgentRpc agentRpc;

+ 132 - 0
game-back/game-back-serve/src/main/java/com/zanxiang/game/back/serve/service/impl/GameTencentMiniGameRoleRegisterServiceImpl.java

@@ -0,0 +1,132 @@
+package com.zanxiang.game.back.serve.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+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.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.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.bean.BeanUtil;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.collections4.CollectionUtils;
+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.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.function.Function;
+import java.util.stream.Collectors;
+
+@Slf4j
+@Service
+public class GameTencentMiniGameRoleRegisterServiceImpl extends ServiceImpl<GameTencentMiniGameRoleRegisterMapper, GameTencentMiniGameRoleRegister>
+        implements IGameTencentMiniGameRoleRegisterService {
+
+    @DubboReference(providedBy = AdvertisingTencentServer.SERVER_DUBBO_NAME)
+    private IUserActionSetRpc userActionSetRpc;
+    @Autowired
+    private IGameTencentMiniGameBackLogService gameTencentMiniGameBackLogService;
+    @DubboReference(providedBy = ServerInfo.SERVER_DUBBO_NAME)
+    private IAgentRpc agentRpc;
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public boolean roleRegisterBack(GameTencentMiniGameRoleRegister roleRegisterLog) {
+        if (StringUtils.isBlank(roleRegisterLog.getClickId())) {
+            return false;
+        }
+        BackStatusEnum backStatus = doCallback(roleRegisterLog);
+        return update(new LambdaUpdateWrapper<GameTencentMiniGameRoleRegister>()
+                .set(GameTencentMiniGameRoleRegister::getBackStatus, backStatus.getBackStatus())
+                .eq(GameTencentMiniGameRoleRegister::getId, roleRegisterLog.getId())
+        );
+    }
+
+
+    @Override
+    public IPage<GameTencentMiniGameRoleRegisterVO> listOfPage(GameTencentMiniGameRoleRegisterDTO dto) {
+        IPage<GameTencentMiniGameRoleRegister> page = page(dto.toPage(), new LambdaQueryWrapper<GameTencentMiniGameRoleRegister>()
+                .eq(StringUtils.isNotBlank(dto.getAgentKey()), GameTencentMiniGameRoleRegister::getAgentKey, dto.getAgentKey())
+                .ge(dto.getRegisterTimeBegin() != null, GameTencentMiniGameRoleRegister::getRegisterTime, dto.getRegisterTimeBegin() == null ? null : LocalDateTime.of(dto.getRegisterTimeBegin(), LocalTime.MIDNIGHT))
+                .le(dto.getRegisterTimeEnd() != null, GameTencentMiniGameRoleRegister::getRegisterTime, dto.getRegisterTimeEnd() == null ? null : LocalDateTime.of(dto.getRegisterTimeEnd(), LocalTime.MAX))
+                .eq(null != dto.getGameId(), GameTencentMiniGameRoleRegister::getGameId, dto.getGameId())
+                .eq(null != dto.getAdAccountId(), GameTencentMiniGameRoleRegister::getAdAccountId, dto.getAdAccountId())
+                .eq(StringUtils.isNotBlank(dto.getWechatAppId()), GameTencentMiniGameRoleRegister::getWechatAppId, dto.getWechatAppId())
+                .eq(StringUtils.isNotBlank(dto.getWechatOpenid()), GameTencentMiniGameRoleRegister::getWechatOpenid, dto.getWechatOpenid())
+                .eq(null != dto.getBackStatus(), GameTencentMiniGameRoleRegister::getBackStatus, dto.getBackStatus())
+                .orderByDesc(GameTencentMiniGameRoleRegister::getCreateTime)
+        );
+        IPage<GameTencentMiniGameRoleRegisterVO> result = new Page<>(page.getCurrent(), page.getSize(), page.getTotal());
+        if (CollectionUtils.isEmpty(page.getRecords())) {
+            return result;
+        }
+        result.setRecords(toVOBatch(page.getRecords()));
+        return result;
+    }
+
+    @Override
+    public boolean doReport(List<Long> userLogIds) {
+        listByIds(userLogIds).forEach(userLog -> {
+            BackStatusEnum backStatus = doCallback(userLog);
+            update(new LambdaUpdateWrapper<GameTencentMiniGameRoleRegister>()
+                    .set(GameTencentMiniGameRoleRegister::getBackStatus, backStatus.getBackStatus())
+                    .eq(GameTencentMiniGameRoleRegister::getId, userLog.getId())
+            );
+        });
+        return true;
+    }
+
+    private List<GameTencentMiniGameRoleRegisterVO> toVOBatch(List<GameTencentMiniGameRoleRegister> logList) {
+        if (CollectionUtils.isEmpty(logList)) {
+            return Collections.emptyList();
+        }
+        Set<String> agentKeys = logList.stream().map(GameTencentMiniGameRoleRegister::getAgentKey).filter(StringUtils::isNotBlank).collect(Collectors.toSet());
+        Map<String, AgentRpcVO> agentMap = CollectionUtils.isEmpty(agentKeys) ? Collections.emptyMap() : agentRpc.getByAgentKeys(new ArrayList<>(agentKeys))
+                .getData().stream().collect(Collectors.toMap(AgentRpcVO::getAgentKey, Function.identity()));
+        return logList.stream().map(log -> {
+            GameTencentMiniGameRoleRegisterVO vo = toVOSimple(log);
+            if (StringUtils.isNotBlank(log.getAgentKey())) {
+                AgentRpcVO agent = agentMap.get(log.getAgentKey());
+                if (agent != null) {
+                    vo.setAgentName(agent.getAgentName());
+                }
+            }
+            return vo;
+        }).collect(Collectors.toList());
+
+    }
+
+    private BackStatusEnum doCallback(GameTencentMiniGameRoleRegister roleRegisterLog) {
+        return gameTencentMiniGameBackLogService.roleRegisterBack(roleRegisterLog);
+    }
+
+    private GameTencentMiniGameRoleRegisterVO toVOSimple(GameTencentMiniGameRoleRegister roleRegisterLog) {
+        if (roleRegisterLog == null) {
+            return null;
+        }
+        return BeanUtil.copy(roleRegisterLog, GameTencentMiniGameRoleRegisterVO.class);
+    }
+}

+ 166 - 0
game-back/game-back-serve/src/main/java/com/zanxiang/game/back/serve/service/impl/GameTencentRoleRegisterServiceImpl.java

@@ -0,0 +1,166 @@
+package com.zanxiang.game.back.serve.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.zanxiang.advertising.tencent.base.AdvertisingTencentServer;
+import com.zanxiang.advertising.tencent.base.pojo.dto.DataReportOfAppIdRpcDTO;
+import com.zanxiang.advertising.tencent.base.pojo.dto.UserActionRpcDTO;
+import com.zanxiang.advertising.tencent.base.rpc.IUserActionSetRpc;
+import com.zanxiang.erp.base.ErpServer;
+import com.zanxiang.erp.base.rpc.ISysUserRpc;
+import com.zanxiang.game.back.serve.dao.mapper.GameTencentRoleRegisterMapper;
+import com.zanxiang.game.back.serve.pojo.dto.GameTencentRoleRegisterDTO;
+import com.zanxiang.game.back.serve.pojo.entity.GameTencentBackLog;
+import com.zanxiang.game.back.serve.pojo.entity.GameTencentRoleRegister;
+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.GameTencentRoleRegisterVO;
+import com.zanxiang.game.back.serve.service.IGameTencentBackLogService;
+import com.zanxiang.game.back.serve.service.IGameTencentRoleRegisterService;
+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.bean.BeanUtil;
+import com.zanxiang.module.util.pojo.ResultVO;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.collections4.CollectionUtils;
+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.Transactional;
+
+import java.time.LocalDateTime;
+import java.time.LocalTime;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.function.Function;
+import java.util.stream.Collectors;
+
+@Slf4j
+@Service
+public class GameTencentRoleRegisterServiceImpl extends ServiceImpl<GameTencentRoleRegisterMapper, GameTencentRoleRegister>
+        implements IGameTencentRoleRegisterService {
+
+    @DubboReference(providedBy = AdvertisingTencentServer.SERVER_DUBBO_NAME)
+    private IUserActionSetRpc userActionSetRpc;
+    @DubboReference(providedBy = ErpServer.SERVER_DUBBO_NAME)
+    private ISysUserRpc sysUserRpc;
+    @Autowired
+    private IGameTencentBackLogService gameTencentBackLogService;
+    @DubboReference(providedBy = ServerInfo.SERVER_DUBBO_NAME)
+    private IAgentRpc agentRpc;
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public boolean roleRegisterBack(GameTencentRoleRegister roleRegisterLog) {
+        BackStatusEnum backStatus = doCallback(roleRegisterLog);
+        return update(new LambdaUpdateWrapper<GameTencentRoleRegister>()
+                .set(GameTencentRoleRegister::getIsBack, backStatus.getBackStatus())
+                .eq(GameTencentRoleRegister::getId, roleRegisterLog.getId())
+        );
+    }
+
+
+    @Override
+    public IPage<GameTencentRoleRegisterVO> tencentLogList(GameTencentRoleRegisterDTO dto) {
+        IPage<GameTencentRoleRegister> page = page(dto.toPage(), new LambdaQueryWrapper<GameTencentRoleRegister>()
+                .eq(StringUtils.isNotBlank(dto.getChannel()), GameTencentRoleRegister::getChannel, dto.getChannel())
+                .ge(dto.getRegisterBegin() != null, GameTencentRoleRegister::getRegisterTime, dto.getRegisterBegin() == null ? null : LocalDateTime.of(dto.getRegisterBegin(), LocalTime.MIDNIGHT))
+                .le(dto.getRegisterEnd() != null, GameTencentRoleRegister::getRegisterTime, dto.getRegisterEnd() == null ? null : LocalDateTime.of(dto.getRegisterEnd(), LocalTime.MAX))
+                .eq(null != dto.getGameId(), GameTencentRoleRegister::getGameId, dto.getGameId())
+                .eq(null != dto.getAdAccountId(), GameTencentRoleRegister::getAdAccountId, dto.getAdAccountId())
+                .eq(StringUtils.isNotBlank(dto.getWechatAppId()), GameTencentRoleRegister::getWechatAppId, dto.getWechatAppId())
+                .eq(StringUtils.isNotBlank(dto.getWechatOpenid()), GameTencentRoleRegister::getWechatOpenid, dto.getWechatOpenid())
+                .eq(null != dto.getIsBack(), GameTencentRoleRegister::getIsBack, dto.getIsBack())
+                .orderByDesc(GameTencentRoleRegister::getCreateTime)
+        );
+
+        IPage<GameTencentRoleRegisterVO> result = new Page<>(page.getCurrent(), page.getSize(), page.getTotal());
+        if (CollectionUtils.isEmpty(page.getRecords())) {
+            return result;
+        }
+        result.setRecords(toVOBatch(page.getRecords()));
+        return result;
+    }
+
+    @Override
+    public boolean tencentUserReport(List<Long> ids) {
+        listByIds(ids).forEach(roleRegisterLog -> {
+            BackStatusEnum backStatus = doCallback(roleRegisterLog);
+            update(new LambdaUpdateWrapper<GameTencentRoleRegister>()
+                    .set(GameTencentRoleRegister::getIsBack, backStatus.getBackStatus())
+                    .eq(GameTencentRoleRegister::getId, roleRegisterLog.getId())
+            );
+        });
+        return true;
+    }
+
+    private List<GameTencentRoleRegisterVO> toVOBatch(List<GameTencentRoleRegister> logList) {
+        if (CollectionUtils.isEmpty(logList)) {
+            return Collections.emptyList();
+        }
+        Set<String> agentKeys = logList.stream().map(GameTencentRoleRegister::getChannel).filter(StringUtils::isNotBlank).collect(Collectors.toSet());
+        Map<String, AgentRpcVO> agentMap = CollectionUtils.isEmpty(agentKeys) ? Collections.emptyMap() : agentRpc.getByAgentKeys(new ArrayList<>(agentKeys))
+                .getData().stream().collect(Collectors.toMap(AgentRpcVO::getAgentKey, Function.identity()));
+        return logList.stream().map(log -> {
+            GameTencentRoleRegisterVO vo = BeanUtil.copy(log, GameTencentRoleRegisterVO.class);
+            if (StringUtils.isNotBlank(log.getChannel())) {
+                AgentRpcVO agent = agentMap.get(log.getChannel());
+                if (agent != null) {
+                    vo.setAgentName(agent.getAgentName());
+                }
+            }
+            return vo;
+        }).collect(Collectors.toList());
+
+    }
+
+
+    private BackStatusEnum doCallback(GameTencentRoleRegister roleRegisterLog) {
+        Map<String, Object> actionParam = new HashMap<>(2);
+        actionParam.put("claim_type", 0);
+        DataReportOfAppIdRpcDTO dataReportOfAppIdRpcDTO = DataReportOfAppIdRpcDTO.builder()
+                .appId(roleRegisterLog.getWechatAppId())
+                .userActionSetId(roleRegisterLog.getUserActionSetId())
+                .action(UserActionRpcDTO.builder()
+                        .actionTime(roleRegisterLog.getRegisterTime())
+                        .actionType(ActionTypeEnum.CREATE_ROLE.getActionType())
+                        .userId(UserActionRpcDTO.UserIdRpcDTO.builder()
+                                .wechatAppId(roleRegisterLog.getWechatAppId())
+                                .wechatOpenid(roleRegisterLog.getWechatOpenid())
+                                .build())
+                        .actionParam(actionParam)
+                        .build())
+                .build();
+
+        GameTencentBackLog gameTencentBackLog = GameTencentBackLog.builder()
+                .gameId(roleRegisterLog.getGameId())
+                .adAccountId(roleRegisterLog.getAdAccountId())
+                .actionTime(roleRegisterLog.getRegisterTime())
+                .createTime(LocalDateTime.now())
+                .actionType(ActionTypeEnum.CREATE_ROLE.getActionType())
+                .wechatAppId(roleRegisterLog.getWechatAppId())
+                .wechatOpenid(roleRegisterLog.getWechatOpenid())
+                .userActionSetId(roleRegisterLog.getUserActionSetId())
+                .actionParam(actionParam.toString())
+                .build();
+        ResultVO<Boolean> result = userActionSetRpc.reportByAppId(dataReportOfAppIdRpcDTO);
+        BackStatusEnum backStatus = BackStatusEnum.FAILED;
+        if (result.isSuccess()) {
+            backStatus = BackStatusEnum.SUCCESS;
+            gameTencentBackLog.setBackLog("回传成功");
+        } else {
+            gameTencentBackLog.setBackLog(result.getMsg());
+        }
+        gameTencentBackLogService.save(gameTencentBackLog);
+        return backStatus;
+    }
+}

+ 1 - 1
game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/controller/AdsGameServerController.java

@@ -57,7 +57,7 @@ public class AdsGameServerController {
     }
 
     @ApiOperation(value = "游戏区服每日数据总计一栏")
-    //@PreAuthorize(permissionKey = "gameServer:GameServerSumDay:dayTotal")
+    @PreAuthorize(permissionKey = "gameServer:GameServerSumDay:dayTotal")
     @PostMapping("sum/day/total")
     public ResultVO<GameServerSumDayTotalVO> getGameServerDataSumDayTotal(@RequestBody GameServerSumDayTotalDTO dto) {
         return ResultVO.ok(gameServerService.getGameServerDataSumDayTotal(dto));

+ 12 - 4
game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/controller/ChoiceListController.java

@@ -2,10 +2,8 @@ package com.zanxiang.game.data.serve.controller;
 
 import com.zanxiang.erp.security.annotation.PreAuthorize;
 import com.zanxiang.game.data.serve.pojo.dto.ChoiceListDTO;
-import com.zanxiang.game.data.serve.pojo.vo.AccountListVO;
-import com.zanxiang.game.data.serve.pojo.vo.AgentListVO;
-import com.zanxiang.game.data.serve.pojo.vo.GameListVO;
-import com.zanxiang.game.data.serve.pojo.vo.PitcherListVO;
+import com.zanxiang.game.data.serve.pojo.dto.GameServerListDTO;
+import com.zanxiang.game.data.serve.pojo.vo.*;
 import com.zanxiang.game.data.serve.service.*;
 import com.zanxiang.module.util.pojo.ResultVO;
 import io.swagger.annotations.Api;
@@ -43,6 +41,9 @@ public class ChoiceListController {
     @Autowired
     private IVipLevelService vipLevelService;
 
+    @Autowired
+    private IGameServerService gameServerService;
+
     @ApiOperation(value = "所有游戏列表")
     @PreAuthorize(permissionKey = "gameData:choice:gameList")
     @PostMapping("/game/list")
@@ -78,4 +79,11 @@ public class ChoiceListController {
         return ResultVO.ok(vipLevelService.getMaxVipLevel());
     }
 
+    @ApiOperation(value = "所有区服列表(原始区服)")
+    @PreAuthorize(permissionKey = "gameData:choice:gameServerList")
+    @PostMapping("/gameServer/list")
+    public ResultVO<List<GameServerVO>> getPitcherList(@RequestBody GameServerListDTO dto) {
+        return ResultVO.ok(gameServerService.getAllGameServer(dto));
+    }
+
 }

+ 42 - 0
game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/pojo/dto/GameServerListDTO.java

@@ -0,0 +1,42 @@
+package com.zanxiang.game.data.serve.pojo.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.util.List;
+
+/**
+ * @author tianhua
+ * @version 1.0
+ * @description: 游戏区服下拉列表刷选
+ * @date 2023/11/3 16:24
+ */
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+@Builder
+public class GameServerListDTO {
+
+    /**
+     * SDK来源
+     */
+    @ApiModelProperty(value = "SDK来源")
+    private String sourceSystem;
+
+    /**
+     * 游戏ID
+     */
+    @ApiModelProperty(value = "游戏ID")
+    private List<Long> gameId;
+
+    /**
+     * 父游戏ID
+     */
+    @ApiModelProperty(value = "父游戏ID")
+    private List<Long> parentGameId;
+
+
+}

+ 8 - 2
game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/pojo/dto/RoleRechargeRankingDTO.java

@@ -37,13 +37,19 @@ public class RoleRechargeRankingDTO extends BasePage {
      * 子游戏ID
      */
     @ApiModelProperty(value = "子游戏ID")
-    private Long gameId;
+    private List<Long> gameId;
 
     /**
      * 父游戏ID
      */
     @ApiModelProperty(value = "父游戏ID")
-    private Long parentGameId;
+    private List<Long> parentGameIds;
+
+    /**
+     * 超父游戏ID
+     */
+    @ApiModelProperty(value = "超父游戏ID")
+    private Long superGameId;
 
     /**
      * 区服ID(列表)

+ 50 - 0
game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/pojo/vo/GameServerVO.java

@@ -0,0 +1,50 @@
+package com.zanxiang.game.data.serve.pojo.vo;
+
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * @author tianhua
+ * @version 1.0
+ * @description: 游戏区服列表数据
+ * @date 2024/1/5 10:59
+ */
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+@Builder
+public class GameServerVO {
+
+    /**
+     * SDK来源
+     */
+    private String sourceSystem;
+
+    /**
+     * 子游戏ID
+     */
+    private Long gameId;
+
+    /**
+     * 子游戏名称
+     */
+    private String gameName;
+
+    /**
+     * 父游戏ID
+     */
+    private Long parentGameId;
+
+    /**
+     * 区服ID
+     */
+    private String serverId;
+
+    /**
+     * 区服名称
+     */
+    private String serverName;
+
+}

+ 12 - 8
game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/service/IGameServerService.java

@@ -1,15 +1,12 @@
 package com.zanxiang.game.data.serve.service;
 
-import com.zanxiang.game.data.serve.pojo.dto.GameServerDayDTO;
-import com.zanxiang.game.data.serve.pojo.dto.GameServerDayTotalDTO;
-import com.zanxiang.game.data.serve.pojo.dto.GameServerSumDayDTO;
-import com.zanxiang.game.data.serve.pojo.dto.GameServerSumDayTotalDTO;
-import com.zanxiang.game.data.serve.pojo.vo.GameServerDayTotalVO;
-import com.zanxiang.game.data.serve.pojo.vo.GameServerDayVO;
-import com.zanxiang.game.data.serve.pojo.vo.GameServerSumDayTotalVO;
-import com.zanxiang.game.data.serve.pojo.vo.GameServerSumDayVO;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.zanxiang.game.data.serve.pojo.dto.*;
+import com.zanxiang.game.data.serve.pojo.vo.*;
 import com.zanxiang.game.data.serve.utils.Page;
 
+import java.util.List;
+
 public interface IGameServerService {
 
     /**
@@ -40,4 +37,11 @@ public interface IGameServerService {
      */
     GameServerSumDayTotalVO getGameServerDataSumDayTotal(GameServerSumDayTotalDTO dto);
 
+    /**
+     * 得到所有区服列表
+     * @param dto
+     * @return
+     */
+    List<GameServerVO> getAllGameServer(GameServerListDTO dto);
+
 }

+ 55 - 12
game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/service/impl/GameServerServiceImpl.java

@@ -2,10 +2,7 @@ package com.zanxiang.game.data.serve.service.impl;
 
 import com.google.common.base.CaseFormat;
 import com.zanxiang.game.data.serve.component.DataPowerComponent;
-import com.zanxiang.game.data.serve.pojo.dto.GameServerDayDTO;
-import com.zanxiang.game.data.serve.pojo.dto.GameServerDayTotalDTO;
-import com.zanxiang.game.data.serve.pojo.dto.GameServerSumDayDTO;
-import com.zanxiang.game.data.serve.pojo.dto.GameServerSumDayTotalDTO;
+import com.zanxiang.game.data.serve.pojo.dto.*;
 import com.zanxiang.game.data.serve.pojo.entity.AdsGameServerDay;
 import com.zanxiang.game.data.serve.pojo.entity.AdsGameServerSumDay;
 import com.zanxiang.game.data.serve.pojo.enums.OrderByEnum;
@@ -13,6 +10,7 @@ import com.zanxiang.game.data.serve.pojo.vo.*;
 import com.zanxiang.game.data.serve.service.IGameServerService;
 import com.zanxiang.game.data.serve.utils.Page;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.collections4.CollectionUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.nutz.dao.Cnd;
 import org.nutz.dao.Dao;
@@ -22,7 +20,6 @@ import org.nutz.dao.sql.Criteria;
 import org.nutz.dao.sql.Sql;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
-import org.springframework.util.CollectionUtils;
 import reactor.util.function.Tuple2;
 import reactor.util.function.Tuples;
 
@@ -373,18 +370,14 @@ public class GameServerServiceImpl implements IGameServerService {
      */
     @Override
     public GameServerSumDayTotalVO getGameServerDataSumDayTotal(GameServerSumDayTotalDTO dto) {
-        /*com.github.sd4324530.jtuple.Tuple2<List<Long>, List<Long>> poerInfo = dataPowerComponent.getPowerInfo();
-        List<Long> gameIds = dto.getGameId() == null ? poerInfo.second : Collections.singletonList(dto.getGameId());*/
+        com.github.sd4324530.jtuple.Tuple2<List<Long>, List<Long>> poerInfo = dataPowerComponent.getPowerInfo();
+        List<Long> gameIds = dto.getGameId() == null ? poerInfo.second : Collections.singletonList(dto.getGameId());
 
         //创建查询条件
         Criteria cri = Cnd.cri();
-        /*if (gameIds != null) {
+        if (gameIds != null) {
             //拼接游戏ID查询条件
             cri.where().andInList("game_id", gameIds);
-        }*/
-        if (dto.getGameId() != null) {
-            //拼接游戏ID查询条件
-            cri.where().andEquals("game_id", dto.getGameId());
         }
         if (dto.getBeginDate() != null && dto.getEndDate() != null) {
             //拼接开服时间查询条件
@@ -410,6 +403,33 @@ public class GameServerServiceImpl implements IGameServerService {
         return vo;
     }
 
+    @Override
+    public List<GameServerVO> getAllGameServer(GameServerListDTO dto) {
+        if (StringUtils.isBlank(dto.getSourceSystem())) {
+            dto.setSourceSystem("ZX_ONE");
+        }
+        //创建查询条件
+        Criteria cri = Cnd.cri();
+        if (StringUtils.isNotBlank(dto.getSourceSystem())) {
+            cri.where().andEquals("source_system", dto.getSourceSystem());
+        }
+        if (CollectionUtils.isNotEmpty(dto.getGameId())) {
+            cri.where().andInList("game_id", dto.getGameId());
+        }
+        if (CollectionUtils.isNotEmpty(dto.getParentGameId())) {
+            cri.where().andInList("parent_game_id", dto.getParentGameId());
+        }
+        //排序条件
+        cri.getOrderBy().orderBy("game_id", OrderByEnum.ASC.getOrderType());
+        cri.getOrderBy().orderBy("create_time", OrderByEnum.ASC.getOrderType());
+
+        Sql sql = Sqls.create(gameServerSql() + cri);
+        sql.setCallback(Sqls.callback.entities());
+        sql.setEntity(dao.getEntity(GameServerVO.class));
+        dao.execute(sql);
+        return sql.getList(GameServerVO.class);
+    }
+
     /**
      * 将vo中的原始String数据修改为一个对象
      * @param vo 展示给前端的游戏区服数据
@@ -1394,5 +1414,28 @@ public class GameServerServiceImpl implements IGameServerService {
                         """;
     }
 
+    /**
+     * 获取所有区服sql
+     * @return
+     */
+    private String gameServerSql() {
+        return """
+                SELECT
+                    *
+                FROM (
+                    SELECT
+                        a.source_system ,
+                        a.game_id ,
+                        a.game_name ,
+                        a.server_id ,
+                        a.server_name ,
+                        IFNULL(b.parent_id , a.game_id ) as parent_game_id,
+                        a.create_time
+                    FROM dm_game_order.t_game_server a
+                    LEFT JOIN dm_game_order.t_game b on a.source_system = b.source_system AND a.game_id = b.id
+                ) a
+                """;
+    }
+
 
 }

+ 9 - 4
game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/service/impl/RoleManageServiceImpl.java

@@ -54,12 +54,17 @@ public class RoleManageServiceImpl implements IRoleManageService {
         }
         //创建查询条件 给主表使用
         Criteria criA = Cnd.cri();
-        if (dto.getGameId() != null) {
-            criA.where().andEquals("role_reg_game_id", dto.getGameId());
+        if (CollectionUtils.isNotEmpty(dto.getGameId())) {
+            //角色注册子游戏
+            criA.where().andInList("role_reg_game_id", dto.getGameId());
         }
-        if (dto.getParentGameId() != null) {
+        if (CollectionUtils.isNotEmpty(dto.getParentGameIds())) {
             //角色注册父游戏
-            criA.where().andEquals("role_reg_parent_game_id", dto.getParentGameId());
+            criA.where().andInList("role_reg_parent_game_id", dto.getParentGameIds());
+        }
+        if (dto.getSuperGameId() != null) {
+            //角色注册超父游戏
+            criA.where().andEquals("role_reg_super_game_id", dto.getSuperGameId());
         }
         if (StringUtils.isNotBlank(dto.getSourceSystem())) {
             criA.where().andEquals("source_system", dto.getSourceSystem());

+ 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服务启动成功 <兼容客服支付, 且发送指定客服消息, 优化阿里云市场接口> ( ´・・)ノ(._.`) \n" +
+        System.out.println("赞象SDK服务启动成功 <兼容ios通用客户端> ( ´・・)ノ(._.`) \n" +
                 " ___________ _   __\n" +
                 "/  ___|  _  \\ | / /\n" +
                 "\\ `--.| | | | |/ / \n" +

+ 5 - 6
game-module/game-module-sdk/src/main/java/com/zanxiang/game/module/sdk/service/IAliApiService.java

@@ -11,16 +11,15 @@ import reactor.util.function.Tuple2;
 public interface IAliApiService {
 
     /**
-     * 阿里实名认证, 仅用在测试环境
+     * 语音呼叫
      *
-     * @param cardName : 名字
-     * @param cardId   : 身份证
-     * @return : 返回检测结果
+     * @param param  : 模块参数
+     * @param mobile : 手机号
      */
-    Tuple2<Boolean, String> authenticationCheck(String cardName, String cardId);
+    void phoneCall(String param, String mobile);
 
     /**
-     * 阿里实名认证, 包含归属地, 用在生产环境
+     * 阿里实名认证
      *
      * @param cardName : 名字
      * @param cardId   : 身份证

+ 5 - 30
game-module/game-module-sdk/src/main/java/com/zanxiang/game/module/sdk/service/impl/AliApiServiceImpl.java

@@ -7,7 +7,6 @@ import com.zanxiang.game.module.sdk.service.IAliApiService;
 import com.zanxiang.module.util.JsonUtil;
 import com.zanxiang.module.util.exception.BaseException;
 import lombok.extern.slf4j.Slf4j;
-import org.apache.logging.log4j.util.Strings;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.http.*;
 import org.springframework.stereotype.Service;
@@ -18,8 +17,6 @@ import org.springframework.web.util.UriComponentsBuilder;
 import reactor.util.function.Tuple2;
 import reactor.util.function.Tuples;
 
-import java.util.UUID;
-
 /**
  * @author : lingfeng
  * @time : 2023-12-12
@@ -37,7 +34,8 @@ public class AliApiServiceImpl implements IAliApiService {
      */
     private final String APP_CODE = "f395b1587fc04a49a975f908660fb1e9";
 
-    public void phoneCall(String param) {
+    @Override
+    public void phoneCall(String param, String mobile) {
         RestTemplate restTemplate = new RestTemplate();
         String host = "https://jumfixed.market.alicloudapi.com/voice-notify/send";
         HttpHeaders headers = new HttpHeaders();
@@ -45,7 +43,7 @@ public class AliApiServiceImpl implements IAliApiService {
         headers.set("Content-Type", ContentType.FORM_URLENCODED.getValue());
         //参数
         MultiValueMap<String, String> requestParams = new LinkedMultiValueMap<>();
-        requestParams.add("mobile", "13100690278");
+        requestParams.add("mobile", mobile);
         requestParams.add("templateId", "JMJNAWUQOJP9");
         requestParams.add("param", param);
         String result = null;
@@ -59,29 +57,6 @@ public class AliApiServiceImpl implements IAliApiService {
         log.error("阿里语音呼叫结果, result : {}", result);
     }
 
-    @Override
-    public Tuple2<Boolean, String> authenticationCheck(String cardName, String cardId) {
-        String host = "https://dskj.market.alicloudapi.com/platform/check/verified";
-        String url = host + "?certCode=" + cardId + "&realName=" + cardName;
-        HttpHeaders headers = new HttpHeaders();
-        headers.set("Authorization", "APPCODE " + this.APP_CODE);
-        headers.set("X-Ca-Nonce", UUID.randomUUID().toString());
-        HttpEntity httpEntity = new HttpEntity<>(headers);
-        CardCheckResult result;
-        try {
-            String resultStr = restTemplate.postForObject(url, httpEntity, String.class);
-            result = JsonUtil.toObj(resultStr, CardCheckResult.class);
-        } catch (Exception e) {
-            log.error("请求阿里实名认证接口异常(OLD), cardName : {}, cardId : {}, e : {}", cardName, cardId, e.getMessage());
-            throw new BaseException("请求阿里实名认证接口异常");
-        }
-        if (result == null || !result.isSuccess()) {
-            log.error("请求阿里实名认证接口返回值为空(OLD), cardName : {}, cardId : {}, result : {}", cardName, cardId, JsonUtil.toString(result));
-            throw new BaseException("实名认证失败");
-        }
-        return Tuples.of(result.isPast(), Strings.EMPTY);
-    }
-
     @Override
     public Tuple2<Boolean, String> userCardCheck(String cardName, String cardId) {
         String url = "https://eid.shumaidata.com/eid/check";
@@ -98,11 +73,11 @@ public class AliApiServiceImpl implements IAliApiService {
             String body = responseEntity.getBody();
             result = JsonUtil.toObj(body, CardCheckResult.class);
         } catch (Exception e) {
-            log.error("请求阿里实名认证接口异常(NEW), cardName : {}, cardId : {}, e : {}", cardName, cardId, e.getMessage());
+            log.error("请求阿里实名认证接口异常, cardName : {}, cardId : {}, e : {}", cardName, cardId, e.getMessage());
             throw new BaseException("请求阿里实名认证接口异常");
         }
         if (result == null || result.isFail()) {
-            log.error("请求阿里实名认证接口返回值为空(NEW),cardName : {},cardId : {}, result : {}", cardName, cardId, JsonUtil.toString(result));
+            log.error("请求阿里实名认证接口返回值为空,cardName : {},cardId : {}, result : {}", cardName, cardId, JsonUtil.toString(result));
             throw new BaseException("实名认证失败");
         }
         log.error("实名认证结果, result : {}", JsonUtil.toString(result));

+ 8 - 8
game-module/game-module-sdk/src/main/java/com/zanxiang/game/module/sdk/service/impl/CallBackServiceImpl.java

@@ -82,13 +82,13 @@ public class CallBackServiceImpl implements ICallBackService {
         try {
             //腾讯H5回传
             if (Objects.equals(agent.getAccountType(), AccountTypeEnum.TENCENT_H5.getValue())) {
-                TencentUserDTO tencentUserDTO = this.transform(user, agent, gameApplet);
+                TencentUserRpcDTO tencentUserDTO = this.transform(user, agent, gameApplet);
                 tencentUserActionBackRpc.backUser(tencentUserDTO);
                 gameBackLogService.addLog(user.getId(), null, "腾讯H5用户回传提交", JsonUtil.toString(tencentUserDTO));
             }
             //腾讯小游戏回传
             if (Objects.equals(agent.getAccountType(), AccountTypeEnum.TENCENT_MINI_GAME.getValue())) {
-                TencentUserDTO tencentUserDTO = this.transform(user, agent, gameApplet);
+                TencentUserRpcDTO tencentUserDTO = this.transform(user, agent, gameApplet);
                 //解析设置clickId
                 Map<String, String> channelMap = agentService.channelTransform(user.getChannel());
                 tencentUserDTO.setClickId(channelMap.get("gdt_vid"));
@@ -132,13 +132,13 @@ public class CallBackServiceImpl implements ICallBackService {
         try {
             //腾讯H5回传
             if (Objects.equals(agent.getAccountType(), AccountTypeEnum.TENCENT_H5.getValue())) {
-                TencentOrderDTO tencentOrderDTO = this.transform(platformOrderDTO, user, agent, gameApplet);
+                TencentOrderRpcDTO tencentOrderDTO = this.transform(platformOrderDTO, user, agent, gameApplet);
                 tencentUserActionBackRpc.backOrder(tencentOrderDTO);
                 gameBackLogService.addLog(user.getId(), platformOrderDTO.getOrderId(), "腾讯H5订单回传提交", JsonUtil.toString(tencentOrderDTO));
             }
             //腾讯小游戏回传
             if (Objects.equals(agent.getAccountType(), AccountTypeEnum.TENCENT_MINI_GAME.getValue())) {
-                TencentOrderDTO tencentOrderDTO = this.transform(platformOrderDTO, user, agent, gameApplet);
+                TencentOrderRpcDTO tencentOrderDTO = this.transform(platformOrderDTO, user, agent, gameApplet);
                 //解析设置clickId
                 Map<String, String> channelMap = agentService.channelTransform(user.getChannel());
                 tencentOrderDTO.setClickId(channelMap.get("gdt_vid"));
@@ -160,8 +160,8 @@ public class CallBackServiceImpl implements ICallBackService {
         }
     }
 
-    private TencentUserDTO transform(User user, Agent agent, GameApplet gameApplet) {
-        return TencentUserDTO.builder()
+    private TencentUserRpcDTO transform(User user, Agent agent, GameApplet gameApplet) {
+        return TencentUserRpcDTO.builder()
                 .backPolicyId(agent.getBackPolicyId())
                 .gameId(user.getGameId())
                 .adAccountId(agent.getAccountId())
@@ -194,8 +194,8 @@ public class CallBackServiceImpl implements ICallBackService {
                 .build();
     }
 
-    private TencentOrderDTO transform(PlatformOrderDTO platformOrderDTO, User user, Agent agent, GameApplet gameApplet) {
-        return TencentOrderDTO.builder()
+    private TencentOrderRpcDTO transform(PlatformOrderDTO platformOrderDTO, User user, Agent agent, GameApplet gameApplet) {
+        return TencentOrderRpcDTO.builder()
                 .backPolicyId(agent.getBackPolicyId())
                 .gameId(platformOrderDTO.getGameId())
                 .adAccountId(agent.getAccountId())

+ 2 - 9
game-module/game-module-sdk/src/main/java/com/zanxiang/game/module/sdk/service/impl/GameAppletServiceImpl.java

@@ -78,14 +78,12 @@ public class GameAppletServiceImpl extends ServiceImpl<GameAppletMapper, GameApp
 
     @Override
     public String appletMsgCheck(String appId, String signature, String timestamp, String nonce, String echoStr) throws Exception {
-        log.error("验证参数, appId : {}, signature : {}, timestamp : {}, nonce : {}, echoStr : {}", appId, signature, timestamp, nonce, echoStr);
         GameAppletDTO gameAppletDTO = this.getByAppId(appId);
         GameAppletDTO.MsgConfigBean msgConfigBean = gameAppletDTO.getMsgConfigBean();
         if (msgConfigBean == null) {
             throw new BaseException("参数错误, 小游戏应用缺少消息推送配置");
         }
         String mySignature = SignUtil.SHA1(msgConfigBean.getMsgPushToken(), timestamp, nonce);
-        log.error("计算出来的签名, signature : {},  mySignature : {}", signature, mySignature);
         if (!Objects.equals(mySignature, signature)) {
             throw new BaseException("验证签名不匹配");
         }
@@ -94,8 +92,6 @@ public class GameAppletServiceImpl extends ServiceImpl<GameAppletMapper, GameApp
 
     @Override
     public String appletMsg(String appId, String signature, String timestamp, String nonce, String postData) throws Exception {
-        log.error("接收到事件消息, appId : {}, signature : {}, timestamp : {}, nonce : {}, postData : {}",
-                appId, signature, timestamp, nonce, postData);
         String result = HttpStatusEnum.SUCCESS.getMsg();
         if (Strings.isBlank(postData)) {
             return result;
@@ -134,7 +130,6 @@ public class GameAppletServiceImpl extends ServiceImpl<GameAppletMapper, GameApp
     }
 
     private String miPayMessage(AppletMsgDTO appletMsgDTO, GameAppletDTO gameAppletDTO) {
-        log.error("米大师支付回调 appletMsgDTO : {}", JsonUtil.toString(appletMsgDTO));
         Map<String, Object> failResultMap = new HashMap<>(2);
         failResultMap.put("ErrCode", 99999L);
         failResultMap.put("ErrMsg", "internal error");
@@ -152,9 +147,7 @@ public class GameAppletServiceImpl extends ServiceImpl<GameAppletMapper, GameApp
         }
         //支付内容
         String payload = miniGame.getPayload();
-        log.error("-----------> 支付信息 payload : {}", payload);
         AppletMsgDTO.PayloadBean payloadBean = JsonUtil.toObj(payload, AppletMsgDTO.PayloadBean.class);
-        log.error("-----------> payload 对象转换成功 payloadBean : {}", JsonUtil.toString(payloadBean));
         if (payloadBean == null) {
             log.error("米大师支付回调参数错误, 没有支付信息 appletMsgDTO : {}", JsonUtil.toString(appletMsgDTO));
             return failResult;
@@ -176,7 +169,6 @@ public class GameAppletServiceImpl extends ServiceImpl<GameAppletMapper, GameApp
                     mySign, miniGame.getPayEventSig(), appKey);
             return failResult;
         }
-        log.error("米大师支付回调签名匹配成功, 开始计算业务数据--------------->");
         //更新订单信息
         Boolean miPayNotifyResult = miPayService.miPayNotify(payloadBean.getOutTradeNo(),
                 Tuples.of(weChatPayInfo.getMchOrderNo(), weChatPayInfo.getTransactionId()));
@@ -202,7 +194,8 @@ public class GameAppletServiceImpl extends ServiceImpl<GameAppletMapper, GameApp
 
     private String customLinkMessage(GameAppletDTO gameAppletDTO, UserDTO userDTO) {
         //判断是否配置了第三方客服链接
-        KfLink kfLink = kfLinkService.getById(gameAppletDTO.getAppId());
+        KfLink kfLink = kfLinkService.getOne(new LambdaQueryWrapper<KfLink>()
+                .eq(KfLink::getAppId, gameAppletDTO.getAppId()));
         if (kfLink == null || Strings.isBlank(kfLink.getCustomLink())) {
             return HttpStatusEnum.SUCCESS.getMsg();
         }

+ 6 - 8
game-module/game-module-sdk/src/main/java/com/zanxiang/game/module/sdk/service/impl/LoginServiceImpl.java

@@ -4,7 +4,10 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.zanxiang.game.module.base.pojo.enums.BanStatusEnum;
 import com.zanxiang.game.module.base.pojo.enums.HttpStatusEnum;
-import com.zanxiang.game.module.mybatis.entity.*;
+import com.zanxiang.game.module.mybatis.entity.GameExt;
+import com.zanxiang.game.module.mybatis.entity.User;
+import com.zanxiang.game.module.mybatis.entity.UserCard;
+import com.zanxiang.game.module.mybatis.entity.UserShare;
 import com.zanxiang.game.module.sdk.constant.RedisKeyConstant;
 import com.zanxiang.game.module.sdk.enums.LoginTypeEnum;
 import com.zanxiang.game.module.sdk.enums.SmsTypeEnum;
@@ -94,9 +97,6 @@ public class LoginServiceImpl implements IRegisterLoginService {
     @Autowired
     private IUserAgentLogService userAgentLogService;
 
-    @Autowired
-    private IGameService gameService;
-
     @Autowired
     private IGameUserRoleService gameUserRoleService;
 
@@ -252,16 +252,14 @@ public class LoginServiceImpl implements IRegisterLoginService {
     }
 
     private Tuple2<Boolean, Long> userGuideCheck(User user) {
-        //游戏信息
-        Game game = gameService.getById(user.getGameId());
         //非导量用户
-        if (user.getRelationUserId() == null || game.getGuideGameId() == null) {
+        if (user.getRelationUserId() == null) {
             return Tuples.of(Boolean.FALSE, 0L);
         }
         //导量用户信息
         User relationUser = userService.getById(user.getRelationUserId());
         //确定导量匹配
-        if (relationUser != null && Objects.equals(relationUser.getRelationUserId(), user.getId())) {
+        if (relationUser != null) {
             try {
                 //监测角色是否导全, 或者导过之后又跑去小程序创建了其他角色
                 gameUserRoleService.userGuideGameRoleCheck(user, relationUser);

+ 1 - 6
game-module/game-module-sdk/src/main/java/com/zanxiang/game/module/sdk/service/impl/PerformOrderServiceImpl.java

@@ -69,9 +69,6 @@ public class PerformOrderServiceImpl implements IPerformOrderService {
     @Autowired
     private IGameAppletService gameAppletService;
 
-    @Autowired
-    private IGameService gameService;
-
     @Override
     @Transactional(rollbackFor = {RuntimeException.class, Exception.class})
     public Boolean pushCp(PlatformOrderDTO orderInfo) {
@@ -87,12 +84,10 @@ public class PerformOrderServiceImpl implements IPerformOrderService {
         }
         //用户信息
         User user = userService.getById(orderInfo.getUserId());
-        //游戏信息
-        Game game = gameService.getById(orderInfo.getGameId());
         //回调CP
         Map<String, String> map = new HashMap<>(9);
         //用户存在关联用户id, 且游戏存在导量游戏id, 判定为导量用户, 提交CP原始用户id
-        if (user.getRelationUserId() != null && game.getGuideGameId() != null) {
+        if (user.getRelationUserId() != null) {
             map.put("userId", String.valueOf(user.getRelationUserId()));
         } else {
             map.put("userId", String.valueOf(orderInfo.getUserId()));

+ 1 - 13
game-module/game-module-sdk/src/main/java/com/zanxiang/game/module/sdk/service/impl/UserCardServiceImpl.java

@@ -17,7 +17,6 @@ import com.zanxiang.module.util.pojo.ResultVO;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.logging.log4j.util.Strings;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import reactor.util.function.Tuple2;
@@ -46,12 +45,6 @@ public class UserCardServiceImpl extends ServiceImpl<UserCardMapper, UserCard> i
     @Autowired
     private IAliApiService aliApiService;
 
-    /**
-     * 服务器域名
-     */
-    @Value("${server.domain}")
-    private String serverUrl;
-
     @Override
     @Transactional(rollbackFor = Exception.class)
     public ResultVO<Boolean> userAuthentication(UserCardUpdateParam param, UserData userData) {
@@ -77,12 +70,7 @@ public class UserCardServiceImpl extends ServiceImpl<UserCardMapper, UserCard> i
             return ResultVO.fail(HttpStatusEnum.CARD_ID_ERROR.getMsg());
         }
         //阿里实名认证
-        Tuple2<Boolean, String> tuple2;
-        if (this.serverUrl.contains("test")) {
-            tuple2 = aliApiService.authenticationCheck(cardName, cardId);
-        } else {
-            tuple2 = aliApiService.userCardCheck(cardName, cardId);
-        }
+        Tuple2<Boolean, String> tuple2 = aliApiService.userCardCheck(cardName, cardId);
         //实名认证失败
         if (!tuple2.getT1()) {
             return ResultVO.fail(HttpStatusEnum.AUTHENTICATION_FAIL.getMsg());

+ 1 - 6
game-module/game-module-sdk/src/main/java/com/zanxiang/game/module/sdk/service/impl/UserServiceImpl.java

@@ -4,7 +4,6 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.zanxiang.game.module.base.pojo.enums.HttpStatusEnum;
-import com.zanxiang.game.module.mybatis.entity.Game;
 import com.zanxiang.game.module.mybatis.entity.GameExt;
 import com.zanxiang.game.module.mybatis.entity.User;
 import com.zanxiang.game.module.mybatis.entity.UserCard;
@@ -50,9 +49,6 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements IU
     @Autowired
     private IUserCardService userCardService;
 
-    @Autowired
-    private IGameService gameService;
-
     @Override
     @Transactional(rollbackFor = Exception.class)
     public ResultVO<Boolean> findPassword(FindPasswordParam param, UserData userData) {
@@ -192,8 +188,7 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements IU
                 .token(userData.getToken())
                 .build();
         //判断用户是否为导量H5用户, 修正用户id
-        Game game = gameService.getById(user.getGameId());
-        if (user.getRelationUserId() != null && game.getGuideGameId() != null) {
+        if (user.getRelationUserId() != null) {
             userVO.setUserId(user.getRelationUserId());
         }
         log.error("获取用户详情返回用户信息, userVO : {}", JsonUtil.toString(userVO));

+ 4 - 4
game-module/game-module-sdk/src/main/resources/logback.xml

@@ -20,8 +20,8 @@
         <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
             <!-- 日志文件名格式 -->
             <fileNamePattern>${log.path}/info.%d{yyyy-MM-dd}.log</fileNamePattern>
-            <!-- 日志最大的历史 60天 -->
-            <maxHistory>60</maxHistory>
+            <!-- 日志最大的历史 30天 -->
+            <maxHistory>30</maxHistory>
         </rollingPolicy>
         <encoder>
             <pattern>${log.pattern}</pattern>
@@ -42,8 +42,8 @@
         <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
             <!-- 日志文件名格式 -->
             <fileNamePattern>${log.path}/error.%d{yyyy-MM-dd}.log</fileNamePattern>
-            <!-- 日志最大的历史 60天 -->
-            <maxHistory>60</maxHistory>
+            <!-- 日志最大的历史 30天 -->
+            <maxHistory>30</maxHistory>
         </rollingPolicy>
         <encoder>
             <pattern>${log.pattern}</pattern>