Browse Source

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

zhimo 1 năm trước cách đây
mục cha
commit
37d95e4633

+ 2 - 3
game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/controller/AdsPromotionDayController.java

@@ -1,6 +1,5 @@
 package com.zanxiang.game.data.serve.controller;
 
-import com.zanxiang.erp.security.annotation.PreAuthorize;
 import com.zanxiang.game.data.serve.pojo.dto.PromotionDayDTO;
 import com.zanxiang.game.data.serve.pojo.dto.PromotionDayTotalDTO;
 import com.zanxiang.game.data.serve.pojo.vo.PromotionDayTotalVO;
@@ -32,14 +31,14 @@ public class AdsPromotionDayController {
     private IAdsPromotionDayService adsPromotionDayService;
 
     @ApiOperation(value = "广告监控数据")
-    @PreAuthorize(permissionKey = "promotionData:adsPromotionDay:day")
+    //@PreAuthorize(permissionKey = "promotionData:adsPromotionDay:day")
     @PostMapping("/day")
     public ResultVO<Page<PromotionDayVO>> getPromotionDayData(@RequestBody PromotionDayDTO dto){
         return ResultVO.ok(adsPromotionDayService.getPromotionDayData(dto));
     }
 
     @ApiOperation(value = "广告监控数据总计")
-    @PreAuthorize(permissionKey = "promotionData:adsPromotionDay:total")
+    //@PreAuthorize(permissionKey = "promotionData:adsPromotionDay:total")
     @PostMapping("/total")
     public ResultVO<PromotionDayTotalVO> getPromotionDayTotalData(@RequestBody PromotionDayTotalDTO dto) {
         return ResultVO.ok(adsPromotionDayService.getPromotionDayTotalData(dto));

+ 121 - 2
game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/pojo/dto/PromotionDayDTO.java

@@ -1,10 +1,14 @@
 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/7/27
@@ -14,12 +18,127 @@ import lombok.NoArgsConstructor;
 @NoArgsConstructor
 @AllArgsConstructor
 @Builder
-public class PromotionDayDTO {
+public class PromotionDayDTO extends BasePage {
+
+    /**
+     * 消耗开始日期
+     */
+    @ApiModelProperty(value = "消耗开始时间")
+    private LocalDate costBeginDate;
 
     /**
-     * 账号名称
+     * 消耗结束日期
      */
+    @ApiModelProperty(value = "消耗结束时间")
+    private LocalDate costEndDate;
+
+    /**
+     * SDK来源
+     */
+    @ApiModelProperty(value = "SDK来源")
+    private String sourceSystem;
+
+    /**
+     * 广告ID
+     */
+    @ApiModelProperty(value = "广告ID")
+    private Long promotionId;
+
+    /**
+     * 广告名称
+     */
+    @ApiModelProperty(value = "广告名称")
+    private String promotionName;
+
+    /**
+     * 广告状态
+     */
+    @ApiModelProperty(value = "广告状态")
+    private String status;
+
+    /**
+     * 计划ID
+     */
+    @ApiModelProperty(value = "计划ID")
+    private Long projectId;
+
+    /**
+     * 计划名称
+     */
+    @ApiModelProperty(value = "计划名称")
+    private String projectName;
+
+    /**
+     * 推广账号名称
+     */
+    @ApiModelProperty(value = "推广账号名称")
     private String accountName;
 
+    /**
+     * 推广账号ID
+     */
+    @ApiModelProperty(value = "推广账号ID")
+    private Long accountId;
+
+    /**
+     * 投放媒体
+     */
+    @ApiModelProperty(value = "投放媒体")
+    private String accountType;
+
+    /**
+     * 投手ID
+     */
+    @ApiModelProperty(value = "投手ID")
+    private Long pitcherId;
+
+    /**
+     * 投手名称
+     */
+    @ApiModelProperty(value = "投手名称")
+    private String pitcherName;
+
+    /**
+     * 渠道ID
+     */
+    @ApiModelProperty(value = "渠道ID")
+    private Long agentId;
+
+    /**
+     * 渠道名称
+     */
+    @ApiModelProperty(value = "渠道名称")
+    private String agentName;
+
+    /**
+     * 渠道标识
+     */
+    @ApiModelProperty(value = "渠道标识")
+    private String agentKey;
+
+    /**
+     * cp名称
+     */
+    @ApiModelProperty(value = "CP名称")
+    private String cpName;
+
+    /**
+     * 游戏ID
+     */
+    @ApiModelProperty(value = "游戏ID")
+    private Long gameId;
+
+    /**
+     * 游戏名称
+     */
+    @ApiModelProperty(value = "游戏名称")
+    private String gameName;
+
+    /**
+     * 游戏应用类型
+     */
+    @ApiModelProperty(value = "游戏应用类型")
+    private Long classify;
+
 
 }

+ 48 - 30
game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/pojo/entity/AdsPromotionDay.java

@@ -93,6 +93,24 @@ public class AdsPromotionDay implements Serializable {
     @Column
     private String pitcherName;
 
+    /**
+     * 备注
+     */
+    @Column
+    private String notes;
+
+    /**
+     * 服务商
+     */
+    @Column
+    private String service;
+
+    /**
+     * 余额
+     */
+    @Column
+    private String balance;
+
     /**
      * 渠道ID
      */
@@ -580,181 +598,181 @@ public class AdsPromotionDay implements Serializable {
     private BigDecimal newUserTotalAvgPrice;
 
     /**
-     * 计划ID,消耗时间的第1天新用户充值
+     * 广告ID,消耗时间的第1天新用户充值
      */
     @Column
     private BigDecimal d1;
 
     /**
-     * 计划ID,消耗时间的第2天新用户充值
+     * 广告ID,消耗时间的第2天新用户充值
      */
     @Column
     private BigDecimal d2;
 
     /**
-     * 计划ID,消耗时间的第3天新用户充值
+     * 广告ID,消耗时间的第3天新用户充值
      */
     @Column
     private BigDecimal d3;
 
     /**
-     * 计划ID,消耗时间的第4天新用户充值
+     * 广告ID,消耗时间的第4天新用户充值
      */
     @Column
     private BigDecimal d4;
 
     /**
-     * 计划ID,消耗时间的第5天新用户充值
+     * 广告ID,消耗时间的第5天新用户充值
      */
     @Column
     private BigDecimal d5;
 
     /**
-     * 计划ID,消耗时间的第6天新用户充值
+     * 广告ID,消耗时间的第6天新用户充值
      */
     @Column
     private BigDecimal d6;
 
     /**
-     * 计划ID,消耗时间的第7天新用户充值
+     * 广告ID,消耗时间的第7天新用户充值
      */
     @Column
     private BigDecimal d7;
 
     /**
-     * 计划ID,消耗时间的第8天新用户充值
+     * 广告ID,消耗时间的第8天新用户充值
      */
     @Column
     private BigDecimal d8;
 
     /**
-     * 计划ID,消耗时间的第9天新用户充值
+     * 广告ID,消耗时间的第9天新用户充值
      */
     @Column
     private BigDecimal d9;
 
     /**
-     * 计划ID,消耗时间的第10天新用户充值
+     * 广告ID,消耗时间的第10天新用户充值
      */
     @Column
     private BigDecimal d10;
 
     /**
-     * 计划ID,消耗时间的第11天新用户充值
+     * 广告ID,消耗时间的第11天新用户充值
      */
     @Column
     private BigDecimal d11;
 
     /**
-     * 计划ID,消耗时间的第12天新用户充值
+     * 广告ID,消耗时间的第12天新用户充值
      */
     @Column
     private BigDecimal d12;
 
     /**
-     * 计划ID,消耗时间的第13天新用户充值
+     * 广告ID,消耗时间的第13天新用户充值
      */
     @Column
     private BigDecimal d13;
 
     /**
-     * 计划ID,消耗时间的第14天新用户充值
+     * 广告ID,消耗时间的第14天新用户充值
      */
     @Column
     private BigDecimal d14;
 
     /**
-     * 计划ID,消耗时间的第15天新用户充值
+     * 广告ID,消耗时间的第15天新用户充值
      */
     @Column
     private BigDecimal d15;
 
     /**
-     * 计划ID,消耗时间的第16天新用户充值
+     * 广告ID,消耗时间的第16天新用户充值
      */
     @Column
     private BigDecimal d16;
 
     /**
-     * 计划ID,消耗时间的第17天新用户充值
+     * 广告ID,消耗时间的第17天新用户充值
      */
     @Column
     private BigDecimal d17;
 
     /**
-     * 计划ID,消耗时间的第18天新用户充值
+     * 广告ID,消耗时间的第18天新用户充值
      */
     @Column
     private BigDecimal d18;
 
     /**
-     * 计划ID,消耗时间的第19天新用户充值
+     * 广告ID,消耗时间的第19天新用户充值
      */
     @Column
     private BigDecimal d19;
 
     /**
-     * 计划ID,消耗时间的第20天新用户充值
+     * 广告ID,消耗时间的第20天新用户充值
      */
     @Column
     private BigDecimal d20;
 
     /**
-     * 计划ID,消耗时间的第21天新用户充值
+     * 广告ID,消耗时间的第21天新用户充值
      */
     @Column
     private BigDecimal d21;
 
     /**
-     * 计划ID,消耗时间的第22天新用户充值
+     * 广告ID,消耗时间的第22天新用户充值
      */
     @Column
     private BigDecimal d22;
 
     /**
-     * 计划ID,消耗时间的第23天新用户充值
+     * 广告ID,消耗时间的第23天新用户充值
      */
     @Column
     private BigDecimal d23;
 
     /**
-     * 计划ID,消耗时间的第24天新用户充值
+     * 广告ID,消耗时间的第24天新用户充值
      */
     @Column
     private BigDecimal d24;
 
     /**
-     * 计划ID,消耗时间的第25天新用户充值
+     * 广告ID,消耗时间的第25天新用户充值
      */
     @Column
     private BigDecimal d25;
 
     /**
-     * 计划ID,消耗时间的第26天新用户充值
+     * 广告ID,消耗时间的第26天新用户充值
      */
     @Column
     private BigDecimal d26;
 
     /**
-     * 计划ID,消耗时间的第27天新用户充值
+     * 广告ID,消耗时间的第27天新用户充值
      */
     @Column
     private BigDecimal d27;
 
     /**
-     * 计划ID,消耗时间的第28天新用户充值
+     * 广告ID,消耗时间的第28天新用户充值
      */
     @Column
     private BigDecimal d28;
 
     /**
-     * 计划ID,消耗时间的第29天新用户充值
+     * 广告ID,消耗时间的第29天新用户充值
      */
     @Column
     private BigDecimal d29;
 
     /**
-     * 计划ID,消耗时间的第30天新用户充值
+     * 广告ID,消耗时间的第30天新用户充值
      */
     @Column
     private BigDecimal d30;

+ 957 - 1
game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/pojo/vo/PromotionDayVO.java

@@ -1,9 +1,965 @@
 package com.zanxiang.game.data.serve.pojo.vo;
 
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.math.BigDecimal;
+import java.math.BigInteger;
+
 /**
  * @author tianhua
  * @time 2023/7/27
- * @Description 广告监控数据
+ * @Description 广告监控数据前端显示实体对象
  **/
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+@Builder
 public class PromotionDayVO {
+
+    /**
+     * 广告ID
+     */
+    @ApiModelProperty(value = "广告ID")
+    private BigInteger promotionId;
+
+    /**
+     * 广告名称
+     */
+    @ApiModelProperty(value = "广告名称")
+    private String promotionName;
+
+    /**
+     * 计划ID
+     */
+    @ApiModelProperty(value = "计划ID")
+    private Long projectId;
+
+    /**
+     * 计划名称
+     */
+    @ApiModelProperty(value = "计划名称")
+    private String projectName;
+
+    /**
+     * 推广账号ID
+     */
+    @ApiModelProperty(value = "推广账号ID")
+    private Long accountId;
+
+    /**
+     * 推广账号名称
+     */
+    @ApiModelProperty(value = "推广账号名称")
+    private String accountName;
+
+    /**
+     * 投放媒体
+     */
+    @ApiModelProperty(value = "投放媒体")
+    private String accountType;
+
+    /**
+     * 投手ID
+     */
+    @ApiModelProperty(value = "投手ID")
+    private Long pitcherId;
+
+    /**
+     * 投手名称
+     */
+    @ApiModelProperty(value = "投手名称")
+    private String pitcherName;
+
+    /**
+     * 备注
+     */
+    @ApiModelProperty(value = "备注")
+    private String notes;
+
+    /**
+     * 服务商
+     */
+    @ApiModelProperty(value = "服务商")
+    private String service;
+
+    /**
+     * 余额
+     */
+    @ApiModelProperty(value = "余额")
+    private String balance;
+
+    /**
+     * 渠道ID
+     */
+    @ApiModelProperty(value = "渠道ID")
+    private Long agentId;
+
+    /**
+     * 渠道名称
+     */
+    @ApiModelProperty(value = "渠道名称")
+    private String agentName;
+
+    /**
+     * 渠道标识
+     */
+    @ApiModelProperty(value = "渠道标识")
+    private String agentKey;
+
+    /**
+     * cp名称
+     */
+    @ApiModelProperty(value = "cp名称")
+    private String cpName;
+
+    /**
+     * 游戏ID
+     */
+    @ApiModelProperty(value = "游戏ID")
+    private Long gameId;
+
+    /**
+     * 游戏名称
+     */
+    @ApiModelProperty(value = "游戏名称")
+    private String gameName;
+
+    /**
+     * 游戏应用类型
+     */
+    @ApiModelProperty(value = "游戏应用类型")
+    private Long classify;
+
+    /**
+     * 广告状态
+     */
+    @ApiModelProperty(value = "广告状态")
+    private String status;
+
+    /**
+     * 创意预览
+     */
+    @ApiModelProperty(value = "创意预览")
+    private String creativePreview;
+
+    /**
+     * 推广目标
+     */
+    @ApiModelProperty(value = "推广目标")
+    private String landingType;
+
+    /**
+     * 出价方式
+     */
+    @ApiModelProperty(value = "出价方式")
+    private String pricing;
+
+    /**
+     * 当前出价
+     */
+    @ApiModelProperty(value = "当前出价")
+    private String cpaBid;
+
+    /**
+     * 深度转化ROI系数
+     */
+    @ApiModelProperty(value = "深度转化ROI系数")
+    private String roiGoal;
+
+    /**
+     * 日预算
+     */
+    @ApiModelProperty(value = "日预算")
+    private String budget;
+
+    /**
+     * 投放时间
+     */
+    @ApiModelProperty(value = "投放时间")
+    private String scheduleTime;
+
+    /**
+     * 今日消耗
+     */
+    @ApiModelProperty(value = "今日消耗")
+    private BigDecimal todayCost;
+
+    /**
+     * 广告总消耗
+     */
+    @ApiModelProperty(value = "广告总消耗")
+    private BigDecimal promotionTotalCost;
+
+    /**
+     * 曝光量
+     */
+    @ApiModelProperty(value = "曝光量")
+    private Long showCount;
+
+    /**
+     * 千次曝光成本
+     */
+    @ApiModelProperty(value = "千次曝光成本")
+    private BigDecimal thousandDisplayPrice;
+
+    /**
+     * 点击量
+     */
+    @ApiModelProperty(value = "点击量")
+    private Long clickCount;
+
+    /**
+     * 点击均价
+     */
+    @ApiModelProperty(value = "点击均价")
+    private BigDecimal avgClickCost;
+
+    /**
+     * 点击率
+     */
+    @ApiModelProperty(value = "点击率")
+    private BigDecimal ctr;
+
+    /**
+     * 转化目标
+     */
+    @ApiModelProperty(value = "转化目标")
+    private String convertTarget;
+
+    /**
+     * 转化目标量
+     */
+    @ApiModelProperty(value = "转化目标量")
+    private Long convertCount;
+
+    /**
+     * 转化目标成本
+     */
+    @ApiModelProperty(value = "转化目标成本")
+    private BigDecimal convertCost;
+
+    /**
+     * 目标转化率
+     */
+    @ApiModelProperty(value = "目标转化率")
+    private BigDecimal convertRate;
+
+    /**
+     * 新增用户数
+     */
+    @ApiModelProperty(value = "新增用户数")
+    private Long regNum;
+
+    /**
+     * 广告总注册人数
+     */
+    @ApiModelProperty(value = "广告总注册人数")
+    private Long regTotalNum;
+
+    /**
+     * 总创角人数
+     */
+    @ApiModelProperty(value = "总创角人数")
+    private Long roleTotalNum;
+
+    /**
+     * 首日创角人数
+     */
+    @ApiModelProperty(value = "首日创角人数")
+    private Long firstRoleNum;
+
+    /**
+     * 新用户累计创角人数
+     */
+    @ApiModelProperty(value = "新用户累计创角人数")
+    private Long newUserTotalRoleNum;
+
+    /**
+     * 注册成本
+     */
+    @ApiModelProperty(value = "注册成本")
+    private BigDecimal regCost;
+
+    /**
+     * 总注册成本
+     */
+    @ApiModelProperty(value = "总注册成本")
+    private BigDecimal regTotalCost;
+
+    /**
+     * 首日创角成本
+     */
+    @ApiModelProperty(value = "首日创角成本")
+    private BigDecimal firstRoleCost;
+
+    /**
+     * 新用户创角成本
+     */
+    @ApiModelProperty(value = "新用户创角成本")
+    private BigDecimal newUserTotalRoleCost;
+
+    /**
+     * 总创角成本
+     */
+    @ApiModelProperty(value = "总创角成本")
+    private BigDecimal roleTotalCost;
+
+    /**
+     * 首日创角率
+     */
+    @ApiModelProperty(value = "首日创角率")
+    private BigDecimal firstRoleRate;
+
+    /**
+     * 新用户创角率
+     */
+    @ApiModelProperty(value = "新用户创角率")
+    private BigDecimal newUserTotalRoleRate;
+
+    /**
+     * 总创角率
+     */
+    @ApiModelProperty(value = "总创角率")
+    private BigDecimal roleTotalRate;
+
+    /**
+     * 新增付费次数
+     */
+    @ApiModelProperty(value = "新增付费次数")
+    private Long firstNewUserAmountCount;
+
+    /**
+     * 新增付费人数
+     */
+    @ApiModelProperty(value = "新增付费人数")
+    private Long firstNewUserAmountNum;
+
+    /**
+     * 新增付费金额
+     */
+    @ApiModelProperty(value = "新增付费金额")
+    private BigDecimal firstNewUserAmount;
+
+    /**
+     * 至今付费次数
+     */
+    @ApiModelProperty(value = "至今付费次数")
+    private Long newUserTotalAmountCount;
+
+    /**
+     * 至今付费人数
+     */
+    @ApiModelProperty(value = "至今付费人数")
+    private Long newUserTotalAmountNum;
+
+    /**
+     * 至今付费金额
+     */
+    @ApiModelProperty(value = "至今付费金额")
+    private BigDecimal newUserTotalAmount;
+
+    /**
+     * 总充值次数
+     */
+    @ApiModelProperty(value = "总充值次数")
+    private Long totalAmountCount;
+
+    /**
+     * 总充值人数
+     */
+    @ApiModelProperty(value = "总充值人数")
+    private Long totalAmountNum;
+
+    /**
+     * 总充值金额
+     */
+    @ApiModelProperty(value = "总充值金额")
+    private BigDecimal totalAmount;
+
+    /**
+     * 首日ROI
+     */
+    @ApiModelProperty(value = "首日ROI")
+    private BigDecimal firstRoi;
+
+    /**
+     * 新用户24小时充值金额
+     */
+    @ApiModelProperty(value = "新用户24小时充值金额")
+    private BigDecimal twentyFourHoursAmount;
+
+    /**
+     * 新用户24小时ROI
+     */
+    @ApiModelProperty(value = "新用户24小时ROI")
+    private BigDecimal twentyFourHoursRoi;
+
+    /**
+     * 总ROI
+     */
+    @ApiModelProperty(value = "总ROI")
+    private BigDecimal totalRoi;
+
+    /**
+     * 广告总ROI
+     */
+    @ApiModelProperty(value = "广告总ROI")
+    private BigDecimal promotionTotalRoi;
+
+    /**
+     * 新增付费成本
+     */
+    @ApiModelProperty(value = "新增付费成本")
+    private BigDecimal firstNewUserRechargeCost;
+
+    /**
+     * 至今付费成本
+     */
+    @ApiModelProperty(value = "至今付费成本")
+    private BigDecimal newUserTotalRechargeCost;
+
+    /**
+     * 广告总付费成本
+     */
+    @ApiModelProperty(value = "广告总付费成本")
+    private BigDecimal totalRechargeCost;
+
+    /**
+     * 新增付费ARPPU
+     */
+    @ApiModelProperty(value = "新增付费ARPPU")
+    private BigDecimal firstNewUserArppu;
+
+    /**
+     * 至今付费ARPPU
+     */
+    @ApiModelProperty(value = "至今付费ARPPU")
+    private BigDecimal newUserTotalAmountArppu;
+
+    /**
+     * 新增付费100+用户数
+     */
+    @ApiModelProperty(value = "新增付费100+用户数")
+    private Long firstNewUserHundredUserNum;
+
+    /**
+     * 新增付费200+用户数
+     */
+    @ApiModelProperty(value = "新增付费200+用户数")
+    private Long firstNewUserTwoHundredUserNum;
+
+    /**
+     * 至今付费100+用户数
+     */
+    @ApiModelProperty(value = "至今付费100+用户数")
+    private Long newUserTotalHundredUserNum;
+
+    /**
+     * 首充50~100元用户数
+     */
+    @ApiModelProperty(value = "首充50~100元用户数")
+    private Long firstRechargeFiftyHundredNum;
+
+    /**
+     * 新增付费100+用户付费成本
+     */
+    @ApiModelProperty(value = "新增付费100+用户付费成本")
+    private BigDecimal firstNewUserHundredUserCost;
+
+    /**
+     * 新增付费200+用户付费成本
+     */
+    @ApiModelProperty(value = "新增付费200+用户付费成本")
+    private BigDecimal firstNewUserTwoHundredUserCost;
+
+    /**
+     * 至今付费100+用户付费成本
+     */
+    @ApiModelProperty(value = "至今付费100+用户付费成本")
+    private BigDecimal newUserTotalHundredUserCost;
+
+    /**
+     * 首充50~100元占比
+     */
+    @ApiModelProperty(value = "首充50~100元占比")
+    private BigDecimal firstRechargeFiftyHundredRate;
+
+    /**
+     * 首日IOS付费次数
+     */
+    @ApiModelProperty(value = "首日IOS付费次数")
+    private Long firstIosAmountCount;
+
+    /**
+     * 首日IOS付费人数
+     */
+    @ApiModelProperty(value = "首日IOS付费人数")
+    private Long firstIosAmountNum;
+
+    /**
+     * 首日IOS付费金额
+     */
+    @ApiModelProperty(value = "首日IOS付费金额")
+    private BigDecimal firstIosAmount;
+
+    /**
+     * 首日Android付费次数
+     */
+    @ApiModelProperty(value = "首日Android付费次数")
+    private Long firstAndroidAmountCount;
+
+    /**
+     * 首日Android付费人数
+     */
+    @ApiModelProperty(value = "首日Android付费人数")
+    private Long firstAndroidAmountNum;
+
+    /**
+     * 首日Android付费金额
+     */
+    @ApiModelProperty(value = "首日Android付费金额")
+    private BigDecimal firstAndroidAmount;
+
+    /**
+     * 首日IOS付费人数占比
+     */
+    @ApiModelProperty(value = "首日IOS付费人数占比")
+    private BigDecimal firstIosAmountNumRate;
+
+    /**
+     * 首日IOS付费金额占比
+     */
+    @ApiModelProperty(value = "首日IOS付费金额占比")
+    private BigDecimal firstIosAmountRate;
+
+    /**
+     * 首日IOS付费ROI
+     */
+    @ApiModelProperty(value = "首日IOS付费ROI")
+    private BigDecimal firstIosAmountRoi;
+
+    /**
+     * 首日Android付费人数占比
+     */
+    @ApiModelProperty(value = "首日Android付费人数占比")
+    private BigDecimal firstAndroidAmountNumRate;
+
+    /**
+     * 首日Android付费金额占比
+     */
+    @ApiModelProperty(value = "首日Android付费金额占比")
+    private BigDecimal firstAndroidAmountRate;
+
+    /**
+     * 首日Android付费ROI
+     */
+    @ApiModelProperty(value = "首日Android付费ROI")
+    private BigDecimal firstAndroidAmountRoi;
+
+    /**
+     * 首日付费率
+     */
+    @ApiModelProperty(value = "首日付费率")
+    private BigDecimal firstAmountRate;
+
+    /**
+     * 新增客单价
+     */
+    @ApiModelProperty(value = "新增客单价")
+    private BigDecimal firstNewUserAvgPrice;
+
+    /**
+     * 至今客单价
+     */
+    @ApiModelProperty(value = "至今客单价")
+    private BigDecimal newUserTotalAvgPrice;
+
+    /**
+     * 计划ID,消耗时间的第1天新用户充值(不显示)
+     */
+    @ApiModelProperty(value = "计划ID,消耗时间的第1天新用户充值(不显示)")
+    private BigDecimal d1;
+
+    /**
+     * 计划ID,消耗时间的第2天新用户充值(不显示)
+     */
+    @ApiModelProperty(value = "计划ID,消耗时间的第2天新用户充值(不显示)")
+    private BigDecimal d2;
+
+    /**
+     * 计划ID,消耗时间的第3天新用户充值(不显示)
+     */
+    @ApiModelProperty(value = "计划ID,消耗时间的第3天新用户充值(不显示)")
+    private BigDecimal d3;
+
+    /**
+     * 计划ID,消耗时间的第4天新用户充值(不显示)
+     */
+    @ApiModelProperty(value = "计划ID,消耗时间的第4天新用户充值(不显示)")
+    private BigDecimal d4;
+
+    /**
+     * 计划ID,消耗时间的第5天新用户充值(不显示)
+     */
+    @ApiModelProperty(value = "计划ID,消耗时间的第5天新用户充值(不显示)")
+    private BigDecimal d5;
+
+    /**
+     * 计划ID,消耗时间的第6天新用户充值(不显示)
+     */
+    @ApiModelProperty(value = "计划ID,消耗时间的第6天新用户充值(不显示)")
+    private BigDecimal d6;
+
+    /**
+     * 计划ID,消耗时间的第7天新用户充值(不显示)
+     */
+    @ApiModelProperty(value = "计划ID,消耗时间的第7天新用户充值(不显示)")
+    private BigDecimal d7;
+
+    /**
+     * 计划ID,消耗时间的第8天新用户充值(不显示)
+     */
+    @ApiModelProperty(value = "计划ID,消耗时间的第8天新用户充值(不显示)")
+    private BigDecimal d8;
+
+    /**
+     * 计划ID,消耗时间的第9天新用户充值(不显示)
+     */
+    @ApiModelProperty(value = "计划ID,消耗时间的第9天新用户充值(不显示)")
+    private BigDecimal d9;
+
+    /**
+     * 计划ID,消耗时间的第10天新用户充值(不显示)
+     */
+    @ApiModelProperty(value = "计划ID,消耗时间的第10天新用户充值(不显示)")
+    private BigDecimal d10;
+
+    /**
+     * 计划ID,消耗时间的第11天新用户充值(不显示)
+     */
+    @ApiModelProperty(value = "计划ID,消耗时间的第11天新用户充值(不显示)")
+    private BigDecimal d11;
+
+    /**
+     * 计划ID,消耗时间的第12天新用户充值(不显示)
+     */
+    @ApiModelProperty(value = "计划ID,消耗时间的第12天新用户充值(不显示)")
+    private BigDecimal d12;
+
+    /**
+     * 计划ID,消耗时间的第13天新用户充值(不显示)
+     */
+    @ApiModelProperty(value = "计划ID,消耗时间的第13天新用户充值(不显示)")
+    private BigDecimal d13;
+
+    /**
+     * 计划ID,消耗时间的第14天新用户充值(不显示)
+     */
+    @ApiModelProperty(value = "计划ID,消耗时间的第14天新用户充值(不显示)")
+    private BigDecimal d14;
+
+    /**
+     * 计划ID,消耗时间的第15天新用户充值(不显示)
+     */
+    @ApiModelProperty(value = "计划ID,消耗时间的第15天新用户充值(不显示)")
+    private BigDecimal d15;
+
+    /**
+     * 计划ID,消耗时间的第16天新用户充值(不显示)
+     */
+    @ApiModelProperty(value = "计划ID,消耗时间的第16天新用户充值(不显示)")
+    private BigDecimal d16;
+
+    /**
+     * 计划ID,消耗时间的第17天新用户充值(不显示)
+     */
+    @ApiModelProperty(value = "计划ID,消耗时间的第17天新用户充值(不显示)")
+    private BigDecimal d17;
+
+    /**
+     * 计划ID,消耗时间的第18天新用户充值(不显示)
+     */
+    @ApiModelProperty(value = "计划ID,消耗时间的第18天新用户充值(不显示)")
+    private BigDecimal d18;
+
+    /**
+     * 计划ID,消耗时间的第19天新用户充值(不显示)
+     */
+    @ApiModelProperty(value = "计划ID,消耗时间的第19天新用户充值(不显示)")
+    private BigDecimal d19;
+
+    /**
+     * 计划ID,消耗时间的第20天新用户充值(不显示)
+     */
+    @ApiModelProperty(value = "计划ID,消耗时间的第20天新用户充值(不显示)")
+    private BigDecimal d20;
+
+    /**
+     * 计划ID,消耗时间的第21天新用户充值(不显示)
+     */
+    @ApiModelProperty(value = "计划ID,消耗时间的第21天新用户充值(不显示)")
+    private BigDecimal d21;
+
+    /**
+     * 计划ID,消耗时间的第22天新用户充值(不显示)
+     */
+    @ApiModelProperty(value = "计划ID,消耗时间的第22天新用户充值(不显示)")
+    private BigDecimal d22;
+
+    /**
+     * 计划ID,消耗时间的第23天新用户充值(不显示)
+     */
+    @ApiModelProperty(value = "计划ID,消耗时间的第23天新用户充值(不显示)")
+    private BigDecimal d23;
+
+    /**
+     * 计划ID,消耗时间的第24天新用户充值(不显示)
+     */
+    @ApiModelProperty(value = "计划ID,消耗时间的第24天新用户充值(不显示)")
+    private BigDecimal d24;
+
+    /**
+     * 计划ID,消耗时间的第25天新用户充值(不显示)
+     */
+    @ApiModelProperty(value = "计划ID,消耗时间的第25天新用户充值(不显示)")
+    private BigDecimal d25;
+
+    /**
+     * 计划ID,消耗时间的第26天新用户充值(不显示)
+     */
+    @ApiModelProperty(value = "计划ID,消耗时间的第26天新用户充值(不显示)")
+    private BigDecimal d26;
+
+    /**
+     * 计划ID,消耗时间的第27天新用户充值(不显示)
+     */
+    @ApiModelProperty(value = "计划ID,消耗时间的第27天新用户充值(不显示)")
+    private BigDecimal d27;
+
+    /**
+     * 计划ID,消耗时间的第28天新用户充值(不显示)
+     */
+    @ApiModelProperty(value = "计划ID,消耗时间的第28天新用户充值(不显示)")
+    private BigDecimal d28;
+
+    /**
+     * 计划ID,消耗时间的第29天新用户充值(不显示)
+     */
+    @ApiModelProperty(value = "计划ID,消耗时间的第29天新用户充值(不显示)")
+    private BigDecimal d29;
+
+    /**
+     * 计划ID,消耗时间的第30天新用户充值(不显示)
+     */
+    @ApiModelProperty(value = "计划ID,消耗时间的第30天新用户充值(不显示)")
+    private BigDecimal d30;
+
+    /**
+     * 付费趋势第1天总:金额/人数/增/回/倍(不显示)
+     */
+    @ApiModelProperty(value = "付费趋势第1天总:金额/人数/增/回/倍(不显示)")
+    private String da1;
+
+    /**
+     * 付费趋势第2天总:金额/人数/增/回/倍(不显示)
+     */
+    @ApiModelProperty(value = "付费趋势第2天总:金额/人数/增/回/倍(不显示)")
+    private String da2;
+
+    /**
+     * 付费趋势第3天总:金额/人数/增/回/倍(不显示)
+     */
+    @ApiModelProperty(value = "付费趋势第3天总:金额/人数/增/回/倍(不显示)")
+    private String da3;
+
+    /**
+     * 付费趋势第4天总:金额/人数/增/回/倍(不显示)
+     */
+    @ApiModelProperty(value = "付费趋势第4天总:金额/人数/增/回/倍(不显示)")
+    private String da4;
+
+    /**
+     * 付费趋势第5天总:金额/人数/增/回/倍(不显示)
+     */
+    @ApiModelProperty(value = "付费趋势第5天总:金额/人数/增/回/倍(不显示)")
+    private String da5;
+
+    /**
+     * 付费趋势第6天总:金额/人数/增/回/倍(不显示)
+     */
+    @ApiModelProperty(value = "付费趋势第6天总:金额/人数/增/回/倍(不显示)")
+    private String da6;
+
+    /**
+     * 付费趋势第7天总:金额/人数/增/回/倍(不显示)
+     */
+    @ApiModelProperty(value = "付费趋势第7天总:金额/人数/增/回/倍(不显示)")
+    private String da7;
+
+    /**
+     * 付费趋势第8天总:金额/人数/增/回/倍(不显示)
+     */
+    @ApiModelProperty(value = "付费趋势第8天总:金额/人数/增/回/倍(不显示)")
+    private String da8;
+
+    /**
+     * 付费趋势第9天总:金额/人数/增/回/倍(不显示)
+     */
+    @ApiModelProperty(value = "付费趋势第9天总:金额/人数/增/回/倍(不显示)")
+    private String da9;
+
+    /**
+     * 付费趋势第10天总:金额/人数/增/回/倍(不显示)
+     */
+    @ApiModelProperty(value = "付费趋势第10天总:金额/人数/增/回/倍(不显示)")
+    private String da10;
+
+    /**
+     * 付费趋势第11天总:金额/人数/增/回/倍(不显示)
+     */
+    @ApiModelProperty(value = "付费趋势第11天总:金额/人数/增/回/倍(不显示)")
+    private String da11;
+
+    /**
+     * 付费趋势第12天总:金额/人数/增/回/倍(不显示)
+     */
+    @ApiModelProperty(value = "付费趋势第12天总:金额/人数/增/回/倍(不显示)")
+    private String da12;
+
+    /**
+     * 付费趋势第13天总:金额/人数/增/回/倍(不显示)
+     */
+    @ApiModelProperty(value = "付费趋势第13天总:金额/人数/增/回/倍(不显示)")
+    private String da13;
+
+    /**
+     * 付费趋势第14天总:金额/人数/增/回/倍(不显示)
+     */
+    @ApiModelProperty(value = "付费趋势第14天总:金额/人数/增/回/倍(不显示)")
+    private String da14;
+
+    /**
+     * 付费趋势第15天总:金额/人数/增/回/倍(不显示)
+     */
+    @ApiModelProperty(value = "付费趋势第15天总:金额/人数/增/回/倍(不显示)")
+    private String da15;
+
+    /**
+     * 付费趋势第16天总:金额/人数/增/回/倍(不显示)
+     */
+    @ApiModelProperty(value = "付费趋势第16天总:金额/人数/增/回/倍(不显示)")
+    private String da16;
+
+    /**
+     * 付费趋势第17天总:金额/人数/增/回/倍(不显示)
+     */
+    @ApiModelProperty(value = "付费趋势第17天总:金额/人数/增/回/倍(不显示)")
+    private String da17;
+
+    /**
+     * 付费趋势第18天总:金额/人数/增/回/倍(不显示)
+     */
+    @ApiModelProperty(value = "付费趋势第18天总:金额/人数/增/回/倍(不显示)")
+    private String da18;
+
+    /**
+     * 付费趋势第19天总:金额/人数/增/回/倍(不显示)
+     */
+    @ApiModelProperty(value = "付费趋势第19天总:金额/人数/增/回/倍(不显示)")
+    private String da19;
+
+    /**
+     * 付费趋势第20天总:金额/人数/增/回/倍(不显示)
+     */
+    @ApiModelProperty(value = "付费趋势第20天总:金额/人数/增/回/倍(不显示)")
+    private String da20;
+
+    /**
+     * 付费趋势第21天总:金额/人数/增/回/倍(不显示)
+     */
+    @ApiModelProperty(value = "付费趋势第21天总:金额/人数/增/回/倍(不显示)")
+    private String da21;
+
+    /**
+     * 付费趋势第22天总:金额/人数/增/回/倍(不显示)
+     */
+    @ApiModelProperty(value = "付费趋势第22天总:金额/人数/增/回/倍(不显示)")
+    private String da22;
+
+    /**
+     * 付费趋势第23天总:金额/人数/增/回/倍(不显示)
+     */
+    @ApiModelProperty(value = "付费趋势第23天总:金额/人数/增/回/倍(不显示)")
+    private String da23;
+
+    /**
+     * 付费趋势第24天总:金额/人数/增/回/倍(不显示)
+     */
+    @ApiModelProperty(value = "付费趋势第24天总:金额/人数/增/回/倍(不显示)")
+    private String da24;
+
+    /**
+     * 付费趋势第25天总:金额/人数/增/回/倍(不显示)
+     */
+    @ApiModelProperty(value = "付费趋势第25天总:金额/人数/增/回/倍(不显示)")
+    private String da25;
+
+    /**
+     * 付费趋势第26天总:金额/人数/增/回/倍(不显示)
+     */
+    @ApiModelProperty(value = "付费趋势第26天总:金额/人数/增/回/倍(不显示)")
+    private String da26;
+
+    /**
+     * 付费趋势第27天总:金额/人数/增/回/倍(不显示)
+     */
+    @ApiModelProperty(value = "付费趋势第27天总:金额/人数/增/回/倍(不显示)")
+    private String da27;
+
+    /**
+     * 付费趋势第28天总:金额/人数/增/回/倍(不显示)
+     */
+    @ApiModelProperty(value = "付费趋势第28天总:金额/人数/增/回/倍(不显示)")
+    private String da28;
+
+    /**
+     * 付费趋势第29天总:金额/人数/增/回/倍(不显示)
+     */
+    @ApiModelProperty(value = "付费趋势第29天总:金额/人数/增/回/倍(不显示)")
+    private String da29;
+
+    /**
+     * 付费趋势第30天总:金额/人数/增/回/倍(不显示)
+     */
+    @ApiModelProperty(value = "付费趋势第30天总:金额/人数/增/回/倍(不显示)")
+    private String da30;
+
+    /**
+     * 次日数据
+     */
+    @ApiModelProperty(value = "次日:ROI/付费/倍数")
+    private PromotionRechargeTrendVO d2Trend;
+
+    /**
+     * 3日数据
+     */
+    @ApiModelProperty(value = "3日:ROI/付费/倍数")
+    private PromotionRechargeTrendVO d3Trend;
+
+    /**
+     * 7日数据
+     */
+    @ApiModelProperty(value = "7日:ROI/付费/倍数")
+    private PromotionRechargeTrendVO d7Trend;
+
+    /**
+     * 15日数据
+     */
+    @ApiModelProperty(value = "15日:ROI/付费/倍数")
+    private PromotionRechargeTrendVO d15Trend;
+    
 }

+ 34 - 0
game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/pojo/vo/PromotionRechargeTrendVO.java

@@ -0,0 +1,34 @@
+package com.zanxiang.game.data.serve.pojo.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.math.BigDecimal;
+
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+@Builder
+public class PromotionRechargeTrendVO {
+
+    /**
+     * ROI
+     */
+    @ApiModelProperty(notes = "ROI")
+    private BigDecimal roi;
+
+    /**
+     * 用户充值金额
+     */
+    @ApiModelProperty(notes = "充值金额")
+    private BigDecimal rechargeMoney;
+
+    /**
+     * 倍数
+     */
+    @ApiModelProperty(notes = "倍数")
+    private BigDecimal multiples;
+}

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

@@ -7,8 +7,20 @@ import com.zanxiang.game.data.serve.pojo.vo.PromotionDayVO;
 import com.zanxiang.game.data.serve.service.IAdsPromotionDayService;
 import com.zanxiang.game.data.serve.utils.Page;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.StringUtils;
+import org.nutz.dao.Cnd;
+import org.nutz.dao.Dao;
+import org.nutz.dao.Sqls;
+import org.nutz.dao.pager.Pager;
+import org.nutz.dao.sql.Criteria;
+import org.nutz.dao.sql.Sql;
+import org.nutz.dao.util.Daos;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.time.LocalDate;
+import java.util.List;
+
 /**
  * @author tianhua
  * @time 2023/7/27
@@ -18,10 +30,184 @@ import org.springframework.stereotype.Service;
 @Slf4j
 public class PromotionDayServiceImpl implements IAdsPromotionDayService {
 
+    @Autowired
+    private Dao dao;
+
     @Override
     public Page<PromotionDayVO> getPromotionDayData(PromotionDayDTO dto) {
+        //不传递查询条件默认查询当天数据
+        if (dto.getCostBeginDate() == null || dto.getCostEndDate() == null) {
+            dto.setCostBeginDate(LocalDate.now());
+            dto.setCostEndDate(LocalDate.now());
+        }
+        //创建查询条件
+        Criteria cri = Cnd.cri();
+        if (dto.getAccountId() != null) {
+            //拼接推广账号Id查询条件
+            cri.where().andEquals("account_id", dto.getAccountId());
+        }
+        if (StringUtils.isNotBlank(dto.getAccountName())) {
+            //拼接推广账号名称查询条件
+            cri.where().andEquals("account_name", dto.getAccountName());
+        }
+        if (StringUtils.isNotBlank(dto.getAccountType())) {
+            //推广账号类型
+            cri.where().andEquals("account_type", dto.getAccountType());
+        }
+        if (dto.getPitcherId() != null) {
+            cri.where().andEquals("pitcher_id", dto.getPitcherId());
+        }
+        if (StringUtils.isNotBlank(dto.getPitcherName())) {
+            cri.where().andEquals("pitcher_name", dto.getPitcherName());
+        }
+        if (dto.getAgentId() != null) {
+            cri.where().andEquals("agent_id", dto.getAgentId());
+        }
+        if (StringUtils.isNotBlank(dto.getAgentKey())) {
+            cri.where().andEquals("agent_key", dto.getAgentKey());
+        }
+        if (StringUtils.isNotBlank(dto.getAgentName())) {
+            cri.where().andEquals("agent_name", dto.getAgentName());
+        }
+        if (StringUtils.isNotBlank(dto.getCpName())) {
+            cri.where().andEquals("cp_name", dto.getCpName());
+        }
+        if (StringUtils.isNotBlank(dto.getGameName())) {
+            cri.where().andEquals("game_name", dto.getGameName());
+        }
+        if (dto.getGameId() != null) {
+            cri.where().andEquals("game_id", dto.getGameId());
+        }
+        if (dto.getClassify() != null) {
+            cri.where().andEquals("classify", dto.getClassify());
+        }
+        if (StringUtils.isNotBlank(dto.getPromotionName())) {
+            cri.where().andEquals("promotion_name", dto.getPromotionName());
+        }
+        if (dto.getPromotionId() != null) {
+            cri.where().andEquals("promotion_id", dto.getPromotionId());
+        }
+        if (StringUtils.isNotBlank(dto.getStatus())) {
+            cri.where().andEquals("status", dto.getStatus());
+        }
+        if (StringUtils.isNotBlank(dto.getProjectName())) {
+            cri.where().andEquals("project_name", dto.getProjectName());
+        }
+        if (dto.getProjectId() != null) {
+            cri.where().andEquals("project_id", dto.getProjectId());
+        }
+        if (dto.getCostBeginDate() != null && dto.getCostEndDate() != null) {
+            cri.where().andBetween("dt", dto.getCostBeginDate(), dto.getCostEndDate());
+        }
+        if (StringUtils.isNotBlank(dto.getSourceSystem())) {
+            cri.where().andEquals("source_system", dto.getSourceSystem());
+        }
+        //拼接分组条件
+        cri.getGroupBy().groupBy("promotion_id");
+        //创建sql语句
+        Sql sql = Sqls.create(getPromotionDayDataSql() + cri );
+        //添加自定义回传对象
+        sql.setCallback(Sqls.callback.entities());
+        sql.setEntity(dao.getEntity(PromotionDayVO.class));
+        //设置pager对象
+        Pager pager = dao.createPager(dto.getPageNum(), dto.getPageSize());
+        sql.setPager(pager);
+        //执行sql
+        dao.execute(sql);
+        //获取到结果list
+        List<PromotionDayVO> list = sql.getList(PromotionDayVO.class);
+        //分页对象设置总条数
+        Sql sqlCount = Sqls.queryEntity("select count(*) from ads_promotion_day" + cri);
+        pager.setRecordCount((int) Daos.queryCount(dao, sqlCount));
 
-        return null;
+        //返回查询得结果
+        return new Page<>(list,pager);
+    }
+
+    /**
+     * 查询广告监控数据
+     * @return
+     */
+    private String getPromotionDayDataSql() {
+        return """
+                SELECT
+                	promotion_id,
+                	MAX(promotion_name) as promotion_name,
+                	MAX(project_id) as project_id,
+                	MAX(project_name) as project_name,
+                	MAX(account_name) as account_name,
+                	MAX(account_id) as account_id,
+                	MAX(account_type) as account_type,
+                	MAX(pitcher_id) as pitcher_id,
+                	MAX(pitcher_name) as pitcher_name,
+                	MAX(agent_id) as agent_id,
+                	MAX(agent_name) as agent_name,
+                	MAX(agent_key) as agent_key,
+                	MAX(cp_name) as cp_name,
+                	MAX(game_id) as game_id,
+                	MAX(game_name) as game_name,
+                	MAX(classify) as classify,
+                	SUM(today_cost) as today_cost,
+                	SUM(show_count) as show_count,
+                	round(if(SUM(show_count) > 0, SUM(today_cost) / SUM(show_count), 0), 2) as thousand_display_price,
+                	SUM(click_count) as click_count,
+                	round(if(SUM(click_count) > 0, SUM(today_cost) / SUM(click_count), 0), 2) as avg_click_cost,
+                	round(if(SUM(show_count) > 0, SUM(click_count) / SUM(show_count), 0), 4) as ctr,
+                	SUM(convert_count) as convert_count,
+                	SUM(convert_cost) as convert_cost,
+                	round(if(SUM(click_count) > 0, SUM(convert_count) / SUM(click_count), 0), 4) as convert_rate,
+                	SUM(reg_num) as reg_num,
+                	SUM(first_role_num) as first_role_num,
+                	SUM(new_user_total_role_num) as new_user_total_role_num,
+                	round(if(SUM(reg_num) > 0, SUM(today_cost) / SUM(reg_num), 0), 2) as reg_cost,
+                	round(if(SUM(first_role_num) > 0, SUM(today_cost) / SUM(first_role_num), 0), 2) as first_role_cost,
+                	round(if(SUM(new_user_total_role_num) > 0, SUM(today_cost) / SUM(new_user_total_role_num), 0), 2) as new_user_total_role_cost,
+                	round(if(SUM(reg_num) > 0, SUM(first_role_num) / SUM(reg_num), 0), 4) as first_role_rate,
+                	round(if(SUM(reg_num) > 0, SUM(new_user_total_role_num) / SUM(reg_num), 0), 4) as new_user_total_role_rate,
+                	SUM(first_new_user_amount_count) as first_new_user_amount_count,
+                	SUM(first_new_user_amount_num) as first_new_user_amount_num,
+                	SUM(first_new_user_amount) as first_new_user_amount,
+                	SUM(new_user_total_amount_count) as new_user_total_amount_count,
+                	SUM(new_user_total_amount_num) as new_user_total_amount_num,
+                	SUM(new_user_total_amount) as new_user_total_amount,
+                	round(if(SUM(today_cost) > 0, SUM(first_new_user_amount) / SUM(today_cost), 0), 4) as first_roi,
+                	SUM(twenty_four_hours_amount) as twenty_four_hours_amount,
+                	round(if(SUM(today_cost) > 0, SUM(twenty_four_hours_amount) / SUM(today_cost), 0), 4) as twenty_four_hours_roi,
+                	round(if(SUM(today_cost) > 0, SUM(new_user_total_amount) / SUM(today_cost), 0), 4) as total_roi,
+                	round(if(SUM(first_new_user_amount_num) > 0, SUM(today_cost) / SUM(first_new_user_amount_num), 0), 2) as first_new_user_recharge_cost,
+                	round(if(SUM(new_user_total_amount_num) > 0, SUM(today_cost) / SUM(new_user_total_amount_num), 0), 2) as new_user_total_recharge_cost,
+                	round(if(SUM(first_new_user_amount_num) > 0, SUM(first_new_user_amount) / SUM(first_new_user_amount_num), 0), 2) as first_new_user_arppu,
+                	round(if(SUM(new_user_total_amount_num) > 0, SUM(new_user_total_amount) / SUM(new_user_total_amount_num), 0), 2) as new_user_total_amount_arppu,
+                	SUM(first_new_user_hundred_user_num) as first_new_user_hundred_user_num,
+                	round(if(SUM(first_new_user_hundred_user_num) > 0, SUM(today_cost) / SUM(first_new_user_hundred_user_num), 0), 2) as first_new_user_hundred_user_cost,
+                	SUM(first_recharge_fifty_hundred_num) as first_recharge_fifty_hundred_num,
+                	round(if(SUM(new_user_total_amount_num) > 0, SUM(first_recharge_fifty_hundred_num) / SUM(new_user_total_amount_num), 0), 4) as first_recharge_fifty_hundred_rate,
+                	SUM(first_new_user_two_hundred_user_num) as first_new_user_two_hundred_user_num,
+                	round(if(SUM(first_new_user_two_hundred_user_num) > 0, SUM(today_cost) / SUM(first_new_user_two_hundred_user_num), 0), 2) as first_new_user_two_hundred_user_cost,
+                	SUM(new_user_total_hundred_user_num) as new_user_total_hundred_user_num,
+                	round(if(SUM(new_user_total_hundred_user_num) > 0, SUM(today_cost) / SUM(new_user_total_hundred_user_num), 0), 2) as new_user_total_hundred_user_cost,
+                	SUM(first_ios_amount_num) as first_ios_amount_num,
+                	SUM(first_ios_amount_count) as first_ios_amount_count,
+                	SUM(first_ios_amount) as first_ios_amount,
+                	round(if(SUM(first_new_user_amount_num) > 0, SUM(first_ios_amount_num) / SUM(first_new_user_amount_num), 0), 4) as first_ios_amount_num_rate,
+                	round(if(SUM(first_new_user_amount) > 0, SUM(first_ios_amount) / SUM(first_new_user_amount), 0), 4) as first_ios_amount_rate,
+                	round(if(SUM(today_cost)> 0, SUM(first_ios_amount) / SUM(today_cost), 0), 4) as first_ios_amount_roi,
+                	SUM(first_android_amount_count) as first_android_amount_count,
+                	SUM(first_android_amount_num) as first_android_amount_num,
+                	SUM(first_android_amount) as first_android_amount,
+                	round(if(SUM(first_new_user_amount_num) > 0,SUM(first_android_amount_num) / SUM(first_new_user_amount_num), 0), 4) as first_android_amount_num_rate,
+                	round(if(SUM(first_new_user_amount) > 0, SUM(first_android_amount) / SUM(first_new_user_amount), 0), 4) as first_android_amount_rate,
+                	round(if(SUM(today_cost) > 0, SUM(first_android_amount) / SUM(today_cost), 0), 4) as first_android_amount_roi,
+                	round(if(SUM(reg_num) > 0, SUM(first_new_user_amount_num) / SUM(reg_num), 0), 4) as first_amount_rate,
+                	round(if(SUM(first_new_user_amount_count) > 0, SUM(first_new_user_amount) / SUM(first_new_user_amount_count), 0), 2) as first_new_user_avg_price,
+                	round(if(SUM(new_user_total_amount_count) > 0, SUM(new_user_total_amount) / SUM(new_user_total_amount_count), 0), 2) as new_user_total_avg_price,
+                	SUM(d2) as d2,
+                	SUM(d3) as d3,
+                	SUM(d7) as d7,
+                	SUM(d15) as d15
+                FROM
+                	game_ads.ads_promotion_day
+                """;
     }
 
     @Override

+ 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, 注册充值时间差筛选> ( ´・・)ノ(._.`) \n" +
+        System.out.println("赞象Manage服务启动成功 <dubbo升级3.0, 实名认证列表修改> ( ´・・)ノ(._.`) \n" +
                 "___  ___  ___   _   _   ___  _____  _____ \n" +
                 "|  \\/  | / _ \\ | \\ | | / _ \\|  __ \\|  ___|\n" +
                 "| .  . |/ /_\\ \\|  \\| |/ /_\\ \\ |  \\/| |__  \n" +

+ 12 - 0
game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/pojo/vo/UserCardVO.java

@@ -85,4 +85,16 @@ public class UserCardVO {
     @ApiModelProperty(notes = "更新时间")
     private LocalDateTime updateTime;
 
+    /**
+     * 最近游戏角色名称
+     */
+    @ApiModelProperty(notes = "最近游戏角色名称")
+    private String lastGameRoleName;
+
+    /**
+     * 身份证地址
+     */
+    @ApiModelProperty(notes = "身份证地址")
+    private String address;
+
 }

+ 9 - 0
game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/service/impl/UserCardServiceImpl.java

@@ -11,8 +11,10 @@ import com.zanxiang.game.module.manage.pojo.dto.UserDTO;
 import com.zanxiang.game.module.manage.pojo.params.UserNameAuthListParam;
 import com.zanxiang.game.module.manage.pojo.vo.UserCardVO;
 import com.zanxiang.game.module.manage.service.IAgentService;
+import com.zanxiang.game.module.manage.service.IGameUserRoleService;
 import com.zanxiang.game.module.manage.service.IUserCardService;
 import com.zanxiang.game.module.manage.service.IUserService;
+import com.zanxiang.game.module.mybatis.entity.GameUserRole;
 import com.zanxiang.game.module.mybatis.entity.UserCard;
 import com.zanxiang.game.module.mybatis.mapper.UserCardMapper;
 import com.zanxiang.module.util.bean.BeanUtil;
@@ -44,6 +46,9 @@ public class UserCardServiceImpl extends ServiceImpl<UserCardMapper, UserCard> i
     @Autowired
     private IAgentService agentService;
 
+    @Autowired
+    private IGameUserRoleService gameUserRoleService;
+
     @Override
     public IPage<UserCardVO> getUserCardList(UserNameAuthListParam param) {
         //渠道获取
@@ -75,6 +80,10 @@ public class UserCardServiceImpl extends ServiceImpl<UserCardMapper, UserCard> i
         UserCardVO userCardVO = BeanUtil.copy(userCard, UserCardVO.class);
         userCardVO.setCardId(userCard.getShowCardId());
         userCardVO.setCardName(userCard.getShowCardName());
+        //最近角色
+        UserDTO userDTO = userService.getById(userCard.getUserId());
+        GameUserRole gameUserRole = gameUserRoleService.getLastGameUserRoleName(userDTO.getId(), userDTO.getGameId());
+        userCardVO.setLastGameRoleName(gameUserRole == null ? null : gameUserRole.getRoleName());
         return userCardVO;
     }