From 1ac2f2b5c2e906b7760abd7b2d07da129698ec70 Mon Sep 17 00:00:00 2001 From: YunaiV Date: Sat, 14 Oct 2023 01:26:06 +0800 Subject: [PATCH] =?UTF-8?q?code=20review=EF=BC=9A=E4=BC=9A=E5=91=98?= =?UTF-8?q?=E7=BB=9F=E8=AE=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../framework/common/enums/TerminalEnum.java | 3 +- .../framework/ip/core/utils/AreaUtils.java | 9 ++--- .../member/MemberStatisticsController.java | 7 +++- .../vo/MemberAnalyseComparisonRespVO.java | 2 + .../admin/member/vo/MemberAnalyseRespVO.java | 3 +- .../member/vo/MemberAreaStatisticsRespVO.java | 2 + .../member/vo/MemberSexStatisticsRespVO.java | 1 + .../admin/member/vo/MemberSummaryRespVO.java | 7 ++-- .../vo/MemberTerminalStatisticsRespVO.java | 1 + .../vo/TradeStatisticsComparisonRespVO.java | 1 + .../infra/ApiAccessLogStatisticsMapper.java | 2 + .../mysql/member/MemberStatisticsMapper.java | 3 ++ .../mysql/pay/PayWalletStatisticsMapper.java | 1 + .../trade/TradeOrderStatisticsMapper.java | 4 ++ .../infra/ApiAccessLogStatisticsService.java | 4 ++ .../ApiAccessLogStatisticsServiceImpl.java | 1 + .../member/MemberStatisticsService.java | 22 +++++----- .../member/MemberStatisticsServiceImpl.java | 40 +++++++++++-------- .../service/pay/bo/RechargeSummaryRespBO.java | 1 + .../trade/TradeOrderStatisticsService.java | 6 ++- .../service/trade/TradeStatisticsService.java | 2 + .../infra/ApiAccessLogStatisticsMapper.xml | 2 + .../mapper/pay/PayWalletStatisticsMapper.xml | 1 + .../mapper/trade/TradeStatisticsMapper.xml | 2 +- 24 files changed, 86 insertions(+), 41 deletions(-) diff --git a/yudao-framework/yudao-common/src/main/java/cn/iocoder/yudao/framework/common/enums/TerminalEnum.java b/yudao-framework/yudao-common/src/main/java/cn/iocoder/yudao/framework/common/enums/TerminalEnum.java index 91597748d..632675203 100644 --- a/yudao-framework/yudao-common/src/main/java/cn/iocoder/yudao/framework/common/enums/TerminalEnum.java +++ b/yudao-framework/yudao-common/src/main/java/cn/iocoder/yudao/framework/common/enums/TerminalEnum.java @@ -18,8 +18,7 @@ public enum TerminalEnum implements IntArrayValuable { WECHAT_MINI_PROGRAM(10, "微信小程序"), WECHAT_WAP(11, "微信公众号"), H5(20, "H5 网页"), - IOS(31, "苹果 App"), - ANDROID(32, "安卓 App"), + APP(31, "手机 App"), ; public static final int[] ARRAYS = Arrays.stream(values()).mapToInt(TerminalEnum::getTerminal).toArray(); diff --git a/yudao-framework/yudao-spring-boot-starter-biz-ip/src/main/java/cn/iocoder/yudao/framework/ip/core/utils/AreaUtils.java b/yudao-framework/yudao-spring-boot-starter-biz-ip/src/main/java/cn/iocoder/yudao/framework/ip/core/utils/AreaUtils.java index 2fe475c0d..5a7340095 100644 --- a/yudao-framework/yudao-spring-boot-starter-biz-ip/src/main/java/cn/iocoder/yudao/framework/ip/core/utils/AreaUtils.java +++ b/yudao-framework/yudao-spring-boot-starter-biz-ip/src/main/java/cn/iocoder/yudao/framework/ip/core/utils/AreaUtils.java @@ -145,18 +145,15 @@ public class AreaUtils { 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(); } return null; diff --git a/yudao-module-mall/yudao-module-statistics-biz/src/main/java/cn/iocoder/yudao/module/statistics/controller/admin/member/MemberStatisticsController.java b/yudao-module-mall/yudao-module-statistics-biz/src/main/java/cn/iocoder/yudao/module/statistics/controller/admin/member/MemberStatisticsController.java index 3d10f667a..02a844064 100644 --- a/yudao-module-mall/yudao-module-statistics-biz/src/main/java/cn/iocoder/yudao/module/statistics/controller/admin/member/MemberStatisticsController.java +++ b/yudao-module-mall/yudao-module-statistics-biz/src/main/java/cn/iocoder/yudao/module/statistics/controller/admin/member/MemberStatisticsController.java @@ -30,13 +30,15 @@ public class MemberStatisticsController { @Resource private MemberStatisticsService memberStatisticsService; + // TODO 芋艿:已经 review @GetMapping("/summary") - @Operation(summary = "获得会员统计") + @Operation(summary = "获得会员统计(实时统计)") @PreAuthorize("@ss.hasPermission('statistics:member:query')") public CommonResult getMemberSummary() { return success(memberStatisticsService.getMemberSummary()); } + // TODO 芋艿:已经 review @GetMapping("/analyse") @Operation(summary = "获得会员分析数据") @PreAuthorize("@ss.hasPermission('statistics:member:query')") @@ -45,6 +47,7 @@ public class MemberStatisticsController { ArrayUtil.get(reqVO.getTimes(), 0), ArrayUtil.get(reqVO.getTimes(), 1))); } + // TODO 芋艿:已经 review @GetMapping("/get-area-statistics-list") @Operation(summary = "按照省份,获得会员统计列表") @PreAuthorize("@ss.hasPermission('statistics:member:query')") @@ -52,6 +55,7 @@ public class MemberStatisticsController { return success(memberStatisticsService.getMemberAreaStatisticsList()); } + // TODO 芋艿:已经 review @GetMapping("/get-sex-statistics-list") @Operation(summary = "按照性别,获得会员统计列表") @PreAuthorize("@ss.hasPermission('statistics:member:query')") @@ -64,6 +68,7 @@ public class MemberStatisticsController { @PreAuthorize("@ss.hasPermission('statistics:member:query')") public CommonResult> getMemberTerminalStatisticsList() { // TODO 疯狂:这个可以晚点写,因为 user = = 上还没记录 terminal + // TODO @疯狂:在 member_user 上,增加 registerTerminal 字段,基于它来统计哈; List list = convertList(TerminalEnum.values(), t -> new MemberTerminalStatisticsRespVO() .setTerminal(t.getTerminal()).setUserCount(t.getTerminal() * 100)); diff --git a/yudao-module-mall/yudao-module-statistics-biz/src/main/java/cn/iocoder/yudao/module/statistics/controller/admin/member/vo/MemberAnalyseComparisonRespVO.java b/yudao-module-mall/yudao-module-statistics-biz/src/main/java/cn/iocoder/yudao/module/statistics/controller/admin/member/vo/MemberAnalyseComparisonRespVO.java index cf8551d0c..f36930180 100644 --- a/yudao-module-mall/yudao-module-statistics-biz/src/main/java/cn/iocoder/yudao/module/statistics/controller/admin/member/vo/MemberAnalyseComparisonRespVO.java +++ b/yudao-module-mall/yudao-module-statistics-biz/src/main/java/cn/iocoder/yudao/module/statistics/controller/admin/member/vo/MemberAnalyseComparisonRespVO.java @@ -7,9 +7,11 @@ import lombok.Data; @Data public class MemberAnalyseComparisonRespVO { + // TODO @疯狂:这个字段,要不改成注册用户量;registerUserCount; @Schema(description = "会员数量", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024") private Integer userCount; + // TODO @疯狂:这个字段,名字改成 visitUserCount;有访问,就算活跃; @Schema(description = "活跃用户数量", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024") private Integer activeUserCount; diff --git a/yudao-module-mall/yudao-module-statistics-biz/src/main/java/cn/iocoder/yudao/module/statistics/controller/admin/member/vo/MemberAnalyseRespVO.java b/yudao-module-mall/yudao-module-statistics-biz/src/main/java/cn/iocoder/yudao/module/statistics/controller/admin/member/vo/MemberAnalyseRespVO.java index 0f4a3d1ff..df4e3d9ff 100644 --- a/yudao-module-mall/yudao-module-statistics-biz/src/main/java/cn/iocoder/yudao/module/statistics/controller/admin/member/vo/MemberAnalyseRespVO.java +++ b/yudao-module-mall/yudao-module-statistics-biz/src/main/java/cn/iocoder/yudao/module/statistics/controller/admin/member/vo/MemberAnalyseRespVO.java @@ -8,6 +8,7 @@ import lombok.Data; @Data public class MemberAnalyseRespVO { + // TODO @疯狂:这个字段改成 visitUserCount,保持和 userCount 字段统一 @Schema(description = "访客数量", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024") private Integer visitorCount; @@ -17,7 +18,7 @@ public class MemberAnalyseRespVO { @Schema(description = "成交用户数量", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024") private Integer payUserCount; - @Schema(description = "客单价", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024") + @Schema(description = "客单价,单位:分", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024") private Integer atv; @Schema(description = "对照数据", requiredMode = Schema.RequiredMode.REQUIRED) diff --git a/yudao-module-mall/yudao-module-statistics-biz/src/main/java/cn/iocoder/yudao/module/statistics/controller/admin/member/vo/MemberAreaStatisticsRespVO.java b/yudao-module-mall/yudao-module-statistics-biz/src/main/java/cn/iocoder/yudao/module/statistics/controller/admin/member/vo/MemberAreaStatisticsRespVO.java index 1fd09ac9d..cd588aa30 100644 --- a/yudao-module-mall/yudao-module-statistics-biz/src/main/java/cn/iocoder/yudao/module/statistics/controller/admin/member/vo/MemberAreaStatisticsRespVO.java +++ b/yudao-module-mall/yudao-module-statistics-biz/src/main/java/cn/iocoder/yudao/module/statistics/controller/admin/member/vo/MemberAreaStatisticsRespVO.java @@ -15,10 +15,12 @@ public class MemberAreaStatisticsRespVO { @Schema(description = "会员数量", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024") private Integer userCount; + // TODO @疯狂:要不 orderCreateUserCount 和 orderPayUserCount 貌似更统一一些; @Schema(description = "订单创建数量", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024") private Integer orderCreateCount; @Schema(description = "订单支付数量", requiredMode = Schema.RequiredMode.REQUIRED, example = "512") private Integer orderPayCount; + @Schema(description = "订单支付金额,单位:分", requiredMode = Schema.RequiredMode.REQUIRED, example = "622") private Integer orderPayPrice; diff --git a/yudao-module-mall/yudao-module-statistics-biz/src/main/java/cn/iocoder/yudao/module/statistics/controller/admin/member/vo/MemberSexStatisticsRespVO.java b/yudao-module-mall/yudao-module-statistics-biz/src/main/java/cn/iocoder/yudao/module/statistics/controller/admin/member/vo/MemberSexStatisticsRespVO.java index 975f2a871..eaf7ce5f5 100644 --- a/yudao-module-mall/yudao-module-statistics-biz/src/main/java/cn/iocoder/yudao/module/statistics/controller/admin/member/vo/MemberSexStatisticsRespVO.java +++ b/yudao-module-mall/yudao-module-statistics-biz/src/main/java/cn/iocoder/yudao/module/statistics/controller/admin/member/vo/MemberSexStatisticsRespVO.java @@ -10,6 +10,7 @@ public class MemberSexStatisticsRespVO { @Schema(description = "性别", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") private Integer sex; + // TODO @疯狂:要不还是其它字段,我们也补全,这样方便使用的用户,做定制化;就保持和 MemberAreaStatisticsRespVO 一致; @Schema(description = "会员数量", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024") private Integer userCount; diff --git a/yudao-module-mall/yudao-module-statistics-biz/src/main/java/cn/iocoder/yudao/module/statistics/controller/admin/member/vo/MemberSummaryRespVO.java b/yudao-module-mall/yudao-module-statistics-biz/src/main/java/cn/iocoder/yudao/module/statistics/controller/admin/member/vo/MemberSummaryRespVO.java index 1dacd449c..2a55e3897 100644 --- a/yudao-module-mall/yudao-module-statistics-biz/src/main/java/cn/iocoder/yudao/module/statistics/controller/admin/member/vo/MemberSummaryRespVO.java +++ b/yudao-module-mall/yudao-module-statistics-biz/src/main/java/cn/iocoder/yudao/module/statistics/controller/admin/member/vo/MemberSummaryRespVO.java @@ -13,10 +13,11 @@ public class MemberSummaryRespVO { @Schema(description = "充值会员数量", requiredMode = Schema.RequiredMode.REQUIRED, example = "221") private Integer rechargeUserCount; - @Schema(description = "充值金额", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024") + @Schema(description = "充值金额,单位:分", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024") private Integer rechargePrice; - @Schema(description = "支出金额", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024") - private Integer expensePrice; + // TODO @疯狂:要不干脆这个字段改成:orderPayPrice?? + @Schema(description = "支出金额,单位:分", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024") + private Integer expensePrice; // 只计算 mall 交易订单的支付金额,不考虑退款 } diff --git a/yudao-module-mall/yudao-module-statistics-biz/src/main/java/cn/iocoder/yudao/module/statistics/controller/admin/member/vo/MemberTerminalStatisticsRespVO.java b/yudao-module-mall/yudao-module-statistics-biz/src/main/java/cn/iocoder/yudao/module/statistics/controller/admin/member/vo/MemberTerminalStatisticsRespVO.java index e3aeaedc2..3ecf0f8fe 100644 --- a/yudao-module-mall/yudao-module-statistics-biz/src/main/java/cn/iocoder/yudao/module/statistics/controller/admin/member/vo/MemberTerminalStatisticsRespVO.java +++ b/yudao-module-mall/yudao-module-statistics-biz/src/main/java/cn/iocoder/yudao/module/statistics/controller/admin/member/vo/MemberTerminalStatisticsRespVO.java @@ -10,6 +10,7 @@ public class MemberTerminalStatisticsRespVO { @Schema(description = "终端", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") private Integer terminal; + // TODO @疯狂:要不 orderCreateUserCount 和 orderPayUserCount 貌似更统一一些; @Schema(description = "会员数量", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024") private Integer userCount; diff --git a/yudao-module-mall/yudao-module-statistics-biz/src/main/java/cn/iocoder/yudao/module/statistics/controller/admin/trade/vo/TradeStatisticsComparisonRespVO.java b/yudao-module-mall/yudao-module-statistics-biz/src/main/java/cn/iocoder/yudao/module/statistics/controller/admin/trade/vo/TradeStatisticsComparisonRespVO.java index d8bd29dc6..fee5b4c29 100644 --- a/yudao-module-mall/yudao-module-statistics-biz/src/main/java/cn/iocoder/yudao/module/statistics/controller/admin/trade/vo/TradeStatisticsComparisonRespVO.java +++ b/yudao-module-mall/yudao-module-statistics-biz/src/main/java/cn/iocoder/yudao/module/statistics/controller/admin/trade/vo/TradeStatisticsComparisonRespVO.java @@ -5,6 +5,7 @@ import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; +// TODO @疯狂:是不是搞成公用的哈;类似,controller/admin/common,下面直接放它 @Schema(description = "管理后台 - 交易统计对照 Response VO") @Data @NoArgsConstructor diff --git a/yudao-module-mall/yudao-module-statistics-biz/src/main/java/cn/iocoder/yudao/module/statistics/dal/mysql/infra/ApiAccessLogStatisticsMapper.java b/yudao-module-mall/yudao-module-statistics-biz/src/main/java/cn/iocoder/yudao/module/statistics/dal/mysql/infra/ApiAccessLogStatisticsMapper.java index 757b8f544..250e89125 100644 --- a/yudao-module-mall/yudao-module-statistics-biz/src/main/java/cn/iocoder/yudao/module/statistics/dal/mysql/infra/ApiAccessLogStatisticsMapper.java +++ b/yudao-module-mall/yudao-module-statistics-biz/src/main/java/cn/iocoder/yudao/module/statistics/dal/mysql/infra/ApiAccessLogStatisticsMapper.java @@ -14,9 +14,11 @@ import java.time.LocalDateTime; @Mapper public interface ApiAccessLogStatisticsMapper extends BaseMapperX { + // TODO @疯狂:是不是 selectIpCount Integer selectCountByIp(@Param("beginTime") LocalDateTime beginTime, @Param("endTime") LocalDateTime endTime); + // TODO @疯狂:是不是 selectUserCount Integer selectCountByUserId(@Param("beginTime") LocalDateTime beginTime, @Param("endTime") LocalDateTime endTime); diff --git a/yudao-module-mall/yudao-module-statistics-biz/src/main/java/cn/iocoder/yudao/module/statistics/dal/mysql/member/MemberStatisticsMapper.java b/yudao-module-mall/yudao-module-statistics-biz/src/main/java/cn/iocoder/yudao/module/statistics/dal/mysql/member/MemberStatisticsMapper.java index ca6c6d362..f1ac09c4f 100644 --- a/yudao-module-mall/yudao-module-statistics-biz/src/main/java/cn/iocoder/yudao/module/statistics/dal/mysql/member/MemberStatisticsMapper.java +++ b/yudao-module-mall/yudao-module-statistics-biz/src/main/java/cn/iocoder/yudao/module/statistics/dal/mysql/member/MemberStatisticsMapper.java @@ -17,10 +17,13 @@ import java.util.List; @Mapper public interface MemberStatisticsMapper extends BaseMapperX { + // TODO @芋艿:已经 review + // TODO @疯狂:要不还是搞下 bo?虽然可能冗余了点~~ List selectSummaryListByAreaId(); List selectSummaryListBySex(); + // TODO @芋艿:已经 review Integer selectUserCount(@Param("beginTime") LocalDateTime beginTime, @Param("endTime") LocalDateTime endTime); diff --git a/yudao-module-mall/yudao-module-statistics-biz/src/main/java/cn/iocoder/yudao/module/statistics/dal/mysql/pay/PayWalletStatisticsMapper.java b/yudao-module-mall/yudao-module-statistics-biz/src/main/java/cn/iocoder/yudao/module/statistics/dal/mysql/pay/PayWalletStatisticsMapper.java index e83179d1e..32922814b 100644 --- a/yudao-module-mall/yudao-module-statistics-biz/src/main/java/cn/iocoder/yudao/module/statistics/dal/mysql/pay/PayWalletStatisticsMapper.java +++ b/yudao-module-mall/yudao-module-statistics-biz/src/main/java/cn/iocoder/yudao/module/statistics/dal/mysql/pay/PayWalletStatisticsMapper.java @@ -29,6 +29,7 @@ public interface PayWalletStatisticsMapper extends BaseMapperX { + // TODO 芋艿:已经 review List selectSummaryListByAreaId(); Integer selectCountByCreateTimeBetween(@Param("beginTime") LocalDateTime beginTime, @@ -25,12 +26,15 @@ public interface TradeOrderStatisticsMapper extends BaseMapperX getMemberSexStatisticsList(); - /** - * 获取用户分析数据 - * - * @param beginTime 起始时间 - * @param endTime 截止时间 - * @return 用户分析数据 - */ - MemberAnalyseRespVO getMemberAnalyse(LocalDateTime beginTime, LocalDateTime endTime); - } diff --git a/yudao-module-mall/yudao-module-statistics-biz/src/main/java/cn/iocoder/yudao/module/statistics/service/member/MemberStatisticsServiceImpl.java b/yudao-module-mall/yudao-module-statistics-biz/src/main/java/cn/iocoder/yudao/module/statistics/service/member/MemberStatisticsServiceImpl.java index 38625ed74..a11d17aaa 100644 --- a/yudao-module-mall/yudao-module-statistics-biz/src/main/java/cn/iocoder/yudao/module/statistics/service/member/MemberStatisticsServiceImpl.java +++ b/yudao-module-mall/yudao-module-statistics-biz/src/main/java/cn/iocoder/yudao/module/statistics/service/member/MemberStatisticsServiceImpl.java @@ -5,7 +5,6 @@ import cn.iocoder.yudao.framework.ip.core.enums.AreaTypeEnum; import cn.iocoder.yudao.framework.ip.core.utils.AreaUtils; import cn.iocoder.yudao.module.statistics.controller.admin.member.vo.*; import cn.iocoder.yudao.module.statistics.controller.admin.trade.vo.TradeStatisticsComparisonRespVO; -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; @@ -14,6 +13,7 @@ import cn.iocoder.yudao.module.statistics.service.trade.TradeOrderStatisticsServ import cn.iocoder.yudao.module.statistics.service.trade.TradeStatisticsService; import org.springframework.stereotype.Service; import org.springframework.validation.annotation.Validated; +import cn.iocoder.yudao.module.statistics.convert.member.MemberStatisticsConvert; import javax.annotation.Resource; import java.time.Duration; @@ -45,9 +45,20 @@ public class MemberStatisticsServiceImpl implements MemberStatisticsService { @Resource private ApiAccessLogStatisticsService apiAccessLogStatisticsService; + @Override + public MemberSummaryRespVO getMemberSummary() { + RechargeSummaryRespBO rechargeSummary = payWalletStatisticsService.getUserRechargeSummary(null, null); + // TODO @疯狂:1)这里是实时统计,不好走走 TradeStatistics 表;2)因为这个放在商城下,所以只考虑订单数据,即按照 trade_order 的 pay_price 并且已支付来计算; + Integer expensePrice = tradeStatisticsService.getExpensePrice(null, null); + Integer userCount = memberStatisticsMapper.selectUserCount(null, null); + return MemberStatisticsConvert.INSTANCE.convert(rechargeSummary, expensePrice, userCount); + } + @Override public List getMemberAreaStatisticsList() { // 统计用户 + // TODO @疯狂:要处理下,未知省份;就是没填写省份的情况; + // TODO @疯狂:可能得把每个省的用户,都查询出来,然后去 order 那边 in;因为要按照这些人为基础来计算;;用户规模量大可能不太好,但是暂时就先这样搞吧 = = Map userCountMap = convertMap(memberStatisticsMapper.selectSummaryListByAreaId(), vo -> AreaUtils.getParentIdByType(vo.getAreaId(), AreaTypeEnum.PROVINCE), MemberAreaStatisticsRespVO::getUserCount, Integer::sum); @@ -63,22 +74,22 @@ public class MemberStatisticsServiceImpl implements MemberStatisticsService { return MemberStatisticsConvert.INSTANCE.convertList(AreaUtils.getByType(AreaTypeEnum.PROVINCE, area -> area), userCountMap, orderMap); } - @Override - public List getMemberSexStatisticsList() { - return memberStatisticsMapper.selectSummaryListBySex(); - } - + // TODO @疯狂:这个方法,要不拆成:1)controller 调用 getMemberAnalyseComparisonData;2)tradeOrderStatisticsService.getPayUserCount;3)tradeOrderStatisticsService.getOrderPayPrice;4)。。。 + // TODO 就是说:分析交给 controller 去组合; @Override public MemberAnalyseRespVO getMemberAnalyse(LocalDateTime beginTime, LocalDateTime endTime) { // 对照数据 MemberAnalyseComparisonRespVO vo = getMemberAnalyseComparisonData(beginTime, endTime); + // TODO @疯狂:如果时间段这么处理,会不会 beginTime 重叠了。因为是 <= 一个时间;如果数据库插入的是 ,xxxx-yy-zz 00:00:00 的话,它既满足 >= ? 也满足 <= ;(如果不好理解,微信聊) LocalDateTime referenceBeginTime = beginTime.minus(Duration.between(beginTime, endTime)); MemberAnalyseComparisonRespVO reference = getMemberAnalyseComparisonData(referenceBeginTime, beginTime); - Integer payUserCount = tradeOrderStatisticsService.getPayUserCount(beginTime, endTime); // 计算客单价 + // TODO @疯狂:这个可能有点特殊,要按照 create_time 来查询;不然它的漏斗就不统一;因为是访问数量 > 今日下单人 > 今日支付人;是一个统一的维度; + Integer payUserCount = tradeOrderStatisticsService.getPayUserCount(beginTime, endTime); int atv = 0; if (payUserCount != null && payUserCount > 0) { + // TODO @疯狂:类似上面的 payUserCount Integer payPrice = tradeOrderStatisticsService.getOrderPayPrice(beginTime, endTime); atv = NumberUtil.div(payPrice, payUserCount).intValue(); } @@ -90,15 +101,6 @@ 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(RechargeSummaryRespBO::getRechargeUserCount).orElse(0); @@ -108,4 +110,10 @@ public class MemberStatisticsServiceImpl implements MemberStatisticsService { .setRechargeUserCount(rechargeUserCount); } + @Override + public List getMemberSexStatisticsList() { + // TODO @疯狂:需要考虑,用户性别为空,则是“未知” + return memberStatisticsMapper.selectSummaryListBySex(); + } + } diff --git a/yudao-module-mall/yudao-module-statistics-biz/src/main/java/cn/iocoder/yudao/module/statistics/service/pay/bo/RechargeSummaryRespBO.java b/yudao-module-mall/yudao-module-statistics-biz/src/main/java/cn/iocoder/yudao/module/statistics/service/pay/bo/RechargeSummaryRespBO.java index a3625f861..389ac2e4c 100644 --- a/yudao-module-mall/yudao-module-statistics-biz/src/main/java/cn/iocoder/yudao/module/statistics/service/pay/bo/RechargeSummaryRespBO.java +++ b/yudao-module-mall/yudao-module-statistics-biz/src/main/java/cn/iocoder/yudao/module/statistics/service/pay/bo/RechargeSummaryRespBO.java @@ -3,6 +3,7 @@ package cn.iocoder.yudao.module.statistics.service.pay.bo; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; +// TODO @疯狂:BO 不用写 swagger 注解哈,写注释就好啦; @Schema(description = "管理后台 - 充值统计 Response VO") @Data public class RechargeSummaryRespBO { diff --git a/yudao-module-mall/yudao-module-statistics-biz/src/main/java/cn/iocoder/yudao/module/statistics/service/trade/TradeOrderStatisticsService.java b/yudao-module-mall/yudao-module-statistics-biz/src/main/java/cn/iocoder/yudao/module/statistics/service/trade/TradeOrderStatisticsService.java index 9388fe76c..9e1e16aef 100644 --- a/yudao-module-mall/yudao-module-statistics-biz/src/main/java/cn/iocoder/yudao/module/statistics/service/trade/TradeOrderStatisticsService.java +++ b/yudao-module-mall/yudao-module-statistics-biz/src/main/java/cn/iocoder/yudao/module/statistics/service/trade/TradeOrderStatisticsService.java @@ -22,6 +22,7 @@ public interface TradeOrderStatisticsService { */ TradeOrderSummaryRespBO getOrderSummary(LocalDateTime beginTime, LocalDateTime endTime); + // TODO 芋艿:已经 review /** * 获取地区订单统计 * @@ -29,15 +30,17 @@ public interface TradeOrderStatisticsService { */ List getSummaryListByAreaId(); + // TODO 芋艿:已经 review /** * 获取下单用户数量 * * @param beginTime 起始时间 * @param endTime 截止时间 - * @return 支付下单数量 + * @return 下单用户数量 */ Integer getOrderUserCount(LocalDateTime beginTime, LocalDateTime endTime); + // TODO 芋艿:已经 review /** * 获取支付用户数量 * @@ -47,6 +50,7 @@ public interface TradeOrderStatisticsService { */ Integer getPayUserCount(LocalDateTime beginTime, LocalDateTime endTime); + // TODO 芋艿:已经 review /** * 获取支付金额 * diff --git a/yudao-module-mall/yudao-module-statistics-biz/src/main/java/cn/iocoder/yudao/module/statistics/service/trade/TradeStatisticsService.java b/yudao-module-mall/yudao-module-statistics-biz/src/main/java/cn/iocoder/yudao/module/statistics/service/trade/TradeStatisticsService.java index 41b709e77..1663ea27d 100644 --- a/yudao-module-mall/yudao-module-statistics-biz/src/main/java/cn/iocoder/yudao/module/statistics/service/trade/TradeStatisticsService.java +++ b/yudao-module-mall/yudao-module-statistics-biz/src/main/java/cn/iocoder/yudao/module/statistics/service/trade/TradeStatisticsService.java @@ -32,6 +32,8 @@ public interface TradeStatisticsService { /** * 获得交易状况统计 * + * @param beginTime 开始时间 + * @param endTime 结束时间 * @return 统计数据对照 */ Integer getExpensePrice(LocalDateTime beginTime, LocalDateTime endTime); diff --git a/yudao-module-mall/yudao-module-statistics-biz/src/main/resources/mapper/infra/ApiAccessLogStatisticsMapper.xml b/yudao-module-mall/yudao-module-statistics-biz/src/main/resources/mapper/infra/ApiAccessLogStatisticsMapper.xml index 6ff6c1307..13bcdb419 100644 --- a/yudao-module-mall/yudao-module-statistics-biz/src/main/resources/mapper/infra/ApiAccessLogStatisticsMapper.xml +++ b/yudao-module-mall/yudao-module-statistics-biz/src/main/resources/mapper/infra/ApiAccessLogStatisticsMapper.xml @@ -3,6 +3,7 @@ + SELECT COUNT(1) AS rechargeUserCount, SUM(pay_price) AS rechargePrice FROM pay_wallet_recharge diff --git a/yudao-module-mall/yudao-module-statistics-biz/src/main/resources/mapper/trade/TradeStatisticsMapper.xml b/yudao-module-mall/yudao-module-statistics-biz/src/main/resources/mapper/trade/TradeStatisticsMapper.xml index 34920cb00..78f653bbe 100644 --- a/yudao-module-mall/yudao-module-statistics-biz/src/main/resources/mapper/trade/TradeStatisticsMapper.xml +++ b/yudao-module-mall/yudao-module-statistics-biz/src/main/resources/mapper/trade/TradeStatisticsMapper.xml @@ -49,7 +49,7 @@