Procházet zdrojové kódy

修改内容:大R每日充值比

shishaosong před 10 měsíci
rodič
revize
409d83a890
46 změnil soubory, kde provedl 2453 přidání a 21 odebrání
  1. 15 1
      game-gs-data/game-gs-data-serve/pom.xml
  2. 23 0
      game-gs-data/game-gs-data-serve/src/main/java/com/zanxiang/game/gs/data/serve/GameGsDataApplication.java
  3. 11 0
      game-gs-data/game-gs-data-serve/src/main/java/com/zanxiang/game/gs/data/serve/config/MybatisFlexConfig.java
  4. 2 2
      game-gs-data/game-gs-data-serve/src/main/java/com/zanxiang/game/gs/data/serve/config/SwaggerConfig.java
  5. 33 0
      game-gs-data/game-gs-data-serve/src/main/java/com/zanxiang/game/gs/data/serve/controller/GameParentController.java
  6. 19 0
      game-gs-data/game-gs-data-serve/src/main/java/com/zanxiang/game/gs/data/serve/dao/mapper/erp/SysUserMapper.java
  7. 19 0
      game-gs-data/game-gs-data-serve/src/main/java/com/zanxiang/game/gs/data/serve/dao/mapper/game/order/GameAuthGroupMapper.java
  8. 19 0
      game-gs-data/game-gs-data-serve/src/main/java/com/zanxiang/game/gs/data/serve/dao/mapper/game/order/GameAuthRoleGroupMapper.java
  9. 19 0
      game-gs-data/game-gs-data-serve/src/main/java/com/zanxiang/game/gs/data/serve/dao/mapper/game/order/GameMapper.java
  10. 19 0
      game-gs-data/game-gs-data-serve/src/main/java/com/zanxiang/game/gs/data/serve/dao/mapper/game/order/GameServerMapper.java
  11. 19 0
      game-gs-data/game-gs-data-serve/src/main/java/com/zanxiang/game/gs/data/serve/dao/mapper/game/order/RoleOperateMapper.java
  12. 19 0
      game-gs-data/game-gs-data-serve/src/main/java/com/zanxiang/game/gs/data/serve/dao/mapper/game/parent/AdsRoleAmountDataParentMapper.java
  13. 19 0
      game-gs-data/game-gs-data-serve/src/main/java/com/zanxiang/game/gs/data/serve/dao/mapper/game/parent/AdsRoleAmountDataTodayParentMapper.java
  14. 98 0
      game-gs-data/game-gs-data-serve/src/main/java/com/zanxiang/game/gs/data/serve/handler/GlobalExceptionHandler.java
  15. 0 9
      game-gs-data/game-gs-data-serve/src/main/java/com/zanxiang/game/gs/data/serve/pojo/BTable.java
  16. 22 0
      game-gs-data/game-gs-data-serve/src/main/java/com/zanxiang/game/gs/data/serve/pojo/dto/BaseListDTO.java
  17. 28 0
      game-gs-data/game-gs-data-serve/src/main/java/com/zanxiang/game/gs/data/serve/pojo/dto/BigRDTO.java
  18. 92 0
      game-gs-data/game-gs-data-serve/src/main/java/com/zanxiang/game/gs/data/serve/pojo/entity/erp/SysUser.java
  19. 282 0
      game-gs-data/game-gs-data-serve/src/main/java/com/zanxiang/game/gs/data/serve/pojo/entity/game/order/Game.java
  20. 77 0
      game-gs-data/game-gs-data-serve/src/main/java/com/zanxiang/game/gs/data/serve/pojo/entity/game/order/GameAuthGroup.java
  21. 90 0
      game-gs-data/game-gs-data-serve/src/main/java/com/zanxiang/game/gs/data/serve/pojo/entity/game/order/GameAuthRoleGroup.java
  22. 157 0
      game-gs-data/game-gs-data-serve/src/main/java/com/zanxiang/game/gs/data/serve/pojo/entity/game/order/GameServer.java
  23. 194 0
      game-gs-data/game-gs-data-serve/src/main/java/com/zanxiang/game/gs/data/serve/pojo/entity/game/order/RoleOperate.java
  24. 157 0
      game-gs-data/game-gs-data-serve/src/main/java/com/zanxiang/game/gs/data/serve/pojo/entity/game/parent/AdsRoleAmountDataParent.java
  25. 102 0
      game-gs-data/game-gs-data-serve/src/main/java/com/zanxiang/game/gs/data/serve/pojo/entity/game/parent/AdsRoleAmountDataTodayParent.java
  26. 173 0
      game-gs-data/game-gs-data-serve/src/main/java/com/zanxiang/game/gs/data/serve/pojo/vo/BigRVO.java
  27. 43 0
      game-gs-data/game-gs-data-serve/src/main/java/com/zanxiang/game/gs/data/serve/pojo/vo/PageVO.java
  28. 0 9
      game-gs-data/game-gs-data-serve/src/main/java/com/zanxiang/game/gs/data/serve/service/ATestService.java
  29. 20 0
      game-gs-data/game-gs-data-serve/src/main/java/com/zanxiang/game/gs/data/serve/service/IAdsRoleAmountDataParentService.java
  30. 15 0
      game-gs-data/game-gs-data-serve/src/main/java/com/zanxiang/game/gs/data/serve/service/IAdsRoleAmountDataTodayParentService.java
  31. 15 0
      game-gs-data/game-gs-data-serve/src/main/java/com/zanxiang/game/gs/data/serve/service/IGameAuthGroupService.java
  32. 20 0
      game-gs-data/game-gs-data-serve/src/main/java/com/zanxiang/game/gs/data/serve/service/IGameAuthRoleGroupService.java
  33. 19 0
      game-gs-data/game-gs-data-serve/src/main/java/com/zanxiang/game/gs/data/serve/service/IGameServerService.java
  34. 20 0
      game-gs-data/game-gs-data-serve/src/main/java/com/zanxiang/game/gs/data/serve/service/IGameService.java
  35. 22 0
      game-gs-data/game-gs-data-serve/src/main/java/com/zanxiang/game/gs/data/serve/service/IRoleOperateService.java
  36. 20 0
      game-gs-data/game-gs-data-serve/src/main/java/com/zanxiang/game/gs/data/serve/service/ISysUserService.java
  37. 163 0
      game-gs-data/game-gs-data-serve/src/main/java/com/zanxiang/game/gs/data/serve/service/impl/AdsRoleAmountDataParentServiceImpl.java
  38. 19 0
      game-gs-data/game-gs-data-serve/src/main/java/com/zanxiang/game/gs/data/serve/service/impl/AdsRoleAmountDataTodayParentServiceImpl.java
  39. 19 0
      game-gs-data/game-gs-data-serve/src/main/java/com/zanxiang/game/gs/data/serve/service/impl/GameAuthGroupServiceImpl.java
  40. 50 0
      game-gs-data/game-gs-data-serve/src/main/java/com/zanxiang/game/gs/data/serve/service/impl/GameAuthRoleGroupServiceImpl.java
  41. 31 0
      game-gs-data/game-gs-data-serve/src/main/java/com/zanxiang/game/gs/data/serve/service/impl/GameServerServiceImpl.java
  42. 33 0
      game-gs-data/game-gs-data-serve/src/main/java/com/zanxiang/game/gs/data/serve/service/impl/GameServiceImpl.java
  43. 36 0
      game-gs-data/game-gs-data-serve/src/main/java/com/zanxiang/game/gs/data/serve/service/impl/RoleOperateServiceImpl.java
  44. 35 0
      game-gs-data/game-gs-data-serve/src/main/java/com/zanxiang/game/gs/data/serve/service/impl/SysUserServiceImpl.java
  45. 89 0
      game-gs-data/game-gs-data-serve/src/main/resources/bootstrap.yml
  46. 76 0
      game-gs-data/game-gs-data-serve/src/main/resources/logback.xml

+ 15 - 1
game-gs-data/game-gs-data-serve/pom.xml

@@ -89,7 +89,21 @@
         <dependency>
             <groupId>com.mybatis-flex</groupId>
             <artifactId>mybatis-flex-spring-boot-starter</artifactId>
-            <version>1.7.5</version>
+            <version>1.9.2</version>
+        </dependency>
+        <dependency>
+            <groupId>com.mybatis-flex</groupId>
+            <artifactId>mybatis-flex-processor</artifactId>
+            <version>1.9.2</version>
+            <scope>provided</scope>
+        </dependency>
+        <dependency>
+            <groupId>com.zaxxer</groupId>
+            <artifactId>HikariCP</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>mysql</groupId>
+            <artifactId>mysql-connector-java</artifactId>
         </dependency>
     </dependencies>
 

+ 23 - 0
game-gs-data/game-gs-data-serve/src/main/java/com/zanxiang/game/gs/data/serve/GameGsDataApplication.java

@@ -1,9 +1,32 @@
 package com.zanxiang.game.gs.data.serve;
 
+import org.apache.dubbo.config.spring.context.annotation.EnableDubbo;
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.scheduling.annotation.EnableScheduling;
+
 /**
  * @author : lingfeng
  * @time : 2024-06-03
  * @description : GS数据系统启动类
  */
+@EnableDiscoveryClient
+@SpringBootApplication
+@Configuration
+@EnableDubbo
+@EnableScheduling
 public class GameGsDataApplication {
+    public static void main(String[] args) {
+        SpringApplication.run(GameGsDataApplication.class, args);
+        System.out.println("游戏GS数据启动成功 \n" +
+                " ______  __     __     \n" +
+                "/_____/\\/__/\\ /__/\\    \n" +
+                "\\:::__\\/\\ \\::\\\\:.\\ \\   \n" +
+                "   /: /  \\_\\::_\\:_\\/   \n" +
+                "  /::/___  _\\/__\\_\\_/\\ \n" +
+                " /_:/____/\\\\ \\ \\ \\::\\ \\\n" +
+                " \\_______\\/ \\_\\/  \\__\\/\n");
+    }
 }

+ 11 - 0
game-gs-data/game-gs-data-serve/src/main/java/com/zanxiang/game/gs/data/serve/config/MybatisFlexConfig.java

@@ -0,0 +1,11 @@
+package com.zanxiang.game.gs.data.serve.config;
+
+import org.mybatis.spring.annotation.MapperScan;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.transaction.annotation.EnableTransactionManagement;
+
+@Configuration
+@EnableTransactionManagement
+@MapperScan(value = "com.zanxiang.game.gs.data.serve.dao.mapper**")
+public class MybatisFlexConfig {
+}

+ 2 - 2
game-gs-data/game-gs-data-serve/src/main/java/com/zanxiang/game/gs/data/serve/config/SwaggerConfig.java

@@ -29,7 +29,7 @@ public class SwaggerConfig {
                 .apiInfo(apiInfo())
                 .select()
                 .apis(RequestHandlerSelectors
-                        .basePackage("com.zanxiang.game.module.manage"))
+                        .basePackage("com.zanxiang.game.gs.data.serve"))
                 .paths(PathSelectors.any())
                 .build();
     }
@@ -41,7 +41,7 @@ public class SwaggerConfig {
      */
     private ApiInfo apiInfo() {
         return new ApiInfoBuilder()
-                .title("游戏管理后台服务")
+                .title("游戏GS数据")
                 .version("1.0")
                 .build();
     }

+ 33 - 0
game-gs-data/game-gs-data-serve/src/main/java/com/zanxiang/game/gs/data/serve/controller/GameParentController.java

@@ -0,0 +1,33 @@
+package com.zanxiang.game.gs.data.serve.controller;
+
+import com.mybatisflex.core.row.Row;
+import com.zanxiang.game.gs.data.serve.pojo.dto.BigRDTO;
+import com.zanxiang.game.gs.data.serve.pojo.vo.BigRVO;
+import com.zanxiang.game.gs.data.serve.pojo.vo.PageVO;
+import com.zanxiang.game.gs.data.serve.service.IAdsRoleAmountDataParentService;
+import com.zanxiang.module.util.pojo.ResultVO;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.annotation.Resource;
+
+@Api(tags = {"GS充值付费比"})
+@RestController
+@RequestMapping("/game/parent")
+public class GameParentController {
+    @Resource
+    private IAdsRoleAmountDataParentService adsRoleAmountDataParentService;
+
+    @ApiOperation(value = "大R每日充值比")
+//    @PreAuthorize(permissionKey = "gameGs:bigR:list")
+    @PostMapping("/bigR/listOfPage")
+    public ResultVO<PageVO<BigRVO, Row>> bigRListOfPage(@Validated @RequestBody BigRDTO dto) {
+        return ResultVO.ok(adsRoleAmountDataParentService.bigRListOfPage(dto));
+    }
+
+}

+ 19 - 0
game-gs-data/game-gs-data-serve/src/main/java/com/zanxiang/game/gs/data/serve/dao/mapper/erp/SysUserMapper.java

@@ -0,0 +1,19 @@
+package com.zanxiang.game.gs.data.serve.dao.mapper.erp;
+
+import com.mybatisflex.annotation.UseDataSource;
+import com.zanxiang.game.gs.data.serve.pojo.entity.erp.SysUser;
+import com.mybatisflex.core.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 用户信息表 映射层。
+ *
+ * @author shaosong
+ * @since 1.0
+ */
+@Mapper
+@UseDataSource("dm_erp")
+public interface SysUserMapper extends BaseMapper<SysUser> {
+
+
+}

+ 19 - 0
game-gs-data/game-gs-data-serve/src/main/java/com/zanxiang/game/gs/data/serve/dao/mapper/game/order/GameAuthGroupMapper.java

@@ -0,0 +1,19 @@
+package com.zanxiang.game.gs.data.serve.dao.mapper.game.order;
+
+import com.mybatisflex.annotation.UseDataSource;
+import com.zanxiang.game.gs.data.serve.pojo.entity.game.order.GameAuthGroup;
+import com.mybatisflex.core.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 授权分组 映射层。
+ *
+ * @author shaosong
+ * @since 1.0
+ */
+@Mapper
+@UseDataSource("game_order")
+public interface GameAuthGroupMapper extends BaseMapper<GameAuthGroup> {
+
+
+}

+ 19 - 0
game-gs-data/game-gs-data-serve/src/main/java/com/zanxiang/game/gs/data/serve/dao/mapper/game/order/GameAuthRoleGroupMapper.java

@@ -0,0 +1,19 @@
+package com.zanxiang.game.gs.data.serve.dao.mapper.game.order;
+
+import com.mybatisflex.annotation.UseDataSource;
+import com.zanxiang.game.gs.data.serve.pojo.entity.game.order.GameAuthRoleGroup;
+import com.mybatisflex.core.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 游戏授权角色分组 映射层。
+ *
+ * @author shaosong
+ * @since 1.0
+ */
+@Mapper
+@UseDataSource("game_order")
+public interface GameAuthRoleGroupMapper extends BaseMapper<GameAuthRoleGroup> {
+
+
+}

+ 19 - 0
game-gs-data/game-gs-data-serve/src/main/java/com/zanxiang/game/gs/data/serve/dao/mapper/game/order/GameMapper.java

@@ -0,0 +1,19 @@
+package com.zanxiang.game.gs.data.serve.dao.mapper.game.order;
+
+import com.mybatisflex.annotation.UseDataSource;
+import com.zanxiang.game.gs.data.serve.pojo.entity.game.order.Game;
+import com.mybatisflex.core.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 游戏表 映射层。
+ *
+ * @author shaosong
+ * @since 1.0
+ */
+@Mapper
+@UseDataSource("game_order")
+public interface GameMapper extends BaseMapper<Game> {
+
+
+}

+ 19 - 0
game-gs-data/game-gs-data-serve/src/main/java/com/zanxiang/game/gs/data/serve/dao/mapper/game/order/GameServerMapper.java

@@ -0,0 +1,19 @@
+package com.zanxiang.game.gs.data.serve.dao.mapper.game.order;
+
+import com.mybatisflex.annotation.UseDataSource;
+import com.zanxiang.game.gs.data.serve.pojo.entity.game.order.GameServer;
+import com.mybatisflex.core.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 游戏区服表 映射层。
+ *
+ * @author shaosong
+ * @since 1.0
+ */
+@Mapper
+@UseDataSource("game_order")
+public interface GameServerMapper extends BaseMapper<GameServer> {
+
+
+}

+ 19 - 0
game-gs-data/game-gs-data-serve/src/main/java/com/zanxiang/game/gs/data/serve/dao/mapper/game/order/RoleOperateMapper.java

@@ -0,0 +1,19 @@
+package com.zanxiang.game.gs.data.serve.dao.mapper.game.order;
+
+import com.mybatisflex.annotation.UseDataSource;
+import com.zanxiang.game.gs.data.serve.pojo.entity.game.order.RoleOperate;
+import com.mybatisflex.core.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 角色操作表 映射层。
+ *
+ * @author shaosong
+ * @since 1.0
+ */
+@Mapper
+@UseDataSource("game_order")
+public interface RoleOperateMapper extends BaseMapper<RoleOperate> {
+
+
+}

+ 19 - 0
game-gs-data/game-gs-data-serve/src/main/java/com/zanxiang/game/gs/data/serve/dao/mapper/game/parent/AdsRoleAmountDataParentMapper.java

@@ -0,0 +1,19 @@
+package com.zanxiang.game.gs.data.serve.dao.mapper.game.parent;
+
+import com.mybatisflex.annotation.UseDataSource;
+import com.zanxiang.game.gs.data.serve.pojo.entity.game.parent.AdsRoleAmountDataParent;
+import com.mybatisflex.core.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 角色父游戏充值数据 映射层。
+ *
+ * @author shaosong
+ * @since 1.0
+ */
+@Mapper
+@UseDataSource("game_ads_parent")
+public interface AdsRoleAmountDataParentMapper extends BaseMapper<AdsRoleAmountDataParent> {
+
+
+}

+ 19 - 0
game-gs-data/game-gs-data-serve/src/main/java/com/zanxiang/game/gs/data/serve/dao/mapper/game/parent/AdsRoleAmountDataTodayParentMapper.java

@@ -0,0 +1,19 @@
+package com.zanxiang.game.gs.data.serve.dao.mapper.game.parent;
+
+import com.mybatisflex.annotation.UseDataSource;
+import com.zanxiang.game.gs.data.serve.pojo.entity.game.parent.AdsRoleAmountDataTodayParent;
+import com.mybatisflex.core.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 角色父游戏当天充值数据 映射层。
+ *
+ * @author shaosong
+ * @since 1.0
+ */
+@Mapper
+@UseDataSource("game_ads_parent")
+public interface AdsRoleAmountDataTodayParentMapper extends BaseMapper<AdsRoleAmountDataTodayParent> {
+
+
+}

+ 98 - 0
game-gs-data/game-gs-data-serve/src/main/java/com/zanxiang/game/gs/data/serve/handler/GlobalExceptionHandler.java

@@ -0,0 +1,98 @@
+package com.zanxiang.game.gs.data.serve.handler;
+
+import com.zanxiang.erp.security.exception.NoPermissionException;
+import com.zanxiang.module.util.DateUtil;
+import com.zanxiang.module.util.exception.BaseException;
+import com.zanxiang.module.util.pojo.ResultVO;
+import com.zanxiang.module.web.util.ServletUtil;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.http.converter.HttpMessageNotReadableException;
+import org.springframework.validation.BindException;
+import org.springframework.web.HttpRequestMethodNotSupportedException;
+import org.springframework.web.bind.MethodArgumentNotValidException;
+import org.springframework.web.bind.annotation.ExceptionHandler;
+import org.springframework.web.bind.annotation.RestControllerAdvice;
+import org.springframework.web.method.annotation.MethodArgumentTypeMismatchException;
+
+import java.time.LocalDateTime;
+
+/**
+ * 全局异常代理
+ */
+@Slf4j
+@RestControllerAdvice
+public class GlobalExceptionHandler {
+
+    /**
+     * 业务异常
+     */
+    @ExceptionHandler(BaseException.class)
+    public ResultVO<?> baseException(BaseException e) {
+        return ResultVO.fail(e.getMessage());
+    }
+
+    /**
+     * http method错误
+     *
+     * @param e
+     * @return
+     */
+    @ExceptionHandler(HttpRequestMethodNotSupportedException.class)
+    public ResultVO<?> methodNotSupportedException(HttpRequestMethodNotSupportedException e) {
+        log.error("URL:{}, 请求 method:{}, 支持的 method:{}", ServletUtil.getRequest().getRequestURL(), ServletUtil.getRequest().getMethod(), e.getSupportedMethods());
+        return ResultVO.fail("http method错误!");
+    }
+
+    /**
+     * 自定义参数校验错误
+     */
+    @ExceptionHandler(BindException.class)
+    public ResultVO<?> validatedBindException(BindException e) {
+        String message = e.getAllErrors().get(0).getDefaultMessage();
+        return ResultVO.fail(message);
+    }
+
+    /**
+     * 自定义参数校验错误
+     */
+    @ExceptionHandler(MethodArgumentNotValidException.class)
+    public ResultVO<?> validExceptionHandler(MethodArgumentNotValidException e) {
+        String message = e.getBindingResult().getFieldError().getDefaultMessage();
+        return ResultVO.fail(message);
+    }
+
+    /**
+     * 自定义参数校验错误
+     */
+    @ExceptionHandler(HttpMessageNotReadableException.class)
+    public ResultVO<?> validExceptionHandler(HttpMessageNotReadableException e) {
+        log.error(e.getMessage(), e);
+        return ResultVO.fail("参数异常,请勿非法操作");
+    }
+
+    /**
+     * 参数类型不匹配导致转换异常
+     *
+     * @param e
+     * @return
+     */
+    @ExceptionHandler(MethodArgumentTypeMismatchException.class)
+    public ResultVO<?> mismatchErrorHandler(MethodArgumentTypeMismatchException e) {
+        log.error("方法:{},字段:{},参数:{},错误信息:{}", e.getParameter().getMethod(), e.getName(), e.getValue(), e.getMessage());
+        return ResultVO.fail("请求参数异常,请勿非法操作");
+    }
+
+    /**
+     * 权限异常
+     */
+    @ExceptionHandler(NoPermissionException.class)
+    public ResultVO<?> preAuthorizeException(NoPermissionException e) {
+        return ResultVO.fail("没有权限,请联系管理员授权");
+    }
+
+    @ExceptionHandler(Exception.class)
+    public ResultVO<?> handleException(Exception e) {
+        log.error(e.getMessage(), e);
+        return ResultVO.fail(DateUtil.formatLocalDateTime(LocalDateTime.now()) + ": 服务异常,请联系管理员");
+    }
+}

+ 0 - 9
game-gs-data/game-gs-data-serve/src/main/java/com/zanxiang/game/gs/data/serve/pojo/BTable.java

@@ -1,9 +0,0 @@
-package com.zanxiang.game.gs.data.serve.pojo;
-
-/**
- * @author : lingfeng
- * @time : 2024-06-03
- * @description :
- */
-public class BTable {
-}

+ 22 - 0
game-gs-data/game-gs-data-serve/src/main/java/com/zanxiang/game/gs/data/serve/pojo/dto/BaseListDTO.java

@@ -0,0 +1,22 @@
+package com.zanxiang.game.gs.data.serve.pojo.dto;
+
+import lombok.Data;
+
+import javax.validation.constraints.Max;
+import javax.validation.constraints.Min;
+import javax.validation.constraints.NotNull;
+import java.io.Serializable;
+
+@Data
+public class BaseListDTO implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    @NotNull(message = "分页对象不能为空")
+    @Min(value = 1L, message = "起始页最小为 1")
+    private Integer pageNum;
+
+    @NotNull(message = "分页对象不能为空")
+    @Min(value = 1L, message = "页面大小(2~999)之间")
+    @Max(value = 999L, message = "页面大小(2~999)之间")
+    private Integer pageSize;
+}

+ 28 - 0
game-gs-data/game-gs-data-serve/src/main/java/com/zanxiang/game/gs/data/serve/pojo/dto/BigRDTO.java

@@ -0,0 +1,28 @@
+package com.zanxiang.game.gs.data.serve.pojo.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import javax.validation.constraints.NotBlank;
+import java.time.LocalDate;
+import java.util.List;
+
+@EqualsAndHashCode(callSuper = true)
+@Data
+public class BigRDTO extends BaseListDTO {
+    @NotBlank
+    @ApiModelProperty(notes = "SDK来源")
+    private String sourceSystem;
+    @ApiModelProperty("排序字段")
+    private String sortFiled;
+    @ApiModelProperty("排序类型:升序 true;降序 false")
+    private Boolean sortAsc = true;
+
+    @ApiModelProperty("统计日期开始")
+    private LocalDate dtBegin;
+    @ApiModelProperty("统计日期结束")
+    private LocalDate dtEnd;
+    @ApiModelProperty("gs id列表")
+    private List<Long> gsIdList;
+}

+ 92 - 0
game-gs-data/game-gs-data-serve/src/main/java/com/zanxiang/game/gs/data/serve/pojo/entity/erp/SysUser.java

@@ -0,0 +1,92 @@
+package com.zanxiang.game.gs.data.serve.pojo.entity.erp;
+
+import lombok.Data;
+import lombok.AllArgsConstructor;
+import lombok.NoArgsConstructor;
+import lombok.Builder;
+import com.mybatisflex.annotation.Column;
+import com.mybatisflex.annotation.Table;
+
+import java.lang.Long;
+import java.time.LocalDateTime;
+import java.lang.String;
+import java.lang.Integer;
+
+/**
+ * 用户信息表 实体类。
+ *
+ * @author shaosong
+ * @since 1.0
+ */
+@Data
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+@Table(value = "t_sys_user")
+public class SysUser {
+
+    @Column(value = "user_id")
+    private Long userId;
+
+    /**
+     * 登录账号
+     */
+    @Column(value = "account")
+    private String account;
+
+    /**
+     * 用户名
+     */
+    @Column(value = "nickname")
+    private String nickname;
+
+    /**
+     * 邮箱
+     */
+    @Column(value = "email")
+    private String email;
+
+    /**
+     * 手机号
+     */
+    @Column(value = "phone")
+    private String phone;
+
+    @Column(value = "sex")
+    private Integer sex;
+
+    @Column(value = "avatar")
+    private String avatar;
+
+    @Column(value = "password")
+    private String password;
+
+    @Column(value = "enabled")
+    private Integer enabled;
+
+    @Column(value = "del_flag")
+    private String delFlag;
+
+    @Column(value = "login_ip")
+    private String loginIp;
+
+    @Column(value = "login_date")
+    private LocalDateTime loginDate;
+
+    @Column(value = "remark")
+    private String remark;
+
+    @Column(value = "create_by")
+    private Long createBy;
+
+    @Column(value = "create_time")
+    private LocalDateTime createTime;
+
+    @Column(value = "update_by")
+    private Long updateBy;
+
+    @Column(value = "update_time")
+    private LocalDateTime updateTime;
+
+
+}

+ 282 - 0
game-gs-data/game-gs-data-serve/src/main/java/com/zanxiang/game/gs/data/serve/pojo/entity/game/order/Game.java

@@ -0,0 +1,282 @@
+package com.zanxiang.game.gs.data.serve.pojo.entity.game.order;
+
+import lombok.Data;
+import lombok.AllArgsConstructor;
+import lombok.NoArgsConstructor;
+import lombok.Builder;
+import com.mybatisflex.annotation.Column;
+import com.mybatisflex.annotation.Table;
+
+import java.lang.Double;
+import java.lang.Long;
+import java.time.LocalDateTime;
+import java.lang.String;
+import java.lang.Integer;
+
+/**
+ * 游戏表 实体类。
+ *
+ * @author shaosong
+ * @since 1.0
+ */
+@Data
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+@Table(value = "t_game")
+public class Game {
+
+    /**
+     * SDK来源
+     */
+    @Column(value = "source_system")
+    private String sourceSystem;
+
+    /**
+     * 游戏ID
+     */
+    @Column(value = "id")
+    private Integer id;
+
+    /**
+     * 游戏名称
+     */
+    @Column(value = "game_name")
+    private String gameName;
+
+    /**
+     * 游戏的拼音
+     */
+    @Column(value = "en_name")
+    private String enName;
+
+    /**
+     * 首字母
+     */
+    @Column(value = "en_abbr")
+    private String enAbbr;
+
+    /**
+     * appkey
+     */
+    @Column(value = "app_key")
+    private String appKey;
+
+    /**
+     * 游戏标签
+     */
+    @Column(value = "tags")
+    private String tags;
+
+    /**
+     * 游戏类型
+     */
+    @Column(value = "category")
+    private String category;
+
+    /**
+     * 游戏类别,3开头为android 4 开头为IOS 5 开头为H5 6开头为小程序 对应于game_class中的ID
+     */
+    @Column(value = "classify")
+    private Integer classify;
+
+    /**
+     * CP回调路径
+     */
+    @Column(value = "cp_payback_url")
+    private String cpPaybackUrl;
+
+    /**
+     * CP ID
+     */
+    @Column(value = "cp_id")
+    private Integer cpId;
+
+    /**
+     * 父游戏ID
+     */
+    @Column(value = "parent_id")
+    private Integer parentId;
+
+    /**
+     * 包名
+     */
+    @Column(value = "package_name")
+    private String packageName;
+
+    /**
+     * 上线时间
+     */
+    @Column(value = "run_time")
+    private LocalDateTime runTime;
+
+    /**
+     * 创建时间
+     */
+    @Column(value = "create_time")
+    private LocalDateTime createTime;
+
+    /**
+     * 更新时间
+     */
+    @Column(value = "update_time")
+    private LocalDateTime updateTime;
+
+    /**
+     * 删除时间
+     */
+    @Column(value = "delete_time")
+    private LocalDateTime deleteTime;
+
+    /**
+     * 添加CP时间
+     */
+    @Column(value = "add_cp_time")
+    private LocalDateTime addCpTime;
+
+    /**
+     * 苹果应用ID
+     */
+    @Column(value = "apple_id")
+    private String appleId;
+
+    /**
+     * 扩展 JSON格式 hot_image fine_image rebate_description  vip_description fine_description
+     */
+    @Column(value = "ext_info")
+    private String extInfo;
+
+    /**
+     * 游戏互跳,1为互跳,2为不互跳
+     */
+    @Column(value = "jump_switch")
+    private Integer jumpSwitch;
+
+    /**
+     * 是否推广,1为推广,2为不推广
+     */
+    @Column(value = "is_push")
+    private Integer isPush;
+
+    /**
+     * 是否异常,1为异常,2为不异常
+     */
+    @Column(value = "is_exp")
+    private Integer isExp;
+
+    /**
+     * 支付切换,1为切换,2为不切换
+     */
+    @Column(value = "pay_switch")
+    private Integer paySwitch;
+
+    /**
+     * 是否开启订单切量 1否 2是
+     */
+    @Column(value = "order_switch")
+    private Integer orderSwitch;
+
+    /**
+     * 支付显示,1为不显示,2为显示
+     */
+    @Column(value = "pay_show")
+    private Integer payShow;
+
+    /**
+     * 1 不显示浮点 2 显示浮点
+     */
+    @Column(value = "float_is_show")
+    private Integer floatIsShow;
+
+    /**
+     * 上线状态1 接入中, 2 可上线,3 已下线
+     */
+    @Column(value = "status")
+    private Integer status;
+
+    /**
+     * 1 伪删除  2 正常
+     */
+    @Column(value = "is_delete", isLogicDelete = true)
+    private Integer isDelete;
+
+    /**
+     * 1在线游戏 2 单机
+     */
+    @Column(value = "is_online")
+    private Integer isOnline;
+
+    /**
+     * 1 不是SDK游戏  2 是SDK游戏
+     */
+    @Column(value = "is_sdk")
+    private Integer isSdk;
+
+    /**
+     * 分成比例
+     */
+    @Column(value = "share_scale")
+    private Double shareScale;
+
+    /**
+     * 关联h5游戏id
+     */
+    @Column(value = "h5_game_id")
+    private Long h5GameId;
+
+    /**
+     * 导量游戏id
+     */
+    @Column(value = "guide_game_id")
+    private Long guideGameId;
+
+    /**
+     * 游戏地址
+     */
+    @Column(value = "game_url")
+    private String gameUrl;
+
+    /**
+     * 版本
+     */
+    @Column(value = "version")
+    private String version;
+
+    /**
+     * 下载次数
+     */
+    @Column(value = "download_count")
+    private Long downloadCount;
+
+    /**
+     * 游戏分类父id,多个
+     */
+    @Column(value = "classify_parent")
+    private String classifyParent;
+
+    /**
+     * 超父游戏ID
+     */
+    @Column(value = "super_game_id")
+    private Long superGameId;
+
+    /**
+     * 导量游戏ID
+     */
+    @Column(value = "guide_game_ids")
+    private String guideGameIds;
+
+    /**
+     * 是否通用包游戏
+     */
+    @Column(value = "is_common_game")
+    private Integer isCommonGame;
+
+    /**
+     * APP类型
+     */
+    @Column(value = "app_type")
+    private String appType;
+
+
+}

+ 77 - 0
game-gs-data/game-gs-data-serve/src/main/java/com/zanxiang/game/gs/data/serve/pojo/entity/game/order/GameAuthGroup.java

@@ -0,0 +1,77 @@
+package com.zanxiang.game.gs.data.serve.pojo.entity.game.order;
+
+import lombok.Data;
+import lombok.AllArgsConstructor;
+import lombok.NoArgsConstructor;
+import lombok.Builder;
+import com.mybatisflex.annotation.Column;
+import com.mybatisflex.annotation.Table;
+
+import java.lang.Long;
+import java.time.LocalDateTime;
+import java.lang.String;
+import java.lang.Integer;
+
+/**
+ * 授权分组 实体类。
+ *
+ * @author shaosong
+ * @since 1.0
+ */
+@Data
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+@Table(value = "t_game_auth_group")
+public class GameAuthGroup {
+
+    /**
+     * SDK来源
+     */
+    @Column(value = "source_system")
+    private String sourceSystem;
+
+    /**
+     * 主键
+     */
+    @Column(value = "id")
+    private Long id;
+
+    /**
+     * 组名称
+     */
+    @Column(value = "group_name")
+    private String groupName;
+
+    /**
+     * 0正常1删除
+     */
+    @Column(value = "is_delete",isLogicDelete = true)
+    private Integer isDelete;
+
+    /**
+     * 创建者
+     */
+    @Column(value = "create_by")
+    private Long createBy;
+
+    /**
+     * 创建时间
+     */
+    @Column(value = "create_time")
+    private LocalDateTime createTime;
+
+    /**
+     * 更新者
+     */
+    @Column(value = "update_by")
+    private Long updateBy;
+
+    /**
+     * 更新时间
+     */
+    @Column(value = "update_time")
+    private LocalDateTime updateTime;
+
+
+}

+ 90 - 0
game-gs-data/game-gs-data-serve/src/main/java/com/zanxiang/game/gs/data/serve/pojo/entity/game/order/GameAuthRoleGroup.java

@@ -0,0 +1,90 @@
+package com.zanxiang.game.gs.data.serve.pojo.entity.game.order;
+
+import com.mybatisflex.annotation.RelationManyToOne;
+import lombok.Data;
+import lombok.AllArgsConstructor;
+import lombok.NoArgsConstructor;
+import lombok.Builder;
+import com.mybatisflex.annotation.Column;
+import com.mybatisflex.annotation.Table;
+
+import java.lang.Long;
+import java.time.LocalDateTime;
+import java.lang.String;
+import java.lang.Integer;
+
+/**
+ * 游戏授权角色分组 实体类。
+ *
+ * @author shaosong
+ * @since 1.0
+ */
+@Data
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+@Table(value = "t_game_auth_role_group")
+public class GameAuthRoleGroup {
+
+    /**
+     * SDK来源
+     */
+    @Column(value = "source_system")
+    private String sourceSystem;
+
+    /**
+     * 主键
+     */
+    @Column(value = "id")
+    private Long id;
+
+    /**
+     * 用户id
+     */
+    @Column(value = "user_id")
+    private Long userId;
+
+    /**
+     * 分组id
+     */
+    @Column(value = "group_id")
+    private Long groupId;
+
+    /**
+     * 是否组长
+     */
+    @Column(value = "is_leader")
+    private Integer isLeader;
+
+    /**
+     * 0正常1删除
+     */
+    @Column(value = "is_delete",isLogicDelete = true)
+    private Integer isDelete;
+
+    /**
+     * 创建者
+     */
+    @Column(value = "create_by")
+    private Long createBy;
+
+    /**
+     * 创建时间
+     */
+    @Column(value = "create_time")
+    private LocalDateTime createTime;
+
+    /**
+     * 更新者
+     */
+    @Column(value = "update_by")
+    private Long updateBy;
+
+    /**
+     * 更新时间
+     */
+    @Column(value = "update_time")
+    private LocalDateTime updateTime;
+
+
+}

+ 157 - 0
game-gs-data/game-gs-data-serve/src/main/java/com/zanxiang/game/gs/data/serve/pojo/entity/game/order/GameServer.java

@@ -0,0 +1,157 @@
+package com.zanxiang.game.gs.data.serve.pojo.entity.game.order;
+
+import lombok.Data;
+import lombok.AllArgsConstructor;
+import lombok.NoArgsConstructor;
+import lombok.Builder;
+import com.mybatisflex.annotation.Column;
+import com.mybatisflex.annotation.Table;
+
+import java.lang.Long;
+import java.time.LocalDateTime;
+import java.lang.String;
+import java.lang.Integer;
+
+/**
+ * 游戏区服表 实体类。
+ *
+ * @author shaosong
+ * @since 1.0
+ */
+@Data
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+@Table(value = "t_game_server")
+public class GameServer {
+
+    /**
+     * SDK来源
+     */
+    @Column(value = "source_system")
+    private String sourceSystem;
+
+    @Column(value = "id")
+    private Integer id;
+
+    /**
+     * 游戏ID
+     */
+    @Column(value = "game_id")
+    private Integer gameId;
+
+    /**
+     * 小区服id
+     */
+    @Column(value = "server_id")
+    private String serverId;
+
+    /**
+     * 区服名称 1服
+     */
+    @Column(value = "server_name")
+    private String serverName;
+
+    /**
+     * 大区服id
+     */
+    @Column(value = "regional_id")
+    private Integer regionalId;
+
+    /**
+     * 大区服名称
+     */
+    @Column(value = "regional_name")
+    private Integer regionalName;
+
+    /**
+     * 父游戏id
+     */
+    @Column(value = "parent_app_id")
+    private Integer parentAppId;
+
+    /**
+     * 区服标识
+     */
+    @Column(value = "ser_code")
+    private String serCode;
+
+    /**
+     * 新服描述 例如
+     */
+    @Column(value = "ser_desc")
+    private String serDesc;
+
+    /**
+     * 开服时间
+     */
+    @Column(value = "start_time")
+    private LocalDateTime startTime;
+
+    /**
+     * 新服状态,1为预告,2为已开服
+     */
+    @Column(value = "status")
+    private Integer status;
+
+    /**
+     * 伪删除,2 正常,1 删除
+     */
+    private Integer isDelete;
+
+    /**
+     * 删除时间
+     */
+    @Column(value = "delete_time")
+    private LocalDateTime deleteTime;
+
+    /**
+     * 创建时间
+     */
+    @Column(value = "create_time")
+    private LocalDateTime createTime;
+
+    /**
+     * 更新时间
+     */
+    @Column(value = "update_time")
+    private LocalDateTime updateTime;
+
+    @Column(value = "game_name")
+    private String gameName;
+
+    @Column(value = "classify")
+    private Integer classify;
+
+    /**
+     * 父游戏ID
+     */
+    @Column(value = "parent_game_id")
+    private Long parentGameId;
+
+    /**
+     * 父游戏名称
+     */
+    @Column(value = "parent_game_name")
+    private String parentGameName;
+
+    /**
+     * 父游戏类型
+     */
+    @Column(value = "parent_game_classify")
+    private Integer parentGameClassify;
+
+    /**
+     * 超父游戏ID
+     */
+    @Column(value = "supper_game_id")
+    private Integer supperGameId;
+
+    /**
+     * 超父游戏名称
+     */
+    @Column(value = "supper_game_name")
+    private String supperGameName;
+
+
+}

+ 194 - 0
game-gs-data/game-gs-data-serve/src/main/java/com/zanxiang/game/gs/data/serve/pojo/entity/game/order/RoleOperate.java

@@ -0,0 +1,194 @@
+package com.zanxiang.game.gs.data.serve.pojo.entity.game.order;
+
+import lombok.Data;
+import lombok.AllArgsConstructor;
+import lombok.NoArgsConstructor;
+import lombok.Builder;
+import com.mybatisflex.annotation.Column;
+import com.mybatisflex.annotation.Table;
+
+import java.lang.Long;
+import java.time.LocalDateTime;
+import java.lang.String;
+import java.lang.Integer;
+
+/**
+ * 角色操作表 实体类。
+ *
+ * @author shaosong
+ * @since 1.0
+ */
+@Data
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+@Table(value = "t_role_operate")
+public class RoleOperate {
+
+    /**
+     * 游戏ID
+     */
+    @Column(value = "source_system")
+    private String sourceSystem;
+
+    @Column(value = "id")
+    private Long id;
+
+    /**
+     * 游戏id
+     */
+    @Column(value = "game_id")
+    private Long gameId;
+
+    /**
+     * 区服id
+     */
+    @Column(value = "server_id")
+    private String serverId;
+
+    /**
+     * 用户id
+     */
+    @Column(value = "user_id")
+    private Long userId;
+
+    /**
+     * 角色id
+     */
+    @Column(value = "role_id")
+    private String roleId;
+
+    /**
+     * 是否发送邮件
+     */
+    @Column(value = "is_send_mail")
+    private Integer isSendMail;
+
+    /**
+     * 最新发送礼物id
+     */
+    @Column(value = "send_gift_id")
+    private Long sendGiftId;
+
+    /**
+     * 是否转端
+     */
+    @Column(value = "is_change_game_type")
+    private Integer isChangeGameType;
+
+    /**
+     * 是否添加企微
+     */
+    @Column(value = "is_add_corp_wechat")
+    private Integer isAddCorpWechat;
+
+    /**
+     * 企微号
+     */
+    @Column(value = "add_corp_user_id")
+    private String addCorpUserId;
+
+    /**
+     * 客户微信
+     */
+    @Column(value = "user_wechat")
+    private String userWechat;
+
+    /**
+     * 客户手机
+     */
+    @Column(value = "user_phone")
+    private String userPhone;
+
+    /**
+     * 是否退游
+     */
+    @Column(value = "is_remove_game")
+    private Integer isRemoveGame;
+
+    /**
+     * 是否唤醒
+     */
+    @Column(value = "is_wake_up")
+    private Integer isWakeUp;
+
+    /**
+     * 备注
+     */
+    @Column(value = "remark")
+    private String remark;
+
+    /**
+     * GS
+     */
+    @Column(value = "gs_id")
+    private Long gsId;
+
+    /**
+     * 客服
+     */
+    @Column(value = "customer_service_id")
+    private Long customerServiceId;
+
+    /**
+     * 运营
+     */
+    @Column(value = "oper_user_id")
+    private Long operUserId;
+
+    /**
+     * 投手
+     */
+    @Column(value = "put_user_id")
+    private Long putUserId;
+
+    /**
+     * 创建时间
+     */
+    @Column(value = "create_time")
+    private LocalDateTime createTime;
+
+    /**
+     * 创建者
+     */
+    @Column(value = "create_by")
+    private Long createBy;
+
+    /**
+     * 更新时间
+     */
+    @Column(value = "update_time")
+    private LocalDateTime updateTime;
+
+    /**
+     * 更新者
+     */
+    @Column(value = "update_by")
+    private Long updateBy;
+
+    /**
+     * 1 删除  0正常
+     */
+    @Column(value = "is_delete", isLogicDelete = true)
+    private Integer isDelete;
+
+    /**
+     * 企业iD
+     */
+    @Column(value = "corp_id")
+    private String corpId;
+
+    /**
+     * 企微客户id
+     */
+    @Column(value = "external_user_id")
+    private String externalUserId;
+
+    /**
+     * GS账号(记录GS人员id)
+     */
+    @Column(value = "gs_account")
+    private Long gsAccount;
+
+
+}

+ 157 - 0
game-gs-data/game-gs-data-serve/src/main/java/com/zanxiang/game/gs/data/serve/pojo/entity/game/parent/AdsRoleAmountDataParent.java

@@ -0,0 +1,157 @@
+package com.zanxiang.game.gs.data.serve.pojo.entity.game.parent;
+
+import lombok.Data;
+import lombok.AllArgsConstructor;
+import lombok.NoArgsConstructor;
+import lombok.Builder;
+import com.mybatisflex.annotation.Column;
+import com.mybatisflex.annotation.Table;
+
+import java.math.BigDecimal;
+import java.lang.Long;
+import java.time.LocalDateTime;
+import java.lang.String;
+import java.lang.Integer;
+
+/**
+ * 角色父游戏充值数据 实体类。
+ *
+ * @author shaosong
+ * @since 1.0
+ */
+@Data
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+@Table(value = "ads_role_amount_data_parent")
+public class AdsRoleAmountDataParent {
+    @Column(value = "game_id")
+    private String gameId;
+
+    /**
+     * 角色ID
+     */
+    @Column(value = "role_id")
+    private String roleId;
+
+    /**
+     * 角色名称
+     */
+    @Column(value = "role_name")
+    private String roleName;
+
+    /**
+     * 区服ID
+     */
+    @Column(value = "server_id")
+    private String serverId;
+
+    /**
+     * 父游戏ID
+     */
+    @Column(value = "parent_game_id")
+    private Integer parentGameId;
+
+    /**
+     * 父用户ID
+     */
+    @Column(value = "association_user_id")
+    private Long associationUserId;
+
+    /**
+     * 角色vip
+     */
+    @Column(value = "role_vip")
+    private Integer roleVip;
+
+    /**
+     * 角色等级
+     */
+    @Column(value = "role_level")
+    private Integer roleLevel;
+
+    /**
+     * 角色攻击力
+     */
+    @Column(value = "combat_num")
+    private Long combatNum;
+
+    /**
+     * 国家
+     */
+    @Column(value = "country")
+    private String country;
+
+    /**
+     * 角色创建时间
+     */
+    @Column(value = "role_time")
+    private LocalDateTime roleTime;
+
+    /**
+     * 角色首充金额
+     */
+    @Column(value = "first_amount")
+    private BigDecimal firstAmount;
+
+    /**
+     * 创角24小时付费金额
+     */
+    @Column(value = "role_hour_amount")
+    private BigDecimal roleHourAmount;
+
+    /**
+     * 角色最近充值金额
+     */
+    @Column(value = "last_amount")
+    private BigDecimal lastAmount;
+
+    /**
+     * 角色最近充值时间
+     */
+    @Column(value = "last_order_time")
+    private LocalDateTime lastOrderTime;
+
+    /**
+     * 角色最近充值产品
+     */
+    @Column(value = "product_name")
+    private String productName;
+
+    /**
+     * 角色累计充值金额
+     */
+    @Column(value = "total_amount")
+    private BigDecimal totalAmount;
+
+    /**
+     * 角色累计充值次数
+     */
+    @Column(value = "total_cnt")
+    private Integer totalCnt;
+
+    /**
+     * 角色最近活跃时间
+     */
+    @Column(value = "active_time")
+    private LocalDateTime activeTime;
+
+    /**
+     * 小程序充值金额
+     */
+    @Column(value = "app_amount")
+    private BigDecimal appAmount;
+
+    /**
+     * 角色转端充值比
+     */
+    @Column(value = "proportion")
+    private BigDecimal proportion;
+
+
+    @Column(value = "concat_game")
+    private String concatGame;
+
+    @Column(value = "gs_id")
+    private Long gsId;
+}

+ 102 - 0
game-gs-data/game-gs-data-serve/src/main/java/com/zanxiang/game/gs/data/serve/pojo/entity/game/parent/AdsRoleAmountDataTodayParent.java

@@ -0,0 +1,102 @@
+package com.zanxiang.game.gs.data.serve.pojo.entity.game.parent;
+
+import lombok.Data;
+import lombok.AllArgsConstructor;
+import lombok.NoArgsConstructor;
+import lombok.Builder;
+import com.mybatisflex.annotation.Column;
+import com.mybatisflex.annotation.Table;
+
+import java.math.BigDecimal;
+import java.time.LocalDate;
+import java.lang.String;
+import java.lang.Integer;
+
+/**
+ * 角色父游戏当天充值数据 实体类。
+ *
+ * @author shaosong
+ * @since 1.0
+ */
+@Data
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+@Table(value = "ads_role_amount_data_today_parent")
+public class AdsRoleAmountDataTodayParent {
+
+    /**
+     * 充值日期
+     */
+    @Column(value = "day")
+    private LocalDate day;
+
+    @Column(value = "game_id")
+    private String gameId;
+
+    /**
+     * 角色ID
+     */
+    @Column(value = "role_id")
+    private String roleId;
+
+    /**
+     * 系统
+     */
+    @Column(value = "source_system")
+    private String sourceSystem;
+
+    /**
+     * 角色当天充值金额
+     */
+    @Column(value = "today_amount")
+    private BigDecimal todayAmount;
+
+    /**
+     * 父游戏ID
+     */
+    @Column(value = "parent_game_id")
+    private Integer parentGameId;
+
+    /**
+     * 区服ID
+     */
+    @Column(value = "server_id")
+    private String serverId;
+
+    /**
+     * 角色当天充值次数
+     */
+    @Column(value = "today_count")
+    private Integer todayCount;
+
+    /**
+     * 游戏充值金额
+     */
+    @Column(value = "game_amount")
+    private BigDecimal gameAmount;
+
+    /**
+     * 区服充值金额
+     */
+    @Column(value = "server_amount")
+    private BigDecimal serverAmount;
+
+    /**
+     * 游戏充值比
+     */
+    @Column(value = "game_proportion")
+    private BigDecimal gameProportion;
+
+    /**
+     * 区服充值比
+     */
+    @Column(value = "server_proportion")
+    private BigDecimal serverProportion;
+
+    @Column(value = "concat_game")
+    private String concatGame;
+
+    @Column(value = "gs_id")
+    private Long gsId;
+}

+ 173 - 0
game-gs-data/game-gs-data-serve/src/main/java/com/zanxiang/game/gs/data/serve/pojo/vo/BigRVO.java

@@ -0,0 +1,173 @@
+package com.zanxiang.game.gs.data.serve.pojo.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+import java.util.List;
+
+@Data
+public class BigRVO {
+    @ApiModelProperty("游戏ID")
+    private Integer gameId;
+    @ApiModelProperty("角色ID")
+    private String roleId;
+
+    /**
+     * 角色名称
+     */
+    @ApiModelProperty("角色名称")
+    private String roleName;
+
+    /**
+     * 区服ID
+     */
+    @ApiModelProperty("区服ID")
+    private String serverId;
+
+    @ApiModelProperty("区服名称")
+    private String serverName;
+
+    /**
+     * 父游戏ID
+     */
+    @ApiModelProperty("父游戏ID")
+    private Integer parentGameId;
+    @ApiModelProperty("父游戏名称")
+    private String parentGameName;
+
+    /**
+     * 父用户ID
+     */
+    @ApiModelProperty("父用户ID")
+    private Long associationUserId;
+
+    /**
+     * 角色vip
+     */
+    @ApiModelProperty("角色vip")
+    private Integer roleVip;
+
+    /**
+     * 角色等级
+     */
+    @ApiModelProperty("角色等级")
+    private Integer roleLevel;
+
+    /**
+     * 角色攻击力
+     */
+    @ApiModelProperty("角色攻击力")
+    private Long combatNum;
+
+    /**
+     * 国家
+     */
+    @ApiModelProperty("国家")
+    private String country;
+
+    /**
+     * 角色创建时间
+     */
+    @ApiModelProperty("角色创建时间")
+    private LocalDateTime roleTime;
+    @ApiModelProperty("角色创角天数")
+    private Long roleCreateDayDiff;
+    @ApiModelProperty("角色最近充值时间距今")
+    private Long lastOrderDayDiff;
+    @ApiModelProperty("角色最近活跃时间距今")
+    private Long roleActiveDayDiff;
+
+    /**
+     * 角色首充金额
+     */
+    @ApiModelProperty("角色首充金额")
+    private BigDecimal firstAmount;
+
+    /**
+     * 创角24小时付费金额
+     */
+    @ApiModelProperty("创角24小时付费金额")
+    private BigDecimal roleHourAmount;
+
+    /**
+     * 角色最近充值金额
+     */
+    @ApiModelProperty("角色最近充值金额")
+    private BigDecimal lastAmount;
+
+    /**
+     * 角色最近充值时间
+     */
+    @ApiModelProperty("角色最近充值时间")
+    private LocalDateTime lastOrderTime;
+
+    /**
+     * 角色最近充值产品
+     */
+    @ApiModelProperty("角色最近充值产品")
+    private String productName;
+
+    /**
+     * 角色累计充值金额
+     */
+    @ApiModelProperty("角色累计充值金额")
+    private BigDecimal totalAmount;
+
+    /**
+     * 角色累计充值次数
+     */
+    @ApiModelProperty("角色累计充值次数")
+    private Integer totalCnt;
+
+    /**
+     * 角色最近活跃时间
+     */
+    @ApiModelProperty("角色最近活跃时间")
+    private LocalDateTime activeTime;
+
+    /**
+     * 小程序充值金额
+     */
+    @ApiModelProperty("小程序充值金额")
+    private BigDecimal appAmount;
+
+    /**
+     * 角色转端充值比
+     */
+    @ApiModelProperty("角色转端充值比")
+    private BigDecimal proportion;
+
+    /**
+     * 角色当天充值金额
+     */
+    @ApiModelProperty("角色当天充值金额")
+    private BigDecimal todayAmount;
+
+    /**
+     * 角色当天充值次数
+     */
+    @ApiModelProperty("角色当天充值次数")
+    private Integer todayCount;
+
+    /**
+     * 游戏充值比
+     */
+    @ApiModelProperty("游戏充值比")
+    private BigDecimal gameProportion;
+
+    /**
+     * 区服充值比
+     */
+    @ApiModelProperty("区服充值比")
+    private BigDecimal serverProportion;
+
+    @ApiModelProperty("GS名称")
+    private String gsName;
+    @ApiModelProperty("GS ID")
+    private Long gsId;
+
+    @ApiModelProperty("GS组名称")
+    private List<String> gsGroupName;
+}

+ 43 - 0
game-gs-data/game-gs-data-serve/src/main/java/com/zanxiang/game/gs/data/serve/pojo/vo/PageVO.java

@@ -0,0 +1,43 @@
+package com.zanxiang.game.gs.data.serve.pojo.vo;
+
+import com.mybatisflex.core.paginate.Page;
+import com.zanxiang.game.gs.data.serve.pojo.dto.BaseListDTO;
+import lombok.Data;
+
+import java.util.Collections;
+import java.util.List;
+
+@Data
+public class PageVO<T, S> {
+
+    private long current;
+    private long size;
+    private long total;
+    private long pages;
+    private List<T> records;
+    private S sumRecord;
+
+    public PageVO(long current, long size) {
+        this(current, size, 0, Collections.emptyList());
+    }
+
+    public PageVO(long current, long size, long total, List<T> records) {
+        this.current = 0;
+        this.size = size;
+        this.total = total;
+        this.pages = this.total % this.size > 0 ? this.total / this.size + 1 : this.total / this.size;
+        this.records = records;
+    }
+
+    public PageVO(Page<T> page) {
+        this.current = page.getPageNumber();
+        this.size = page.getPageSize();
+        this.total = page.getTotalRow();
+        this.pages = page.getTotalPage();
+        this.records = page.getRecords();
+    }
+
+    public static <T, S> PageVO<T, S> empty(BaseListDTO dto) {
+        return new PageVO<>(dto.getPageNum(), dto.getPageSize(), 0, Collections.emptyList());
+    }
+}

+ 0 - 9
game-gs-data/game-gs-data-serve/src/main/java/com/zanxiang/game/gs/data/serve/service/ATestService.java

@@ -1,9 +0,0 @@
-package com.zanxiang.game.gs.data.serve.service;
-
-/**
- * @author : lingfeng
- * @time : 2024-06-03
- * @description :
- */
-public class ATestService {
-}

+ 20 - 0
game-gs-data/game-gs-data-serve/src/main/java/com/zanxiang/game/gs/data/serve/service/IAdsRoleAmountDataParentService.java

@@ -0,0 +1,20 @@
+package com.zanxiang.game.gs.data.serve.service;
+
+
+import com.mybatisflex.core.row.Row;
+import com.zanxiang.game.gs.data.serve.pojo.dto.BigRDTO;
+import com.zanxiang.game.gs.data.serve.pojo.entity.game.parent.AdsRoleAmountDataParent;
+import com.mybatisflex.core.service.IService;
+import com.zanxiang.game.gs.data.serve.pojo.vo.BigRVO;
+import com.zanxiang.game.gs.data.serve.pojo.vo.PageVO;
+
+/**
+ * 角色父游戏充值数据 服务层。
+ *
+ * @author shaosong
+ * @since 1.0
+ */
+public interface IAdsRoleAmountDataParentService extends IService<AdsRoleAmountDataParent> {
+
+    PageVO<BigRVO, Row> bigRListOfPage(BigRDTO dto);
+}

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

@@ -0,0 +1,15 @@
+package com.zanxiang.game.gs.data.serve.service;
+
+
+import com.zanxiang.game.gs.data.serve.pojo.entity.game.parent.AdsRoleAmountDataTodayParent;
+import com.mybatisflex.core.service.IService;
+
+/**
+ * 角色父游戏当天充值数据 服务层。
+ *
+ * @author shaosong
+ * @since 1.0
+ */
+public interface IAdsRoleAmountDataTodayParentService extends IService<AdsRoleAmountDataTodayParent> {
+
+}

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

@@ -0,0 +1,15 @@
+package com.zanxiang.game.gs.data.serve.service;
+
+
+import com.zanxiang.game.gs.data.serve.pojo.entity.game.order.GameAuthGroup;
+import com.mybatisflex.core.service.IService;
+
+/**
+ * 授权分组 服务层。
+ *
+ * @author shaosong
+ * @since 1.0
+ */
+public interface IGameAuthGroupService extends IService<GameAuthGroup> {
+
+}

+ 20 - 0
game-gs-data/game-gs-data-serve/src/main/java/com/zanxiang/game/gs/data/serve/service/IGameAuthRoleGroupService.java

@@ -0,0 +1,20 @@
+package com.zanxiang.game.gs.data.serve.service;
+
+
+import com.zanxiang.game.gs.data.serve.pojo.entity.game.order.GameAuthRoleGroup;
+import com.mybatisflex.core.service.IService;
+
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 游戏授权角色分组 服务层。
+ *
+ * @author shaosong
+ * @since 1.0
+ */
+public interface IGameAuthRoleGroupService extends IService<GameAuthRoleGroup> {
+
+    Map<Long, List<String>> getGsGroupMap(String sourceSystem, Collection<Long> gsIdList);
+}

+ 19 - 0
game-gs-data/game-gs-data-serve/src/main/java/com/zanxiang/game/gs/data/serve/service/IGameServerService.java

@@ -0,0 +1,19 @@
+package com.zanxiang.game.gs.data.serve.service;
+
+
+import com.zanxiang.game.gs.data.serve.pojo.entity.game.order.GameServer;
+import com.mybatisflex.core.service.IService;
+
+import java.util.Collection;
+import java.util.Map;
+
+/**
+ * 游戏区服表 服务层。
+ *
+ * @author shaosong
+ * @since 1.0
+ */
+public interface IGameServerService extends IService<GameServer> {
+
+    Map<Integer, Map<String, String>> gameServerMap(String sourceSystem, Collection<String> serverIdList);
+}

+ 20 - 0
game-gs-data/game-gs-data-serve/src/main/java/com/zanxiang/game/gs/data/serve/service/IGameService.java

@@ -0,0 +1,20 @@
+package com.zanxiang.game.gs.data.serve.service;
+
+
+import com.zanxiang.game.gs.data.serve.pojo.entity.game.order.Game;
+import com.mybatisflex.core.service.IService;
+
+import javax.validation.constraints.NotBlank;
+import java.util.Collection;
+import java.util.Map;
+
+/**
+ * 游戏表 服务层。
+ *
+ * @author shaosong
+ * @since 1.0
+ */
+public interface IGameService extends IService<Game> {
+
+    Map<Integer, String> gameNameMap(String sourceSystem, Collection<Integer> gameIdList);
+}

+ 22 - 0
game-gs-data/game-gs-data-serve/src/main/java/com/zanxiang/game/gs/data/serve/service/IRoleOperateService.java

@@ -0,0 +1,22 @@
+package com.zanxiang.game.gs.data.serve.service;
+
+
+import com.zanxiang.game.gs.data.serve.pojo.entity.game.order.RoleOperate;
+import com.mybatisflex.core.service.IService;
+
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
+
+/**
+ * 角色操作表 服务层。
+ *
+ * @author shaosong
+ * @since 1.0
+ */
+public interface IRoleOperateService extends IService<RoleOperate> {
+
+    List<RoleOperate> getRoleOperateByGs(String sourceSystem, Collection<Long> gsIdlist);
+
+    List<RoleOperate> getRoleOperateByGameIdAndRoleId(String sourceSystem, Collection<Long> gameIdList, Collection<String> roleIdList);
+}

+ 20 - 0
game-gs-data/game-gs-data-serve/src/main/java/com/zanxiang/game/gs/data/serve/service/ISysUserService.java

@@ -0,0 +1,20 @@
+package com.zanxiang.game.gs.data.serve.service;
+
+
+import com.zanxiang.game.gs.data.serve.pojo.entity.erp.SysUser;
+import com.mybatisflex.core.service.IService;
+
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 用户信息表 服务层。
+ *
+ * @author shaosong
+ * @since 1.0
+ */
+public interface ISysUserService extends IService<SysUser> {
+
+    Map<Long,String> getSysUserMap(Collection<Long> userIdList);
+}

+ 163 - 0
game-gs-data/game-gs-data-serve/src/main/java/com/zanxiang/game/gs/data/serve/service/impl/AdsRoleAmountDataParentServiceImpl.java

@@ -0,0 +1,163 @@
+package com.zanxiang.game.gs.data.serve.service.impl;
+
+
+import com.google.common.base.CaseFormat;
+import com.mybatisflex.core.paginate.Page;
+import com.mybatisflex.core.query.QueryWrapper;
+import com.mybatisflex.core.row.Row;
+import com.mybatisflex.spring.service.impl.ServiceImpl;
+import com.zanxiang.game.gs.data.serve.dao.mapper.game.parent.AdsRoleAmountDataParentMapper;
+import com.zanxiang.game.gs.data.serve.pojo.dto.BigRDTO;
+import com.zanxiang.game.gs.data.serve.pojo.entity.game.order.RoleOperate;
+import com.zanxiang.game.gs.data.serve.pojo.entity.game.parent.AdsRoleAmountDataParent;
+import com.zanxiang.game.gs.data.serve.pojo.entity.game.parent.AdsRoleAmountDataTodayParent;
+import com.zanxiang.game.gs.data.serve.pojo.vo.BigRVO;
+import com.zanxiang.game.gs.data.serve.pojo.vo.PageVO;
+import com.zanxiang.game.gs.data.serve.service.*;
+import org.apache.commons.collections4.CollectionUtils;
+import org.apache.commons.lang.StringUtils;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.time.LocalDate;
+import java.util.List;
+import java.util.Map;
+import java.util.Objects;
+import java.util.Set;
+import java.util.stream.Collectors;
+
+import static com.mybatisflex.core.query.QueryMethods.*;
+import static com.zanxiang.game.gs.data.serve.pojo.entity.game.parent.table.AdsRoleAmountDataParentTableDef.ADS_ROLE_AMOUNT_DATA_PARENT;
+import static com.zanxiang.game.gs.data.serve.pojo.entity.game.parent.table.AdsRoleAmountDataTodayParentTableDef.ADS_ROLE_AMOUNT_DATA_TODAY_PARENT;
+
+/**
+ * 角色父游戏充值数据 服务层实现。
+ *
+ * @author shaosong
+ * @since 1.0
+ */
+@Service
+public class AdsRoleAmountDataParentServiceImpl extends ServiceImpl<AdsRoleAmountDataParentMapper, AdsRoleAmountDataParent> implements IAdsRoleAmountDataParentService {
+    @Resource
+    private IAdsRoleAmountDataTodayParentService adsRoleAmountDataTodayParentService;
+    @Resource
+    private IRoleOperateService roleOperateService;
+    @Resource
+    private ISysUserService sysUserService;
+    @Resource
+    private IGameService gameService;
+    @Resource
+    private IGameServerService gameServerService;
+    @Resource
+    private IGameAuthRoleGroupService authRoleGroupService;
+    @Resource
+    private IGameAuthGroupService authGroupService;
+
+    @Override
+    public PageVO<BigRVO, Row> bigRListOfPage(BigRDTO dto) {
+        if (null == dto.getDtBegin()) {
+            dto.setDtBegin(LocalDate.now());
+        }
+        if (null == dto.getDtEnd()) {
+            dto.setDtEnd(LocalDate.now());
+        }
+        if (StringUtils.isBlank(dto.getSortFiled())) {
+            dto.setSortFiled(ADS_ROLE_AMOUNT_DATA_PARENT.TOTAL_AMOUNT.getName());
+        } else {
+            String column = CaseFormat.UPPER_CAMEL.to(CaseFormat.LOWER_UNDERSCORE, dto.getSortFiled());
+            dto.setSortFiled(column);
+        }
+        QueryWrapper bigRWrapper = getBigRWrapper(dto);
+
+        Page<BigRVO> paginate = getMapper().paginateAs(dto.getPageNum(), dto.getPageSize(), bigRWrapper, BigRVO.class);
+        if (0 == paginate.getTotalRow()) {
+            return PageVO.empty(dto);
+        }
+        List<BigRVO> records = paginate.getRecords();
+        Set<String> serverIdList = records.stream().map(BigRVO::getServerId).collect(Collectors.toSet());
+        Set<Integer> parentGameIdList = records.stream().map(BigRVO::getParentGameId).collect(Collectors.toSet());
+        Set<Long> gsIdList = records.stream().map(BigRVO::getGsId).collect(Collectors.toSet());
+        //父游戏名称
+        Map<Integer, String> parentGameMap = gameService.gameNameMap(dto.getSourceSystem(), parentGameIdList);
+        //区服名称
+        Map<Integer, Map<String, String>> serverMap = gameServerService.gameServerMap(dto.getSourceSystem(), serverIdList);
+        //GS名称查询
+        Map<Long, String> sysUserMap = CollectionUtils.isEmpty(gsIdList) ? null : sysUserService.getSysUserMap(gsIdList);
+        //GS组名称
+        Map<Long, List<String>> gsGroupMap = authRoleGroupService.getGsGroupMap(dto.getSourceSystem(), gsIdList);
+        records.forEach(record -> {
+            Long gsId = record.getGsId();
+            record.setGsName(null == gsId ? null : sysUserMap != null ? sysUserMap.get(gsId) : null);
+            record.setGsGroupName(null == gsId ? null : gsGroupMap.get(gsId));
+            record.setParentGameName(parentGameMap.get(record.getParentGameId()));
+            record.setServerName(null == serverMap.get(record.getGameId()) ? null : serverMap.get(record.getGameId()).get(record.getServerId()));
+        });
+        return new PageVO<>(paginate);
+    }
+
+    private static QueryWrapper getBigRWrapper(BigRDTO dto) {
+        return QueryWrapper.create()
+                .select(ADS_ROLE_AMOUNT_DATA_PARENT.GAME_ID)
+                .select(ADS_ROLE_AMOUNT_DATA_PARENT.ROLE_ID)
+                .select(ADS_ROLE_AMOUNT_DATA_PARENT.ROLE_NAME)
+                .select(ADS_ROLE_AMOUNT_DATA_PARENT.SERVER_ID)
+                .select(ADS_ROLE_AMOUNT_DATA_PARENT.PARENT_GAME_ID)
+                .select(ADS_ROLE_AMOUNT_DATA_PARENT.ASSOCIATION_USER_ID)
+                .select(ADS_ROLE_AMOUNT_DATA_PARENT.ROLE_LEVEL)
+                .select(ADS_ROLE_AMOUNT_DATA_PARENT.ROLE_VIP)
+                .select(ADS_ROLE_AMOUNT_DATA_PARENT.COMBAT_NUM)
+                .select(ADS_ROLE_AMOUNT_DATA_PARENT.COUNTRY)
+                .select(ADS_ROLE_AMOUNT_DATA_PARENT.ROLE_TIME)
+                .select(dateDiff(currentDate(), ADS_ROLE_AMOUNT_DATA_PARENT.ROLE_TIME).as("role_create_day_diff"))
+                .select(dateDiff(currentDate(), ADS_ROLE_AMOUNT_DATA_PARENT.ACTIVE_TIME).as("role_active_day_diff"))
+                .select(dateDiff(currentDate(), ADS_ROLE_AMOUNT_DATA_PARENT.LAST_ORDER_TIME).as("last_order_day_diff"))
+                .select(ADS_ROLE_AMOUNT_DATA_PARENT.FIRST_AMOUNT)
+                .select(ADS_ROLE_AMOUNT_DATA_PARENT.ROLE_HOUR_AMOUNT)
+                .select(ADS_ROLE_AMOUNT_DATA_PARENT.LAST_AMOUNT)
+                .select(ADS_ROLE_AMOUNT_DATA_PARENT.LAST_ORDER_TIME)
+                .select(ADS_ROLE_AMOUNT_DATA_PARENT.PRODUCT_NAME)
+                .select(ADS_ROLE_AMOUNT_DATA_PARENT.TOTAL_AMOUNT)
+                .select(ADS_ROLE_AMOUNT_DATA_PARENT.TOTAL_CNT)
+                .select(ADS_ROLE_AMOUNT_DATA_PARENT.ACTIVE_TIME)
+                .select(ADS_ROLE_AMOUNT_DATA_PARENT.APP_AMOUNT)
+                .select(ADS_ROLE_AMOUNT_DATA_PARENT.PROPORTION)
+                .select(ADS_ROLE_AMOUNT_DATA_PARENT.GS_ID)
+                .select(ADS_ROLE_AMOUNT_DATA_PARENT.CONCAT_GAME)
+                .select(sum(ADS_ROLE_AMOUNT_DATA_TODAY_PARENT.TODAY_COUNT).as(ADS_ROLE_AMOUNT_DATA_TODAY_PARENT.TODAY_COUNT.getName()))
+                .select(sum(ADS_ROLE_AMOUNT_DATA_TODAY_PARENT.TODAY_AMOUNT).as(ADS_ROLE_AMOUNT_DATA_TODAY_PARENT.TODAY_AMOUNT.getName()))
+                .select(sum(ADS_ROLE_AMOUNT_DATA_TODAY_PARENT.TODAY_AMOUNT).divide(sum(ADS_ROLE_AMOUNT_DATA_TODAY_PARENT.SERVER_AMOUNT)).as(ADS_ROLE_AMOUNT_DATA_TODAY_PARENT.SERVER_PROPORTION.getName()))
+                .select(sum(ADS_ROLE_AMOUNT_DATA_TODAY_PARENT.TODAY_AMOUNT).divide(sum(ADS_ROLE_AMOUNT_DATA_TODAY_PARENT.GAME_AMOUNT)).as(ADS_ROLE_AMOUNT_DATA_TODAY_PARENT.GAME_PROPORTION.getName()))
+                .from(ADS_ROLE_AMOUNT_DATA_PARENT)
+                .leftJoin(ADS_ROLE_AMOUNT_DATA_TODAY_PARENT)
+                .on(ADS_ROLE_AMOUNT_DATA_PARENT.GAME_ID.eq(ADS_ROLE_AMOUNT_DATA_TODAY_PARENT.GAME_ID)
+                        .and(ADS_ROLE_AMOUNT_DATA_PARENT.ROLE_ID.eq(ADS_ROLE_AMOUNT_DATA_TODAY_PARENT.ROLE_ID)))
+                .and(ADS_ROLE_AMOUNT_DATA_PARENT.SERVER_ID.isNotNull().or(ADS_ROLE_AMOUNT_DATA_TODAY_PARENT.SERVER_ID.isNotNull()))
+                .ge(AdsRoleAmountDataTodayParent::getDay, dto.getDtBegin())
+                .le(AdsRoleAmountDataTodayParent::getDay, dto.getDtBegin())
+                .in(AdsRoleAmountDataParent::getGsId, dto.getGsIdList(), CollectionUtils.isNotEmpty(dto.getGsIdList()))
+                .groupBy(ADS_ROLE_AMOUNT_DATA_PARENT.GAME_ID)
+                .groupBy(ADS_ROLE_AMOUNT_DATA_PARENT.ROLE_ID)
+                .groupBy(ADS_ROLE_AMOUNT_DATA_PARENT.ROLE_NAME)
+                .groupBy(ADS_ROLE_AMOUNT_DATA_PARENT.SERVER_ID)
+                .groupBy(ADS_ROLE_AMOUNT_DATA_PARENT.PARENT_GAME_ID)
+                .groupBy(ADS_ROLE_AMOUNT_DATA_PARENT.ASSOCIATION_USER_ID)
+                .groupBy(ADS_ROLE_AMOUNT_DATA_PARENT.ROLE_LEVEL)
+                .groupBy(ADS_ROLE_AMOUNT_DATA_PARENT.ROLE_VIP)
+                .groupBy(ADS_ROLE_AMOUNT_DATA_PARENT.COMBAT_NUM)
+                .groupBy(ADS_ROLE_AMOUNT_DATA_PARENT.COUNTRY)
+                .groupBy(ADS_ROLE_AMOUNT_DATA_PARENT.ROLE_TIME)
+                .groupBy(ADS_ROLE_AMOUNT_DATA_PARENT.FIRST_AMOUNT)
+                .groupBy(ADS_ROLE_AMOUNT_DATA_PARENT.ROLE_HOUR_AMOUNT)
+                .groupBy(ADS_ROLE_AMOUNT_DATA_PARENT.LAST_AMOUNT)
+                .groupBy(ADS_ROLE_AMOUNT_DATA_PARENT.LAST_ORDER_TIME)
+                .groupBy(ADS_ROLE_AMOUNT_DATA_PARENT.PRODUCT_NAME)
+                .groupBy(ADS_ROLE_AMOUNT_DATA_PARENT.TOTAL_AMOUNT)
+                .groupBy(ADS_ROLE_AMOUNT_DATA_PARENT.TOTAL_CNT)
+                .groupBy(ADS_ROLE_AMOUNT_DATA_PARENT.ACTIVE_TIME)
+                .groupBy(ADS_ROLE_AMOUNT_DATA_PARENT.APP_AMOUNT)
+                .groupBy(ADS_ROLE_AMOUNT_DATA_PARENT.PROPORTION)
+                .groupBy(ADS_ROLE_AMOUNT_DATA_PARENT.GS_ID)
+                .groupBy(ADS_ROLE_AMOUNT_DATA_PARENT.CONCAT_GAME)
+                .orderBy(dto.getSortFiled(), dto.getSortAsc());
+    }
+}

+ 19 - 0
game-gs-data/game-gs-data-serve/src/main/java/com/zanxiang/game/gs/data/serve/service/impl/AdsRoleAmountDataTodayParentServiceImpl.java

@@ -0,0 +1,19 @@
+package com.zanxiang.game.gs.data.serve.service.impl;
+
+
+import org.springframework.stereotype.Service;
+import com.zanxiang.game.gs.data.serve.service.IAdsRoleAmountDataTodayParentService;
+import com.zanxiang.game.gs.data.serve.pojo.entity.game.parent.AdsRoleAmountDataTodayParent;
+import com.zanxiang.game.gs.data.serve.dao.mapper.game.parent.AdsRoleAmountDataTodayParentMapper;
+import com.mybatisflex.spring.service.impl.ServiceImpl;
+
+/**
+ * 角色父游戏当天充值数据 服务层实现。
+ *
+ * @author shaosong
+ * @since 1.0
+ */
+@Service
+public class AdsRoleAmountDataTodayParentServiceImpl extends ServiceImpl<AdsRoleAmountDataTodayParentMapper, AdsRoleAmountDataTodayParent> implements IAdsRoleAmountDataTodayParentService {
+
+}

+ 19 - 0
game-gs-data/game-gs-data-serve/src/main/java/com/zanxiang/game/gs/data/serve/service/impl/GameAuthGroupServiceImpl.java

@@ -0,0 +1,19 @@
+package com.zanxiang.game.gs.data.serve.service.impl;
+
+
+import org.springframework.stereotype.Service;
+import com.zanxiang.game.gs.data.serve.service.IGameAuthGroupService;
+import com.zanxiang.game.gs.data.serve.pojo.entity.game.order.GameAuthGroup;
+import com.zanxiang.game.gs.data.serve.dao.mapper.game.order.GameAuthGroupMapper;
+import com.mybatisflex.spring.service.impl.ServiceImpl;
+
+/**
+ * 授权分组 服务层实现。
+ *
+ * @author shaosong
+ * @since 1.0
+ */
+@Service
+public class GameAuthGroupServiceImpl extends ServiceImpl<GameAuthGroupMapper, GameAuthGroup> implements IGameAuthGroupService {
+
+}

+ 50 - 0
game-gs-data/game-gs-data-serve/src/main/java/com/zanxiang/game/gs/data/serve/service/impl/GameAuthRoleGroupServiceImpl.java

@@ -0,0 +1,50 @@
+package com.zanxiang.game.gs.data.serve.service.impl;
+
+
+import com.mybatisflex.core.query.QueryWrapper;
+import com.zanxiang.game.gs.data.serve.pojo.entity.game.order.GameAuthGroup;
+import lombok.Data;
+import org.springframework.stereotype.Service;
+import com.zanxiang.game.gs.data.serve.service.IGameAuthRoleGroupService;
+import com.zanxiang.game.gs.data.serve.pojo.entity.game.order.GameAuthRoleGroup;
+import com.zanxiang.game.gs.data.serve.dao.mapper.game.order.GameAuthRoleGroupMapper;
+import com.mybatisflex.spring.service.impl.ServiceImpl;
+
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+import static com.zanxiang.game.gs.data.serve.pojo.entity.game.order.table.GameAuthGroupTableDef.GAME_AUTH_GROUP;
+import static com.zanxiang.game.gs.data.serve.pojo.entity.game.order.table.GameAuthRoleGroupTableDef.GAME_AUTH_ROLE_GROUP;
+
+/**
+ * 游戏授权角色分组 服务层实现。
+ *
+ * @author shaosong
+ * @since 1.0
+ */
+@Service
+public class GameAuthRoleGroupServiceImpl extends ServiceImpl<GameAuthRoleGroupMapper, GameAuthRoleGroup> implements IGameAuthRoleGroupService {
+
+    @Override
+    public Map<Long, List<String>> getGsGroupMap(String sourceSystem, Collection<Long> gsIdList) {
+        QueryWrapper queryWrapper = QueryWrapper.create()
+                .select(GAME_AUTH_GROUP.GROUP_NAME)
+                .select(GAME_AUTH_ROLE_GROUP.USER_ID)
+                .from(GAME_AUTH_ROLE_GROUP)
+                .leftJoin(GAME_AUTH_GROUP)
+                .on(GAME_AUTH_GROUP.ID.eq(GAME_AUTH_ROLE_GROUP.GROUP_ID))
+                .eq(GameAuthRoleGroup::getSourceSystem, sourceSystem)
+                .eq(GameAuthGroup::getSourceSystem, sourceSystem)
+                .in(GameAuthRoleGroup::getUserId, gsIdList);
+        List<GsGroup> gsGroups = getMapper().selectListByQueryAs(queryWrapper, GsGroup.class);
+        return gsGroups.stream().collect(Collectors.groupingBy(GsGroup::getUserId, Collectors.mapping(GsGroup::getGroupName, Collectors.toList())));
+    }
+
+    @Data
+    public static class GsGroup {
+        private Long userId;
+        private String groupName;
+    }
+}

+ 31 - 0
game-gs-data/game-gs-data-serve/src/main/java/com/zanxiang/game/gs/data/serve/service/impl/GameServerServiceImpl.java

@@ -0,0 +1,31 @@
+package com.zanxiang.game.gs.data.serve.service.impl;
+
+
+import com.mybatisflex.core.query.QueryWrapper;
+import org.springframework.stereotype.Service;
+import com.zanxiang.game.gs.data.serve.service.IGameServerService;
+import com.zanxiang.game.gs.data.serve.pojo.entity.game.order.GameServer;
+import com.zanxiang.game.gs.data.serve.dao.mapper.game.order.GameServerMapper;
+import com.mybatisflex.spring.service.impl.ServiceImpl;
+
+import java.util.Collection;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+/**
+ * 游戏区服表 服务层实现。
+ *
+ * @author shaosong
+ * @since 1.0
+ */
+@Service
+public class GameServerServiceImpl extends ServiceImpl<GameServerMapper, GameServer> implements IGameServerService {
+    @Override
+    public Map<Integer, Map<String, String>> gameServerMap(String sourceSystem, Collection<String> serverIdList) {
+        return list(new QueryWrapper()
+                .eq(GameServer::getSourceSystem, sourceSystem)
+                .in(GameServer::getServerId, serverIdList))
+                .stream()
+                .collect(Collectors.groupingBy(GameServer::getGameId, Collectors.toMap(GameServer::getServerId, GameServer::getServerName)));
+    }
+}

+ 33 - 0
game-gs-data/game-gs-data-serve/src/main/java/com/zanxiang/game/gs/data/serve/service/impl/GameServiceImpl.java

@@ -0,0 +1,33 @@
+package com.zanxiang.game.gs.data.serve.service.impl;
+
+
+import com.mybatisflex.core.query.QueryWrapper;
+import org.springframework.stereotype.Service;
+import com.zanxiang.game.gs.data.serve.service.IGameService;
+import com.zanxiang.game.gs.data.serve.pojo.entity.game.order.Game;
+import com.zanxiang.game.gs.data.serve.dao.mapper.game.order.GameMapper;
+import com.mybatisflex.spring.service.impl.ServiceImpl;
+
+import javax.validation.constraints.NotBlank;
+import java.util.Collection;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+/**
+ * 游戏表 服务层实现。
+ *
+ * @author shaosong
+ * @since 1.0
+ */
+@Service
+public class GameServiceImpl extends ServiceImpl<GameMapper, Game> implements IGameService {
+
+    @Override
+    public Map<Integer, String> gameNameMap(@NotBlank String sourceSystem, Collection<Integer> gameIdList) {
+        return list(new QueryWrapper()
+                .eq(Game::getSourceSystem, sourceSystem)
+                .in(Game::getId, gameIdList))
+                .stream()
+                .collect(Collectors.toMap(Game::getId, Game::getGameName));
+    }
+}

+ 36 - 0
game-gs-data/game-gs-data-serve/src/main/java/com/zanxiang/game/gs/data/serve/service/impl/RoleOperateServiceImpl.java

@@ -0,0 +1,36 @@
+package com.zanxiang.game.gs.data.serve.service.impl;
+
+
+import com.mybatisflex.core.query.QueryWrapper;
+import org.springframework.stereotype.Service;
+import com.zanxiang.game.gs.data.serve.service.IRoleOperateService;
+import com.zanxiang.game.gs.data.serve.pojo.entity.game.order.RoleOperate;
+import com.zanxiang.game.gs.data.serve.dao.mapper.game.order.RoleOperateMapper;
+import com.mybatisflex.spring.service.impl.ServiceImpl;
+
+import java.util.Collection;
+import java.util.List;
+
+/**
+ * 角色操作表 服务层实现。
+ *
+ * @author shaosong
+ * @since 1.0
+ */
+@Service
+public class RoleOperateServiceImpl extends ServiceImpl<RoleOperateMapper, RoleOperate> implements IRoleOperateService {
+    @Override
+    public List<RoleOperate> getRoleOperateByGs(String sourceSystem, Collection<Long> gsIdlist) {
+        return list(new QueryWrapper()
+                .eq(RoleOperate::getSourceSystem, sourceSystem)
+                .in(RoleOperate::getGsId, gsIdlist));
+    }
+
+    @Override
+    public List<RoleOperate> getRoleOperateByGameIdAndRoleId(String sourceSystem, Collection<Long> gameIdList, Collection<String> roleIdList) {
+        return list(new QueryWrapper()
+                .eq(RoleOperate::getSourceSystem, sourceSystem)
+                .in(RoleOperate::getGameId, gameIdList)
+                .in(RoleOperate::getRoleId, roleIdList));
+    }
+}

+ 35 - 0
game-gs-data/game-gs-data-serve/src/main/java/com/zanxiang/game/gs/data/serve/service/impl/SysUserServiceImpl.java

@@ -0,0 +1,35 @@
+package com.zanxiang.game.gs.data.serve.service.impl;
+
+
+import com.mybatisflex.core.query.QueryWrapper;
+import org.springframework.stereotype.Service;
+import com.zanxiang.game.gs.data.serve.service.ISysUserService;
+import com.zanxiang.game.gs.data.serve.pojo.entity.erp.SysUser;
+import com.zanxiang.game.gs.data.serve.dao.mapper.erp.SysUserMapper;
+import com.mybatisflex.spring.service.impl.ServiceImpl;
+
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+import static com.zanxiang.game.gs.data.serve.pojo.entity.erp.table.SysUserTableDef.SYS_USER;
+
+/**
+ * 用户信息表 服务层实现。
+ *
+ * @author shaosong
+ * @since 1.0
+ */
+@Service
+public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> implements ISysUserService {
+
+    @Override
+    public Map<Long,String> getSysUserMap(Collection<Long> userIdList) {
+        return list(new QueryWrapper()
+                        .select(SYS_USER.NICKNAME, SYS_USER.USER_ID)
+                        .in(SysUser::getUserId, userIdList))
+                .stream()
+                .collect(Collectors.toMap(SysUser::getUserId, SysUser::getNickname));
+    }
+}

+ 89 - 0
game-gs-data/game-gs-data-serve/src/main/resources/bootstrap.yml

@@ -0,0 +1,89 @@
+server:
+  port: 10507
+spring:
+  application:
+    name: game-gs-data
+  profiles:
+    active: dev
+  cloud:
+    nacos:
+      discovery:
+        namespace: LOCAL_game
+        server-addr: 118.178.187.109:8848
+      config:
+        namespace: LOCAL_game
+        server-addr: 118.178.187.109:8848
+        file-extension: yml
+        group: GAME
+        max-retry: 10
+  redis:
+    host: 118.178.187.109
+    port: 6379
+    password: zx$2020ddd
+    database: 10
+  jackson:
+    time-zone: GMT+8
+    date-format: yyyy-MM-dd HH:mm:ss
+    # default-property-inclusion: NON_EMPTY
+mybatis-flex:
+  configuration:
+    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
+  datasource:
+    game_order:
+      driver-class-name: com.mysql.cj.jdbc.Driver
+      url: jdbc:mysql://47.97.114.164:9030/dm_game_order?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
+      username: root
+      password: Qc@game123.
+      hikari:
+        minimum-idle: 5
+        maximum-pool-size: 50
+    dm_erp:
+      driver-class-name: com.mysql.cj.jdbc.Driver
+      url: jdbc:mysql://47.97.114.164:9030/dm_erp?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
+      username: root
+      password: Qc@game123.
+      hikari:
+        minimum-idle: 5
+        maximum-pool-size: 50
+    game_ads_parent:
+      driver-class-name: com.mysql.cj.jdbc.Driver
+      url: jdbc:mysql://47.97.114.164:9030/game_ads_parent?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
+      username: root
+      password: Qc@game123.
+      hikari:
+        minimum-idle: 5
+        maximum-pool-size: 50
+  type-aliases-package: com.zanxiang.game.gs.data.serve.pojo.entity
+  mapper-locations: classpath:mapper/**/*.xml
+  global-config:
+    logic-delete-column: deleted
+    normal-value-of-logic-delete: false
+    deleted-value-of-logic-delete: true
+logging:
+  level:
+    root: info
+    com.zanxiang.game.gs.data.serve.dao.mapper: info
+dubbo:
+  application:
+    name: game-gs-data-dubbo
+    register-mode: instance
+    qos-enable: false
+    qos-accept-foreign-ip: false
+    qos-port: -1
+    metadata-type: local
+    metadata-service-protocol: dubbo
+    metadata-service-port: -1
+    logger: slf4j
+  registry:
+    address: nacos://118.178.187.109:8848?registry-type=service
+    timeout: 3000
+    parameters:
+      namespace: LOCAL_game
+    group: GAME
+    use-as-metadata-center: false
+    use-as-config-center: false
+  protocol:
+    name: tri
+    port: -1
+  consumer:
+    check: false

+ 76 - 0
game-gs-data/game-gs-data-serve/src/main/resources/logback.xml

@@ -0,0 +1,76 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<configuration scan="false" scanPeriod="60 seconds" debug="false">
+    <!-- 日志存放路径 -->
+    <property name="log.path" value="${user.home}/logs"/>
+    <!-- 日志输出格式 -->
+    <property name="log.pattern" value="%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{20} - [%method,%line] - %msg%n"/>
+    :ss} %-5level ${springAppName:-} %thread %logger %msg%n"/>
+
+    <!-- 控制台输出 -->
+    <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
+        <encoder>
+            <pattern>${log.pattern}</pattern>
+        </encoder>
+    </appender>
+
+    <!-- 系统日志输出 -->
+    <appender name="file_info" class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <file>${log.path}/info.log</file>
+        <!-- 循环政策:基于时间创建日志文件 -->
+        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+            <!-- 日志文件名格式 -->
+            <fileNamePattern>${log.path}/info.%d{yyyy-MM-dd}.log</fileNamePattern>
+            <!-- 日志最大的历史 30天 -->
+            <maxHistory>30</maxHistory>
+        </rollingPolicy>
+        <encoder>
+            <pattern>${log.pattern}</pattern>
+        </encoder>
+        <filter class="ch.qos.logback.classic.filter.LevelFilter">
+            <!-- 过滤的级别 -->
+            <level>INFO</level>
+            <!-- 匹配时的操作:接收(记录) -->
+            <onMatch>ACCEPT</onMatch>
+            <!-- 不匹配时的操作:拒绝(不记录) -->
+            <onMismatch>DENY</onMismatch>
+        </filter>
+    </appender>
+
+    <appender name="file_error" class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <file>${log.path}/error.log</file>
+        <!-- 循环政策:基于时间创建日志文件 -->
+        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+            <!-- 日志文件名格式 -->
+            <fileNamePattern>${log.path}/error.%d{yyyy-MM-dd}.log</fileNamePattern>
+            <!-- 日志最大的历史 30天 -->
+            <maxHistory>30</maxHistory>
+        </rollingPolicy>
+        <encoder>
+            <pattern>${log.pattern}</pattern>
+        </encoder>
+        <filter class="ch.qos.logback.classic.filter.LevelFilter">
+            <!-- 过滤的级别 -->
+            <level>ERROR</level>
+            <!-- 匹配时的操作:接收(记录) -->
+            <onMatch>ACCEPT</onMatch>
+            <!-- 不匹配时的操作:拒绝(不记录) -->
+            <onMismatch>DENY</onMismatch>
+        </filter>
+    </appender>
+
+    <!-- 系统模块日志级别控制  -->
+    <logger name="com.zanxiang" level="info"/>
+    <!-- Spring日志级别控制  -->
+    <logger name="org.springframework" level="warn"/>
+
+    <root level="info">
+        <appender-ref ref="console"/>
+    </root>
+
+    <!--系统操作日志-->
+    <root level="info">
+        <appender-ref ref="file_info"/>
+        <appender-ref ref="file_error"/>
+    </root>
+
+</configuration>