Explorar el Código

修改内容:广告监控添加每日总计;订单添加总计

lth hace 1 año
padre
commit
d80d166283

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

@@ -2,6 +2,8 @@ package com.zanxiang.game.data.serve.controller;
 
 import com.zanxiang.erp.security.annotation.PreAuthorize;
 import com.zanxiang.game.data.serve.pojo.dto.AdsOrderDetailListDTO;
+import com.zanxiang.game.data.serve.pojo.dto.AdsOrderDetailTotalDTO;
+import com.zanxiang.game.data.serve.pojo.vo.AdsOrderDetailTotalVO;
 import com.zanxiang.game.data.serve.pojo.vo.AdsOrderDetailVO;
 import com.zanxiang.game.data.serve.service.IAdsOrderDetailService;
 import com.zanxiang.game.data.serve.utils.Page;
@@ -11,7 +13,6 @@ import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiResponse;
 import io.swagger.annotations.ApiResponses;
 import lombok.extern.slf4j.Slf4j;
-import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.PostMapping;
@@ -33,12 +34,13 @@ public class AdsOrderDetailController {
     @ApiResponses(value = {@ApiResponse(code = 200, message = "成功", response = AdsOrderDetailVO.class)})
     @PostMapping("/list")
     public ResultVO<Page<AdsOrderDetailVO>> orderList(@Validated @RequestBody AdsOrderDetailListDTO dto) {
-        if (StringUtils.isBlank(dto.getSortFiled())) {
-            dto.setSortFiled("order_create_time");
-        }
-        if (StringUtils.isBlank(dto.getSortType())) {
-            dto.setSortType("desc");
-        }
         return ResultVO.ok(gameOrderService.listOfPage(dto));
     }
+
+    @PreAuthorize(permissionKey = "gameData:order:listTotal")
+    @ApiOperation(value = "订单详情列表总计")
+    @PostMapping("/list/total")
+    public ResultVO<AdsOrderDetailTotalVO> orderTotal(@Validated @RequestBody AdsOrderDetailTotalDTO dto) {
+        return ResultVO.ok(gameOrderService.orderTotal(dto));
+    }
 }

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

@@ -56,6 +56,13 @@ public class AdsPromotionDayController {
         return ResultVO.ok(adsPromotionDayService.getPromotionDayListData(dto));
     }
 
+    @ApiOperation(value = "广告监控每日数据总计")
+    @PreAuthorize(permissionKey = "promotionData:adsPromotionDay:dayListTotal")
+    @PostMapping("/day/listTotal")
+    public ResultVO<PromotionDayTotalVO> getPromotionDayListTotalData(@RequestBody PromotionDayTotalDTO dto) {
+        return ResultVO.ok(adsPromotionDayService.getPromotionDayTotalData(dto));
+    }
+
     @ApiOperation(value = "腾讯广告监控数据")
     @PreAuthorize(permissionKey = "promotionData:adsAdGroupDay:day")
     @PostMapping("/tencent/day")
@@ -77,4 +84,11 @@ public class AdsPromotionDayController {
         return ResultVO.ok(adsPromotionDayService.getTencentPromotionDayListData(dto));
     }
 
+    @ApiOperation(value = "腾讯广告监控每日数据总计")
+    @PreAuthorize(permissionKey = "promotionData:adsAdGroupDay:dayListTotal")
+    @PostMapping("/tencent/day/listTotal")
+    public ResultVO<TencentPromotionDayTotalVO> getTencentPromotionDayListTotalData(@RequestBody TencentPromotionDayTotalDTO dto) {
+        return ResultVO.ok(adsPromotionDayService.getTencentPromotionDayTotalData(dto));
+    }
+
 }

+ 172 - 48
game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/pojo/dto/AdsOrderDetailListDTO.java

@@ -1,81 +1,205 @@
 package com.zanxiang.game.data.serve.pojo.dto;
 
+import com.fasterxml.jackson.annotation.JsonFormat;
 import com.zanxiang.game.data.serve.pojo.base.BasePage;
-import com.zanxiang.game.data.serve.pojo.entity.AdsOrderDetail;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
 
-import java.time.LocalDateTime;
+import java.time.LocalDate;
 
 @Data
 public class AdsOrderDetailListDTO extends BasePage {
 
-    @ApiModelProperty(notes = "订单创建时间")
-    private LocalDateTime beginOrderTime;
-
-    @ApiModelProperty(notes = "订单创建时间")
-    private LocalDateTime endOrderTime;
-
-    @ApiModelProperty(notes = "数据来源")
-    private String sourceSystem;
-
-    @ApiModelProperty(notes = "订单号")
+    /**
+     * 订单ID
+     */
+    @ApiModelProperty(notes = "订单ID:订单号")
     private String orderId;
 
-    @ApiModelProperty(notes = "CP订单号")
+    /**
+     * cp订单号
+     */
+    @ApiModelProperty(notes = "cp订单号")
     private String cpOrderId;
 
-    @ApiModelProperty(notes = "商户订单号")
+    /**
+     * 第三方支付订单号
+     */
+    @ApiModelProperty(notes = "第三方支付订单号")
     private String merchantOrderNo;
 
-    @ApiModelProperty(notes = "投手 id")
-    private String zxPitcherId;
-
-    @ApiModelProperty(notes = "玩家ID")
-    private String gameUserId;
+    /**
+     * 玩家id
+     */
+    @ApiModelProperty(notes = "玩家id")
+    private String userId;
 
+    /**
+     * 玩家账号
+     */
     @ApiModelProperty(notes = "玩家账号")
     private String username;
 
-    @ApiModelProperty(notes = "父游戏ID")
-    private String parentId;
+    /**
+     * 所在服务器名称
+     */
+    @ApiModelProperty(notes = "所在服务器名称")
+    private String serverName;
+
+    /**
+     * 游戏角色
+     */
+    @ApiModelProperty(notes = "游戏角色")
+    private String roleName;
 
-    @ApiModelProperty(notes = "充值游戏ID")
-    private String orderGameId;
+    /**
+     * cpId cp名称
+     */
+    @ApiModelProperty(notes = "cpId --> cp名称")
+    private String cpName;
 
-    @ApiModelProperty(notes = "用户游戏ID")
+    /**
+     * 充值游戏id
+     */
+    @ApiModelProperty(notes = "充值游戏id")
     private String gameId;
 
-    @ApiModelProperty(notes = "广告账号")
+    /**
+     * 注册渠道对应的id --> agentId
+     */
+    @ApiModelProperty(notes = "注册渠道对应的id")
+    private String channelId;
+
+    /**
+     * 归因推广账号
+     */
+    @ApiModelProperty(notes = "归因推广账号")
     private String accountId;
 
-    @ApiModelProperty(notes = "归属渠道ID")
-    private String agentId;
+    /**
+     * 归因投放人员
+     */
+    @ApiModelProperty(notes = "归因投放人员")
+    private String pitcherId;
 
+    /**
+     * 操作系统os
+     */
     @ApiModelProperty(notes = "操作系统")
-    private String os;
-
-    @ApiModelProperty(notes = "支付状态,1为待处理,2为成功,3为失败")
-    private String orderStatus;
-
-    @ApiModelProperty(notes = "支付方式")
-    private String payway;
-
-    @ApiModelProperty(notes = "角色ID")
-    private String roleId;
-
-    @ApiModelProperty(notes = "角色名称")
-    private String roleName;
-
-    @ApiModelProperty(notes = "用户注册时间")
-    private LocalDateTime beginRegTime;
-
-    @ApiModelProperty(notes = "用户注册时间")
-    private LocalDateTime endRegTime;
+    private String deviceSystem;
+
+    /**
+     * 产品名称(游戏商品名称)
+     */
+    @ApiModelProperty(notes = "产品名称")
+    private String productName;
+
+    /**
+     * 支付方式
+     */
+    @ApiModelProperty(notes = "支付方式名称:wxpaymap;mpay;wxpay...")
+    private String payWay;
+
+    /**
+     * 收款商户号
+     */
+    @ApiModelProperty(notes = "收款商户号")
+    private String merchantNo;
+
+    /**
+     * 支付状态
+     */
+    @ApiModelProperty(notes = "支付状态,1待支付,2 支付成功,-1 已取消")
+    private String status;
+
+    /**
+     * CP通知状态
+     */
+    @ApiModelProperty(notes = "CP通知状态,1为待处理,2为成功,-1为失败")
+    private String cpStatus;
+
+    /**
+     * 是否首充
+     */
+    @ApiModelProperty(notes = "是否首充 0 否 1 是")
+    private String isFirstRecharge;
+
+    /**
+     * 下单时间-开始
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
+    @ApiModelProperty(value = "下单时间-开始")
+    private LocalDate beginDate;
+
+    /**
+     * 下单时间-结束
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
+    @ApiModelProperty(value = "下单时间-结束")
+    private LocalDate endDate;
+
+    /**
+     * 玩家注册时间-开始
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
+    @ApiModelProperty(notes = "玩家注册时间-开始")
+    private LocalDate regTimeStart;
+
+    /**
+     * 玩家注册时间-结束
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
+    @ApiModelProperty(notes = "玩家注册时间-结束")
+    private LocalDate regTimeEnd;
+
+    /**
+     * 支付时间-开始
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
+    @ApiModelProperty(notes = "支付时间-开始")
+    private LocalDate payTimeStart;
+
+    /**
+     * 支付时间-结束
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
+    @ApiModelProperty(notes = "支付时间-结束")
+    private LocalDate payTimeEnd;
+
+    /**
+     * 充值到支付的间隔时间(最小分)
+     */
+    @ApiModelProperty("充值到支付的间隔时间(分)")
+    private Long regPayIntervalTimeMin;
+
+    /**
+     * 充值到支付的间隔时间(最大分)
+     */
+    @ApiModelProperty("充值到支付的间隔时间(分)")
+    private Long regPayIntervalTimeMax;
+
+    /**
+     * SDK来源
+     */
+    @ApiModelProperty("SDK来源")
+    private String sourceSystem;
 
-    @ApiModelProperty(notes = "排序字段")
+    /**
+     * 排序字段
+     */
+    @ApiModelProperty("排序字段")
     private String sortFiled;
 
-    @ApiModelProperty(notes = "排序 ASC/DESC")
+    /**
+     * 排序方式
+     */
+    @ApiModelProperty("排序方式")
     private String sortType;
 }

+ 193 - 0
game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/pojo/dto/AdsOrderDetailTotalDTO.java

@@ -0,0 +1,193 @@
+package com.zanxiang.game.data.serve.pojo.dto;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.time.LocalDate;
+
+@Data
+public class AdsOrderDetailTotalDTO {
+
+    /**
+     * 订单ID
+     */
+    @ApiModelProperty(notes = "订单ID:订单号")
+    private String orderId;
+
+    /**
+     * cp订单号
+     */
+    @ApiModelProperty(notes = "cp订单号")
+    private String cpOrderId;
+
+    /**
+     * 第三方支付订单号
+     */
+    @ApiModelProperty(notes = "第三方支付订单号")
+    private String merchantOrderNo;
+
+    /**
+     * 玩家id
+     */
+    @ApiModelProperty(notes = "玩家id")
+    private String userId;
+
+    /**
+     * 玩家账号
+     */
+    @ApiModelProperty(notes = "玩家账号")
+    private String username;
+
+    /**
+     * 所在服务器名称
+     */
+    @ApiModelProperty(notes = "所在服务器名称")
+    private String serverName;
+
+    /**
+     * 游戏角色
+     */
+    @ApiModelProperty(notes = "游戏角色")
+    private String roleName;
+
+    /**
+     * cpId cp名称
+     */
+    @ApiModelProperty(notes = "cpId --> cp名称")
+    private String cpName;
+
+    /**
+     * 充值游戏id
+     */
+    @ApiModelProperty(notes = "充值游戏id")
+    private String gameId;
+
+    /**
+     * 注册渠道对应的id --> agentId
+     */
+    @ApiModelProperty(notes = "注册渠道对应的id")
+    private String channelId;
+
+    /**
+     * 归因推广账号
+     */
+    @ApiModelProperty(notes = "归因推广账号")
+    private String accountId;
+
+    /**
+     * 归因投放人员
+     */
+    @ApiModelProperty(notes = "归因投放人员")
+    private String pitcherId;
+
+    /**
+     * 操作系统os
+     */
+    @ApiModelProperty(notes = "操作系统")
+    private String deviceSystem;
+
+    /**
+     * 产品名称(游戏商品名称)
+     */
+    @ApiModelProperty(notes = "产品名称")
+    private String productName;
+
+    /**
+     * 支付方式
+     */
+    @ApiModelProperty(notes = "支付方式名称:wxpaymap;mpay;wxpay...")
+    private String payWay;
+
+    /**
+     * 收款商户号
+     */
+    @ApiModelProperty(notes = "收款商户号")
+    private String merchantNo;
+
+    /**
+     * 支付状态
+     */
+    @ApiModelProperty(notes = "支付状态,1待支付,2 支付成功,-1 已取消")
+    private String status;
+
+    /**
+     * CP通知状态
+     */
+    @ApiModelProperty(notes = "CP通知状态,1为待处理,2为成功,-1为失败")
+    private String cpStatus;
+
+    /**
+     * 是否首充
+     */
+    @ApiModelProperty(notes = "是否首充 0 否 1 是")
+    private String isFirstRecharge;
+
+    /**
+     * 下单时间-开始
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
+    @ApiModelProperty(value = "下单时间-开始")
+    private LocalDate beginDate;
+
+    /**
+     * 下单时间-结束
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
+    @ApiModelProperty(value = "下单时间-结束")
+    private LocalDate endDate;
+
+    /**
+     * 玩家注册时间-开始
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
+    @ApiModelProperty(notes = "玩家注册时间-开始")
+    private LocalDate regTimeStart;
+
+    /**
+     * 玩家注册时间-结束
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
+    @ApiModelProperty(notes = "玩家注册时间-结束")
+    private LocalDate regTimeEnd;
+
+    /**
+     * 支付时间-开始
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
+    @ApiModelProperty(notes = "支付时间-开始")
+    private LocalDate payTimeStart;
+
+    /**
+     * 支付时间-结束
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
+    @ApiModelProperty(notes = "支付时间-结束")
+    private LocalDate payTimeEnd;
+
+    /**
+     * 充值到支付的间隔时间(最小分)
+     */
+    @ApiModelProperty("充值到支付的间隔时间(分)")
+    private Long regPayIntervalTimeMin;
+
+    /**
+     * 充值到支付的间隔时间(最大分)
+     */
+    @ApiModelProperty("充值到支付的间隔时间(分)")
+    private Long regPayIntervalTimeMax;
+
+    /**
+     * SDK来源
+     */
+    @ApiModelProperty("SDK来源")
+    private String sourceSystem;
+
+}

+ 23 - 0
game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/pojo/vo/AdsOrderDetailTotalVO.java

@@ -0,0 +1,23 @@
+package com.zanxiang.game.data.serve.pojo.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+@Data
+public class AdsOrderDetailTotalVO {
+
+    /**
+     * 订单金额
+     */
+    @ApiModelProperty(notes = "订单金额")
+    private BigDecimal amount;
+
+    /**
+     * 订单实付金额
+     */
+    @ApiModelProperty(notes = "订单实付金额")
+    private BigDecimal realAmount;
+
+}

+ 4 - 0
game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/service/IAdsOrderDetailService.java

@@ -1,10 +1,14 @@
 package com.zanxiang.game.data.serve.service;
 
 import com.zanxiang.game.data.serve.pojo.dto.AdsOrderDetailListDTO;
+import com.zanxiang.game.data.serve.pojo.dto.AdsOrderDetailTotalDTO;
+import com.zanxiang.game.data.serve.pojo.vo.AdsOrderDetailTotalVO;
 import com.zanxiang.game.data.serve.pojo.vo.AdsOrderDetailVO;
 import com.zanxiang.game.data.serve.utils.Page;
 
 public interface IAdsOrderDetailService {
 
     Page<AdsOrderDetailVO> listOfPage(AdsOrderDetailListDTO dto);
+
+    AdsOrderDetailTotalVO orderTotal(AdsOrderDetailTotalDTO dto);
 }

+ 161 - 45
game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/service/impl/AdsOrderDetailService.java

@@ -2,7 +2,10 @@ package com.zanxiang.game.data.serve.service.impl;
 
 import com.zanxiang.erp.security.util.SecurityUtil;
 import com.zanxiang.game.data.serve.pojo.dto.AdsOrderDetailListDTO;
+import com.zanxiang.game.data.serve.pojo.dto.AdsOrderDetailTotalDTO;
 import com.zanxiang.game.data.serve.pojo.entity.AdsOrderDetail;
+import com.zanxiang.game.data.serve.pojo.enums.OrderByEnum;
+import com.zanxiang.game.data.serve.pojo.vo.AdsOrderDetailTotalVO;
 import com.zanxiang.game.data.serve.pojo.vo.AdsOrderDetailVO;
 import com.zanxiang.game.data.serve.service.IAdsOrderDetailService;
 import com.zanxiang.game.data.serve.utils.Page;
@@ -11,8 +14,10 @@ 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.util.cri.Exps;
+import org.nutz.dao.sql.Criteria;
+import org.nutz.dao.sql.Sql;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
@@ -28,79 +33,190 @@ public class AdsOrderDetailService implements IAdsOrderDetailService {
 
     @Override
     public Page<AdsOrderDetailVO> listOfPage(AdsOrderDetailListDTO dto) {
-        if (StringUtils.isBlank(dto.getZxPitcherId()) && !SecurityUtil.isManager()) {
+        if (StringUtils.isBlank(dto.getPitcherId()) && !SecurityUtil.isManager()) {
             // 只有管理员才能查看全部数据
-            dto.setZxPitcherId(SecurityUtil.getUserId().toString());
+            dto.setPitcherId(SecurityUtil.getUserId().toString());
         }
         Pager pager = dto.toPage();
-        Cnd cnd = Cnd.where("1", "=", "1");
-        if (dto.getBeginOrderTime() != null) {
-            cnd.and(AdsOrderDetail::getOrderCreateTime, ">=", dto.getBeginOrderTime());
+        Criteria cri = Cnd.cri();
+        if (StringUtils.isNotBlank(dto.getSourceSystem())) {
+            cri.where().andEquals("source_system", dto.getSourceSystem());
+        }
+        if (StringUtils.isNotBlank(dto.getOrderId())) {
+            cri.where().andEquals("order_id", dto.getOrderId());
+        }
+        if (StringUtils.isNotBlank(dto.getCpOrderId())) {
+            cri.where().andEquals("cp_order_id", dto.getCpOrderId());
+        }
+        if (StringUtils.isNotBlank(dto.getMerchantOrderNo())) {
+            cri.where().andEquals("merchant_order_no", dto.getMerchantOrderNo());
+        }
+        if (StringUtils.isNotBlank(dto.getUserId())) {
+            cri.where().andEquals("game_user_id", dto.getUserId());
+        }
+        if (StringUtils.isNotBlank(dto.getUsername())) {
+            cri.where().andEquals("username", dto.getUsername());
+        }
+        if (StringUtils.isNotBlank(dto.getServerName())) {
+            cri.where().andEquals("server_name", dto.getServerName());
+        }
+        if (StringUtils.isNotBlank(dto.getGameId())) {
+            cri.where().andEquals("order_game_id", dto.getGameId());
+        }
+        if (StringUtils.isNotBlank(dto.getChannelId())) {
+            cri.where().andEquals("agent_id", dto.getChannelId());
+        }
+        if (StringUtils.isNotBlank(dto.getAccountId())) {
+            cri.where().andEquals("account_id", dto.getAccountId());
+        }
+        if (StringUtils.isNotBlank(dto.getPitcherId())) {
+            cri.where().andEquals("zx_pitcher_id", dto.getPitcherId());
+        }
+        if (StringUtils.isNotBlank(dto.getDeviceSystem())) {
+            cri.where().andEquals("os", dto.getDeviceSystem());
+        }
+        if (StringUtils.isNotBlank(dto.getProductName())) {
+            cri.where().andEquals("product_name", dto.getProductName());
+        }
+        if (StringUtils.isNotBlank(dto.getPayWay())) {
+            cri.where().andEquals("payway", dto.getPayWay());
+        }
+        if (StringUtils.isNotBlank(dto.getMerchantNo())) {
+            cri.where().andEquals("pay_account_id", dto.getMerchantNo());
+        }
+        if (StringUtils.isNotBlank(dto.getStatus())) {
+            cri.where().andEquals("order_status", dto.getStatus());
+        }
+        if (StringUtils.isNotBlank(dto.getCpStatus())) {
+            cri.where().andEquals("cp_status", dto.getCpStatus());
         }
-        if (dto.getEndOrderTime() != null) {
-            cnd.and(AdsOrderDetail::getOrderCreateTime, "<=", dto.getEndOrderTime());
+        if (StringUtils.isNotBlank(dto.getIsFirstRecharge())) {
+            cri.where().andEquals("is_first_recharge", dto.getIsFirstRecharge());
         }
+        if (dto.getBeginDate() != null && dto.getEndDate() != null) {
+            //下单时间,订单创建时间
+            cri.where().andBetween("day", dto.getBeginDate(), dto.getEndDate());
+        }
+        if (dto.getRegTimeStart() != null && dto.getRegTimeEnd() != null) {
+            //玩家注册时间
+            cri.where().andBetween("reg_time", dto.getRegTimeStart(), dto.getRegTimeEnd());
+        }
+        if (dto.getPayTimeStart() != null && dto.getPayTimeEnd() != null) {
+            //支付时间,订单充值时间
+            cri.where().andBetween("pay_time", dto.getPayTimeStart(), dto.getPayTimeEnd());
+        }
+        if (dto.getRegPayIntervalTimeMin() != null) {
+            cri.where().andGTE("TIMESTAMPDIFF(MINUTE, reg_time, pay_time)", dto.getRegPayIntervalTimeMin());
+        }
+        if (dto.getRegPayIntervalTimeMax() != null) {
+            cri.where().andLTE("TIMESTAMPDIFF(MINUTE, reg_time, pay_time)", dto.getRegPayIntervalTimeMax());
+        }
+        //默认排序方式
+        if (StringUtils.isBlank(dto.getSortType())) {
+            dto.setSortType(OrderByEnum.DESC.getOrderType());
+        }
+        if (StringUtils.isBlank(dto.getSortFiled())) {
+            cri.getOrderBy().orderBy("day", dto.getSortType());
+            cri.getOrderBy().orderBy("order_create_time", dto.getSortType());
+        } else {
+            cri.getOrderBy().orderBy(dto.getSortFiled(), dto.getSortType());
+        }
+        List<AdsOrderDetailVO> records = dao.query(AdsOrderDetail.class, cri, pager).stream().map(this::toVO).collect(Collectors.toList());
+        pager.setRecordCount(dao.count(AdsOrderDetail.class, cri));
+        return new Page<>(records, pager);
+    }
+
+    @Override
+    public AdsOrderDetailTotalVO orderTotal(AdsOrderDetailTotalDTO dto) {
+        if (StringUtils.isBlank(dto.getPitcherId()) && !SecurityUtil.isManager()) {
+            // 只有管理员才能查看全部数据
+            dto.setPitcherId(SecurityUtil.getUserId().toString());
+        }
+        Criteria cri = Cnd.cri();
         if (StringUtils.isNotBlank(dto.getSourceSystem())) {
-            cnd.and(AdsOrderDetail::getSourceSystem, "=", dto.getSourceSystem());
+            cri.where().andEquals("source_system", dto.getSourceSystem());
         }
         if (StringUtils.isNotBlank(dto.getOrderId())) {
-            cnd.and(AdsOrderDetail::getOrderId, "=", dto.getOrderId());
+            cri.where().andEquals("order_id", dto.getOrderId());
         }
         if (StringUtils.isNotBlank(dto.getCpOrderId())) {
-            cnd.and(AdsOrderDetail::getCpOrderId, "=", dto.getCpOrderId());
+            cri.where().andEquals("cp_order_id", dto.getCpOrderId());
         }
         if (StringUtils.isNotBlank(dto.getMerchantOrderNo())) {
-            cnd.and(AdsOrderDetail::getMerchantOrderNo, "=", dto.getMerchantOrderNo());
-        }
-        if (StringUtils.isNotBlank(dto.getZxPitcherId())) {
-            cnd.and(AdsOrderDetail::getZxPitcherId, "=", dto.getZxPitcherId());
+            cri.where().andEquals("merchant_order_no", dto.getMerchantOrderNo());
         }
-        if (StringUtils.isNotBlank(dto.getGameUserId())) {
-            cnd.and(AdsOrderDetail::getGameUserId, "=", dto.getGameUserId());
+        if (StringUtils.isNotBlank(dto.getUserId())) {
+            cri.where().andEquals("game_user_id", dto.getUserId());
         }
         if (StringUtils.isNotBlank(dto.getUsername())) {
-            cnd.and(AdsOrderDetail::getUsername, "like", "%" + dto.getUsername() + "%");
-        }
-        if (StringUtils.isNotBlank(dto.getParentId())) {
-            cnd.and(AdsOrderDetail::getParentId, "=", dto.getParentId());
+            cri.where().andEquals("username", dto.getUsername());
         }
-        if (StringUtils.isNotBlank(dto.getOrderGameId())) {
-            cnd.and(AdsOrderDetail::getOrderGameId, "=", dto.getOrderGameId());
+        if (StringUtils.isNotBlank(dto.getServerName())) {
+            cri.where().andEquals("server_name", dto.getServerName());
         }
         if (StringUtils.isNotBlank(dto.getGameId())) {
-            cnd.and(AdsOrderDetail::getGameId, "=", dto.getGameId());
+            cri.where().andEquals("order_game_id", dto.getGameId());
+        }
+        if (StringUtils.isNotBlank(dto.getChannelId())) {
+            cri.where().andEquals("agent_id", dto.getChannelId());
         }
         if (StringUtils.isNotBlank(dto.getAccountId())) {
-            cnd.and(AdsOrderDetail::getAccountId, "=", dto.getAccountId());
+            cri.where().andEquals("account_id", dto.getAccountId());
         }
-        if (StringUtils.isNotBlank(dto.getAgentId())) {
-            cnd.and(AdsOrderDetail::getAgentId, "=", dto.getAgentId());
+        if (StringUtils.isNotBlank(dto.getPitcherId())) {
+            cri.where().andEquals("zx_pitcher_id", dto.getPitcherId());
         }
-        if (StringUtils.isNotBlank(dto.getOs())) {
-            cnd.and(AdsOrderDetail::getOs, "=", dto.getOs());
+        if (StringUtils.isNotBlank(dto.getDeviceSystem())) {
+            cri.where().andEquals("os", dto.getDeviceSystem());
         }
-        if (StringUtils.isNotBlank(dto.getOrderStatus())) {
-            cnd.and(AdsOrderDetail::getOrderStatus, "=", dto.getOrderStatus());
+        if (StringUtils.isNotBlank(dto.getProductName())) {
+            cri.where().andEquals("product_name", dto.getProductName());
         }
-        if (StringUtils.isNotBlank(dto.getPayway())) {
-            cnd.and(AdsOrderDetail::getPayway, "=", dto.getPayway());
+        if (StringUtils.isNotBlank(dto.getPayWay())) {
+            cri.where().andEquals("payway", dto.getPayWay());
         }
-        if (StringUtils.isNotBlank(dto.getRoleId())) {
-            cnd.and(AdsOrderDetail::getRoleId, "=", dto.getRoleId());
+        if (StringUtils.isNotBlank(dto.getMerchantNo())) {
+            cri.where().andEquals("pay_account_id", dto.getMerchantNo());
         }
-        if (StringUtils.isNotBlank(dto.getRoleName())) {
-            cnd.and(AdsOrderDetail::getRoleName, "=", dto.getRoleName());
+        if (StringUtils.isNotBlank(dto.getStatus())) {
+            cri.where().andEquals("order_status", dto.getStatus());
         }
-        if (dto.getBeginRegTime() != null) {
-            cnd.and(AdsOrderDetail::getRegTime, ">=", dto.getBeginRegTime());
+        if (StringUtils.isNotBlank(dto.getCpStatus())) {
+            cri.where().andEquals("cp_status", dto.getCpStatus());
         }
-        if (dto.getEndRegTime() != null) {
-            cnd.and(AdsOrderDetail::getRegTime, "<=", dto.getEndRegTime());
+        if (StringUtils.isNotBlank(dto.getIsFirstRecharge())) {
+            cri.where().andEquals("is_first_recharge", dto.getIsFirstRecharge());
         }
-        cnd.orderBy(dto.getSortFiled(), dto.getSortType());
-        List<AdsOrderDetailVO> records = dao.query(AdsOrderDetail.class, cnd, pager).stream().map(this::toVO).collect(Collectors.toList());
-        pager.setRecordCount(dao.count(AdsOrderDetail.class, cnd));
-        return new Page<>(records, pager);
+        if (dto.getBeginDate() != null && dto.getEndDate() != null) {
+            //下单时间,订单创建时间
+            cri.where().andBetween("day", dto.getBeginDate(), dto.getEndDate());
+        }
+        if (dto.getRegTimeStart() != null && dto.getRegTimeEnd() != null) {
+            //玩家注册时间
+            cri.where().andBetween("reg_time", dto.getRegTimeStart(), dto.getRegTimeEnd());
+        }
+        if (dto.getPayTimeStart() != null && dto.getPayTimeEnd() != null) {
+            //支付时间,订单充值时间
+            cri.where().andBetween("pay_time", dto.getPayTimeStart(), dto.getPayTimeEnd());
+        }
+        if (dto.getRegPayIntervalTimeMin() != null) {
+            cri.where().andGTE("TIMESTAMPDIFF(MINUTE, reg_time, pay_time)", dto.getRegPayIntervalTimeMin());
+        }
+        if (dto.getRegPayIntervalTimeMax() != null) {
+            cri.where().andLTE("TIMESTAMPDIFF(MINUTE, reg_time, pay_time)", dto.getRegPayIntervalTimeMax());
+        }
+        Sql sql = Sqls.create("""
+                SELECT
+                    IFNULL(SUM(amount), 0) as amount,
+                    IFNULL(SUM(real_amount), 0) as real_amount
+                FROM
+                    game_ads.ads_order_detail
+                """ + cri);
+        sql.setCallback(Sqls.callback.entity());
+        sql.setEntity(dao.getEntity(AdsOrderDetailTotalVO.class));
+        dao.execute(sql);
+
+        return sql.getObject(AdsOrderDetailTotalVO.class);
     }
 
     private AdsOrderDetailVO toVO(AdsOrderDetail gameOrder) {

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

@@ -27,7 +27,6 @@ import org.springframework.stereotype.Service;
 import java.beans.PropertyDescriptor;
 import java.math.BigDecimal;
 import java.math.RoundingMode;
-import java.time.LocalDate;
 import java.util.*;
 import java.util.stream.Collectors;
 
@@ -50,11 +49,6 @@ public class PromotionDayServiceImpl implements IAdsPromotionDayService {
      * @return
      */
     public Page<PromotionDayVO> getPromotionDayListData(PromotionDayDTO dto) {
-        //不传递查询条件默认查询当天数据
-        if (dto.getCostBeginDate() == null || dto.getCostEndDate() == null) {
-            dto.setCostBeginDate(LocalDate.now());
-            dto.setCostEndDate(LocalDate.now());
-        }
         //如果没有排序条件给默认值
         if (StringUtils.isBlank(dto.getSortFiled())) {
             dto.setSortFiled("dt");
@@ -139,12 +133,6 @@ public class PromotionDayServiceImpl implements IAdsPromotionDayService {
      */
     @Override
     public Page<PromotionDayVO> getPromotionDayData(PromotionDayDTO dto) {
-
-        //不传递查询条件默认查询当天数据
-        if (dto.getCostBeginDate() == null || dto.getCostEndDate() == null) {
-            dto.setCostBeginDate(LocalDate.now());
-            dto.setCostEndDate(LocalDate.now());
-        }
         //如果没有排序条件给默认值
         if (StringUtils.isBlank(dto.getSortFiled())) {
             dto.setSortFiled("today_cost");
@@ -225,11 +213,6 @@ public class PromotionDayServiceImpl implements IAdsPromotionDayService {
      */
     @Override
     public PromotionDayTotalVO getPromotionDayTotalData(PromotionDayTotalDTO dto) {
-        //不传递查询条件默认查询当天数据
-        if (dto.getCostBeginDate() == null || dto.getCostEndDate() == null) {
-            dto.setCostBeginDate(LocalDate.now());
-            dto.setCostEndDate(LocalDate.now());
-        }
         //创建查询条件
         Criteria cri = Cnd.cri();
         if (dto.getAccountId() != null) {
@@ -411,11 +394,6 @@ public class PromotionDayServiceImpl implements IAdsPromotionDayService {
      * @return
      */
     public Page<TencentPromotionDayVO> getTencentPromotionDayListData(TencentPromotionDayDTO dto) {
-        //不传递查询条件默认查询当天数据
-        if (dto.getCostBeginDate() == null || dto.getCostEndDate() == null) {
-            dto.setCostBeginDate(LocalDate.now());
-            dto.setCostEndDate(LocalDate.now());
-        }
         //如果没有排序条件给默认值
         if (StringUtils.isBlank(dto.getSortFiled())) {
             dto.setSortFiled("dt");
@@ -500,12 +478,6 @@ public class PromotionDayServiceImpl implements IAdsPromotionDayService {
      */
     @Override
     public Page<TencentPromotionDayVO> getTencentPromotionDayData(TencentPromotionDayDTO dto) {
-
-        //不传递查询条件默认查询当天数据
-        if (dto.getCostBeginDate() == null || dto.getCostEndDate() == null) {
-            dto.setCostBeginDate(LocalDate.now());
-            dto.setCostEndDate(LocalDate.now());
-        }
         //如果没有排序条件给默认值
         if (StringUtils.isBlank(dto.getSortFiled())) {
             dto.setSortFiled("today_cost");
@@ -586,11 +558,6 @@ public class PromotionDayServiceImpl implements IAdsPromotionDayService {
      */
     @Override
     public TencentPromotionDayTotalVO getTencentPromotionDayTotalData(TencentPromotionDayTotalDTO dto) {
-        //不传递查询条件默认查询当天数据
-        if (dto.getCostBeginDate() == null || dto.getCostEndDate() == null) {
-            dto.setCostBeginDate(LocalDate.now());
-            dto.setCostEndDate(LocalDate.now());
-        }
         //创建查询条件
         Criteria cri = Cnd.cri();
         if (dto.getAccountId() != null) {