浏览代码

Merge branch 'feature/mall_product' of https://gitee.com/CrazyWorld/ruoyi-vue-pro into feature/mall_product

# Conflicts:
#	yudao-module-mall/yudao-module-statistics-biz/src/main/java/cn/iocoder/yudao/module/statistics/service/member/MemberStatisticsServiceImpl.java
YunaiV 1 年之前
父节点
当前提交
0eb86ca269
共有 11 个文件被更改,包括 63 次插入37 次删除
  1. 13 4
      yudao-framework/yudao-spring-boot-starter-biz-ip/src/main/java/cn/iocoder/yudao/framework/ip/core/utils/AreaUtils.java
  2. 4 0
      yudao-module-mall/yudao-module-statistics-biz/src/main/java/cn/iocoder/yudao/module/statistics/convert/member/MemberStatisticsConvert.java
  3. 5 6
      yudao-module-mall/yudao-module-statistics-biz/src/main/java/cn/iocoder/yudao/module/statistics/dal/mysql/pay/PayWalletStatisticsMapper.java
  4. 0 5
      yudao-module-mall/yudao-module-statistics-biz/src/main/java/cn/iocoder/yudao/module/statistics/dal/mysql/trade/TradeStatisticsMapper.java
  5. 11 13
      yudao-module-mall/yudao-module-statistics-biz/src/main/java/cn/iocoder/yudao/module/statistics/service/member/MemberStatisticsServiceImpl.java
  6. 2 2
      yudao-module-mall/yudao-module-statistics-biz/src/main/java/cn/iocoder/yudao/module/statistics/service/pay/PayWalletStatisticsService.java
  7. 2 2
      yudao-module-mall/yudao-module-statistics-biz/src/main/java/cn/iocoder/yudao/module/statistics/service/pay/PayWalletStatisticsServiceImpl.java
  8. 16 0
      yudao-module-mall/yudao-module-statistics-biz/src/main/java/cn/iocoder/yudao/module/statistics/service/pay/bo/RechargeSummaryRespBO.java
  9. 0 4
      yudao-module-mall/yudao-module-statistics-biz/src/main/resources/mapper/member/MemberStatisticsMapper.xml
  10. 1 1
      yudao-module-mall/yudao-module-statistics-biz/src/main/resources/mapper/pay/PayWalletStatisticsMapper.xml
  11. 9 0
      yudao-module-mall/yudao-module-statistics-biz/src/main/resources/mapper/trade/TradeStatisticsMapper.xml

+ 13 - 4
yudao-framework/yudao-spring-boot-starter-biz-ip/src/main/java/cn/iocoder/yudao/framework/ip/core/utils/AreaUtils.java

@@ -132,25 +132,34 @@ public class AreaUtils {
         return convertList(areas.values(), func, area -> type.getType().equals(area.getType()));
     }
 
-    // TODO @疯狂:注释写下;
+    /**
+     * 根据区域编号、上级区域类型,获取上级区域编号
+     *
+     * @param id   区域编号
+     * @param type 区域类型
+     * @return 上级区域编号
+     */
     public static Integer getParentIdByType(Integer id, @NonNull AreaTypeEnum type) {
-        // TODO @疯狂:这种不要用 while true;因为万一脏数据,可能会死循环;可以转换成 for (int i = 0; i < Byte.MAX; i++) 一般是优先层级;
-        do {
+        for (int i = 0; i < Byte.MAX_VALUE; i++) {
             Area area = AreaUtils.getArea(id);
             if (area == null) {
                 return null;
             }
 
+            // 匹配到
             if (type.getType().equals(area.getType())) {
                 return area.getId();
             }
 
+            // 找到根节点,返回空
             if (area.getParent() == null || area.getParent().getId() == null) {
                 return null;
             }
 
+            // 继续向上查找
             id = area.getParent().getId();
-        } while (true);
+        }
+        return null;
     }
 
 }

+ 4 - 0
yudao-module-mall/yudao-module-statistics-biz/src/main/java/cn/iocoder/yudao/module/statistics/convert/member/MemberStatisticsConvert.java

@@ -5,6 +5,8 @@ import cn.hutool.core.util.ObjUtil;
 import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils;
 import cn.iocoder.yudao.framework.ip.core.Area;
 import cn.iocoder.yudao.module.statistics.controller.admin.member.vo.MemberAreaStatisticsRespVO;
+import cn.iocoder.yudao.module.statistics.controller.admin.member.vo.MemberSummaryRespVO;
+import cn.iocoder.yudao.module.statistics.service.pay.bo.RechargeSummaryRespBO;
 import org.mapstruct.Mapper;
 import org.mapstruct.factory.Mappers;
 
@@ -36,4 +38,6 @@ public interface MemberStatisticsConvert {
         });
     }
 
+    MemberSummaryRespVO convert(RechargeSummaryRespBO rechargeSummary, Integer expensePrice, Integer userCount);
+
 }

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

@@ -1,9 +1,9 @@
 package cn.iocoder.yudao.module.statistics.dal.mysql.pay;
 
 import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
-import cn.iocoder.yudao.module.statistics.controller.admin.member.vo.MemberSummaryRespVO;
-import cn.iocoder.yudao.module.statistics.service.trade.bo.WalletSummaryRespBO;
 import cn.iocoder.yudao.module.statistics.dal.dataobject.trade.TradeStatisticsDO;
+import cn.iocoder.yudao.module.statistics.service.pay.bo.RechargeSummaryRespBO;
+import cn.iocoder.yudao.module.statistics.service.trade.bo.WalletSummaryRespBO;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
 
@@ -29,9 +29,8 @@ public interface PayWalletStatisticsMapper extends BaseMapperX<TradeStatisticsDO
                                                             @Param("endTime") LocalDateTime endTime,
                                                             @Param("bizType") Integer bizType);
 
-    // TODO @疯狂:是不是搞个单独的 BO 呀;
-    MemberSummaryRespVO selectRechargeSummaryGroupByWalletId(@Param("beginTime") LocalDateTime beginTime,
-                                                             @Param("endTime") LocalDateTime endTime,
-                                                             @Param("payStatus") Boolean payStatus);
+    RechargeSummaryRespBO selectRechargeSummaryGroupByWalletId(@Param("beginTime") LocalDateTime beginTime,
+                                                               @Param("endTime") LocalDateTime endTime,
+                                                               @Param("payStatus") Boolean payStatus);
 
 }

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

@@ -6,7 +6,6 @@ import cn.iocoder.yudao.module.statistics.dal.dataobject.trade.TradeStatisticsDO
 import cn.iocoder.yudao.module.statistics.service.trade.bo.TradeSummaryRespBO;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
-import org.apache.ibatis.annotations.Select;
 
 import java.time.LocalDateTime;
 import java.util.List;
@@ -19,10 +18,6 @@ import java.util.List;
 @Mapper
 public interface TradeStatisticsMapper extends BaseMapperX<TradeStatisticsDO> {
 
-    // TODO @疯狂:这个要不要也挪到 xml 里,保持统一?
-    @Select("SELECT IFNULL(SUM(order_create_count), 0) AS count, IFNULL(SUM(order_pay_price), 0) AS summary " +
-            "FROM trade_statistics " +
-            "WHERE time BETWEEN #{beginTime} AND #{endTime} AND deleted = FALSE")
     TradeSummaryRespBO selectOrderCreateCountSumAndOrderPayPriceSumByTimeBetween(@Param("beginTime") LocalDateTime beginTime,
                                                                                  @Param("endTime") LocalDateTime endTime);
 

+ 11 - 13
yudao-module-mall/yudao-module-statistics-biz/src/main/java/cn/iocoder/yudao/module/statistics/service/member/MemberStatisticsServiceImpl.java

@@ -9,6 +9,7 @@ import cn.iocoder.yudao.module.statistics.convert.member.MemberStatisticsConvert
 import cn.iocoder.yudao.module.statistics.dal.mysql.member.MemberStatisticsMapper;
 import cn.iocoder.yudao.module.statistics.service.infra.ApiAccessLogStatisticsService;
 import cn.iocoder.yudao.module.statistics.service.pay.PayWalletStatisticsService;
+import cn.iocoder.yudao.module.statistics.service.pay.bo.RechargeSummaryRespBO;
 import cn.iocoder.yudao.module.statistics.service.trade.TradeOrderStatisticsService;
 import cn.iocoder.yudao.module.statistics.service.trade.TradeStatisticsService;
 import org.springframework.stereotype.Service;
@@ -44,18 +45,6 @@ public class MemberStatisticsServiceImpl implements MemberStatisticsService {
     @Resource
     private ApiAccessLogStatisticsService apiAccessLogStatisticsService;
 
-    @Override
-    public MemberSummaryRespVO getMemberSummary() {
-        MemberSummaryRespVO vo = payWalletStatisticsService.getUserRechargeSummary(null, null);
-        Integer expensePrice = tradeStatisticsService.getExpensePrice(null, null);
-        Integer userCount = memberStatisticsMapper.selectUserCount(null, null);
-        // 拼接数据
-        if (vo == null) {
-            vo = new MemberSummaryRespVO().setRechargeUserCount(0).setRechargePrice(0);
-        }
-        return vo.setUserCount(userCount).setExpensePrice(expensePrice);
-    }
-
     @Override
     public List<MemberAreaStatisticsRespVO> getMemberAreaStatisticsList() {
         // 统计用户
@@ -101,9 +90,18 @@ public class MemberStatisticsServiceImpl implements MemberStatisticsService {
                 .setComparison(new TradeStatisticsComparisonRespVO<>(vo, reference));
     }
 
+    @Override
+    public MemberSummaryRespVO getMemberSummary() {
+        RechargeSummaryRespBO rechargeSummary = payWalletStatisticsService.getUserRechargeSummary(null, null);
+        Integer expensePrice = tradeStatisticsService.getExpensePrice(null, null);
+        Integer userCount = memberStatisticsMapper.selectUserCount(null, null);
+
+        return MemberStatisticsConvert.INSTANCE.convert(rechargeSummary, expensePrice, userCount);
+    }
+
     private MemberAnalyseComparisonRespVO getMemberAnalyseComparisonData(LocalDateTime beginTime, LocalDateTime endTime) {
         Integer rechargeUserCount = Optional.ofNullable(payWalletStatisticsService.getUserRechargeSummary(beginTime, endTime))
-                .map(MemberSummaryRespVO::getRechargeUserCount).orElse(0);
+                .map(RechargeSummaryRespBO::getRechargeUserCount).orElse(0);
         return new MemberAnalyseComparisonRespVO()
                 .setUserCount(memberStatisticsMapper.selectUserCount(beginTime, endTime))
                 .setActiveUserCount(apiAccessLogStatisticsService.getActiveUserCount(beginTime, endTime))

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

@@ -1,6 +1,6 @@
 package cn.iocoder.yudao.module.statistics.service.pay;
 
-import cn.iocoder.yudao.module.statistics.controller.admin.member.vo.MemberSummaryRespVO;
+import cn.iocoder.yudao.module.statistics.service.pay.bo.RechargeSummaryRespBO;
 import cn.iocoder.yudao.module.statistics.service.trade.bo.WalletSummaryRespBO;
 
 import java.time.LocalDateTime;
@@ -28,6 +28,6 @@ public interface PayWalletStatisticsService {
      * @param endTime   截止时间
      * @return 钱包充值统计
      */
-    MemberSummaryRespVO getUserRechargeSummary(LocalDateTime beginTime, LocalDateTime endTime);
+    RechargeSummaryRespBO getUserRechargeSummary(LocalDateTime beginTime, LocalDateTime endTime);
 
 }

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

@@ -2,8 +2,8 @@ package cn.iocoder.yudao.module.statistics.service.pay;
 
 import cn.iocoder.yudao.module.pay.enums.member.PayWalletBizTypeEnum;
 import cn.iocoder.yudao.module.pay.enums.refund.PayRefundStatusEnum;
-import cn.iocoder.yudao.module.statistics.controller.admin.member.vo.MemberSummaryRespVO;
 import cn.iocoder.yudao.module.statistics.dal.mysql.pay.PayWalletStatisticsMapper;
+import cn.iocoder.yudao.module.statistics.service.pay.bo.RechargeSummaryRespBO;
 import cn.iocoder.yudao.module.statistics.service.trade.bo.WalletSummaryRespBO;
 import org.springframework.stereotype.Service;
 import org.springframework.validation.annotation.Validated;
@@ -39,7 +39,7 @@ public class PayWalletStatisticsServiceImpl implements PayWalletStatisticsServic
     }
 
     @Override
-    public MemberSummaryRespVO getUserRechargeSummary(LocalDateTime beginTime, LocalDateTime endTime) {
+    public RechargeSummaryRespBO getUserRechargeSummary(LocalDateTime beginTime, LocalDateTime endTime) {
         return payWalletStatisticsMapper.selectRechargeSummaryGroupByWalletId(beginTime, endTime, true);
     }
 

+ 16 - 0
yudao-module-mall/yudao-module-statistics-biz/src/main/java/cn/iocoder/yudao/module/statistics/service/pay/bo/RechargeSummaryRespBO.java

@@ -0,0 +1,16 @@
+package cn.iocoder.yudao.module.statistics.service.pay.bo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+@Schema(description = "管理后台 - 充值统计 Response VO")
+@Data
+public class RechargeSummaryRespBO {
+
+    @Schema(description = "充值会员数量", requiredMode = Schema.RequiredMode.REQUIRED, example = "221")
+    private Integer rechargeUserCount;
+
+    @Schema(description = "充值金额", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
+    private Integer rechargePrice;
+
+}

+ 0 - 4
yudao-module-mall/yudao-module-statistics-biz/src/main/resources/mapper/member/MemberStatisticsMapper.xml

@@ -8,8 +8,6 @@
         FROM member_user
         WHERE deleted = FALSE
         GROUP BY area_id
-        <!-- TODO @疯狂:order by 是不是交给内存哈 -->
-        ORDER BY userCount DESC
     </select>
 
     <select id="selectSummaryListBySex"
@@ -18,8 +16,6 @@
         FROM member_user
         WHERE deleted = FALSE
         GROUP BY sex
-        <!-- TODO @疯狂:order by 是不是交给内存哈 -->
-        ORDER BY userCount DESC
     </select>
 
     <select id="selectUserCount" resultType="java.lang.Integer">

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

@@ -30,7 +30,7 @@
     </select>
 
     <select id="selectRechargeSummaryGroupByWalletId"
-            resultType="cn.iocoder.yudao.module.statistics.controller.admin.member.vo.MemberSummaryRespVO">
+            resultType="cn.iocoder.yudao.module.statistics.service.pay.bo.RechargeSummaryRespBO">
         SELECT COUNT(1)       AS rechargeUserCount,
                SUM(pay_price) AS rechargePrice
         FROM pay_wallet_recharge

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

@@ -2,6 +2,15 @@
 <!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.trade.TradeStatisticsMapper">
 
+    <select id="selectOrderCreateCountSumAndOrderPayPriceSumByTimeBetween"
+            resultType="cn.iocoder.yudao.module.statistics.service.trade.bo.TradeSummaryRespBO">
+        SELECT IFNULL(SUM(order_create_count), 0) AS count,
+               IFNULL(SUM(order_pay_price), 0) AS summary
+        FROM trade_statistics
+        WHERE time BETWEEN #{beginTime} AND #{endTime}
+          AND deleted = FALSE
+    </select>
+
     <select id="selectByTimeBetween"
             resultType="cn.iocoder.yudao.module.statistics.controller.admin.trade.vo.TradeTrendSummaryRespVO">
         SELECT