Эх сурвалжийг харах

code review:交易统计

YunaiV 1 жил өмнө
parent
commit
970e524088
15 өөрчлөгдсөн 60 нэмэгдсэн , 34 устгасан
  1. 5 0
      yudao-module-mall/yudao-module-statistics-biz/src/main/java/cn/iocoder/yudao/module/statistics/controller/admin/trade/TradeStatisticsController.java
  2. 11 10
      yudao-module-mall/yudao-module-statistics-biz/src/main/java/cn/iocoder/yudao/module/statistics/controller/admin/trade/vo/TradeTrendSummaryRespVO.java
  3. 1 0
      yudao-module-mall/yudao-module-statistics-biz/src/main/java/cn/iocoder/yudao/module/statistics/dal/dataobject/trade/TradeStatisticsDO.java
  4. 1 0
      yudao-module-mall/yudao-module-statistics-biz/src/main/java/cn/iocoder/yudao/module/statistics/dal/mysql/infra/ApiAccessLogStatisticsMapper.java
  5. 3 0
      yudao-module-mall/yudao-module-statistics-biz/src/main/java/cn/iocoder/yudao/module/statistics/dal/mysql/pay/PayWalletStatisticsMapper.java
  6. 1 0
      yudao-module-mall/yudao-module-statistics-biz/src/main/java/cn/iocoder/yudao/module/statistics/dal/mysql/trade/AfterSaleStatisticsMapper.java
  7. 2 0
      yudao-module-mall/yudao-module-statistics-biz/src/main/java/cn/iocoder/yudao/module/statistics/dal/mysql/trade/TradeOrderStatisticsMapper.java
  8. 1 0
      yudao-module-mall/yudao-module-statistics-biz/src/main/java/cn/iocoder/yudao/module/statistics/dal/mysql/trade/TradeStatisticsMapper.java
  9. 2 0
      yudao-module-mall/yudao-module-statistics-biz/src/main/java/cn/iocoder/yudao/module/statistics/service/pay/PayWalletStatisticsService.java
  10. 1 0
      yudao-module-mall/yudao-module-statistics-biz/src/main/java/cn/iocoder/yudao/module/statistics/service/trade/AfterSaleStatisticsService.java
  11. 1 0
      yudao-module-mall/yudao-module-statistics-biz/src/main/java/cn/iocoder/yudao/module/statistics/service/trade/BrokerageStatisticsService.java
  12. 1 0
      yudao-module-mall/yudao-module-statistics-biz/src/main/java/cn/iocoder/yudao/module/statistics/service/trade/TradeStatisticsService.java
  13. 28 24
      yudao-module-mall/yudao-module-statistics-biz/src/main/java/cn/iocoder/yudao/module/statistics/service/trade/TradeStatisticsServiceImpl.java
  14. 1 0
      yudao-module-mall/yudao-module-statistics-biz/src/main/resources/mapper/pay/PayWalletStatisticsMapper.xml
  15. 1 0
      yudao-module-mall/yudao-module-statistics-biz/src/main/resources/mapper/trade/TradeStatisticsMapper.xml

+ 5 - 0
yudao-module-mall/yudao-module-statistics-biz/src/main/java/cn/iocoder/yudao/module/statistics/controller/admin/trade/TradeStatisticsController.java

@@ -36,9 +36,11 @@ public class TradeStatisticsController {
     @Operation(summary = "获得交易统计")
     @PreAuthorize("@ss.hasPermission('statistics:trade:query')")
     public CommonResult<TradeStatisticsComparisonRespVO<TradeSummaryRespVO>> getTradeSummaryComparison() {
+        // TODO @疯狂:这个要不要 tradeStatisticsService 调用里面的多个方法,组合出最终的 TradeSummaryRespVO;
         return success(tradeStatisticsService.getTradeSummaryComparison());
     }
 
+    // TODO @疯狂:【晚点再改和讨论;等首页的接口出来】这个要不还是叫 analyse,对比选中的时间段,和上一个时间段;类似 MemberStatisticsController 的 getMemberAnalyse
     @GetMapping("/trend/summary")
     @Operation(summary = "获得交易状况统计")
     @PreAuthorize("@ss.hasPermission('statistics:trade:query')")
@@ -48,6 +50,8 @@ public class TradeStatisticsController {
                 ArrayUtil.get(reqVO.getTimes(), 1)));
     }
 
+    // TODO 芋艿:已经 review
+    // TODO @疯狂:这个要不直接叫 list;它即使就是把每条统计拿出来
     @GetMapping("/trend/list")
     @Operation(summary = "获得交易状况明细")
     @PreAuthorize("@ss.hasPermission('statistics:trade:query')")
@@ -57,6 +61,7 @@ public class TradeStatisticsController {
                 ArrayUtil.get(reqVO.getTimes(), 1)));
     }
 
+    // TODO @疯狂:这个要不直接叫 export;它即使就是把每条统计导出
     @GetMapping("/trend/export-excel")
     @Operation(summary = "导出获得交易状况明细 Excel")
     @PreAuthorize("@ss.hasPermission('statistics:trade:export')")

+ 11 - 10
yudao-module-mall/yudao-module-statistics-biz/src/main/java/cn/iocoder/yudao/module/statistics/controller/admin/trade/vo/TradeTrendSummaryRespVO.java

@@ -16,25 +16,26 @@ public class TradeTrendSummaryRespVO {
     @JsonFormat(pattern = FORMAT_YEAR_MONTH_DAY)
     private LocalDate date;
 
+    // TODO @疯狂,要不加个 turnoverPrice?
     @Schema(description = "营业额", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
-    private Integer turnover;
+    private Integer turnover; // 营业额 = 商品支付金额 + 充值金额
 
-    @Schema(description = "商品支付金额", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
+    @Schema(description = "订单支付金额", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
     private Integer orderPayPrice;
 
+    @Schema(description = "订单退款金额", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
+    private Integer orderRefundPrice;
+
+    @Schema(description = "支付佣金金额", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
+    private Integer brokerageSettlementPrice;
+
     @Schema(description = "充值金额", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
     private Integer rechargePrice;
 
     @Schema(description = "支出金额", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
-    private Integer expensePrice;
+    private Integer expensePrice; // 余额支付金额 + 支付佣金金额 + 商品退款金额
 
     @Schema(description = "余额支付金额", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
-    private Integer balancePrice;
-
-    @Schema(description = "支付佣金金额", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
-    private Integer brokerageSettlementPrice;
-
-    @Schema(description = "商品退款金额", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
-    private Integer orderRefundPrice;
+    private Integer balancePrice; // TODO @疯狂:这个字段要不改成:walletPayPrice
 
 }

+ 1 - 0
yudao-module-mall/yudao-module-statistics-biz/src/main/java/cn/iocoder/yudao/module/statistics/dal/dataobject/trade/TradeStatisticsDO.java

@@ -48,6 +48,7 @@ public class TradeStatisticsDO extends TenantBaseDO {
      * 总支付金额,单位:分
      */
     private Integer orderPayPrice;
+    // TODO @疯狂:这个字段改成 walletPayPrice,然后挪到 rechargePayCount 前面;
     /**
      * 总支付金额(余额),单位:分
      */

+ 1 - 0
yudao-module-mall/yudao-module-statistics-biz/src/main/java/cn/iocoder/yudao/module/statistics/dal/mysql/infra/ApiAccessLogStatisticsMapper.java

@@ -6,6 +6,7 @@ import org.apache.ibatis.annotations.Param;
 
 import java.time.LocalDateTime;
 
+// TODO @芋艿:api 访问日志,现在会清理,可能要单独有个偏业务的访问表;
 /**
  * API 访问日志的统计 Mapper
  *

+ 3 - 0
yudao-module-mall/yudao-module-statistics-biz/src/main/java/cn/iocoder/yudao/module/statistics/dal/mysql/pay/PayWalletStatisticsMapper.java

@@ -17,14 +17,17 @@ import java.time.LocalDateTime;
 @Mapper
 public interface PayWalletStatisticsMapper extends BaseMapperX<TradeStatisticsDO> {
 
+    // TODO 芋艿:已经 review;
     WalletSummaryRespBO selectRechargeSummaryByPayTimeBetween(@Param("beginTime") LocalDateTime beginTime,
                                                               @Param("endTime") LocalDateTime endTime,
                                                               @Param("payStatus") Boolean payStatus);
 
+    // TODO 芋艿:已经 review;
     WalletSummaryRespBO selectRechargeSummaryByRefundTimeBetween(@Param("beginTime") LocalDateTime beginTime,
                                                                  @Param("endTime") LocalDateTime endTime,
                                                                  @Param("refundStatus") Integer refundStatus);
 
+    // TODO 芋艿:已经 review;
     Integer selectPriceSummaryByBizTypeAndCreateTimeBetween(@Param("beginTime") LocalDateTime beginTime,
                                                             @Param("endTime") LocalDateTime endTime,
                                                             @Param("bizType") Integer bizType);

+ 1 - 0
yudao-module-mall/yudao-module-statistics-biz/src/main/java/cn/iocoder/yudao/module/statistics/dal/mysql/trade/AfterSaleStatisticsMapper.java

@@ -16,6 +16,7 @@ import java.time.LocalDateTime;
 @Mapper
 public interface AfterSaleStatisticsMapper extends BaseMapperX<TradeStatisticsDO> {
 
+    // TODO 芋艿:已 review
     AfterSaleSummaryRespBO selectSummaryByRefundTimeBetween(@Param("beginTime") LocalDateTime beginTime,
                                                             @Param("endTime") LocalDateTime endTime);
 

+ 2 - 0
yudao-module-mall/yudao-module-statistics-biz/src/main/java/cn/iocoder/yudao/module/statistics/dal/mysql/trade/TradeOrderStatisticsMapper.java

@@ -20,9 +20,11 @@ public interface TradeOrderStatisticsMapper extends BaseMapperX<TradeStatisticsD
     // TODO 芋艿:已经 review
     List<MemberAreaStatisticsRespVO> selectSummaryListByAreaId();
 
+    // TODO 芋艿:已经 review
     Integer selectCountByCreateTimeBetween(@Param("beginTime") LocalDateTime beginTime,
                                            @Param("endTime") LocalDateTime endTime);
 
+    // TODO 芋艿:已经 review
     Integer selectCountByPayTimeBetween(@Param("beginTime") LocalDateTime beginTime,
                                         @Param("endTime") LocalDateTime endTime);
 

+ 1 - 0
yudao-module-mall/yudao-module-statistics-biz/src/main/java/cn/iocoder/yudao/module/statistics/dal/mysql/trade/TradeStatisticsMapper.java

@@ -24,6 +24,7 @@ public interface TradeStatisticsMapper extends BaseMapperX<TradeStatisticsDO> {
     TradeTrendSummaryRespVO selectByTimeBetween(@Param("beginTime") LocalDateTime beginTime,
                                                 @Param("endTime") LocalDateTime endTime);
 
+    // TODO @芋艿:已经 review
     List<TradeTrendSummaryRespVO> selectListByTimeBetween(@Param("beginTime") LocalDateTime beginTime,
                                                           @Param("endTime") LocalDateTime endTime);
 

+ 2 - 0
yudao-module-mall/yudao-module-statistics-biz/src/main/java/cn/iocoder/yudao/module/statistics/service/pay/PayWalletStatisticsService.java

@@ -12,6 +12,7 @@ import java.time.LocalDateTime;
  */
 public interface PayWalletStatisticsService {
 
+    // TODO 芋艿:已经 review
     /**
      * 获取钱包统计
      *
@@ -21,6 +22,7 @@ public interface PayWalletStatisticsService {
      */
     WalletSummaryRespBO getWalletSummary(LocalDateTime beginTime, LocalDateTime endTime);
 
+    // TODO 芋艿:已经 review
     /**
      * 获取钱包充值统计
      *

+ 1 - 0
yudao-module-mall/yudao-module-statistics-biz/src/main/java/cn/iocoder/yudao/module/statistics/service/trade/AfterSaleStatisticsService.java

@@ -11,6 +11,7 @@ import java.time.LocalDateTime;
  */
 public interface AfterSaleStatisticsService {
 
+    // TODO 芋艿:已经 review
     /**
      * 获取售后单统计
      *

+ 1 - 0
yudao-module-mall/yudao-module-statistics-biz/src/main/java/cn/iocoder/yudao/module/statistics/service/trade/BrokerageStatisticsService.java

@@ -9,6 +9,7 @@ import java.time.LocalDateTime;
  */
 public interface BrokerageStatisticsService {
 
+    // TODO 芋艿:已经 review
     /**
      * 获取已结算的佣金金额
      *

+ 1 - 0
yudao-module-mall/yudao-module-statistics-biz/src/main/java/cn/iocoder/yudao/module/statistics/service/trade/TradeStatisticsService.java

@@ -45,6 +45,7 @@ public interface TradeStatisticsService {
      */
     List<TradeTrendSummaryRespVO> getTradeStatisticsList(LocalDateTime beginTime, LocalDateTime endTime);
 
+    // TODO 芋艿:已经 review;
     /**
      * 统计昨日交易
      *

+ 28 - 24
yudao-module-mall/yudao-module-statistics-biz/src/main/java/cn/iocoder/yudao/module/statistics/service/trade/TradeStatisticsServiceImpl.java

@@ -57,6 +57,30 @@ public class TradeStatisticsServiceImpl implements TradeStatisticsService {
         return TradeStatisticsConvert.INSTANCE.convert(yesterdayData, beforeYesterdayData, monthData, lastMonthData);
     }
 
+    /**
+     * 统计指定日期的交易数据
+     *
+     * @param days 增加的天数
+     * @return 交易数据
+     */
+    private TradeSummaryRespBO getTradeSummaryByDays(int days) {
+        LocalDateTime date = LocalDateTime.now().plusDays(days);
+        return tradeStatisticsMapper.selectOrderCreateCountSumAndOrderPayPriceSumByTimeBetween(
+                LocalDateTimeUtil.beginOfDay(date), LocalDateTimeUtil.endOfDay(date));
+    }
+
+    /**
+     * 统计指定月份的交易数据
+     *
+     * @param months 增加的月数
+     * @return 交易数据
+     */
+    private TradeSummaryRespBO getTradeSummaryByMonths(int months) {
+        LocalDateTime monthDate = LocalDateTime.now().plusMonths(months);
+        return tradeStatisticsMapper.selectOrderCreateCountSumAndOrderPayPriceSumByTimeBetween(
+                LocalDateTimeUtils.beginOfMonth(monthDate), LocalDateTimeUtils.endOfMonth(monthDate));
+    }
+
     @Override
     public TradeStatisticsComparisonRespVO<TradeTrendSummaryRespVO> getTradeTrendSummaryComparison(LocalDateTime beginTime,
                                                                                                    LocalDateTime endTime) {
@@ -73,6 +97,7 @@ public class TradeStatisticsServiceImpl implements TradeStatisticsService {
         return tradeStatisticsMapper.selectExpensePriceByTimeBetween(beginTime, endTime);
     }
 
+    // TODO @疯狂:是不是直接返回 TradeStatisticsDO;上层在去聚合?
     @Override
     public List<TradeTrendSummaryRespVO> getTradeStatisticsList(LocalDateTime beginTime, LocalDateTime endTime) {
         return tradeStatisticsMapper.selectListByTimeBetween(beginTime, endTime);
@@ -80,6 +105,9 @@ public class TradeStatisticsServiceImpl implements TradeStatisticsService {
 
     @Override
     public String statisticsYesterdayTrade() {
+        // TODO @疯狂:如果已经统计,则跳过;
+        // TODO @疯狂:改成 statisticsTrade,然后传入 days,统计多少天;days 通过 job 传参;方便把历史给统计出来;或者大家有的时候要修复数据(会 fix 业务数据,然后清理统计表),重新统计的时候;
+        // 1. 从各个数据表,统计对应数据
         LocalDateTime yesterday = LocalDateTime.now().minusDays(1);
         LocalDateTime beginTime = LocalDateTimeUtil.beginOfDay(yesterday);
         LocalDateTime endTime = LocalDateTimeUtil.endOfDay(yesterday);
@@ -108,28 +136,4 @@ public class TradeStatisticsServiceImpl implements TradeStatisticsService {
         return stopWatch.prettyPrint();
     }
 
-    /**
-     * 统计指定日期的交易数据
-     *
-     * @param days 增加的天数
-     * @return 交易数据
-     */
-    private TradeSummaryRespBO getTradeSummaryByDays(int days) {
-        LocalDateTime date = LocalDateTime.now().plusDays(days);
-        return tradeStatisticsMapper.selectOrderCreateCountSumAndOrderPayPriceSumByTimeBetween(
-                LocalDateTimeUtil.beginOfDay(date), LocalDateTimeUtil.endOfDay(date));
-    }
-
-    /**
-     * 统计指定月份的交易数据
-     *
-     * @param months 增加的月数
-     * @return 交易数据
-     */
-    private TradeSummaryRespBO getTradeSummaryByMonths(int months) {
-        LocalDateTime monthDate = LocalDateTime.now().plusMonths(months);
-        return tradeStatisticsMapper.selectOrderCreateCountSumAndOrderPayPriceSumByTimeBetween(
-                LocalDateTimeUtils.beginOfMonth(monthDate), LocalDateTimeUtils.endOfMonth(monthDate));
-    }
-
 }

+ 1 - 0
yudao-module-mall/yudao-module-statistics-biz/src/main/resources/mapper/pay/PayWalletStatisticsMapper.xml

@@ -1,6 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="cn.iocoder.yudao.module.statistics.dal.mysql.pay.PayWalletStatisticsMapper">
+
     <select id="selectRechargeSummaryByPayTimeBetween"
             resultType="cn.iocoder.yudao.module.statistics.service.trade.bo.WalletSummaryRespBO">
         SELECT COUNT(1)       AS rechargePayCount,

+ 1 - 0
yudao-module-mall/yudao-module-statistics-biz/src/main/resources/mapper/trade/TradeStatisticsMapper.xml

@@ -43,6 +43,7 @@
         FROM trade_statistics
         WHERE time BETWEEN #{beginTime} AND #{endTime}
           AND deleted = FALSE
+        <!-- TODO @疯狂:已经不用 group by,它就是每天统计一条; -->
         GROUP BY date
     </select>