Browse Source

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

zhimo 1 year ago
parent
commit
8e88d20161
29 changed files with 2486 additions and 256 deletions
  1. 7 0
      game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/controller/AdsOrderDetailController.java
  2. 14 0
      game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/controller/GameDataController.java
  3. 6 0
      game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/pojo/dto/AdsOrderDetailListDTO.java
  4. 70 0
      game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/pojo/dto/LtvDataDTO.java
  5. 58 0
      game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/pojo/dto/LtvDataTotalDTO.java
  6. 812 0
      game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/pojo/entity/AdsGameFirstNewUserAgainDay.java
  7. 9 0
      game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/pojo/vo/LtvDataTotalVO.java
  8. 244 0
      game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/pojo/vo/LtvDataVO.java
  9. 15 0
      game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/service/IGameDataService.java
  10. 1 0
      game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/service/impl/AdsOrderDetailService.java
  11. 644 247
      game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/service/impl/GameDataServiceImpl.java
  12. 7 7
      game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/service/impl/PromotionDayServiceImpl.java
  13. 1 1
      game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/ManageApplication.java
  14. 54 0
      game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/controller/GameUserConfigController.java
  15. 14 0
      game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/controller/OrderController.java
  16. 49 0
      game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/pojo/params/GameRemitLogListParam.java
  17. 35 0
      game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/pojo/params/GameUserConfigAddUpdateParam.java
  18. 21 0
      game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/pojo/params/GameUserConfigListParam.java
  19. 72 0
      game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/pojo/vo/GameRemitLogVO.java
  20. 51 0
      game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/pojo/vo/GameUserConfigListVO.java
  21. 11 0
      game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/service/IGameRemitLogService.java
  22. 40 0
      game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/service/IGameUserConfigService.java
  23. 69 0
      game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/service/impl/GameRemitLogServiceImpl.java
  24. 4 1
      game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/service/impl/GameServerServiceImpl.java
  25. 87 0
      game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/service/impl/GameUserConfigServiceImpl.java
  26. 1 0
      game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/service/impl/OrderServiceImpl.java
  27. 10 0
      game-module/game-module-mybatis/src/main/java/com/zanxiang/game/module/mybatis/entity/GameServer.java
  28. 68 0
      game-module/game-module-mybatis/src/main/java/com/zanxiang/game/module/mybatis/entity/GameUserConfig.java
  29. 12 0
      game-module/game-module-mybatis/src/main/java/com/zanxiang/game/module/mybatis/mapper/GameUserConfigMapper.java

+ 7 - 0
game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/controller/AdsOrderDetailController.java

@@ -11,6 +11,7 @@ import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiResponse;
 import io.swagger.annotations.ApiResponses;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.PostMapping;
@@ -32,6 +33,12 @@ public class AdsOrderDetailController {
     @ApiResponses(value = {@ApiResponse(code = 200, message = "成功", response = AdsOrderDetailVO.class)})
     @PostMapping("/list")
     public ResultVO<Page<AdsOrderDetailVO>> orderList(@Validated @RequestBody AdsOrderDetailListDTO dto) {
+        if (StringUtils.isBlank(dto.getSortFiled())) {
+            dto.setSortFiled("order_create_time");
+        }
+        if (StringUtils.isBlank(dto.getSortType())) {
+            dto.setSortType("desc");
+        }
         return ResultVO.ok(gameOrderService.listOfPage(dto));
     }
 }

+ 14 - 0
game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/controller/GameDataController.java

@@ -87,4 +87,18 @@ public class GameDataController {
         return ResultVO.ok(gameDataService.getGameDataAgainDay(dto));
     }
 
+    @ApiOperation(value = "LTV数据")
+    //@PreAuthorize(permissionKey = "gameData:adsGameDay:ltv")
+    @PostMapping("/ltv")
+    public ResultVO<Page<LtvDataVO>> getLtvData(@RequestBody LtvDataDTO dto) {
+        return ResultVO.ok(gameDataService.getLtvData(dto));
+    }
+
+    @ApiOperation(value = "LTV数据总计一栏")
+    //@PreAuthorize(permissionKey = "gameData:adsGameDay:ltvTotal")
+    @PostMapping("/ltv/total")
+    public ResultVO<LtvDataTotalVO> getLtvDataTotal(@RequestBody LtvDataTotalDTO dto) {
+        return ResultVO.ok(gameDataService.getLtvTotalData(dto));
+    }
+
 }

+ 6 - 0
game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/pojo/dto/AdsOrderDetailListDTO.java

@@ -72,4 +72,10 @@ public class AdsOrderDetailListDTO extends BasePage {
 
     @ApiModelProperty(notes = "用户注册时间")
     private LocalDateTime endRegTime;
+
+    @ApiModelProperty(notes = "排序字段")
+    private String sortFiled;
+
+    @ApiModelProperty(notes = "排序 ASC/DESC")
+    private String sortType;
 }

+ 70 - 0
game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/pojo/dto/LtvDataDTO.java

@@ -0,0 +1,70 @@
+package com.zanxiang.game.data.serve.pojo.dto;
+
+import com.zanxiang.game.data.serve.pojo.base.BasePage;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.time.LocalDate;
+
+/**
+ * @author tianhua
+ * @time 2023/8/9
+ * @Description 查询LTV数据的条件参数实体
+ **/
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+@Builder
+public class LtvDataDTO extends BasePage {
+
+    /**
+     * 游戏ID
+     */
+    @ApiModelProperty(notes = "游戏ID")
+    private Long gameId;
+
+    /**
+     * 推广游戏应用类别
+     */
+    @ApiModelProperty(notes = "游戏类别")
+    private Long classify;
+
+    /**
+     * SDK来源
+     */
+    @ApiModelProperty(value = "SDK来源")
+    private String sourceSystem;
+
+    /**
+     * 注册时间(开始)
+     */
+    @ApiModelProperty(notes = "注册开始时间")
+    private LocalDate registeredBeginDate;
+
+    /**
+     * 注册时间(结束)
+     */
+    @ApiModelProperty(notes = "注册结束时间")
+    private LocalDate registeredEndDate;
+
+    /**
+     * 选择展示数据种类
+     */
+    @ApiModelProperty(notes = "选择展示数据种类:buy -> 买量 ; nature -> 自然量 ; total -> 总量")
+    private String tableTypes;
+
+    /**
+     * 排序字段
+     */
+    @ApiModelProperty(notes = "排序字段")
+    private String sortFiled;
+
+    /**
+     * 排序方式:升序asc;降序desc
+     */
+    @ApiModelProperty(notes = "排序方式:升序asc;降序desc")
+    private String sortType;
+}

+ 58 - 0
game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/pojo/dto/LtvDataTotalDTO.java

@@ -0,0 +1,58 @@
+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.time.LocalDate;
+
+/**
+ * @author tianhua
+ * @time 2023/8/9
+ * @Description 查询LTV数据总计的条件参数实体
+ **/
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+@Builder
+public class LtvDataTotalDTO{
+
+    /**
+     * 游戏ID
+     */
+    @ApiModelProperty(notes = "游戏ID")
+    private Long gameId;
+
+    /**
+     * 推广游戏应用类别
+     */
+    @ApiModelProperty(notes = "游戏类别")
+    private Long classify;
+
+    /**
+     * SDK来源
+     */
+    @ApiModelProperty(value = "SDK来源")
+    private String sourceSystem;
+
+    /**
+     * 注册时间(开始)
+     */
+    @ApiModelProperty(notes = "注册开始时间")
+    private LocalDate registeredBeginDate;
+
+    /**
+     * 注册时间(结束)
+     */
+    @ApiModelProperty(notes = "注册结束时间")
+    private LocalDate registeredEndDate;
+
+    /**
+     * 选择展示数据种类
+     */
+    @ApiModelProperty(notes = "选择展示数据种类:buy -> 买量 ; nature -> 自然量 ; total -> 总量")
+    private String tableTypes;
+
+}

+ 812 - 0
game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/pojo/entity/AdsGameFirstNewUserAgainDay.java

@@ -0,0 +1,812 @@
+package com.zanxiang.game.data.serve.pojo.entity;
+
+import lombok.Data;
+import org.nutz.dao.entity.annotation.Column;
+import org.nutz.dao.entity.annotation.PK;
+import org.nutz.dao.entity.annotation.Table;
+
+import java.io.Serializable;
+import java.time.LocalDate;
+
+/**
+ * <p>
+ * 游戏首日充值用户首日注册且充值用户复充趋势
+ * </p>
+ *
+ * @author auto
+ * @since 2023-08-09
+ */
+@Data
+@Table(AdsGameFirstNewUserAgainDay.TABLE_NAME)
+@PK({"dt", "sourceSystem", "gameId", "gameName"})
+public class AdsGameFirstNewUserAgainDay implements Serializable {
+    private static final long serialVersionUID = 1L;
+    public static final String TABLE_NAME = "ads_game_first_new_user_again_day";
+
+    /**
+     * 用户注册时间
+     */
+    private LocalDate dt;
+
+    /**
+     * SDK来源
+     */
+    private String sourceSystem;
+
+    /**
+     * 游戏ID
+     */
+    private Long gameId;
+
+    /**
+     * 游戏名称
+     */
+    private String gameName;
+
+    /**
+     * 游戏类别
+     */
+    @Column
+    private Long classify;
+
+    /**
+     * 首日注册且充值用户复充趋势第1天:充值金额,充值人数,充值占比(总)
+     */
+    @Column
+    private String againDa1;
+
+    /**
+     * 首日注册且充值用户复充趋势在第2天:充值金额,充值人数,充值占比(总)
+     */
+    @Column
+    private String againDa2;
+
+    /**
+     * 首日注册且充值用户复充趋势在第3天:充值金额,充值人数,充值占比(总)
+     */
+    @Column
+    private String againDa3;
+
+    /**
+     * 首日注册且充值用户复充趋势在第4天:充值金额,充值人数,充值占比(总)
+     */
+    @Column
+    private String againDa4;
+
+    /**
+     * 首日注册且充值用户复充趋势在第5天:充值金额,充值人数,充值占比(总)
+     */
+    @Column
+    private String againDa5;
+
+    /**
+     * 首日注册且充值用户复充趋势在第6天:充值金额,充值人数,充值占比(总)
+     */
+    @Column
+    private String againDa6;
+
+    /**
+     * 首日注册且充值用户复充趋势在第7天:充值金额,充值人数,充值占比(总)
+     */
+    @Column
+    private String againDa7;
+
+    /**
+     * 首日注册且充值用户复充趋势在第8天:充值金额,充值人数,充值占比(总)
+     */
+    @Column
+    private String againDa8;
+
+    /**
+     * 首日注册且充值用户复充趋势在第9天:充值金额,充值人数,充值占比(总)
+     */
+    @Column
+    private String againDa9;
+
+    /**
+     * 首日注册且充值用户复充趋势在第10天:充值金额,充值人数,充值占比(总)
+     */
+    @Column
+    private String againDa10;
+
+    /**
+     * 首日注册且充值用户复充趋势在第11天:充值金额,充值人数,充值占比(总)
+     */
+    @Column
+    private String againDa11;
+
+    /**
+     * 首日注册且充值用户复充趋势在第12天:充值金额,充值人数,充值占比(总)
+     */
+    @Column
+    private String againDa12;
+
+    /**
+     * 首日注册且充值用户复充趋势在第13天:充值金额,充值人数,充值占比(总)
+     */
+    @Column
+    private String againDa13;
+
+    /**
+     * 首日注册且充值用户复充趋势在第14天:充值金额,充值人数,充值占比(总)
+     */
+    @Column
+    private String againDa14;
+
+    /**
+     * 首日注册且充值用户复充趋势在第15天:充值金额,充值人数,充值占比(总)
+     */
+    @Column
+    private String againDa15;
+
+    /**
+     * 首日注册且充值用户复充趋势在第16天:充值金额,充值人数,充值占比(总)
+     */
+    @Column
+    private String againDa16;
+
+    /**
+     * 首日注册且充值用户复充趋势在第17天:充值金额,充值人数,充值占比(总)
+     */
+    @Column
+    private String againDa17;
+
+    /**
+     * 首日注册且充值用户复充趋势在第18天:充值金额,充值人数,充值占比(总)
+     */
+    @Column
+    private String againDa18;
+
+    /**
+     * 首日注册且充值用户复充趋势在第19天:充值金额,充值人数,充值占比(总)
+     */
+    @Column
+    private String againDa19;
+
+    /**
+     * 首日注册且充值用户复充趋势在第20天:充值金额,充值人数,充值占比(总)
+     */
+    @Column
+    private String againDa20;
+
+    /**
+     * 首日注册且充值用户复充趋势在第21天:充值金额,充值人数,充值占比(总)
+     */
+    @Column
+    private String againDa21;
+
+    /**
+     * 首日注册且充值用户复充趋势在第22天:充值金额,充值人数,充值占比(总)
+     */
+    @Column
+    private String againDa22;
+
+    /**
+     * 首日注册且充值用户复充趋势在第23天:充值金额,充值人数,充值占比(总)
+     */
+    @Column
+    private String againDa23;
+
+    /**
+     * 首日注册且充值用户复充趋势在第24天:充值金额,充值人数,充值占比(总)
+     */
+    @Column
+    private String againDa24;
+
+    /**
+     * 首日注册且充值用户复充趋势在第25天:充值金额,充值人数,充值占比(总)
+     */
+    @Column
+    private String againDa25;
+
+    /**
+     * 首日注册且充值用户复充趋势在第26天:充值金额,充值人数,充值占比(总)
+     */
+    @Column
+    private String againDa26;
+
+    /**
+     * 首日注册且充值用户复充趋势在第27天:充值金额,充值人数,充值占比(总)
+     */
+    @Column
+    private String againDa27;
+
+    /**
+     * 首日注册且充值用户复充趋势在第28天:充值金额,充值人数,充值占比(总)
+     */
+    @Column
+    private String againDa28;
+
+    /**
+     * 首日注册且充值用户复充趋势在第29天:充值金额,充值人数,充值占比(总)
+     */
+    @Column
+    private String againDa29;
+
+    /**
+     * 首日注册且充值用户复充趋势在第30天:充值金额,充值人数,充值占比(总)
+     */
+    @Column
+    private String againDa30;
+
+    /**
+     * 首日注册且充值用户复充趋势在第2月:充值金额,充值人数,充值占比(总)
+     */
+    @Column
+    private String againM2;
+
+    /**
+     * 首日注册且充值用户复充趋势在第3月:充值金额,充值人数,充值占比(总)
+     */
+    @Column
+    private String againM3;
+
+    /**
+     * 首日注册且充值用户复充趋势在第4月:充值金额,充值人数,充值占比(总)
+     */
+    @Column
+    private String againM4;
+
+    /**
+     * 首日注册且充值用户复充趋势在第5月:充值金额,充值人数,充值占比(总)
+     */
+    @Column
+    private String againM5;
+
+    /**
+     * 首日注册且充值用户复充趋势在第6月:充值金额,充值人数,充值占比(总)
+     */
+    @Column
+    private String againM6;
+
+    /**
+     * 首日注册且充值用户复充趋势在第7月:充值金额,充值人数,充值占比(总)
+     */
+    @Column
+    private String againM7;
+
+    /**
+     * 首日注册且充值用户复充趋势在第8月:充值金额,充值人数,充值占比(总)
+     */
+    @Column
+    private String againM8;
+
+    /**
+     * 首日注册且充值用户复充趋势在第9月:充值金额,充值人数,充值占比(总)
+     */
+    @Column
+    private String againM9;
+
+    /**
+     * 首日注册且充值用户复充趋势在第10月:充值金额,充值人数,充值占比(总)
+     */
+    @Column
+    private String againM10;
+
+    /**
+     * 首日注册且充值用户复充趋势在第11月:充值金额,充值人数,充值占比(总)
+     */
+    @Column
+    private String againM11;
+
+    /**
+     * 首日注册且充值用户复充趋势在第1年:充值金额,充值人数,充值占比(总)
+     */
+    @Column
+    private String againY1;
+
+    /**
+     * 首日注册且充值的用户至今:充值金额,充值人数,充值占比(总)
+     */
+    @Column
+    private String againTotal;
+
+    /**
+     * 首日注册且充值用户复充趋势第1天:充值金额,充值人数,充值占比(买量)
+     */
+    @Column
+    private String buyDa1;
+
+    /**
+     * 首日注册且充值用户复充趋势在第2天:充值金额,充值人数,充值占比(买量)
+     */
+    @Column
+    private String buyDa2;
+
+    /**
+     * 首日注册且充值用户复充趋势在第3天:充值金额,充值人数,充值占比(买量)
+     */
+    @Column
+    private String buyDa3;
+
+    /**
+     * 首日注册且充值用户复充趋势在第4天:充值金额,充值人数,充值占比(买量)
+     */
+    @Column
+    private String buyDa4;
+
+    /**
+     * 首日注册且充值用户复充趋势在第5天:充值金额,充值人数,充值占比(买量)
+     */
+    @Column
+    private String buyDa5;
+
+    /**
+     * 首日注册且充值用户复充趋势在第6天:充值金额,充值人数,充值占比(买量)
+     */
+    @Column
+    private String buyDa6;
+
+    /**
+     * 首日注册且充值用户复充趋势在第7天:充值金额,充值人数,充值占比(买量)
+     */
+    @Column
+    private String buyDa7;
+
+    /**
+     * 首日注册且充值用户复充趋势在第8天:充值金额,充值人数,充值占比(买量)
+     */
+    @Column
+    private String buyDa8;
+
+    /**
+     * 首日注册且充值用户复充趋势在第9天:充值金额,充值人数,充值占比(买量)
+     */
+    @Column
+    private String buyDa9;
+
+    /**
+     * 首日注册且充值用户复充趋势在第10天:充值金额,充值人数,充值占比(买量)
+     */
+    @Column
+    private String buyDa10;
+
+    /**
+     * 首日注册且充值用户复充趋势在第11天:充值金额,充值人数,充值占比(买量)
+     */
+    @Column
+    private String buyDa11;
+
+    /**
+     * 首日注册且充值用户复充趋势在第12天:充值金额,充值人数,充值占比(买量)
+     */
+    @Column
+    private String buyDa12;
+
+    /**
+     * 首日注册且充值用户复充趋势在第13天:充值金额,充值人数,充值占比(买量)
+     */
+    @Column
+    private String buyDa13;
+
+    /**
+     * 首日注册且充值用户复充趋势在第14天:充值金额,充值人数,充值占比(买量)
+     */
+    @Column
+    private String buyDa14;
+
+    /**
+     * 首日注册且充值用户复充趋势在第15天:充值金额,充值人数,充值占比(买量)
+     */
+    @Column
+    private String buyDa15;
+
+    /**
+     * 首日注册且充值用户复充趋势在第16天:充值金额,充值人数,充值占比(买量)
+     */
+    @Column
+    private String buyDa16;
+
+    /**
+     * 首日注册且充值用户复充趋势在第17天:充值金额,充值人数,充值占比(买量)
+     */
+    @Column
+    private String buyDa17;
+
+    /**
+     * 首日注册且充值用户复充趋势在第18天:充值金额,充值人数,充值占比(买量)
+     */
+    @Column
+    private String buyDa18;
+
+    /**
+     * 首日注册且充值用户复充趋势在第19天:充值金额,充值人数,充值占比(买量)
+     */
+    @Column
+    private String buyDa19;
+
+    /**
+     * 首日注册且充值用户复充趋势在第20天:充值金额,充值人数,充值占比(买量)
+     */
+    @Column
+    private String buyDa20;
+
+    /**
+     * 首日注册且充值用户复充趋势在第21天:充值金额,充值人数,充值占比(买量)
+     */
+    @Column
+    private String buyDa21;
+
+    /**
+     * 首日注册且充值用户复充趋势在第22天:充值金额,充值人数,充值占比(买量)
+     */
+    @Column
+    private String buyDa22;
+
+    /**
+     * 首日注册且充值用户复充趋势在第23天:充值金额,充值人数,充值占比(买量)
+     */
+    @Column
+    private String buyDa23;
+
+    /**
+     * 首日注册且充值用户复充趋势在第24天:充值金额,充值人数,充值占比(买量)
+     */
+    @Column
+    private String buyDa24;
+
+    /**
+     * 首日注册且充值用户复充趋势在第25天:充值金额,充值人数,充值占比(买量)
+     */
+    @Column
+    private String buyDa25;
+
+    /**
+     * 首日注册且充值用户复充趋势在第26天:充值金额,充值人数,充值占比(买量)
+     */
+    @Column
+    private String buyDa26;
+
+    /**
+     * 首日注册且充值用户复充趋势在第27天:充值金额,充值人数,充值占比(买量)
+     */
+    @Column
+    private String buyDa27;
+
+    /**
+     * 首日注册且充值用户复充趋势在第28天:充值金额,充值人数,充值占比(买量)
+     */
+    @Column
+    private String buyDa28;
+
+    /**
+     * 首日注册且充值用户复充趋势在第29天:充值金额,充值人数,充值占比(买量)
+     */
+    @Column
+    private String buyDa29;
+
+    /**
+     * 首日注册且充值用户复充趋势在第30天:充值金额,充值人数,充值占比(买量)
+     */
+    @Column
+    private String buyDa30;
+
+    /**
+     * 首日注册且充值用户复充趋势在第2月:充值金额,充值人数,充值占比(买量)
+     */
+    @Column
+    private String buyM2;
+
+    /**
+     * 首日注册且充值用户复充趋势在第3月:充值金额,充值人数,充值占比(买量)
+     */
+    @Column
+    private String buyM3;
+
+    /**
+     * 首日注册且充值用户复充趋势在第4月:充值金额,充值人数,充值占比(买量)
+     */
+    @Column
+    private String buyM4;
+
+    /**
+     * 首日注册且充值用户复充趋势在第5月:充值金额,充值人数,充值占比(买量)
+     */
+    @Column
+    private String buyM5;
+
+    /**
+     * 首日注册且充值用户复充趋势在第6月:充值金额,充值人数,充值占比(买量)
+     */
+    @Column
+    private String buyM6;
+
+    /**
+     * 首日注册且充值用户复充趋势在第7月:充值金额,充值人数,充值占比(买量)
+     */
+    @Column
+    private String buyM7;
+
+    /**
+     * 首日注册且充值用户复充趋势在第8月:充值金额,充值人数,充值占比(买量)
+     */
+    @Column
+    private String buyM8;
+
+    /**
+     * 首日注册且充值用户复充趋势在第9月:充值金额,充值人数,充值占比(买量)
+     */
+    @Column
+    private String buyM9;
+
+    /**
+     * 首日注册且充值用户复充趋势在第10月:充值金额,充值人数,充值占比(买量)
+     */
+    @Column
+    private String buyM10;
+
+    /**
+     * 首日注册且充值用户复充趋势在第11月:充值金额,充值人数,充值占比(买量)
+     */
+    @Column
+    private String buyM11;
+
+    /**
+     * 首日注册且充值用户复充趋势在第1年:充值金额,充值人数,充值占比(买量)
+     */
+    @Column
+    private String buyY1;
+
+    /**
+     * 首日注册且充值的用户至今:充值金额,充值人数,充值占比(买量)
+     */
+    @Column
+    private String buyTotal;
+
+    /**
+     * 首日注册且充值用户复充趋势第1天:充值金额,充值人数,充值占比(自然量)
+     */
+    @Column
+    private String natureDa1;
+
+    /**
+     * 首日注册且充值用户复充趋势在第2天:充值金额,充值人数,充值占比(自然量)
+     */
+    @Column
+    private String natureDa2;
+
+    /**
+     * 首日注册且充值用户复充趋势在第3天:充值金额,充值人数,充值占比(自然量)
+     */
+    @Column
+    private String natureDa3;
+
+    /**
+     * 首日注册且充值用户复充趋势在第4天:充值金额,充值人数,充值占比(自然量)
+     */
+    @Column
+    private String natureDa4;
+
+    /**
+     * 首日注册且充值用户复充趋势在第5天:充值金额,充值人数,充值占比(自然量)
+     */
+    @Column
+    private String natureDa5;
+
+    /**
+     * 首日注册且充值用户复充趋势在第6天:充值金额,充值人数,充值占比(自然量)
+     */
+    @Column
+    private String natureDa6;
+
+    /**
+     * 首日注册且充值用户复充趋势在第7天:充值金额,充值人数,充值占比(自然量)
+     */
+    @Column
+    private String natureDa7;
+
+    /**
+     * 首日注册且充值用户复充趋势在第8天:充值金额,充值人数,充值占比(自然量)
+     */
+    @Column
+    private String natureDa8;
+
+    /**
+     * 首日注册且充值用户复充趋势在第9天:充值金额,充值人数,充值占比(自然量)
+     */
+    @Column
+    private String natureDa9;
+
+    /**
+     * 首日注册且充值用户复充趋势在第10天:充值金额,充值人数,充值占比(自然量)
+     */
+    @Column
+    private String natureDa10;
+
+    /**
+     * 首日注册且充值用户复充趋势在第11天:充值金额,充值人数,充值占比(自然量)
+     */
+    @Column
+    private String natureDa11;
+
+    /**
+     * 首日注册且充值用户复充趋势在第12天:充值金额,充值人数,充值占比(自然量)
+     */
+    @Column
+    private String natureDa12;
+
+    /**
+     * 首日注册且充值用户复充趋势在第13天:充值金额,充值人数,充值占比(自然量)
+     */
+    @Column
+    private String natureDa13;
+
+    /**
+     * 首日注册且充值用户复充趋势在第14天:充值金额,充值人数,充值占比(自然量)
+     */
+    @Column
+    private String natureDa14;
+
+    /**
+     * 首日注册且充值用户复充趋势在第15天:充值金额,充值人数,充值占比(自然量)
+     */
+    @Column
+    private String natureDa15;
+
+    /**
+     * 首日注册且充值用户复充趋势在第16天:充值金额,充值人数,充值占比(自然量)
+     */
+    @Column
+    private String natureDa16;
+
+    /**
+     * 首日注册且充值用户复充趋势在第17天:充值金额,充值人数,充值占比(自然量)
+     */
+    @Column
+    private String natureDa17;
+
+    /**
+     * 首日注册且充值用户复充趋势在第18天:充值金额,充值人数,充值占比(自然量)
+     */
+    @Column
+    private String natureDa18;
+
+    /**
+     * 首日注册且充值用户复充趋势在第19天:充值金额,充值人数,充值占比(自然量)
+     */
+    @Column
+    private String natureDa19;
+
+    /**
+     * 首日注册且充值用户复充趋势在第20天:充值金额,充值人数,充值占比(自然量)
+     */
+    @Column
+    private String natureDa20;
+
+    /**
+     * 首日注册且充值用户复充趋势在第21天:充值金额,充值人数,充值占比(自然量)
+     */
+    @Column
+    private String natureDa21;
+
+    /**
+     * 首日注册且充值用户复充趋势在第22天:充值金额,充值人数,充值占比(自然量)
+     */
+    @Column
+    private String natureDa22;
+
+    /**
+     * 首日注册且充值用户复充趋势在第23天:充值金额,充值人数,充值占比(自然量)
+     */
+    @Column
+    private String natureDa23;
+
+    /**
+     * 首日注册且充值用户复充趋势在第24天:充值金额,充值人数,充值占比(自然量)
+     */
+    @Column
+    private String natureDa24;
+
+    /**
+     * 首日注册且充值用户复充趋势在第25天:充值金额,充值人数,充值占比(自然量)
+     */
+    @Column
+    private String natureDa25;
+
+    /**
+     * 首日注册且充值用户复充趋势在第26天:充值金额,充值人数,充值占比(自然量)
+     */
+    @Column
+    private String natureDa26;
+
+    /**
+     * 首日注册且充值用户复充趋势在第27天:充值金额,充值人数,充值占比(自然量)
+     */
+    @Column
+    private String natureDa27;
+
+    /**
+     * 首日注册且充值用户复充趋势在第28天:充值金额,充值人数,充值占比(自然量)
+     */
+    @Column
+    private String natureDa28;
+
+    /**
+     * 首日注册且充值用户复充趋势在第29天:充值金额,充值人数,充值占比(自然量)
+     */
+    @Column
+    private String natureDa29;
+
+    /**
+     * 首日注册且充值用户复充趋势在第30天:充值金额,充值人数,充值占比(自然量)
+     */
+    @Column
+    private String natureDa30;
+
+    /**
+     * 首日注册且充值用户复充趋势在第2月:充值金额,充值人数,充值占比(自然量)
+     */
+    @Column
+    private String natureM2;
+
+    /**
+     * 首日注册且充值用户复充趋势在第3月:充值金额,充值人数,充值占比(自然量)
+     */
+    @Column
+    private String natureM3;
+
+    /**
+     * 首日注册且充值用户复充趋势在第4月:充值金额,充值人数,充值占比(自然量)
+     */
+    @Column
+    private String natureM4;
+
+    /**
+     * 首日注册且充值用户复充趋势在第5月:充值金额,充值人数,充值占比(自然量)
+     */
+    @Column
+    private String natureM5;
+
+    /**
+     * 首日注册且充值用户复充趋势在第6月:充值金额,充值人数,充值占比(自然量)
+     */
+    @Column
+    private String natureM6;
+
+    /**
+     * 首日注册且充值用户复充趋势在第7月:充值金额,充值人数,充值占比(自然量)
+     */
+    @Column
+    private String natureM7;
+
+    /**
+     * 首日注册且充值用户复充趋势在第8月:充值金额,充值人数,充值占比(自然量)
+     */
+    @Column
+    private String natureM8;
+
+    /**
+     * 首日注册且充值用户复充趋势在第9月:充值金额,充值人数,充值占比(自然量)
+     */
+    @Column
+    private String natureM9;
+
+    /**
+     * 首日注册且充值用户复充趋势在第10月:充值金额,充值人数,充值占比(自然量)
+     */
+    @Column
+    private String natureM10;
+
+    /**
+     * 首日注册且充值用户复充趋势在第11月:充值金额,充值人数,充值占比(自然量)
+     */
+    @Column
+    private String natureM11;
+
+    /**
+     * 首日注册且充值用户复充趋势在第1年:充值金额,充值人数,充值占比(自然量)
+     */
+    @Column
+    private String natureY1;
+
+    /**
+     * 首日注册且充值的用户至今:充值金额,充值人数,充值占比(自然量)
+     */
+    @Column
+    private String natureTotal;
+
+
+}
+
+
+

+ 9 - 0
game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/pojo/vo/LtvDataTotalVO.java

@@ -0,0 +1,9 @@
+package com.zanxiang.game.data.serve.pojo.vo;
+
+/**
+ * @author tianhua
+ * @time 2023/8/9
+ * @Description
+ **/
+public class LtvDataTotalVO {
+}

+ 244 - 0
game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/pojo/vo/LtvDataVO.java

@@ -0,0 +1,244 @@
+package com.zanxiang.game.data.serve.pojo.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.time.LocalDate;
+
+/**
+ * @author tianhua
+ * @time 2023/8/9
+ * @Description ltv数据展示实体
+ **/
+@Data
+public class LtvDataVO {
+
+    /**
+     * 游戏ID
+     */
+    @ApiModelProperty(value = "游戏ID")
+    private Long gameId;
+
+    /**
+     * 推广游戏名称
+     */
+    @ApiModelProperty(value = "游戏名称")
+    private String gameName;
+
+    /**
+     * 推广游戏应用类型
+     */
+    @ApiModelProperty(value = "游戏类型")
+    private Long gameClassify;
+
+    /**
+     * SDK来源
+     */
+    @ApiModelProperty(value = "SDK来源")
+    private String sourceSystem;
+
+    /**
+     * 注册时间
+     */
+    @ApiModelProperty(value = "注册时间(消耗时间)")
+    private LocalDate costDate;
+
+    /**
+     * 消耗
+     */
+    @ApiModelProperty(value = "消耗")
+    private BigDecimal cost;
+
+    /**
+     * 注册人数
+     */
+    @ApiModelProperty(value = "注册人数")
+    private Long regNum;
+
+    /**
+     * 首日新用户充值次数(总量)
+     */
+    @ApiModelProperty(value = "首日新用户充值次数(总量)")
+    private Long firstNewUserAmountCount;
+
+    /**
+     * 首日新用户充值人数(总量)
+     */
+    @ApiModelProperty(value = "首日新用户充值人数(总量)")
+    private Long firstNewUserAmountNum;
+
+    /**
+     * 首日新用户充值金额(总量)
+     */
+    @ApiModelProperty(value = "首日新用户充值金额(总量)")
+    private BigDecimal firstNewUserAmount;
+
+    /**
+     * 老用户充值次数(总量)
+     */
+    @ApiModelProperty(value = "老用户充值次数(总量)")
+    private Long oldUserCount;
+
+    /**
+     * 老用户充值人数(总量)
+     */
+    @ApiModelProperty(value = "老用户充值人数(总量)")
+    private Long oldUserNum;
+
+    /**
+     * 老用户充值金额(总量)
+     */
+    @ApiModelProperty(value = "老用户充值金额(总量)")
+    private BigDecimal oldUserAmount;
+
+    /**
+     * 账面充值次数(总量)
+     */
+    @ApiModelProperty(value = "账面充值次数(总量)")
+    private Long amountCount;
+
+    /**
+     * 账面充值人数(总量)
+     */
+    @ApiModelProperty(value = "账面充值人数(总量)")
+    private Long amountNum;
+
+    /**
+     * 账面充值金额(总量)
+     */
+    @ApiModelProperty(value = "账面充值金额(总量)")
+    private BigDecimal amount;
+
+    /**
+     * 新用户累计充值次数(总量)
+     */
+    @ApiModelProperty(value = "新用户累计充值次数(总量)")
+    private Long newUserTotalAmountCount;
+
+    /**
+     * 新用户累计充值人数(总量)
+     */
+    @ApiModelProperty(value = "新用户累计充值人数(总量)")
+    private Long newUserTotalAmountNum;
+
+    /**
+     * 新用户累计充值金额(总量)
+     */
+    @ApiModelProperty(value = "新用户累计充值金额(总量)")
+    private BigDecimal newUserTotalAmount;
+
+    /**
+     * 首日Roi(总量)
+     */
+    @ApiModelProperty(value = "首日Roi(总量)")
+    private BigDecimal firstRoi;
+
+    @ApiModelProperty(value = "首日付费率(总)")
+    private BigDecimal firstAmountRate;
+
+    @ApiModelProperty(value = "当天付费率(总)")
+    private BigDecimal todayAmountRate;
+
+    /**
+     * 新用户付费比(总量)
+     */
+    @ApiModelProperty(value = "新用户付费比(总量)")
+    private BigDecimal newUserRate;
+
+    /**
+     * 首日客单价(总量)
+     */
+    @ApiModelProperty(value = "首日客单价(总量)")
+    private BigDecimal firstAvgAmount;
+
+    /**
+     * 当天客单价(总量)
+     */
+    @ApiModelProperty(value = "当天客单价(总量)")
+    private BigDecimal todayAvgAmount;
+
+    /**
+     * 账面客单价(总量)
+     */
+    @ApiModelProperty(value = "账面客单价(总量)")
+    private BigDecimal avgAmount;
+
+    /**
+     * 复充率(总量)
+     */
+    @ApiModelProperty(value = "复充率(总量)")
+    private BigDecimal userAgainRate;
+
+    /**
+     * 新增注册ARPU(总量)
+     */
+    @ApiModelProperty(value = "新增注册ARPU(总量)")
+    private BigDecimal regUserArpu;
+
+    /**
+     * 首日付费ARPU(总量)
+     */
+    @ApiModelProperty(value = "首日付费ARPU(总量)")
+    private BigDecimal firstAmountArpu;
+
+    /**
+     * 当天付费ARPU(总量)
+     */
+    @ApiModelProperty(value = "当天付费ARPU(总量)")
+    private BigDecimal todayAmountArpu;
+
+    /**
+     * 账面ARPU(总量)
+     */
+    @ApiModelProperty(value = "账面ARPU(总量)")
+    private BigDecimal amountArpu;
+
+    @ApiModelProperty(value = "注册成本(总量) = 消耗 / 注册人数")
+    private BigDecimal regCost;
+
+    @ApiModelProperty(value = "总回收率(总量) = 新用户累计充值金额 / 消耗")
+    private BigDecimal totalRoi;
+
+    @ApiModelProperty(value = "首日充值成本(总量) = 消耗 / 首日新用户充值人数")
+    private BigDecimal firstNewUserRechargeCost;
+
+    @ApiModelProperty(value = "总充值成本(总量) = 消耗 / 新用户累计充值人数")
+    private BigDecimal totalRechargeCost;
+
+    @ApiModelProperty(value = "单日付费100+人数(总量)")
+    private Long hundredUserNum;
+
+    @ApiModelProperty(value = "单日付费100+成本 = 消耗 / 单日付费100+人数(总量)")
+    private BigDecimal hundredUserNumCost;
+
+    @ApiModelProperty(value = "首日创角人数(总量)")
+    private Long firstRoleNum;
+
+    @ApiModelProperty(value = "创角人数(总量)")
+    private Long roleNum;
+
+    @ApiModelProperty(value = "新用户累计创角人数(总量)")
+    private Long newUserTotalRoleNum;
+
+    @ApiModelProperty(value = "首日创角人数成本(总量)")
+    private BigDecimal firstRoleNumCost;
+
+    @ApiModelProperty(value = "创角人数成本(总量)")
+    private BigDecimal roleNumCost;
+
+    @ApiModelProperty(value = "新用户累计创角人数成本(总量)")
+    private BigDecimal newUserTotalRoleNumCost;
+
+    @ApiModelProperty(value = "首日创角率(总量)")
+    private BigDecimal firstRoleNumRate;
+
+    @ApiModelProperty(value = "创角率(总量)")
+    private BigDecimal roleNumRate;
+
+    @ApiModelProperty(value = "新用户累计创角率(总量)")
+    private BigDecimal newUserTotalRoleNumRate;
+
+
+
+}

+ 15 - 0
game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/service/IGameDataService.java

@@ -54,4 +54,19 @@ public interface IGameDataService {
 
 
     Page<GameDataH5VO> getH5Recharge(GameDataH5DTO dto);
+
+    /**
+     * ltv数据
+     * @param dto
+     * @return
+     */
+    Page<LtvDataVO> getLtvData(LtvDataDTO dto);
+
+    /**
+     * ltv数据总计一栏
+     * @param dto
+     * @return
+     */
+    LtvDataTotalVO getLtvTotalData(LtvDataTotalDTO dto);
+
 }

+ 1 - 0
game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/service/impl/AdsOrderDetailService.java

@@ -97,6 +97,7 @@ public class AdsOrderDetailService implements IAdsOrderDetailService {
         if (dto.getEndRegTime() != null) {
             cnd.and(AdsOrderDetail::getRegTime, "<=", dto.getEndRegTime());
         }
+        cnd.orderBy(dto.getSortFiled(), dto.getSortType());
         List<AdsOrderDetailVO> records = dao.query(AdsOrderDetail.class, cnd, pager).stream().map(this::toVO).collect(Collectors.toList());
         pager.setRecordCount(dao.count(AdsOrderDetail.class, cnd));
         return new Page<>(records, pager);

File diff suppressed because it is too large
+ 644 - 247
game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/service/impl/GameDataServiceImpl.java


+ 7 - 7
game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/service/impl/PromotionDayServiceImpl.java

@@ -238,7 +238,7 @@ public class PromotionDayServiceImpl implements IAdsPromotionDayService {
         }
         if (StringUtils.isNotBlank(dto.getAccountName())) {
             //拼接推广账号名称查询条件
-            cri.where().andEquals("account_name", dto.getAccountName());
+            cri.where().andLike("account_name", dto.getAccountName());
         }
         if (StringUtils.isNotBlank(dto.getAccountType())) {
             //推广账号类型
@@ -260,7 +260,7 @@ public class PromotionDayServiceImpl implements IAdsPromotionDayService {
             cri.where().andEquals("classify", dto.getClassify());
         }
         if (StringUtils.isNotBlank(dto.getPromotionName())) {
-            cri.where().andEquals("promotion_name", dto.getPromotionName());
+            cri.where().andLike("promotion_name", dto.getPromotionName());
         }
         if (dto.getPromotionId() != null) {
             cri.where().andEquals("promotion_id", dto.getPromotionId());
@@ -269,7 +269,7 @@ public class PromotionDayServiceImpl implements IAdsPromotionDayService {
             cri.where().andEquals("status", dto.getStatus());
         }
         if (StringUtils.isNotBlank(dto.getProjectName())) {
-            cri.where().andEquals("project_name", dto.getProjectName());
+            cri.where().andLike("project_name", dto.getProjectName());
         }
         if (dto.getProjectId() != null) {
             cri.where().andEquals("project_id", dto.getProjectId());
@@ -419,8 +419,8 @@ public class PromotionDayServiceImpl implements IAdsPromotionDayService {
             cri.where().andEquals("account_id", dto.getAccountId());
         }
         if (StringUtils.isNotBlank(dto.getAccountName())) {
-            //拼接推广账号名称查询条件
-            cri.where().andEquals("account_name", dto.getAccountName());
+            //拼接推广账号名称查询条件 模糊查询
+            cri.where().andLike("account_name", dto.getAccountName());
         }
         if (StringUtils.isNotBlank(dto.getAccountType())) {
             //推广账号类型
@@ -442,7 +442,7 @@ public class PromotionDayServiceImpl implements IAdsPromotionDayService {
             cri.where().andEquals("classify", dto.getClassify());
         }
         if (StringUtils.isNotBlank(dto.getPromotionName())) {
-            cri.where().andEquals("promotion_name", dto.getPromotionName());
+            cri.where().andLike("promotion_name", dto.getPromotionName());
         }
         if (dto.getPromotionId() != null) {
             cri.where().andEquals("promotion_id", dto.getPromotionId());
@@ -451,7 +451,7 @@ public class PromotionDayServiceImpl implements IAdsPromotionDayService {
             cri.where().andEquals("status", dto.getStatus());
         }
         if (StringUtils.isNotBlank(dto.getProjectName())) {
-            cri.where().andEquals("project_name", dto.getProjectName());
+            cri.where().andLike("project_name", dto.getProjectName());
         }
         if (dto.getProjectId() != null) {
             cri.where().andEquals("project_id", dto.getProjectId());

+ 1 - 1
game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/ManageApplication.java

@@ -21,7 +21,7 @@ public class ManageApplication {
 
     public static void main(String[] args) {
         SpringApplication.run(ManageApplication.class, args);
-        System.out.println("赞象Manage服务启动成功 <dubbo升级3.0, 实名认证列表增加游戏id和名称返回> ( ´・・)ノ(._.`) \n" +
+        System.out.println("赞象Manage服务启动成功 <dubbo升级3.0, 提现记录和有效创角上线> ( ´・・)ノ(._.`) \n" +
                 "___  ___  ___   _   _   ___  _____  _____ \n" +
                 "|  \\/  | / _ \\ | \\ | | / _ \\|  __ \\|  ___|\n" +
                 "| .  . |/ /_\\ \\|  \\| |/ /_\\ \\ |  \\/| |__  \n" +

+ 54 - 0
game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/controller/GameUserConfigController.java

@@ -0,0 +1,54 @@
+package com.zanxiang.game.module.manage.controller;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.zanxiang.erp.security.annotation.PreAuthorize;
+import com.zanxiang.game.module.manage.pojo.params.GameUserConfigAddUpdateParam;
+import com.zanxiang.game.module.manage.pojo.params.GameUserConfigListParam;
+import com.zanxiang.game.module.manage.pojo.vo.GameUserConfigListVO;
+import com.zanxiang.game.module.manage.service.IGameUserConfigService;
+import com.zanxiang.module.util.pojo.ResultVO;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiResponse;
+import io.swagger.annotations.ApiResponses;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+/**
+ * @author : lingfeng
+ * @time : 2023-08-09
+ * @description : 有效用户配置
+ */
+@Api(tags = {"有效创角配置接口"})
+@RestController
+@RequestMapping("/gameUser/config")
+public class GameUserConfigController {
+
+    @Autowired
+    private IGameUserConfigService gameUserConfigService;
+
+    @ApiOperation(value = "新增或修改有效创角配置")
+    @PostMapping(value = "/add/or/update")
+    @PreAuthorize(permissionKey = "manage:gameUserConfig:addOrUpdate")
+    @ApiResponses(value = {@ApiResponse(code = 200, message = "成功", response = Boolean.class)})
+    public ResultVO<Boolean> addOrUpdate(@Validated @RequestBody GameUserConfigAddUpdateParam param) {
+        return ResultVO.ok(gameUserConfigService.addOrUpdate(param));
+    }
+
+    @ApiOperation(value = "有效创角配置列表查询")
+    @PostMapping(value = "/list")
+    @PreAuthorize(permissionKey = "manage:gameUserConfig:list")
+    @ApiResponses(value = {@ApiResponse(code = 200, message = "成功", response = GameUserConfigListVO.class)})
+    public ResultVO<IPage<GameUserConfigListVO>> listOfPage(@Validated @RequestBody GameUserConfigListParam param) {
+        return ResultVO.ok(gameUserConfigService.listOfPage(param));
+    }
+
+    @ApiOperation(value = "有效创角配置服删除")
+    @DeleteMapping(value = "/delete")
+    @PreAuthorize(permissionKey = "manage:gameUserConfig:delete")
+    @ApiResponses(value = {@ApiResponse(code = 200, message = "成功", response = Boolean.class)})
+    public ResultVO<Boolean> deleteById(@RequestParam Long id) {
+        return ResultVO.ok(gameUserConfigService.deleteById(id));
+    }
+}

+ 14 - 0
game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/controller/OrderController.java

@@ -2,10 +2,13 @@ package com.zanxiang.game.module.manage.controller;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.zanxiang.erp.security.annotation.PreAuthorize;
+import com.zanxiang.game.module.manage.pojo.params.GameRemitLogListParam;
 import com.zanxiang.game.module.manage.pojo.params.OrderParam;
 import com.zanxiang.game.module.manage.pojo.params.PayCallCpLogParam;
+import com.zanxiang.game.module.manage.pojo.vo.GameRemitLogVO;
 import com.zanxiang.game.module.manage.pojo.vo.LogPayCpVO;
 import com.zanxiang.game.module.manage.pojo.vo.OrderListVO;
+import com.zanxiang.game.module.manage.service.IGameRemitLogService;
 import com.zanxiang.game.module.manage.service.ILogPayCpService;
 import com.zanxiang.game.module.manage.service.IOrderService;
 import com.zanxiang.module.util.pojo.ResultVO;
@@ -38,6 +41,9 @@ public class OrderController {
     @Autowired
     private ILogPayCpService logPayCpService;
 
+    @Autowired
+    private IGameRemitLogService gameRemitLogService;
+
     @ApiOperation(value = "订单列表")
     @PostMapping(value = "/list")
     @PreAuthorize(permissionKey = "manage:order:orderList")
@@ -61,4 +67,12 @@ public class OrderController {
     public void getOrderExcel(@Validated @RequestBody OrderParam param, HttpServletResponse response) {
         orderService.getOrderExcel(param, response);
     }
+
+    @ApiOperation(value = "游戏提现记录")
+    @PostMapping(value = "/remit/Log")
+    @PreAuthorize(permissionKey = "manage:order:remitLog")
+    @ApiResponses(value = {@ApiResponse(code = 200, message = "成功", response = GameRemitLogVO.class, responseContainer = "list")})
+    public ResultVO<IPage<GameRemitLogVO>> listOfPage(@Validated @RequestBody GameRemitLogListParam param) {
+        return ResultVO.ok(gameRemitLogService.listOfPage(param));
+    }
 }

+ 49 - 0
game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/pojo/params/GameRemitLogListParam.java

@@ -0,0 +1,49 @@
+package com.zanxiang.game.module.manage.pojo.params;
+
+import com.zanxiang.game.module.mybatis.entity.GameRemitLog;
+import com.zanxiang.module.web.pojo.BaseListDTO;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.time.LocalDate;
+
+/**
+ * @author : lingfeng
+ * @time : 2023-08-08
+ * @description : 提现记录查询参数
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class GameRemitLogListParam extends BaseListDTO<GameRemitLog> {
+
+    /**
+     * 用户id
+     */
+    @ApiModelProperty(notes = "用户id")
+    private Long userId;
+
+    /**
+     * 游戏id
+     */
+    @ApiModelProperty(notes = "游戏id")
+    private Long gameId;
+
+    /**
+     * 交易订单号
+     */
+    @ApiModelProperty(notes = "交易订单号")
+    private String merchantOrderNo;
+
+    /**
+     * 提现开始时间
+     */
+    @ApiModelProperty(notes = "提现开始时间")
+    private LocalDate startTime;
+
+    /**
+     * 提现结束时间
+     */
+    @ApiModelProperty(notes = "提现结束时间")
+    private LocalDate endTime;
+}

+ 35 - 0
game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/pojo/params/GameUserConfigAddUpdateParam.java

@@ -0,0 +1,35 @@
+package com.zanxiang.game.module.manage.pojo.params;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotNull;
+
+/**
+ * @author : lingfeng
+ * @time : 2023-08-09
+ * @description : 有效用户配置
+ */
+@Data
+public class GameUserConfigAddUpdateParam {
+
+    /**
+     * 主键id
+     */
+    @ApiModelProperty(notes = "主键id, 传则是更新, 不传则是添加")
+    private Long id;
+
+    /**
+     * 游戏id
+     */
+    @NotNull(message = "游戏id不可为空, 必传")
+    @ApiModelProperty(notes = "游戏id")
+    private Long gameId;
+
+    /**
+     * 游戏角色等级
+     */
+    @NotNull(message = "游戏角色等级不可为空, 必传")
+    @ApiModelProperty(notes = "游戏角色等级")
+    private Long roleLevel;
+}

+ 21 - 0
game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/pojo/params/GameUserConfigListParam.java

@@ -0,0 +1,21 @@
+package com.zanxiang.game.module.manage.pojo.params;
+
+import com.zanxiang.game.module.mybatis.entity.GameUserConfig;
+import com.zanxiang.module.web.pojo.BaseListDTO;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * @author : lingfeng
+ * @time : 2023-08-09
+ * @description : 有效用户配置查询
+ */
+@Data
+public class GameUserConfigListParam extends BaseListDTO<GameUserConfig> {
+
+    /**
+     * 游戏id
+     */
+    @ApiModelProperty(notes = "游戏id")
+    private Long gameId;
+}

+ 72 - 0
game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/pojo/vo/GameRemitLogVO.java

@@ -1,9 +1,81 @@
 package com.zanxiang.game.module.manage.pojo.vo;
 
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.time.LocalDateTime;
+
 /**
  * @author : lingfeng
  * @time : 2023-08-08
  * @description : 提现记录
  */
+@Data
 public class GameRemitLogVO {
+
+    /**
+     * 主键
+     */
+    @ApiModelProperty(notes = "主键")
+    private Long id;
+
+    /**
+     * 用户id
+     */
+    @ApiModelProperty(notes = "用户id")
+    private Long userId;
+
+    /**
+     * 游戏id
+     */
+    @ApiModelProperty(notes = "游戏id")
+    private Long gameId;
+
+    /**
+     * 游戏名称
+     */
+    @ApiModelProperty(notes = "游戏名称")
+    private String gameName;
+
+    /**
+     * 交易订单号
+     */
+    @ApiModelProperty(notes = "交易订单号")
+    private String merchantOrderNo;
+
+    /**
+     * 金额(单位 : 分)
+     */
+    @ApiModelProperty(notes = "金额(单位 : 分)")
+    private Long amount;
+
+    /**
+     * 提现平台
+     */
+    @ApiModelProperty(notes = "提现平台")
+    private String payPlatform;
+
+    /**
+     * 提现账号
+     */
+    @ApiModelProperty(notes = "提现账号")
+    private String payAccount;
+
+    /**
+     * 提现时间
+     */
+    @ApiModelProperty(notes = "提现时间")
+    private LocalDateTime createdTime;
+
+    /**
+     * 创建时间
+     */
+    @ApiModelProperty(notes = "创建时间")
+    private LocalDateTime createTime;
+
+    /**
+     * 更新时间
+     */
+    @ApiModelProperty(notes = "更新时间")
+    private LocalDateTime updateTime;
 }

+ 51 - 0
game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/pojo/vo/GameUserConfigListVO.java

@@ -0,0 +1,51 @@
+package com.zanxiang.game.module.manage.pojo.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.time.LocalDateTime;
+
+/**
+ * @author : lingfeng
+ * @time : 2023-08-09
+ * @description : 有效用户配置
+ */
+@Data
+public class GameUserConfigListVO {
+
+    /**
+     * 主键id
+     */
+    @ApiModelProperty(notes = "主键id")
+    private Long id;
+
+    /**
+     * 游戏id
+     */
+    @ApiModelProperty(notes = "游戏id")
+    private Long gameId;
+
+    /**
+     * 游戏名称
+     */
+    @ApiModelProperty(notes = "游戏名称")
+    private String gameName;
+
+    /**
+     * 游戏角色等级
+     */
+    @ApiModelProperty(notes = "游戏角色等级")
+    private Long roleLevel;
+
+    /**
+     * 创建时间
+     */
+    @ApiModelProperty(notes = "创建时间")
+    private LocalDateTime createTime;
+
+    /**
+     * 更新时间
+     */
+    @ApiModelProperty(notes = "更新时间")
+    private LocalDateTime updateTime;
+}

+ 11 - 0
game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/service/IGameRemitLogService.java

@@ -1,6 +1,9 @@
 package com.zanxiang.game.module.manage.service;
 
+import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.zanxiang.game.module.manage.pojo.params.GameRemitLogListParam;
+import com.zanxiang.game.module.manage.pojo.vo.GameRemitLogVO;
 import com.zanxiang.game.module.mybatis.entity.GameRemitLog;
 
 /**
@@ -9,4 +12,12 @@ import com.zanxiang.game.module.mybatis.entity.GameRemitLog;
  * @description : 游戏提现记录
  */
 public interface IGameRemitLogService extends IService<GameRemitLog> {
+
+    /**
+     * 列表页面
+     *
+     * @param param 参数
+     * @return {@link IPage}<{@link GameRemitLogVO}>
+     */
+    IPage<GameRemitLogVO> listOfPage(GameRemitLogListParam param);
 }

+ 40 - 0
game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/service/IGameUserConfigService.java

@@ -0,0 +1,40 @@
+package com.zanxiang.game.module.manage.service;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.zanxiang.game.module.manage.pojo.params.GameUserConfigAddUpdateParam;
+import com.zanxiang.game.module.manage.pojo.params.GameUserConfigListParam;
+import com.zanxiang.game.module.manage.pojo.vo.GameUserConfigListVO;
+import com.zanxiang.game.module.mybatis.entity.GameUserConfig;
+
+/**
+ * @author : lingfeng
+ * @time : 2023-08-09
+ * @description : 有效用户配置
+ */
+public interface IGameUserConfigService extends IService<GameUserConfig> {
+
+    /**
+     * 添加或更新
+     *
+     * @param param 参数
+     * @return boolean
+     */
+    boolean addOrUpdate(GameUserConfigAddUpdateParam param);
+
+    /**
+     * 列表页面
+     *
+     * @param param 参数
+     * @return {@link IPage}<{@link GameUserConfigListVO}>
+     */
+    IPage<GameUserConfigListVO> listOfPage(GameUserConfigListParam param);
+
+    /**
+     * 删除通过id
+     *
+     * @param id id
+     * @return boolean
+     */
+    boolean deleteById(Long id);
+}

+ 69 - 0
game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/service/impl/GameRemitLogServiceImpl.java

@@ -1,11 +1,34 @@
 package com.zanxiang.game.module.manage.service.impl;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.zanxiang.game.module.manage.pojo.dto.AgentDTO;
+import com.zanxiang.game.module.manage.pojo.dto.GameDTO;
+import com.zanxiang.game.module.manage.pojo.params.GameRemitLogListParam;
+import com.zanxiang.game.module.manage.pojo.vo.GameRemitLogVO;
+import com.zanxiang.game.module.manage.service.IAgentService;
 import com.zanxiang.game.module.manage.service.IGameRemitLogService;
+import com.zanxiang.game.module.manage.service.IGameService;
+import com.zanxiang.game.module.manage.service.IUserService;
 import com.zanxiang.game.module.mybatis.entity.GameRemitLog;
+import com.zanxiang.game.module.mybatis.entity.User;
 import com.zanxiang.game.module.mybatis.mapper.GameRemitLogMapper;
+import com.zanxiang.module.util.bean.BeanUtil;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.logging.log4j.util.Strings;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import reactor.util.function.Tuple2;
+
+import java.time.LocalDateTime;
+import java.time.LocalTime;
+import java.util.List;
+import java.util.Objects;
+import java.util.stream.Collectors;
 
 /**
  * @author : lingfeng
@@ -16,4 +39,50 @@ import org.springframework.stereotype.Service;
 @Service
 public class GameRemitLogServiceImpl extends ServiceImpl<GameRemitLogMapper, GameRemitLog> implements IGameRemitLogService {
 
+    @Autowired
+    private IGameService gameService;
+
+    @Autowired
+    private IAgentService agentService;
+
+    @Autowired
+    private IUserService userService;
+
+    @Override
+    public IPage<GameRemitLogVO> listOfPage(GameRemitLogListParam param) {
+        //渠道获取
+        Tuple2<List<Long>, List<AgentDTO>> tuple2 = agentService.getUserAgent(null, null, null);
+        if (CollectionUtils.isEmpty(tuple2.getT1())) {
+            return new Page<>();
+        }
+        //查询渠道的用户
+        List<Long> userIdList = userService.list(new LambdaQueryWrapper<User>()
+                .in(User::getAgentId, tuple2.getT1())
+        ).stream().map(User::getId).collect(Collectors.toList());
+        if (CollectionUtils.isEmpty(userIdList)) {
+            return new Page<>();
+        }
+        if (param.getUserId() != null && !userIdList.contains(param.getUserId())) {
+            return new Page<>();
+        }
+        return page(param.toPage(), new QueryWrapper<GameRemitLog>().lambda()
+                .in(CollectionUtils.isNotEmpty(userIdList), GameRemitLog::getUserId, userIdList)
+                .eq(param.getUserId() != null, GameRemitLog::getUserId, param.getUserId())
+                .eq(param.getGameId() != null, GameRemitLog::getGameId, param.getGameId())
+                .eq(Strings.isNotBlank(param.getMerchantOrderNo()), GameRemitLog::getMerchantOrderNo, param.getMerchantOrderNo())
+                .ge(param.getStartTime() != null, GameRemitLog::getCreatedTime, param.getStartTime() == null ? null : LocalDateTime.of(param.getStartTime(), LocalTime.MIN))
+                .le(param.getEndTime() != null, GameRemitLog::getCreatedTime, param.getEndTime() == null ? null : LocalDateTime.of(param.getEndTime(), LocalTime.MAX))
+                .orderByDesc(GameRemitLog::getCreatedTime)
+        ).convert(this::toVo);
+    }
+
+    private GameRemitLogVO toVo(GameRemitLog gameRemitLog) {
+        if (Objects.isNull(gameRemitLog)) {
+            return null;
+        }
+        GameRemitLogVO gameRemitLogVO = BeanUtil.copy(gameRemitLog, GameRemitLogVO.class);
+        GameDTO gameDTO = gameService.getById(gameRemitLog.getGameId());
+        gameRemitLogVO.setGameName(gameDTO == null ? null : gameDTO.getName());
+        return gameRemitLogVO;
+    }
 }

+ 4 - 1
game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/service/impl/GameServerServiceImpl.java

@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.zanxiang.erp.security.util.SecurityUtil;
 import com.zanxiang.game.module.base.pojo.enums.DeleteEnum;
 import com.zanxiang.game.module.manage.pojo.dto.GameDTO;
 import com.zanxiang.game.module.manage.pojo.params.GameServerAddUpdateParam;
@@ -42,7 +43,7 @@ public class GameServerServiceImpl extends ServiceImpl<GameServerMapper, GameSer
 
     @Override
     public List<String> listServerId(Long gameId, String serverName) {
-        if (gameId == null && Strings.isBlank(serverName)) {
+        if (Strings.isBlank(serverName)) {
             return Collections.emptyList();
         }
         return super.list(new LambdaQueryWrapper<GameServer>()
@@ -75,7 +76,9 @@ public class GameServerServiceImpl extends ServiceImpl<GameServerMapper, GameSer
                 .nickName(param.getNickName())
                 .startTime(param.getStartTime())
                 .isDelete(DeleteEnum.NO.getCode())
+                .createBy(param.getId() == null ? SecurityUtil.getUserId() : null)
                 .createTime(param.getId() == null ? LocalDateTime.now() : null)
+                .updateBy(SecurityUtil.getUserId())
                 .updateTime(LocalDateTime.now())
                 .build();
     }

+ 87 - 0
game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/service/impl/GameUserConfigServiceImpl.java

@@ -0,0 +1,87 @@
+package com.zanxiang.game.module.manage.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.zanxiang.erp.security.util.SecurityUtil;
+import com.zanxiang.game.module.manage.pojo.dto.GameDTO;
+import com.zanxiang.game.module.manage.pojo.params.GameUserConfigAddUpdateParam;
+import com.zanxiang.game.module.manage.pojo.params.GameUserConfigListParam;
+import com.zanxiang.game.module.manage.pojo.vo.GameUserConfigListVO;
+import com.zanxiang.game.module.manage.service.IGameService;
+import com.zanxiang.game.module.manage.service.IGameUserConfigService;
+import com.zanxiang.game.module.mybatis.entity.GameUserConfig;
+import com.zanxiang.game.module.mybatis.mapper.GameUserConfigMapper;
+import com.zanxiang.module.util.bean.BeanUtil;
+import com.zanxiang.module.util.exception.BaseException;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.time.LocalDateTime;
+import java.util.Objects;
+
+/**
+ * @author : lingfeng
+ * @time : 2023-08-09
+ * @description : 有效用户配置
+ */
+@Slf4j
+@Service
+public class GameUserConfigServiceImpl extends ServiceImpl<GameUserConfigMapper, GameUserConfig> implements IGameUserConfigService {
+
+    @Autowired
+    private IGameService gameService;
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public boolean addOrUpdate(GameUserConfigAddUpdateParam param) {
+        //判断游戏配置不可重复
+        if (super.count(new LambdaQueryWrapper<GameUserConfig>()
+                .eq(GameUserConfig::getGameId, param.getGameId())
+                .ne(param.getId() != null, GameUserConfig::getId, param.getId())
+        ) > 0) {
+            throw new BaseException("该游戏已经存在配置, 禁止添加或者修改");
+        }
+        //添加或者更新
+        return super.saveOrUpdate(this.transform(param));
+    }
+
+    private GameUserConfig transform(GameUserConfigAddUpdateParam param) {
+        return GameUserConfig.builder()
+                .id(param.getId())
+                .gameId(param.getGameId())
+                .roleLevel(param.getRoleLevel())
+                .createBy(param.getId() == null ? SecurityUtil.getUserId() : null)
+                .createTime(param.getId() == null ? LocalDateTime.now() : null)
+                .updateBy(SecurityUtil.getUserId())
+                .updateTime(LocalDateTime.now())
+                .build();
+    }
+
+    @Override
+    public IPage<GameUserConfigListVO> listOfPage(GameUserConfigListParam param) {
+        return page(param.toPage(), new QueryWrapper<GameUserConfig>().lambda()
+                .eq(param.getGameId() != null, GameUserConfig::getGameId, param.getGameId())
+                .orderByDesc(GameUserConfig::getCreateTime)
+        ).convert(this::toVo);
+    }
+
+    private GameUserConfigListVO toVo(GameUserConfig gameUserConfig) {
+        if (Objects.isNull(gameUserConfig)) {
+            return null;
+        }
+        GameUserConfigListVO gameUserConfigListVO = BeanUtil.copy(gameUserConfig, GameUserConfigListVO.class);
+        GameDTO gameDTO = gameService.getById(gameUserConfigListVO.getGameId());
+        gameUserConfigListVO.setGameName(gameDTO == null ? null : gameDTO.getName());
+        return gameUserConfigListVO;
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public boolean deleteById(Long id) {
+        return super.removeById(id);
+    }
+}

+ 1 - 0
game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/service/impl/OrderServiceImpl.java

@@ -232,6 +232,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
                 .eq(Strings.isNotBlank(param.getUserId()), Order::getUserId, param.getUserId())
                 .in(CollectionUtils.isNotEmpty(userIdList), Order::getUserId, userIdList)
                 .in(CollectionUtils.isNotEmpty(serverIdList), Order::getServerId, serverIdList)
+                .like(CollectionUtils.isEmpty(serverIdList) && Strings.isNotBlank(param.getServerName()), Order::getServerName, param.getServerName())
                 .like(Strings.isNotBlank(param.getRoleName()), Order::getRoleName, param.getRoleName())
                 .eq(param.getCpId() != null, Order::getCpId, param.getCpId())
                 .eq(param.getGameId() != null, Order::getGameId, param.getGameId())

+ 10 - 0
game-module/game-module-mybatis/src/main/java/com/zanxiang/game/module/mybatis/entity/GameServer.java

@@ -59,6 +59,16 @@ public class GameServer implements Serializable {
     @TableLogic
     private Integer isDelete;
 
+    /**
+     * 创建者
+     */
+    private Long createBy;
+
+    /**
+     * 更新者
+     */
+    private Long updateBy;
+
     /**
      * 创建时间
      */

+ 68 - 0
game-module/game-module-mybatis/src/main/java/com/zanxiang/game/module/mybatis/entity/GameUserConfig.java

@@ -0,0 +1,68 @@
+package com.zanxiang.game.module.mybatis.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.*;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+
+/**
+ * @author : lingfeng
+ * @time : 2023-08-08
+ * @description : 有效用户配置
+ */
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+@ToString
+@Builder
+@TableName("t_game_user_config")
+public class GameUserConfig implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 主键id
+     */
+    @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
+
+    /**
+     * 游戏id
+     */
+    private Long gameId;
+
+    /**
+     * 游戏角色等级
+     */
+    private Long roleLevel;
+
+    /**
+     * 1 删除  0 正常
+     */
+    @TableLogic
+    private Integer isDelete;
+
+    /**
+     * 创建时间
+     */
+    private LocalDateTime createTime;
+
+    /**
+     * 创建者
+     */
+    private Long createBy;
+
+    /**
+     * 更新者
+     */
+    private Long updateBy;
+
+    /**
+     * 更新时间
+     */
+    private LocalDateTime updateTime;
+}

+ 12 - 0
game-module/game-module-mybatis/src/main/java/com/zanxiang/game/module/mybatis/mapper/GameUserConfigMapper.java

@@ -0,0 +1,12 @@
+package com.zanxiang.game.module.mybatis.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.zanxiang.game.module.mybatis.entity.GameUserConfig;
+
+/**
+ * @author : lingfeng
+ * @time : 2023-08-08
+ * @description : 有效用户配置
+ */
+public interface GameUserConfigMapper extends BaseMapper<GameUserConfig> {
+}

Some files were not shown because too many files changed in this diff