Forráskód Böngészése

腾讯新增创角回传

wcc 1 éve
szülő
commit
e65f1bd20b
24 módosított fájl, 1008 hozzáadás és 30 törlés
  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. 12 5
      game-back/game-back-base/src/main/java/com/zanxiang/game/back/base/rpc/ITencentMiniGameBackRpc.java
  5. 7 4
      game-back/game-back-base/src/main/java/com/zanxiang/game/back/base/rpc/ITencentUserActionBackRpc.java
  6. 7 0
      game-back/game-back-serve/src/main/java/com/zanxiang/game/back/serve/dao/mapper/GameTencentMiniGameRoleRegisterMapper.java
  7. 7 0
      game-back/game-back-serve/src/main/java/com/zanxiang/game/back/serve/dao/mapper/GameTencentRoleRegisterMapper.java
  8. 51 0
      game-back/game-back-serve/src/main/java/com/zanxiang/game/back/serve/pojo/dto/GameTencentMiniGameRoleRegisterDTO.java
  9. 77 0
      game-back/game-back-serve/src/main/java/com/zanxiang/game/back/serve/pojo/dto/GameTencentRoleRegisterDTO.java
  10. 75 0
      game-back/game-back-serve/src/main/java/com/zanxiang/game/back/serve/pojo/entity/GameTencentMiniGameRoleRegister.java
  11. 89 0
      game-back/game-back-serve/src/main/java/com/zanxiang/game/back/serve/pojo/entity/GameTencentRoleRegister.java
  12. 1 0
      game-back/game-back-serve/src/main/java/com/zanxiang/game/back/serve/pojo/enums/ActionTypeEnum.java
  13. 77 0
      game-back/game-back-serve/src/main/java/com/zanxiang/game/back/serve/pojo/vo/GameTencentMiniGameRoleRegisterVO.java
  14. 86 0
      game-back/game-back-serve/src/main/java/com/zanxiang/game/back/serve/pojo/vo/GameTencentRoleRegisterVO.java
  15. 54 6
      game-back/game-back-serve/src/main/java/com/zanxiang/game/back/serve/rpc/impl/TencentMiniGameBackRpcImpl.java
  16. 30 5
      game-back/game-back-serve/src/main/java/com/zanxiang/game/back/serve/rpc/impl/TencentUserActionBackRpcImpl.java
  17. 3 0
      game-back/game-back-serve/src/main/java/com/zanxiang/game/back/serve/service/IGameTencentMiniGameBackLogService.java
  18. 18 0
      game-back/game-back-serve/src/main/java/com/zanxiang/game/back/serve/service/IGameTencentMiniGameRoleRegisterService.java
  19. 18 0
      game-back/game-back-serve/src/main/java/com/zanxiang/game/back/serve/service/IGameTencentRoleRegisterService.java
  20. 19 0
      game-back/game-back-serve/src/main/java/com/zanxiang/game/back/serve/service/impl/GameTencentMiniGameBackLogServiceImpl.java
  21. 5 0
      game-back/game-back-serve/src/main/java/com/zanxiang/game/back/serve/service/impl/GameTencentMiniGameOrderServiceImpl.java
  22. 132 0
      game-back/game-back-serve/src/main/java/com/zanxiang/game/back/serve/service/impl/GameTencentMiniGameRoleRegisterServiceImpl.java
  23. 166 0
      game-back/game-back-serve/src/main/java/com/zanxiang/game/back/serve/service/impl/GameTencentRoleRegisterServiceImpl.java
  24. 8 8
      game-module/game-module-sdk/src/main/java/com/zanxiang/game/module/sdk/service/impl/CallBackServiceImpl.java

+ 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

+ 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);
 }

+ 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> {
+}

+ 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;
+}

+ 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","下单");
 
 

+ 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));
+    }
 }

+ 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);
+}

+ 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;
+    }
+}

+ 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())