Commit 704087ce861abd5b940e3ae35891130692cc4866
Merge branch 'feature/mall_product' of https://gitee.com/CrazyWorld/ruoyi-vue-pr…
…o into feature/mall_product # Conflicts: # yudao-module-mall/yudao-module-trade-api/src/main/java/cn/iocoder/yudao/module/trade/api/order/TradeOrderApi.java # yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/api/order/TradeOrderApiImpl.java
Showing
70 changed files
with
1150 additions
and
319 deletions
sql/mysql/statistics.sql
| @@ -28,16 +28,22 @@ CREATE INDEX trade_statistics_time_index | @@ -28,16 +28,22 @@ CREATE INDEX trade_statistics_time_index | ||
| 28 | ON trade_statistics (time); | 28 | ON trade_statistics (time); |
| 29 | 29 | ||
| 30 | -- 菜单 | 30 | -- 菜单 |
| 31 | -INSERT INTO `ruoyi-vue-pro`.system_menu (name, permission, type, sort, parent_id, path, icon, component, component_name) | 31 | +INSERT INTO system_menu (name, permission, type, sort, parent_id, path, icon, component, component_name) |
| 32 | VALUES ('统计管理', '', 1, 4, 0, '/statistics', 'ep:data-line', '', ''); | 32 | VALUES ('统计管理', '', 1, 4, 0, '/statistics', 'ep:data-line', '', ''); |
| 33 | SELECT @parentId := LAST_INSERT_ID(); | 33 | SELECT @parentId := LAST_INSERT_ID(); |
| 34 | -INSERT INTO `ruoyi-vue-pro`.system_menu (name, permission, type, sort, parent_id, path, icon, component, component_name) | ||
| 35 | -VALUES ('交易统计', '', 2, 4, @parentId, 'trade', 'fa-solid:credit-card', 'statistics/trade/index', 'TradeStatistics'); | 34 | +-- 交易统计 |
| 35 | +INSERT INTO system_menu (name, permission, type, sort, parent_id, path, icon, component, component_name) | ||
| 36 | +VALUES ('交易统计', '', 2, 1, @parentId, 'trade', 'fa-solid:credit-card', 'statistics/trade/index', 'TradeStatistics'); | ||
| 36 | SELECT @parentId := LAST_INSERT_ID(); | 37 | SELECT @parentId := LAST_INSERT_ID(); |
| 37 | --- 按钮 | ||
| 38 | INSERT INTO system_menu(name, permission, type, sort, parent_id, path, icon, component, status) | 38 | INSERT INTO system_menu(name, permission, type, sort, parent_id, path, icon, component, status) |
| 39 | VALUES ('交易统计查询', 'statistics:trade:query', 3, 1, @parentId, '', '', '', 0); | 39 | VALUES ('交易统计查询', 'statistics:trade:query', 3, 1, @parentId, '', '', '', 0); |
| 40 | INSERT INTO system_menu(name, permission, type, sort, parent_id, path, icon, component, status) | 40 | INSERT INTO system_menu(name, permission, type, sort, parent_id, path, icon, component, status) |
| 41 | VALUES ('交易统计导出', 'statistics:trade:export', 3, 2, @parentId, '', '', '', 0); | 41 | VALUES ('交易统计导出', 'statistics:trade:export', 3, 2, @parentId, '', '', '', 0); |
| 42 | +-- 会员统计 | ||
| 43 | +INSERT INTO system_menu (name, permission, type, sort, parent_id, path, icon, component, component_name) | ||
| 44 | +VALUES ('会员统计', '', 2, 2, @parentId, 'member', 'ep:avatar', 'statistics/member/index', 'MemberStatistics'); | ||
| 45 | +SELECT @parentId := LAST_INSERT_ID(); | ||
| 46 | +INSERT INTO system_menu(name, permission, type, sort, parent_id, path, icon, component, status) | ||
| 47 | +VALUES ('会员统计查询', 'statistics:member:query', 3, 1, @parentId, '', '', '', 0); | ||
| 42 | 48 | ||
| 43 | 49 |
yudao-framework/yudao-common/src/main/java/cn/iocoder/yudao/framework/common/util/collection/CollectionUtils.java
| @@ -2,6 +2,7 @@ package cn.iocoder.yudao.framework.common.util.collection; | @@ -2,6 +2,7 @@ package cn.iocoder.yudao.framework.common.util.collection; | ||
| 2 | 2 | ||
| 3 | import cn.hutool.core.collection.CollUtil; | 3 | import cn.hutool.core.collection.CollUtil; |
| 4 | import cn.hutool.core.collection.CollectionUtil; | 4 | import cn.hutool.core.collection.CollectionUtil; |
| 5 | +import cn.hutool.core.util.ArrayUtil; | ||
| 5 | import com.google.common.collect.ImmutableMap; | 6 | import com.google.common.collect.ImmutableMap; |
| 6 | 7 | ||
| 7 | import java.util.*; | 8 | import java.util.*; |
| @@ -50,6 +51,13 @@ public class CollectionUtils { | @@ -50,6 +51,13 @@ public class CollectionUtils { | ||
| 50 | return new ArrayList<>(convertMap(from, keyMapper, Function.identity(), cover).values()); | 51 | return new ArrayList<>(convertMap(from, keyMapper, Function.identity(), cover).values()); |
| 51 | } | 52 | } |
| 52 | 53 | ||
| 54 | + public static <T, U> List<U> convertList(T[] from, Function<T, U> func) { | ||
| 55 | + if (ArrayUtil.isEmpty(from)) { | ||
| 56 | + return new ArrayList<>(); | ||
| 57 | + } | ||
| 58 | + return convertList(Arrays.asList(from), func); | ||
| 59 | + } | ||
| 60 | + | ||
| 53 | public static <T, U> List<U> convertList(Collection<T> from, Function<T, U> func) { | 61 | public static <T, U> List<U> convertList(Collection<T> from, Function<T, U> func) { |
| 54 | if (CollUtil.isEmpty(from)) { | 62 | if (CollUtil.isEmpty(from)) { |
| 55 | return new ArrayList<>(); | 63 | return new ArrayList<>(); |
| @@ -169,8 +177,8 @@ public class CollectionUtils { | @@ -169,8 +177,8 @@ public class CollectionUtils { | ||
| 169 | /** | 177 | /** |
| 170 | * 对比老、新两个列表,找出新增、修改、删除的数据 | 178 | * 对比老、新两个列表,找出新增、修改、删除的数据 |
| 171 | * | 179 | * |
| 172 | - * @param oldList 老列表 | ||
| 173 | - * @param newList 新列表 | 180 | + * @param oldList 老列表 |
| 181 | + * @param newList 新列表 | ||
| 174 | * @param sameFunc 对比函数,返回 true 表示相同,返回 false 表示不同 | 182 | * @param sameFunc 对比函数,返回 true 表示相同,返回 false 表示不同 |
| 175 | * 注意,same 是通过每个元素的“标识”,判断它们是不是同一个数据 | 183 | * 注意,same 是通过每个元素的“标识”,判断它们是不是同一个数据 |
| 176 | * @return [新增列表、修改列表、删除列表] | 184 | * @return [新增列表、修改列表、删除列表] |
yudao-framework/yudao-spring-boot-starter-biz-ip/src/main/java/cn/iocoder/yudao/framework/ip/core/utils/AreaUtils.java
| @@ -7,12 +7,16 @@ import cn.hutool.core.text.csv.CsvUtil; | @@ -7,12 +7,16 @@ import cn.hutool.core.text.csv.CsvUtil; | ||
| 7 | import cn.iocoder.yudao.framework.common.util.object.ObjectUtils; | 7 | import cn.iocoder.yudao.framework.common.util.object.ObjectUtils; |
| 8 | import cn.iocoder.yudao.framework.ip.core.Area; | 8 | import cn.iocoder.yudao.framework.ip.core.Area; |
| 9 | import cn.iocoder.yudao.framework.ip.core.enums.AreaTypeEnum; | 9 | import cn.iocoder.yudao.framework.ip.core.enums.AreaTypeEnum; |
| 10 | +import lombok.NonNull; | ||
| 10 | import lombok.extern.slf4j.Slf4j; | 11 | import lombok.extern.slf4j.Slf4j; |
| 11 | 12 | ||
| 12 | import java.util.ArrayList; | 13 | import java.util.ArrayList; |
| 13 | import java.util.HashMap; | 14 | import java.util.HashMap; |
| 14 | import java.util.List; | 15 | import java.util.List; |
| 15 | import java.util.Map; | 16 | import java.util.Map; |
| 17 | +import java.util.function.Function; | ||
| 18 | + | ||
| 19 | +import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertList; | ||
| 16 | 20 | ||
| 17 | /** | 21 | /** |
| 18 | * 区域工具类 | 22 | * 区域工具类 |
| @@ -108,7 +112,7 @@ public class AreaUtils { | @@ -108,7 +112,7 @@ public class AreaUtils { | ||
| 108 | // “递归”父节点 | 112 | // “递归”父节点 |
| 109 | area = area.getParent(); | 113 | area = area.getParent(); |
| 110 | if (area == null | 114 | if (area == null |
| 111 | - || ObjectUtils.equalsAny(area.getId(), Area.ID_GLOBAL, Area.ID_CHINA)) { // 跳过父节点为中国的情况 | 115 | + || ObjectUtils.equalsAny(area.getId(), Area.ID_GLOBAL, Area.ID_CHINA)) { // 跳过父节点为中国的情况 |
| 112 | break; | 116 | break; |
| 113 | } | 117 | } |
| 114 | sb.insert(0, separator); | 118 | sb.insert(0, separator); |
| @@ -116,4 +120,35 @@ public class AreaUtils { | @@ -116,4 +120,35 @@ public class AreaUtils { | ||
| 116 | return sb.toString(); | 120 | return sb.toString(); |
| 117 | } | 121 | } |
| 118 | 122 | ||
| 123 | + /** | ||
| 124 | + * 获取指定类型的区域列表 | ||
| 125 | + * | ||
| 126 | + * @param type 区域类型 | ||
| 127 | + * @param func 转换函数 | ||
| 128 | + * @param <T> 结果类型 | ||
| 129 | + * @return 区域列表 | ||
| 130 | + */ | ||
| 131 | + public static <T> List<T> getByType(AreaTypeEnum type, Function<Area, T> func) { | ||
| 132 | + return convertList(areas.values(), func, area -> type.getType().equals(area.getType())); | ||
| 133 | + } | ||
| 134 | + | ||
| 135 | + public static Integer getParentIdByType(Integer id, @NonNull AreaTypeEnum type) { | ||
| 136 | + do { | ||
| 137 | + Area area = AreaUtils.getArea(id); | ||
| 138 | + if (area == null) { | ||
| 139 | + return null; | ||
| 140 | + } | ||
| 141 | + | ||
| 142 | + if (type.getType().equals(area.getType())) { | ||
| 143 | + return area.getId(); | ||
| 144 | + } | ||
| 145 | + | ||
| 146 | + if (area.getParent() == null || area.getParent().getId() == null) { | ||
| 147 | + return null; | ||
| 148 | + } | ||
| 149 | + | ||
| 150 | + id = area.getParent().getId(); | ||
| 151 | + } while (true); | ||
| 152 | + } | ||
| 153 | + | ||
| 119 | } | 154 | } |
yudao-module-mall/yudao-module-statistics-biz/pom.xml
| @@ -59,6 +59,11 @@ | @@ -59,6 +59,11 @@ | ||
| 59 | <artifactId>yudao-spring-boot-starter-biz-tenant</artifactId> | 59 | <artifactId>yudao-spring-boot-starter-biz-tenant</artifactId> |
| 60 | </dependency> | 60 | </dependency> |
| 61 | 61 | ||
| 62 | + <dependency> | ||
| 63 | + <groupId>cn.iocoder.boot</groupId> | ||
| 64 | + <artifactId>yudao-spring-boot-starter-biz-ip</artifactId> | ||
| 65 | + </dependency> | ||
| 66 | + | ||
| 62 | <!-- Web 相关 --> | 67 | <!-- Web 相关 --> |
| 63 | <dependency> | 68 | <dependency> |
| 64 | <groupId>cn.iocoder.boot</groupId> | 69 | <groupId>cn.iocoder.boot</groupId> |
yudao-module-mall/yudao-module-statistics-biz/src/main/java/cn/iocoder/yudao/module/statistics/controller/admin/member/MemberStatisticsController.java
| 1 | package cn.iocoder.yudao.module.statistics.controller.admin.member; | 1 | package cn.iocoder.yudao.module.statistics.controller.admin.member; |
| 2 | 2 | ||
| 3 | +import cn.hutool.core.util.ArrayUtil; | ||
| 4 | +import cn.iocoder.yudao.framework.common.enums.TerminalEnum; | ||
| 3 | import cn.iocoder.yudao.framework.common.pojo.CommonResult; | 5 | import cn.iocoder.yudao.framework.common.pojo.CommonResult; |
| 4 | -import cn.iocoder.yudao.module.statistics.controller.admin.member.vo.MemberAreaStatisticsRespVO; | ||
| 5 | -import cn.iocoder.yudao.module.statistics.controller.admin.member.vo.MemberSexStatisticsRespVO; | ||
| 6 | -import cn.iocoder.yudao.module.statistics.controller.admin.member.vo.MemberSummaryRespVO; | ||
| 7 | -import cn.iocoder.yudao.module.statistics.controller.admin.member.vo.MemberTerminalStatisticsRespVO; | ||
| 8 | -import cn.iocoder.yudao.module.statistics.controller.admin.trade.vo.TradeStatisticsComparisonRespVO; | 6 | +import cn.iocoder.yudao.module.statistics.controller.admin.member.vo.*; |
| 7 | +import cn.iocoder.yudao.module.statistics.service.member.MemberStatisticsService; | ||
| 9 | import io.swagger.v3.oas.annotations.Operation; | 8 | import io.swagger.v3.oas.annotations.Operation; |
| 10 | import io.swagger.v3.oas.annotations.tags.Tag; | 9 | import io.swagger.v3.oas.annotations.tags.Tag; |
| 11 | import lombok.extern.slf4j.Slf4j; | 10 | import lombok.extern.slf4j.Slf4j; |
| 11 | +import org.springframework.security.access.prepost.PreAuthorize; | ||
| 12 | import org.springframework.validation.annotation.Validated; | 12 | import org.springframework.validation.annotation.Validated; |
| 13 | import org.springframework.web.bind.annotation.GetMapping; | 13 | import org.springframework.web.bind.annotation.GetMapping; |
| 14 | import org.springframework.web.bind.annotation.RequestMapping; | 14 | import org.springframework.web.bind.annotation.RequestMapping; |
| 15 | import org.springframework.web.bind.annotation.RestController; | 15 | import org.springframework.web.bind.annotation.RestController; |
| 16 | 16 | ||
| 17 | +import javax.annotation.Resource; | ||
| 17 | import java.util.List; | 18 | import java.util.List; |
| 18 | 19 | ||
| 20 | +import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; | ||
| 21 | +import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertList; | ||
| 22 | + | ||
| 19 | @Tag(name = "管理后台 - 会员统计") | 23 | @Tag(name = "管理后台 - 会员统计") |
| 20 | @RestController | 24 | @RestController |
| 21 | @RequestMapping("/statistics/member") | 25 | @RequestMapping("/statistics/member") |
| @@ -23,36 +27,47 @@ import java.util.List; | @@ -23,36 +27,47 @@ import java.util.List; | ||
| 23 | @Slf4j | 27 | @Slf4j |
| 24 | public class MemberStatisticsController { | 28 | public class MemberStatisticsController { |
| 25 | 29 | ||
| 26 | - // TODO @疯狂:一个类似 getTradeTrendSummaryComparison 的接口 | ||
| 27 | - // TODO @疯狂:一个类似 getTradeStatisticsList 的接口 | 30 | + @Resource |
| 31 | + private MemberStatisticsService memberStatisticsService; | ||
| 28 | 32 | ||
| 29 | @GetMapping("/summary") | 33 | @GetMapping("/summary") |
| 30 | @Operation(summary = "获得会员统计") | 34 | @Operation(summary = "获得会员统计") |
| 31 | - public CommonResult<TradeStatisticsComparisonRespVO<MemberSummaryRespVO>> getMemberSummary() { | ||
| 32 | - // TODO 疯狂:目前先直接计算; | ||
| 33 | - return null; | 35 | + @PreAuthorize("@ss.hasPermission('statistics:member:query')") |
| 36 | + public CommonResult<MemberSummaryRespVO> getMemberSummary() { | ||
| 37 | + return success(memberStatisticsService.getMemberSummary()); | ||
| 38 | + } | ||
| 39 | + | ||
| 40 | + @GetMapping("/analyse") | ||
| 41 | + @Operation(summary = "获得会员分析数据") | ||
| 42 | + @PreAuthorize("@ss.hasPermission('statistics:member:query')") | ||
| 43 | + public CommonResult<MemberAnalyseRespVO> getMemberAnalyse(MemberAnalyseReqVO reqVO) { | ||
| 44 | + return success(memberStatisticsService.getMemberAnalyse( | ||
| 45 | + ArrayUtil.get(reqVO.getTimes(), 0), ArrayUtil.get(reqVO.getTimes(), 1))); | ||
| 34 | } | 46 | } |
| 35 | 47 | ||
| 36 | @GetMapping("/get-area-statistics-list") | 48 | @GetMapping("/get-area-statistics-list") |
| 37 | @Operation(summary = "按照省份,获得会员统计列表") | 49 | @Operation(summary = "按照省份,获得会员统计列表") |
| 50 | + @PreAuthorize("@ss.hasPermission('statistics:member:query')") | ||
| 38 | public CommonResult<List<MemberAreaStatisticsRespVO>> getMemberAreaStatisticsList() { | 51 | public CommonResult<List<MemberAreaStatisticsRespVO>> getMemberAreaStatisticsList() { |
| 39 | - // TODO 疯狂:目前先直接计算,进行统计;后续再考虑优化 | ||
| 40 | - return null; | 52 | + return success(memberStatisticsService.getMemberAreaStatisticsList()); |
| 41 | } | 53 | } |
| 42 | 54 | ||
| 43 | @GetMapping("/get-sex-statistics-list") | 55 | @GetMapping("/get-sex-statistics-list") |
| 44 | @Operation(summary = "按照性别,获得会员统计列表") | 56 | @Operation(summary = "按照性别,获得会员统计列表") |
| 57 | + @PreAuthorize("@ss.hasPermission('statistics:member:query')") | ||
| 45 | public CommonResult<List<MemberSexStatisticsRespVO>> getMemberSexStatisticsList() { | 58 | public CommonResult<List<MemberSexStatisticsRespVO>> getMemberSexStatisticsList() { |
| 46 | - // TODO 疯狂:目前先直接计算,进行统计;后续再考虑优化 | ||
| 47 | - return null; | 59 | + return success(memberStatisticsService.getMemberSexStatisticsList()); |
| 48 | } | 60 | } |
| 49 | 61 | ||
| 50 | @GetMapping("/get-terminal-statistics-list") | 62 | @GetMapping("/get-terminal-statistics-list") |
| 51 | @Operation(summary = "按照终端,获得会员统计列表") | 63 | @Operation(summary = "按照终端,获得会员统计列表") |
| 64 | + @PreAuthorize("@ss.hasPermission('statistics:member:query')") | ||
| 52 | public CommonResult<List<MemberTerminalStatisticsRespVO>> getMemberTerminalStatisticsList() { | 65 | public CommonResult<List<MemberTerminalStatisticsRespVO>> getMemberTerminalStatisticsList() { |
| 53 | - // TODO 疯狂:目前先直接计算,进行统计;后续再考虑优化 | ||
| 54 | // TODO 疯狂:这个可以晚点写,因为 user = = 上还没记录 terminal | 66 | // TODO 疯狂:这个可以晚点写,因为 user = = 上还没记录 terminal |
| 55 | - return null; | 67 | + List<MemberTerminalStatisticsRespVO> list = convertList(TerminalEnum.values(), |
| 68 | + t -> new MemberTerminalStatisticsRespVO() | ||
| 69 | + .setTerminal(t.getTerminal()).setUserCount(t.getTerminal() * 100)); | ||
| 70 | + return success(list); | ||
| 56 | } | 71 | } |
| 57 | 72 | ||
| 58 | } | 73 | } |
yudao-module-mall/yudao-module-statistics-biz/src/main/java/cn/iocoder/yudao/module/statistics/controller/admin/member/vo/MemberAnalyseComparisonRespVO.java
0 → 100644
| 1 | +package cn.iocoder.yudao.module.statistics.controller.admin.member.vo; | ||
| 2 | + | ||
| 3 | +import io.swagger.v3.oas.annotations.media.Schema; | ||
| 4 | +import lombok.Data; | ||
| 5 | + | ||
| 6 | +@Schema(description = "管理后台 - 会员分析对照数据 Response VO") | ||
| 7 | +@Data | ||
| 8 | +public class MemberAnalyseComparisonRespVO { | ||
| 9 | + | ||
| 10 | + @Schema(description = "会员数量", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024") | ||
| 11 | + private Integer userCount; | ||
| 12 | + | ||
| 13 | + @Schema(description = "活跃用户数量", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024") | ||
| 14 | + private Integer activeUserCount; | ||
| 15 | + | ||
| 16 | + @Schema(description = "充值会员数量", requiredMode = Schema.RequiredMode.REQUIRED, example = "221") | ||
| 17 | + private Integer rechargeUserCount; | ||
| 18 | + | ||
| 19 | +} |
yudao-module-mall/yudao-module-statistics-biz/src/main/java/cn/iocoder/yudao/module/statistics/controller/admin/member/vo/MemberAnalyseReqVO.java
0 → 100644
| 1 | +package cn.iocoder.yudao.module.statistics.controller.admin.member.vo; | ||
| 2 | + | ||
| 3 | +import io.swagger.v3.oas.annotations.media.Schema; | ||
| 4 | +import lombok.Data; | ||
| 5 | +import org.springframework.format.annotation.DateTimeFormat; | ||
| 6 | + | ||
| 7 | +import java.time.LocalDateTime; | ||
| 8 | + | ||
| 9 | +import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; | ||
| 10 | + | ||
| 11 | +@Schema(description = "管理后台 - 会员分析 Request VO") | ||
| 12 | +@Data | ||
| 13 | +public class MemberAnalyseReqVO { | ||
| 14 | + | ||
| 15 | + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) | ||
| 16 | + @Schema(description = "时间范围") | ||
| 17 | + private LocalDateTime[] times; | ||
| 18 | + | ||
| 19 | +} |
yudao-module-mall/yudao-module-statistics-biz/src/main/java/cn/iocoder/yudao/module/statistics/controller/admin/member/vo/MemberAnalyseRespVO.java
0 → 100644
| 1 | +package cn.iocoder.yudao.module.statistics.controller.admin.member.vo; | ||
| 2 | + | ||
| 3 | +import cn.iocoder.yudao.module.statistics.controller.admin.trade.vo.TradeStatisticsComparisonRespVO; | ||
| 4 | +import io.swagger.v3.oas.annotations.media.Schema; | ||
| 5 | +import lombok.Data; | ||
| 6 | + | ||
| 7 | +@Schema(description = "管理后台 - 会员分析 Response VO") | ||
| 8 | +@Data | ||
| 9 | +public class MemberAnalyseRespVO { | ||
| 10 | + | ||
| 11 | + @Schema(description = "访客数量", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024") | ||
| 12 | + private Integer visitorCount; | ||
| 13 | + | ||
| 14 | + @Schema(description = "下单用户数量", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024") | ||
| 15 | + private Integer orderUserCount; | ||
| 16 | + | ||
| 17 | + @Schema(description = "成交用户数量", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024") | ||
| 18 | + private Integer payUserCount; | ||
| 19 | + | ||
| 20 | + @Schema(description = "客单价", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024") | ||
| 21 | + private Integer atv; | ||
| 22 | + | ||
| 23 | + @Schema(description = "对照数据", requiredMode = Schema.RequiredMode.REQUIRED) | ||
| 24 | + private TradeStatisticsComparisonRespVO<MemberAnalyseComparisonRespVO> comparison; | ||
| 25 | + | ||
| 26 | +} |
yudao-module-mall/yudao-module-statistics-biz/src/main/java/cn/iocoder/yudao/module/statistics/controller/admin/member/vo/MemberSexStatisticsRespVO.java
| @@ -13,11 +13,4 @@ public class MemberSexStatisticsRespVO { | @@ -13,11 +13,4 @@ public class MemberSexStatisticsRespVO { | ||
| 13 | @Schema(description = "会员数量", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024") | 13 | @Schema(description = "会员数量", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024") |
| 14 | private Integer userCount; | 14 | private Integer userCount; |
| 15 | 15 | ||
| 16 | - @Schema(description = "订单创建数量", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024") | ||
| 17 | - private Integer orderCreateCount; | ||
| 18 | - @Schema(description = "订单支付数量", requiredMode = Schema.RequiredMode.REQUIRED, example = "512") | ||
| 19 | - private Integer orderPayCount; | ||
| 20 | - @Schema(description = "订单支付金额,单位:分", requiredMode = Schema.RequiredMode.REQUIRED, example = "622") | ||
| 21 | - private Integer orderPayPrice; | ||
| 22 | - | ||
| 23 | } | 16 | } |
yudao-module-mall/yudao-module-statistics-biz/src/main/java/cn/iocoder/yudao/module/statistics/controller/admin/member/vo/MemberSummaryRespVO.java
| @@ -15,6 +15,7 @@ public class MemberSummaryRespVO { | @@ -15,6 +15,7 @@ public class MemberSummaryRespVO { | ||
| 15 | 15 | ||
| 16 | @Schema(description = "充值金额", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024") | 16 | @Schema(description = "充值金额", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024") |
| 17 | private Integer rechargePrice; | 17 | private Integer rechargePrice; |
| 18 | + | ||
| 18 | @Schema(description = "支出金额", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024") | 19 | @Schema(description = "支出金额", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024") |
| 19 | private Integer expensePrice; | 20 | private Integer expensePrice; |
| 20 | 21 |
yudao-module-mall/yudao-module-statistics-biz/src/main/java/cn/iocoder/yudao/module/statistics/controller/admin/member/vo/MemberTerminalStatisticsRespVO.java
| @@ -3,7 +3,7 @@ package cn.iocoder.yudao.module.statistics.controller.admin.member.vo; | @@ -3,7 +3,7 @@ package cn.iocoder.yudao.module.statistics.controller.admin.member.vo; | ||
| 3 | import io.swagger.v3.oas.annotations.media.Schema; | 3 | import io.swagger.v3.oas.annotations.media.Schema; |
| 4 | import lombok.Data; | 4 | import lombok.Data; |
| 5 | 5 | ||
| 6 | -@Schema(description = "管理后台 - 终端性别统计 Response VO") | 6 | +@Schema(description = "管理后台 - 会员终端统计 Response VO") |
| 7 | @Data | 7 | @Data |
| 8 | public class MemberTerminalStatisticsRespVO { | 8 | public class MemberTerminalStatisticsRespVO { |
| 9 | 9 | ||
| @@ -13,11 +13,4 @@ public class MemberTerminalStatisticsRespVO { | @@ -13,11 +13,4 @@ public class MemberTerminalStatisticsRespVO { | ||
| 13 | @Schema(description = "会员数量", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024") | 13 | @Schema(description = "会员数量", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024") |
| 14 | private Integer userCount; | 14 | private Integer userCount; |
| 15 | 15 | ||
| 16 | - @Schema(description = "订单创建数量", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024") | ||
| 17 | - private Integer orderCreateCount; | ||
| 18 | - @Schema(description = "订单支付数量", requiredMode = Schema.RequiredMode.REQUIRED, example = "512") | ||
| 19 | - private Integer orderPayCount; | ||
| 20 | - @Schema(description = "订单支付金额,单位:分", requiredMode = Schema.RequiredMode.REQUIRED, example = "622") | ||
| 21 | - private Integer orderPayPrice; | ||
| 22 | - | ||
| 23 | } | 16 | } |
yudao-module-mall/yudao-module-statistics-biz/src/main/java/cn/iocoder/yudao/module/statistics/convert/member/MemberStatisticsConvert.java
0 → 100644
| 1 | +package cn.iocoder.yudao.module.statistics.convert.member; | ||
| 2 | + | ||
| 3 | +import cn.hutool.core.map.MapUtil; | ||
| 4 | +import cn.hutool.core.util.ObjUtil; | ||
| 5 | +import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils; | ||
| 6 | +import cn.iocoder.yudao.framework.ip.core.Area; | ||
| 7 | +import cn.iocoder.yudao.module.statistics.controller.admin.member.vo.MemberAreaStatisticsRespVO; | ||
| 8 | +import org.mapstruct.Mapper; | ||
| 9 | +import org.mapstruct.factory.Mappers; | ||
| 10 | + | ||
| 11 | +import java.util.List; | ||
| 12 | +import java.util.Map; | ||
| 13 | +import java.util.Optional; | ||
| 14 | + | ||
| 15 | +/** | ||
| 16 | + * 会员统计 Convert | ||
| 17 | + * | ||
| 18 | + * @author owen | ||
| 19 | + */ | ||
| 20 | +@Mapper | ||
| 21 | +public interface MemberStatisticsConvert { | ||
| 22 | + | ||
| 23 | + MemberStatisticsConvert INSTANCE = Mappers.getMapper(MemberStatisticsConvert.class); | ||
| 24 | + | ||
| 25 | + default List<MemberAreaStatisticsRespVO> convertList(List<Area> areaList, | ||
| 26 | + Map<Integer, Integer> userCountMap, | ||
| 27 | + Map<Integer, MemberAreaStatisticsRespVO> orderMap) { | ||
| 28 | + return CollectionUtils.convertList(areaList, area -> { | ||
| 29 | + MemberAreaStatisticsRespVO orderVo = Optional.ofNullable(orderMap.get(area.getId())).orElseGet(MemberAreaStatisticsRespVO::new); | ||
| 30 | + return new MemberAreaStatisticsRespVO() | ||
| 31 | + .setAreaId(area.getId()).setAreaName(area.getName()) | ||
| 32 | + .setUserCount(MapUtil.getInt(userCountMap, area.getId(), 0)) | ||
| 33 | + .setOrderCreateCount(ObjUtil.defaultIfNull(orderVo.getOrderCreateCount(), 0)) | ||
| 34 | + .setOrderPayCount(ObjUtil.defaultIfNull(orderVo.getOrderPayCount(), 0)) | ||
| 35 | + .setOrderPayPrice(ObjUtil.defaultIfNull(orderVo.getOrderPayPrice(), 0)); | ||
| 36 | + }); | ||
| 37 | + } | ||
| 38 | + | ||
| 39 | +} |
yudao-module-mall/yudao-module-statistics-biz/src/main/java/cn/iocoder/yudao/module/statistics/convert/trade/TradeStatisticsConvert.java
| 1 | package cn.iocoder.yudao.module.statistics.convert.trade; | 1 | package cn.iocoder.yudao.module.statistics.convert.trade; |
| 2 | 2 | ||
| 3 | -import cn.iocoder.yudao.module.pay.api.wallet.dto.WalletSummaryRespDTO; | 3 | +import cn.iocoder.yudao.module.statistics.service.trade.bo.WalletSummaryRespBO; |
| 4 | import cn.iocoder.yudao.module.statistics.controller.admin.trade.vo.TradeStatisticsComparisonRespVO; | 4 | import cn.iocoder.yudao.module.statistics.controller.admin.trade.vo.TradeStatisticsComparisonRespVO; |
| 5 | import cn.iocoder.yudao.module.statistics.controller.admin.trade.vo.TradeSummaryRespVO; | 5 | import cn.iocoder.yudao.module.statistics.controller.admin.trade.vo.TradeSummaryRespVO; |
| 6 | import cn.iocoder.yudao.module.statistics.controller.admin.trade.vo.TradeTrendSummaryExcelVO; | 6 | import cn.iocoder.yudao.module.statistics.controller.admin.trade.vo.TradeTrendSummaryExcelVO; |
| 7 | import cn.iocoder.yudao.module.statistics.controller.admin.trade.vo.TradeTrendSummaryRespVO; | 7 | import cn.iocoder.yudao.module.statistics.controller.admin.trade.vo.TradeTrendSummaryRespVO; |
| 8 | import cn.iocoder.yudao.module.statistics.dal.dataobject.trade.TradeStatisticsDO; | 8 | import cn.iocoder.yudao.module.statistics.dal.dataobject.trade.TradeStatisticsDO; |
| 9 | +import cn.iocoder.yudao.module.statistics.service.trade.bo.TradeOrderSummaryRespBO; | ||
| 9 | import cn.iocoder.yudao.module.statistics.service.trade.bo.TradeSummaryRespBO; | 10 | import cn.iocoder.yudao.module.statistics.service.trade.bo.TradeSummaryRespBO; |
| 10 | -import cn.iocoder.yudao.module.trade.api.aftersale.dto.AfterSaleSummaryRespDTO; | ||
| 11 | -import cn.iocoder.yudao.module.trade.api.order.dto.TradeOrderSummaryRespDTO; | 11 | +import cn.iocoder.yudao.module.statistics.service.trade.bo.AfterSaleSummaryRespBO; |
| 12 | import org.mapstruct.Mapper; | 12 | import org.mapstruct.Mapper; |
| 13 | import org.mapstruct.factory.Mappers; | 13 | import org.mapstruct.factory.Mappers; |
| 14 | 14 | ||
| @@ -46,8 +46,8 @@ public interface TradeStatisticsConvert { | @@ -46,8 +46,8 @@ public interface TradeStatisticsConvert { | ||
| 46 | 46 | ||
| 47 | List<TradeTrendSummaryExcelVO> convertList02(List<TradeTrendSummaryRespVO> list); | 47 | List<TradeTrendSummaryExcelVO> convertList02(List<TradeTrendSummaryRespVO> list); |
| 48 | 48 | ||
| 49 | - TradeStatisticsDO convert(LocalDateTime time, TradeOrderSummaryRespDTO orderSummary, | ||
| 50 | - AfterSaleSummaryRespDTO afterSaleSummary, Integer brokerageSettlementPrice, | ||
| 51 | - WalletSummaryRespDTO walletSummary); | 49 | + TradeStatisticsDO convert(LocalDateTime time, TradeOrderSummaryRespBO orderSummary, |
| 50 | + AfterSaleSummaryRespBO afterSaleSummary, Integer brokerageSettlementPrice, | ||
| 51 | + WalletSummaryRespBO walletSummary); | ||
| 52 | 52 | ||
| 53 | } | 53 | } |
yudao-module-mall/yudao-module-statistics-biz/src/main/java/cn/iocoder/yudao/module/statistics/dal/mysql/infra/ApiAccessLogStatisticsMapper.java
0 → 100644
| 1 | +package cn.iocoder.yudao.module.statistics.dal.mysql.infra; | ||
| 2 | + | ||
| 3 | +import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; | ||
| 4 | +import org.apache.ibatis.annotations.Mapper; | ||
| 5 | +import org.apache.ibatis.annotations.Param; | ||
| 6 | + | ||
| 7 | +import java.time.LocalDateTime; | ||
| 8 | + | ||
| 9 | +/** | ||
| 10 | + * API 访问日志统计 Mapper | ||
| 11 | + * | ||
| 12 | + * @author owen | ||
| 13 | + */ | ||
| 14 | +@Mapper | ||
| 15 | +public interface ApiAccessLogStatisticsMapper extends BaseMapperX<Object> { | ||
| 16 | + | ||
| 17 | + Integer selectCountByIp(@Param("beginTime") LocalDateTime beginTime, @Param("endTime") LocalDateTime endTime); | ||
| 18 | + | ||
| 19 | + Integer selectCountByUserId(@Param("beginTime") LocalDateTime beginTime, @Param("endTime") LocalDateTime endTime); | ||
| 20 | + | ||
| 21 | +} |
yudao-module-mall/yudao-module-statistics-biz/src/main/java/cn/iocoder/yudao/module/statistics/dal/mysql/member/MemberStatisticsMapper.java
0 → 100644
| 1 | +package cn.iocoder.yudao.module.statistics.dal.mysql.member; | ||
| 2 | + | ||
| 3 | +import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; | ||
| 4 | +import cn.iocoder.yudao.module.statistics.controller.admin.member.vo.MemberAreaStatisticsRespVO; | ||
| 5 | +import cn.iocoder.yudao.module.statistics.controller.admin.member.vo.MemberSexStatisticsRespVO; | ||
| 6 | +import org.apache.ibatis.annotations.Mapper; | ||
| 7 | +import org.apache.ibatis.annotations.Param; | ||
| 8 | + | ||
| 9 | +import java.time.LocalDateTime; | ||
| 10 | +import java.util.List; | ||
| 11 | + | ||
| 12 | +/** | ||
| 13 | + * 会员统计 Mapper | ||
| 14 | + * | ||
| 15 | + * @author owen | ||
| 16 | + */ | ||
| 17 | +@Mapper | ||
| 18 | +public interface MemberStatisticsMapper extends BaseMapperX<Object> { | ||
| 19 | + | ||
| 20 | + List<MemberAreaStatisticsRespVO> selectSummaryListByAreaId(); | ||
| 21 | + | ||
| 22 | + List<MemberSexStatisticsRespVO> selectSummaryListBySex(); | ||
| 23 | + | ||
| 24 | + Integer selectUserCount(@Param("beginTime") LocalDateTime beginTime, @Param("endTime") LocalDateTime endTime); | ||
| 25 | + | ||
| 26 | +} |
yudao-module-mall/yudao-module-statistics-biz/src/main/java/cn/iocoder/yudao/module/statistics/dal/mysql/pay/PayWalletStatisticsMapper.java
0 → 100644
| 1 | +package cn.iocoder.yudao.module.statistics.dal.mysql.pay; | ||
| 2 | + | ||
| 3 | +import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; | ||
| 4 | +import cn.iocoder.yudao.module.statistics.controller.admin.member.vo.MemberSummaryRespVO; | ||
| 5 | +import cn.iocoder.yudao.module.statistics.service.trade.bo.WalletSummaryRespBO; | ||
| 6 | +import cn.iocoder.yudao.module.statistics.dal.dataobject.trade.TradeStatisticsDO; | ||
| 7 | +import org.apache.ibatis.annotations.Mapper; | ||
| 8 | +import org.apache.ibatis.annotations.Param; | ||
| 9 | + | ||
| 10 | +import java.time.LocalDateTime; | ||
| 11 | + | ||
| 12 | +/** | ||
| 13 | + * 交易统计 Mapper | ||
| 14 | + * | ||
| 15 | + * @author owen | ||
| 16 | + */ | ||
| 17 | +@Mapper | ||
| 18 | +public interface PayWalletStatisticsMapper extends BaseMapperX<TradeStatisticsDO> { | ||
| 19 | + | ||
| 20 | + WalletSummaryRespBO selectRechargeSummaryByPayTimeBetween(@Param("beginTime") LocalDateTime beginTime, | ||
| 21 | + @Param("endTime") LocalDateTime endTime, | ||
| 22 | + @Param("payStatus") Boolean payStatus); | ||
| 23 | + | ||
| 24 | + WalletSummaryRespBO selectRechargeSummaryByRefundTimeBetween(@Param("beginTime") LocalDateTime beginTime, | ||
| 25 | + @Param("endTime") LocalDateTime endTime, | ||
| 26 | + @Param("refundStatus") Integer refundStatus); | ||
| 27 | + | ||
| 28 | + Integer selectPriceSummaryByBizTypeAndCreateTimeBetween(@Param("beginTime") LocalDateTime beginTime, | ||
| 29 | + @Param("endTime") LocalDateTime endTime, | ||
| 30 | + @Param("bizType") Integer bizType); | ||
| 31 | + | ||
| 32 | + MemberSummaryRespVO selectRechargeSummaryGroupByWalletId(@Param("beginTime") LocalDateTime beginTime, | ||
| 33 | + @Param("endTime") LocalDateTime endTime, | ||
| 34 | + @Param("payStatus") Boolean payStatus); | ||
| 35 | + | ||
| 36 | +} |
yudao-module-mall/yudao-module-statistics-biz/src/main/java/cn/iocoder/yudao/module/statistics/dal/mysql/trade/AfterSaleStatisticsMapper.java
0 → 100644
| 1 | +package cn.iocoder.yudao.module.statistics.dal.mysql.trade; | ||
| 2 | + | ||
| 3 | +import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; | ||
| 4 | +import cn.iocoder.yudao.module.statistics.dal.dataobject.trade.TradeStatisticsDO; | ||
| 5 | +import cn.iocoder.yudao.module.statistics.service.trade.bo.AfterSaleSummaryRespBO; | ||
| 6 | +import org.apache.ibatis.annotations.Mapper; | ||
| 7 | +import org.apache.ibatis.annotations.Param; | ||
| 8 | + | ||
| 9 | +import java.time.LocalDateTime; | ||
| 10 | + | ||
| 11 | +/** | ||
| 12 | + * 交易统计 Mapper | ||
| 13 | + * | ||
| 14 | + * @author owen | ||
| 15 | + */ | ||
| 16 | +@Mapper | ||
| 17 | +public interface AfterSaleStatisticsMapper extends BaseMapperX<TradeStatisticsDO> { | ||
| 18 | + | ||
| 19 | + AfterSaleSummaryRespBO selectSummaryByRefundTimeBetween(@Param("beginTime") LocalDateTime beginTime, | ||
| 20 | + @Param("endTime") LocalDateTime endTime); | ||
| 21 | + | ||
| 22 | +} |
yudao-module-mall/yudao-module-statistics-biz/src/main/java/cn/iocoder/yudao/module/statistics/dal/mysql/trade/BrokerageStatisticsMapper.java
0 → 100644
| 1 | +package cn.iocoder.yudao.module.statistics.dal.mysql.trade; | ||
| 2 | + | ||
| 3 | +import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; | ||
| 4 | +import cn.iocoder.yudao.module.statistics.dal.dataobject.trade.TradeStatisticsDO; | ||
| 5 | +import org.apache.ibatis.annotations.Mapper; | ||
| 6 | +import org.apache.ibatis.annotations.Param; | ||
| 7 | + | ||
| 8 | +import java.time.LocalDateTime; | ||
| 9 | + | ||
| 10 | +/** | ||
| 11 | + * 交易统计 Mapper | ||
| 12 | + * | ||
| 13 | + * @author owen | ||
| 14 | + */ | ||
| 15 | +@Mapper | ||
| 16 | +public interface BrokerageStatisticsMapper extends BaseMapperX<TradeStatisticsDO> { | ||
| 17 | + | ||
| 18 | + Integer selectSummaryPriceByStatusAndUnfreezeTimeBetween(@Param("bizType") Integer bizType, | ||
| 19 | + @Param("status") Integer status, | ||
| 20 | + @Param("beginTime") LocalDateTime beginTime, | ||
| 21 | + @Param("endTime") LocalDateTime endTime); | ||
| 22 | + | ||
| 23 | +} |
yudao-module-mall/yudao-module-statistics-biz/src/main/java/cn/iocoder/yudao/module/statistics/dal/mysql/trade/TradeOrderStatisticsMapper.java
0 → 100644
| 1 | +package cn.iocoder.yudao.module.statistics.dal.mysql.trade; | ||
| 2 | + | ||
| 3 | +import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; | ||
| 4 | +import cn.iocoder.yudao.module.statistics.controller.admin.member.vo.MemberAreaStatisticsRespVO; | ||
| 5 | +import cn.iocoder.yudao.module.statistics.dal.dataobject.trade.TradeStatisticsDO; | ||
| 6 | +import org.apache.ibatis.annotations.Mapper; | ||
| 7 | +import org.apache.ibatis.annotations.Param; | ||
| 8 | + | ||
| 9 | +import java.time.LocalDateTime; | ||
| 10 | +import java.util.List; | ||
| 11 | + | ||
| 12 | +/** | ||
| 13 | + * 交易统计 Mapper | ||
| 14 | + * | ||
| 15 | + * @author owen | ||
| 16 | + */ | ||
| 17 | +@Mapper | ||
| 18 | +public interface TradeOrderStatisticsMapper extends BaseMapperX<TradeStatisticsDO> { | ||
| 19 | + | ||
| 20 | + List<MemberAreaStatisticsRespVO> selectSummaryListByAreaId(); | ||
| 21 | + | ||
| 22 | + Integer selectCountByCreateTimeBetween(@Param("beginTime") LocalDateTime beginTime, | ||
| 23 | + @Param("endTime") LocalDateTime endTime); | ||
| 24 | + | ||
| 25 | + Integer selectCountByPayTimeBetween(@Param("beginTime") LocalDateTime beginTime, | ||
| 26 | + @Param("endTime") LocalDateTime endTime); | ||
| 27 | + | ||
| 28 | + Integer selectSummaryPriceByPayTimeBetween(@Param("beginTime") LocalDateTime beginTime, | ||
| 29 | + @Param("endTime") LocalDateTime endTime); | ||
| 30 | + | ||
| 31 | + Integer selectUserCountByCreateTimeBetween(@Param("beginTime") LocalDateTime beginTime, | ||
| 32 | + @Param("endTime") LocalDateTime endTime); | ||
| 33 | + | ||
| 34 | + Integer selectUserCountByPayTimeBetween(@Param("beginTime") LocalDateTime beginTime, | ||
| 35 | + @Param("endTime") LocalDateTime endTime); | ||
| 36 | + | ||
| 37 | +} |
yudao-module-mall/yudao-module-statistics-biz/src/main/java/cn/iocoder/yudao/module/statistics/dal/mysql/trade/TradeStatisticsMapper.java
| @@ -30,4 +30,7 @@ public interface TradeStatisticsMapper extends BaseMapperX<TradeStatisticsDO> { | @@ -30,4 +30,7 @@ public interface TradeStatisticsMapper extends BaseMapperX<TradeStatisticsDO> { | ||
| 30 | 30 | ||
| 31 | List<TradeTrendSummaryRespVO> selectListByTimeBetween(@Param("beginTime") LocalDateTime beginTime, | 31 | List<TradeTrendSummaryRespVO> selectListByTimeBetween(@Param("beginTime") LocalDateTime beginTime, |
| 32 | @Param("endTime") LocalDateTime endTime); | 32 | @Param("endTime") LocalDateTime endTime); |
| 33 | + | ||
| 34 | + Integer selectExpensePriceByTimeBetween(@Param("beginTime") LocalDateTime beginTime, | ||
| 35 | + @Param("endTime") LocalDateTime endTime); | ||
| 33 | } | 36 | } |
yudao-module-mall/yudao-module-statistics-biz/src/main/java/cn/iocoder/yudao/module/statistics/service/infra/ApiAccessLogStatisticsService.java
0 → 100644
| 1 | +package cn.iocoder.yudao.module.statistics.service.infra; | ||
| 2 | + | ||
| 3 | +import java.time.LocalDateTime; | ||
| 4 | + | ||
| 5 | +/** | ||
| 6 | + * API 访问日志统计 Service 接口 | ||
| 7 | + * | ||
| 8 | + * @author owen | ||
| 9 | + */ | ||
| 10 | +public interface ApiAccessLogStatisticsService { | ||
| 11 | + | ||
| 12 | + /** | ||
| 13 | + * 获取活跃用户数量 | ||
| 14 | + * | ||
| 15 | + * @param beginTime 起始时间 | ||
| 16 | + * @param endTime 截止时间 | ||
| 17 | + * @return 活跃用户数量 | ||
| 18 | + */ | ||
| 19 | + Integer getActiveUserCount(LocalDateTime beginTime, LocalDateTime endTime); | ||
| 20 | + | ||
| 21 | + /** | ||
| 22 | + * 获取访问用户数量 | ||
| 23 | + * | ||
| 24 | + * @param beginTime 起始时间 | ||
| 25 | + * @param endTime 截止时间 | ||
| 26 | + * @return 访问用户数量 | ||
| 27 | + */ | ||
| 28 | + Integer getVisitorUserCount(LocalDateTime beginTime, LocalDateTime endTime); | ||
| 29 | + | ||
| 30 | +} |
yudao-module-mall/yudao-module-statistics-biz/src/main/java/cn/iocoder/yudao/module/statistics/service/infra/ApiAccessLogStatisticsServiceImpl.java
0 → 100644
| 1 | +package cn.iocoder.yudao.module.statistics.service.infra; | ||
| 2 | + | ||
| 3 | +import cn.iocoder.yudao.module.statistics.dal.mysql.infra.ApiAccessLogStatisticsMapper; | ||
| 4 | +import org.springframework.stereotype.Service; | ||
| 5 | +import org.springframework.validation.annotation.Validated; | ||
| 6 | + | ||
| 7 | +import javax.annotation.Resource; | ||
| 8 | +import java.time.LocalDateTime; | ||
| 9 | + | ||
| 10 | +/** | ||
| 11 | + * API 访问日志统计 Service 实现类 | ||
| 12 | + * | ||
| 13 | + * @author owen | ||
| 14 | + */ | ||
| 15 | +@Service | ||
| 16 | +@Validated | ||
| 17 | +public class ApiAccessLogStatisticsServiceImpl implements ApiAccessLogStatisticsService { | ||
| 18 | + | ||
| 19 | + @Resource | ||
| 20 | + private ApiAccessLogStatisticsMapper apiAccessLogStatisticsMapper; | ||
| 21 | + | ||
| 22 | + @Override | ||
| 23 | + public Integer getActiveUserCount(LocalDateTime beginTime, LocalDateTime endTime) { | ||
| 24 | + return apiAccessLogStatisticsMapper.selectCountByUserId(beginTime, endTime); | ||
| 25 | + } | ||
| 26 | + | ||
| 27 | + @Override | ||
| 28 | + public Integer getVisitorUserCount(LocalDateTime beginTime, LocalDateTime endTime) { | ||
| 29 | + return apiAccessLogStatisticsMapper.selectCountByIp(beginTime, endTime); | ||
| 30 | + } | ||
| 31 | +} |
yudao-module-mall/yudao-module-statistics-biz/src/main/java/cn/iocoder/yudao/module/statistics/service/member/MemberStatisticsService.java
0 → 100644
| 1 | +package cn.iocoder.yudao.module.statistics.service.member; | ||
| 2 | + | ||
| 3 | +import cn.iocoder.yudao.module.statistics.controller.admin.member.vo.MemberAnalyseRespVO; | ||
| 4 | +import cn.iocoder.yudao.module.statistics.controller.admin.member.vo.MemberAreaStatisticsRespVO; | ||
| 5 | +import cn.iocoder.yudao.module.statistics.controller.admin.member.vo.MemberSexStatisticsRespVO; | ||
| 6 | +import cn.iocoder.yudao.module.statistics.controller.admin.member.vo.MemberSummaryRespVO; | ||
| 7 | + | ||
| 8 | +import java.time.LocalDateTime; | ||
| 9 | +import java.util.List; | ||
| 10 | + | ||
| 11 | +/** | ||
| 12 | + * 会员统计 Service 接口 | ||
| 13 | + * | ||
| 14 | + * @author owen | ||
| 15 | + */ | ||
| 16 | +public interface MemberStatisticsService { | ||
| 17 | + | ||
| 18 | + /** | ||
| 19 | + * 按照省份,获得会员统计列表 | ||
| 20 | + * | ||
| 21 | + * @return 会员统计列表 | ||
| 22 | + */ | ||
| 23 | + List<MemberAreaStatisticsRespVO> getMemberAreaStatisticsList(); | ||
| 24 | + | ||
| 25 | + /** | ||
| 26 | + * 按照性别,获得会员统计列表 | ||
| 27 | + * | ||
| 28 | + * @return 会员统计列表 | ||
| 29 | + */ | ||
| 30 | + List<MemberSexStatisticsRespVO> getMemberSexStatisticsList(); | ||
| 31 | + | ||
| 32 | + /** | ||
| 33 | + * 获取用户分析数据 | ||
| 34 | + * | ||
| 35 | + * @param beginTime 起始时间 | ||
| 36 | + * @param endTime 截止时间 | ||
| 37 | + * @return 用户分析数据 | ||
| 38 | + */ | ||
| 39 | + MemberAnalyseRespVO getMemberAnalyse(LocalDateTime beginTime, LocalDateTime endTime); | ||
| 40 | + | ||
| 41 | + /** | ||
| 42 | + * 获取会员统计 | ||
| 43 | + * | ||
| 44 | + * @return 会员统计 | ||
| 45 | + */ | ||
| 46 | + MemberSummaryRespVO getMemberSummary(); | ||
| 47 | + | ||
| 48 | +} |
yudao-module-mall/yudao-module-statistics-biz/src/main/java/cn/iocoder/yudao/module/statistics/service/member/MemberStatisticsServiceImpl.java
0 → 100644
| 1 | +package cn.iocoder.yudao.module.statistics.service.member; | ||
| 2 | + | ||
| 3 | +import cn.hutool.core.util.NumberUtil; | ||
| 4 | +import cn.iocoder.yudao.framework.ip.core.enums.AreaTypeEnum; | ||
| 5 | +import cn.iocoder.yudao.framework.ip.core.utils.AreaUtils; | ||
| 6 | +import cn.iocoder.yudao.module.statistics.controller.admin.member.vo.*; | ||
| 7 | +import cn.iocoder.yudao.module.statistics.controller.admin.trade.vo.TradeStatisticsComparisonRespVO; | ||
| 8 | +import cn.iocoder.yudao.module.statistics.convert.member.MemberStatisticsConvert; | ||
| 9 | +import cn.iocoder.yudao.module.statistics.dal.mysql.member.MemberStatisticsMapper; | ||
| 10 | +import cn.iocoder.yudao.module.statistics.service.infra.ApiAccessLogStatisticsService; | ||
| 11 | +import cn.iocoder.yudao.module.statistics.service.pay.PayWalletStatisticsService; | ||
| 12 | +import cn.iocoder.yudao.module.statistics.service.trade.TradeOrderStatisticsService; | ||
| 13 | +import cn.iocoder.yudao.module.statistics.service.trade.TradeStatisticsService; | ||
| 14 | +import org.springframework.stereotype.Service; | ||
| 15 | +import org.springframework.validation.annotation.Validated; | ||
| 16 | + | ||
| 17 | +import javax.annotation.Resource; | ||
| 18 | +import java.time.Duration; | ||
| 19 | +import java.time.LocalDateTime; | ||
| 20 | +import java.util.List; | ||
| 21 | +import java.util.Map; | ||
| 22 | +import java.util.Optional; | ||
| 23 | + | ||
| 24 | +import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertMap; | ||
| 25 | + | ||
| 26 | +/** | ||
| 27 | + * 会员统计 Service 实现类 | ||
| 28 | + * | ||
| 29 | + * @author owen | ||
| 30 | + */ | ||
| 31 | +@Service | ||
| 32 | +@Validated | ||
| 33 | +public class MemberStatisticsServiceImpl implements MemberStatisticsService { | ||
| 34 | + | ||
| 35 | + @Resource | ||
| 36 | + private MemberStatisticsMapper memberStatisticsMapper; | ||
| 37 | + | ||
| 38 | + @Resource | ||
| 39 | + private PayWalletStatisticsService payWalletStatisticsService; | ||
| 40 | + @Resource | ||
| 41 | + private TradeStatisticsService tradeStatisticsService; | ||
| 42 | + @Resource | ||
| 43 | + private TradeOrderStatisticsService tradeOrderStatisticsService; | ||
| 44 | + @Resource | ||
| 45 | + private ApiAccessLogStatisticsService apiAccessLogStatisticsService; | ||
| 46 | + | ||
| 47 | + @Override | ||
| 48 | + public List<MemberAreaStatisticsRespVO> getMemberAreaStatisticsList() { | ||
| 49 | + // 统计用户 | ||
| 50 | + Map<Integer, Integer> userCountMap = convertMap(memberStatisticsMapper.selectSummaryListByAreaId(), | ||
| 51 | + vo -> AreaUtils.getParentIdByType(vo.getAreaId(), AreaTypeEnum.PROVINCE), | ||
| 52 | + MemberAreaStatisticsRespVO::getUserCount, Integer::sum); | ||
| 53 | + // 统计订单 | ||
| 54 | + Map<Integer, MemberAreaStatisticsRespVO> orderMap = convertMap(tradeOrderStatisticsService.getSummaryListByAreaId(), | ||
| 55 | + vo -> AreaUtils.getParentIdByType(vo.getAreaId(), AreaTypeEnum.PROVINCE), | ||
| 56 | + vo -> vo, | ||
| 57 | + (a, b) -> new MemberAreaStatisticsRespVO() | ||
| 58 | + .setOrderCreateCount(a.getOrderCreateCount() + b.getOrderCreateCount()) | ||
| 59 | + .setOrderPayCount(a.getOrderPayCount() + b.getOrderPayCount()) | ||
| 60 | + .setOrderPayPrice(a.getOrderPayPrice() + b.getOrderPayPrice())); | ||
| 61 | + // 拼接数据 | ||
| 62 | + return MemberStatisticsConvert.INSTANCE.convertList(AreaUtils.getByType(AreaTypeEnum.PROVINCE, area -> area), userCountMap, orderMap); | ||
| 63 | + } | ||
| 64 | + | ||
| 65 | + @Override | ||
| 66 | + public List<MemberSexStatisticsRespVO> getMemberSexStatisticsList() { | ||
| 67 | + return memberStatisticsMapper.selectSummaryListBySex(); | ||
| 68 | + } | ||
| 69 | + | ||
| 70 | + @Override | ||
| 71 | + public MemberAnalyseRespVO getMemberAnalyse(LocalDateTime beginTime, LocalDateTime endTime) { | ||
| 72 | + // 对照数据 | ||
| 73 | + MemberAnalyseComparisonRespVO vo = getMemberAnalyseComparisonData(beginTime, endTime); | ||
| 74 | + LocalDateTime referenceBeginTime = beginTime.minus(Duration.between(beginTime, endTime)); | ||
| 75 | + MemberAnalyseComparisonRespVO reference = getMemberAnalyseComparisonData(referenceBeginTime, beginTime); | ||
| 76 | + | ||
| 77 | + Integer payUserCount = tradeOrderStatisticsService.getPayUserCount(beginTime, endTime); | ||
| 78 | + // 计算客单价 | ||
| 79 | + int atv = 0; | ||
| 80 | + if (payUserCount != null && payUserCount > 0) { | ||
| 81 | + Integer payPrice = tradeOrderStatisticsService.getOrderPayPrice(beginTime, endTime); | ||
| 82 | + atv = NumberUtil.div(payPrice, payUserCount).intValue(); | ||
| 83 | + } | ||
| 84 | + return new MemberAnalyseRespVO() | ||
| 85 | + .setVisitorCount(apiAccessLogStatisticsService.getVisitorUserCount(beginTime, endTime)) | ||
| 86 | + .setOrderUserCount(tradeOrderStatisticsService.getOrderUserCount(beginTime, endTime)) | ||
| 87 | + .setPayUserCount(payUserCount) | ||
| 88 | + .setAtv(atv) | ||
| 89 | + .setComparison(new TradeStatisticsComparisonRespVO<>(vo, reference)); | ||
| 90 | + } | ||
| 91 | + | ||
| 92 | + @Override | ||
| 93 | + public MemberSummaryRespVO getMemberSummary() { | ||
| 94 | + MemberSummaryRespVO vo = payWalletStatisticsService.getUserRechargeSummary(null, null); | ||
| 95 | + Integer expensePrice = tradeStatisticsService.getExpensePrice(null, null); | ||
| 96 | + Integer userCount = memberStatisticsMapper.selectUserCount(null, null); | ||
| 97 | + | ||
| 98 | + if (vo == null) { | ||
| 99 | + vo = new MemberSummaryRespVO().setRechargeUserCount(0).setRechargePrice(0); | ||
| 100 | + } | ||
| 101 | + | ||
| 102 | + return vo.setUserCount(userCount).setExpensePrice(expensePrice); | ||
| 103 | + } | ||
| 104 | + | ||
| 105 | + private MemberAnalyseComparisonRespVO getMemberAnalyseComparisonData(LocalDateTime beginTime, LocalDateTime endTime) { | ||
| 106 | + Integer rechargeUserCount = Optional.ofNullable(payWalletStatisticsService.getUserRechargeSummary(beginTime, endTime)) | ||
| 107 | + .map(MemberSummaryRespVO::getRechargeUserCount).orElse(0); | ||
| 108 | + return new MemberAnalyseComparisonRespVO() | ||
| 109 | + .setUserCount(memberStatisticsMapper.selectUserCount(beginTime, endTime)) | ||
| 110 | + .setActiveUserCount(apiAccessLogStatisticsService.getActiveUserCount(beginTime, endTime)) | ||
| 111 | + .setRechargeUserCount(rechargeUserCount); | ||
| 112 | + } | ||
| 113 | + | ||
| 114 | +} |
yudao-module-mall/yudao-module-statistics-biz/src/main/java/cn/iocoder/yudao/module/statistics/service/pay/PayWalletStatisticsService.java
0 → 100644
| 1 | +package cn.iocoder.yudao.module.statistics.service.pay; | ||
| 2 | + | ||
| 3 | +import cn.iocoder.yudao.module.statistics.controller.admin.member.vo.MemberSummaryRespVO; | ||
| 4 | +import cn.iocoder.yudao.module.statistics.service.trade.bo.WalletSummaryRespBO; | ||
| 5 | + | ||
| 6 | +import java.time.LocalDateTime; | ||
| 7 | + | ||
| 8 | +/** | ||
| 9 | + * 钱包统计 Service 接口 | ||
| 10 | + * | ||
| 11 | + * @author owen | ||
| 12 | + */ | ||
| 13 | +public interface PayWalletStatisticsService { | ||
| 14 | + | ||
| 15 | + /** | ||
| 16 | + * 获取钱包统计 | ||
| 17 | + * | ||
| 18 | + * @param beginTime 起始时间 | ||
| 19 | + * @param endTime 截止时间 | ||
| 20 | + * @return 钱包统计 | ||
| 21 | + */ | ||
| 22 | + WalletSummaryRespBO getWalletSummary(LocalDateTime beginTime, LocalDateTime endTime); | ||
| 23 | + | ||
| 24 | + /** | ||
| 25 | + * 获取钱包充值统计 | ||
| 26 | + * | ||
| 27 | + * @param beginTime 起始时间 | ||
| 28 | + * @param endTime 截止时间 | ||
| 29 | + * @return 钱包充值统计 | ||
| 30 | + */ | ||
| 31 | + MemberSummaryRespVO getUserRechargeSummary(LocalDateTime beginTime, LocalDateTime endTime); | ||
| 32 | + | ||
| 33 | +} |
yudao-module-mall/yudao-module-statistics-biz/src/main/java/cn/iocoder/yudao/module/statistics/service/pay/PayWalletStatisticsServiceImpl.java
0 → 100644
| 1 | +package cn.iocoder.yudao.module.statistics.service.pay; | ||
| 2 | + | ||
| 3 | +import cn.iocoder.yudao.module.pay.enums.member.PayWalletBizTypeEnum; | ||
| 4 | +import cn.iocoder.yudao.module.pay.enums.refund.PayRefundStatusEnum; | ||
| 5 | +import cn.iocoder.yudao.module.statistics.controller.admin.member.vo.MemberSummaryRespVO; | ||
| 6 | +import cn.iocoder.yudao.module.statistics.dal.mysql.pay.PayWalletStatisticsMapper; | ||
| 7 | +import cn.iocoder.yudao.module.statistics.service.trade.bo.WalletSummaryRespBO; | ||
| 8 | +import org.springframework.stereotype.Service; | ||
| 9 | +import org.springframework.validation.annotation.Validated; | ||
| 10 | + | ||
| 11 | +import javax.annotation.Resource; | ||
| 12 | +import java.time.LocalDateTime; | ||
| 13 | + | ||
| 14 | +/** | ||
| 15 | + * 钱包统计 Service 实现类 | ||
| 16 | + * | ||
| 17 | + * @author owen | ||
| 18 | + */ | ||
| 19 | +@Service | ||
| 20 | +@Validated | ||
| 21 | +public class PayWalletStatisticsServiceImpl implements PayWalletStatisticsService { | ||
| 22 | + | ||
| 23 | + @Resource | ||
| 24 | + private PayWalletStatisticsMapper payWalletStatisticsMapper; | ||
| 25 | + | ||
| 26 | + @Override | ||
| 27 | + public WalletSummaryRespBO getWalletSummary(LocalDateTime beginTime, LocalDateTime endTime) { | ||
| 28 | + WalletSummaryRespBO paySummary = payWalletStatisticsMapper.selectRechargeSummaryByPayTimeBetween( | ||
| 29 | + beginTime, endTime, true); | ||
| 30 | + WalletSummaryRespBO refundSummary = payWalletStatisticsMapper.selectRechargeSummaryByRefundTimeBetween( | ||
| 31 | + beginTime, endTime, PayRefundStatusEnum.SUCCESS.getStatus()); | ||
| 32 | + Integer walletPayPrice = payWalletStatisticsMapper.selectPriceSummaryByBizTypeAndCreateTimeBetween( | ||
| 33 | + beginTime, endTime, PayWalletBizTypeEnum.PAYMENT.getType()); | ||
| 34 | + | ||
| 35 | + paySummary.setOrderWalletPayPrice(walletPayPrice); | ||
| 36 | + paySummary.setRechargeRefundCount(refundSummary.getRechargeRefundCount()); | ||
| 37 | + paySummary.setRechargeRefundPrice(refundSummary.getRechargeRefundPrice()); | ||
| 38 | + | ||
| 39 | + return paySummary; | ||
| 40 | + } | ||
| 41 | + | ||
| 42 | + @Override | ||
| 43 | + public MemberSummaryRespVO getUserRechargeSummary(LocalDateTime beginTime, LocalDateTime endTime) { | ||
| 44 | + return payWalletStatisticsMapper.selectRechargeSummaryGroupByWalletId(beginTime, endTime, true); | ||
| 45 | + } | ||
| 46 | + | ||
| 47 | +} |
yudao-module-mall/yudao-module-statistics-biz/src/main/java/cn/iocoder/yudao/module/statistics/service/trade/AfterSaleStatisticsService.java
0 → 100644
| 1 | +package cn.iocoder.yudao.module.statistics.service.trade; | ||
| 2 | + | ||
| 3 | +import cn.iocoder.yudao.module.statistics.service.trade.bo.AfterSaleSummaryRespBO; | ||
| 4 | + | ||
| 5 | +import java.time.LocalDateTime; | ||
| 6 | + | ||
| 7 | +/** | ||
| 8 | + * 售后统计 Service 接口 | ||
| 9 | + * | ||
| 10 | + * @author owen | ||
| 11 | + */ | ||
| 12 | +public interface AfterSaleStatisticsService { | ||
| 13 | + | ||
| 14 | + /** | ||
| 15 | + * 获取售后单统计 | ||
| 16 | + * | ||
| 17 | + * @param beginTime 起始时间 | ||
| 18 | + * @param endTime 截止时间 | ||
| 19 | + * @return 售后统计结果 | ||
| 20 | + */ | ||
| 21 | + AfterSaleSummaryRespBO getAfterSaleSummary(LocalDateTime beginTime, LocalDateTime endTime); | ||
| 22 | + | ||
| 23 | +} |
yudao-module-mall/yudao-module-statistics-biz/src/main/java/cn/iocoder/yudao/module/statistics/service/trade/AfterSaleStatisticsServiceImpl.java
0 → 100644
| 1 | +package cn.iocoder.yudao.module.statistics.service.trade; | ||
| 2 | + | ||
| 3 | +import cn.iocoder.yudao.module.statistics.dal.mysql.trade.AfterSaleStatisticsMapper; | ||
| 4 | +import cn.iocoder.yudao.module.statistics.service.trade.bo.AfterSaleSummaryRespBO; | ||
| 5 | +import org.springframework.stereotype.Service; | ||
| 6 | +import org.springframework.validation.annotation.Validated; | ||
| 7 | + | ||
| 8 | +import javax.annotation.Resource; | ||
| 9 | +import java.time.LocalDateTime; | ||
| 10 | + | ||
| 11 | +/** | ||
| 12 | + * 售后统计 Service 实现类 | ||
| 13 | + * | ||
| 14 | + * @author owen | ||
| 15 | + */ | ||
| 16 | +@Service | ||
| 17 | +@Validated | ||
| 18 | +public class AfterSaleStatisticsServiceImpl implements AfterSaleStatisticsService { | ||
| 19 | + | ||
| 20 | + @Resource | ||
| 21 | + private AfterSaleStatisticsMapper afterSaleStatisticsMapper; | ||
| 22 | + | ||
| 23 | + @Override | ||
| 24 | + public AfterSaleSummaryRespBO getAfterSaleSummary(LocalDateTime beginTime, LocalDateTime endTime) { | ||
| 25 | + return afterSaleStatisticsMapper.selectSummaryByRefundTimeBetween(beginTime, endTime); | ||
| 26 | + } | ||
| 27 | + | ||
| 28 | +} |
yudao-module-mall/yudao-module-statistics-biz/src/main/java/cn/iocoder/yudao/module/statistics/service/trade/BrokerageStatisticsService.java
0 → 100644
| 1 | +package cn.iocoder.yudao.module.statistics.service.trade; | ||
| 2 | + | ||
| 3 | +import java.time.LocalDateTime; | ||
| 4 | + | ||
| 5 | +/** | ||
| 6 | + * 分销统计 Service 接口 | ||
| 7 | + * | ||
| 8 | + * @author owen | ||
| 9 | + */ | ||
| 10 | +public interface BrokerageStatisticsService { | ||
| 11 | + | ||
| 12 | + /** | ||
| 13 | + * 获取已结算的佣金金额 | ||
| 14 | + * | ||
| 15 | + * @param beginTime 起始时间 | ||
| 16 | + * @param endTime 截止时间 | ||
| 17 | + * @return 已结算的佣金金额 | ||
| 18 | + */ | ||
| 19 | + Integer getBrokerageSettlementPriceSummary(LocalDateTime beginTime, LocalDateTime endTime); | ||
| 20 | + | ||
| 21 | +} |
yudao-module-mall/yudao-module-statistics-biz/src/main/java/cn/iocoder/yudao/module/statistics/service/trade/BrokerageStatisticsServiceImpl.java
0 → 100644
| 1 | +package cn.iocoder.yudao.module.statistics.service.trade; | ||
| 2 | + | ||
| 3 | +import cn.iocoder.yudao.module.statistics.dal.mysql.trade.BrokerageStatisticsMapper; | ||
| 4 | +import cn.iocoder.yudao.module.trade.enums.brokerage.BrokerageRecordBizTypeEnum; | ||
| 5 | +import cn.iocoder.yudao.module.trade.enums.brokerage.BrokerageRecordStatusEnum; | ||
| 6 | +import org.springframework.stereotype.Service; | ||
| 7 | +import org.springframework.validation.annotation.Validated; | ||
| 8 | + | ||
| 9 | +import javax.annotation.Resource; | ||
| 10 | +import java.time.LocalDateTime; | ||
| 11 | + | ||
| 12 | +/** | ||
| 13 | + * 分销统计 Service 实现类 | ||
| 14 | + * | ||
| 15 | + * @author owen | ||
| 16 | + */ | ||
| 17 | +@Service | ||
| 18 | +@Validated | ||
| 19 | +public class BrokerageStatisticsServiceImpl implements BrokerageStatisticsService { | ||
| 20 | + | ||
| 21 | + @Resource | ||
| 22 | + private BrokerageStatisticsMapper brokerageStatisticsMapper; | ||
| 23 | + | ||
| 24 | + @Override | ||
| 25 | + public Integer getBrokerageSettlementPriceSummary(LocalDateTime beginTime, LocalDateTime endTime) { | ||
| 26 | + return brokerageStatisticsMapper.selectSummaryPriceByStatusAndUnfreezeTimeBetween( | ||
| 27 | + BrokerageRecordBizTypeEnum.ORDER.getType(), BrokerageRecordStatusEnum.SETTLEMENT.getStatus(), | ||
| 28 | + beginTime, endTime); | ||
| 29 | + } | ||
| 30 | + | ||
| 31 | +} |
yudao-module-mall/yudao-module-statistics-biz/src/main/java/cn/iocoder/yudao/module/statistics/service/trade/TradeOrderStatisticsService.java
0 → 100644
| 1 | +package cn.iocoder.yudao.module.statistics.service.trade; | ||
| 2 | + | ||
| 3 | +import cn.iocoder.yudao.module.statistics.controller.admin.member.vo.MemberAreaStatisticsRespVO; | ||
| 4 | +import cn.iocoder.yudao.module.statistics.service.trade.bo.TradeOrderSummaryRespBO; | ||
| 5 | + | ||
| 6 | +import java.time.LocalDateTime; | ||
| 7 | +import java.util.List; | ||
| 8 | + | ||
| 9 | +/** | ||
| 10 | + * 交易订单统计 Service 接口 | ||
| 11 | + * | ||
| 12 | + * @author owen | ||
| 13 | + */ | ||
| 14 | +public interface TradeOrderStatisticsService { | ||
| 15 | + | ||
| 16 | + /** | ||
| 17 | + * 获取订单统计 | ||
| 18 | + * | ||
| 19 | + * @param beginTime 起始时间 | ||
| 20 | + * @param endTime 截止时间 | ||
| 21 | + * @return 订单统计结果 | ||
| 22 | + */ | ||
| 23 | + TradeOrderSummaryRespBO getOrderSummary(LocalDateTime beginTime, LocalDateTime endTime); | ||
| 24 | + | ||
| 25 | + /** | ||
| 26 | + * 获取地区订单统计 | ||
| 27 | + * | ||
| 28 | + * @return 订单统计结果 | ||
| 29 | + */ | ||
| 30 | + List<MemberAreaStatisticsRespVO> getSummaryListByAreaId(); | ||
| 31 | + | ||
| 32 | + /** | ||
| 33 | + * 获取下单用户数量 | ||
| 34 | + * | ||
| 35 | + * @param beginTime 起始时间 | ||
| 36 | + * @param endTime 截止时间 | ||
| 37 | + * @return 支付下单数量 | ||
| 38 | + */ | ||
| 39 | + Integer getOrderUserCount(LocalDateTime beginTime, LocalDateTime endTime); | ||
| 40 | + | ||
| 41 | + /** | ||
| 42 | + * 获取支付用户数量 | ||
| 43 | + * | ||
| 44 | + * @param beginTime 起始时间 | ||
| 45 | + * @param endTime 截止时间 | ||
| 46 | + * @return 支付用户数量 | ||
| 47 | + */ | ||
| 48 | + Integer getPayUserCount(LocalDateTime beginTime, LocalDateTime endTime); | ||
| 49 | + | ||
| 50 | + /** | ||
| 51 | + * 获取支付金额 | ||
| 52 | + * | ||
| 53 | + * @param beginTime 起始时间 | ||
| 54 | + * @param endTime 截止时间 | ||
| 55 | + * @return 支付用户金额 | ||
| 56 | + */ | ||
| 57 | + Integer getOrderPayPrice(LocalDateTime beginTime, LocalDateTime endTime); | ||
| 58 | + | ||
| 59 | +} |
yudao-module-mall/yudao-module-statistics-biz/src/main/java/cn/iocoder/yudao/module/statistics/service/trade/TradeOrderStatisticsServiceImpl.java
0 → 100644
| 1 | +package cn.iocoder.yudao.module.statistics.service.trade; | ||
| 2 | + | ||
| 3 | +import cn.iocoder.yudao.module.statistics.controller.admin.member.vo.MemberAreaStatisticsRespVO; | ||
| 4 | +import cn.iocoder.yudao.module.statistics.dal.mysql.trade.TradeOrderStatisticsMapper; | ||
| 5 | +import cn.iocoder.yudao.module.statistics.service.trade.bo.TradeOrderSummaryRespBO; | ||
| 6 | +import org.springframework.stereotype.Service; | ||
| 7 | +import org.springframework.validation.annotation.Validated; | ||
| 8 | + | ||
| 9 | +import javax.annotation.Resource; | ||
| 10 | +import java.time.LocalDateTime; | ||
| 11 | +import java.util.List; | ||
| 12 | + | ||
| 13 | +/** | ||
| 14 | + * 交易订单统计 Service 实现类 | ||
| 15 | + * | ||
| 16 | + * @author owen | ||
| 17 | + */ | ||
| 18 | +@Service | ||
| 19 | +@Validated | ||
| 20 | +public class TradeOrderStatisticsServiceImpl implements TradeOrderStatisticsService { | ||
| 21 | + | ||
| 22 | + @Resource | ||
| 23 | + private TradeOrderStatisticsMapper tradeOrderStatisticsMapper; | ||
| 24 | + | ||
| 25 | + @Override | ||
| 26 | + public TradeOrderSummaryRespBO getOrderSummary(LocalDateTime beginTime, LocalDateTime endTime) { | ||
| 27 | + return new TradeOrderSummaryRespBO() | ||
| 28 | + .setOrderCreateCount(tradeOrderStatisticsMapper.selectCountByCreateTimeBetween(beginTime, endTime)) | ||
| 29 | + .setOrderPayCount(tradeOrderStatisticsMapper.selectCountByPayTimeBetween(beginTime, endTime)) | ||
| 30 | + .setOrderPayPrice(tradeOrderStatisticsMapper.selectSummaryPriceByPayTimeBetween(beginTime, endTime)); | ||
| 31 | + } | ||
| 32 | + | ||
| 33 | + @Override | ||
| 34 | + public List<MemberAreaStatisticsRespVO> getSummaryListByAreaId() { | ||
| 35 | + return tradeOrderStatisticsMapper.selectSummaryListByAreaId(); | ||
| 36 | + } | ||
| 37 | + | ||
| 38 | + @Override | ||
| 39 | + public Integer getOrderUserCount(LocalDateTime beginTime, LocalDateTime endTime) { | ||
| 40 | + return tradeOrderStatisticsMapper.selectUserCountByCreateTimeBetween(beginTime, endTime); | ||
| 41 | + } | ||
| 42 | + | ||
| 43 | + @Override | ||
| 44 | + public Integer getPayUserCount(LocalDateTime beginTime, LocalDateTime endTime) { | ||
| 45 | + return tradeOrderStatisticsMapper.selectUserCountByPayTimeBetween(beginTime, endTime); | ||
| 46 | + } | ||
| 47 | + | ||
| 48 | + @Override | ||
| 49 | + public Integer getOrderPayPrice(LocalDateTime beginTime, LocalDateTime endTime) { | ||
| 50 | + return tradeOrderStatisticsMapper.selectSummaryPriceByPayTimeBetween(beginTime, endTime); | ||
| 51 | + } | ||
| 52 | + | ||
| 53 | +} |
yudao-module-mall/yudao-module-statistics-biz/src/main/java/cn/iocoder/yudao/module/statistics/service/trade/TradeStatisticsService.java
| @@ -22,7 +22,7 @@ public interface TradeStatisticsService { | @@ -22,7 +22,7 @@ public interface TradeStatisticsService { | ||
| 22 | TradeStatisticsComparisonRespVO<TradeSummaryRespVO> getTradeSummaryComparison(); | 22 | TradeStatisticsComparisonRespVO<TradeSummaryRespVO> getTradeSummaryComparison(); |
| 23 | 23 | ||
| 24 | /** | 24 | /** |
| 25 | - * 获得交易状况统计 | 25 | + * 获得交易状况统计对照 |
| 26 | * | 26 | * |
| 27 | * @return 统计数据对照 | 27 | * @return 统计数据对照 |
| 28 | */ | 28 | */ |
| @@ -30,6 +30,13 @@ public interface TradeStatisticsService { | @@ -30,6 +30,13 @@ public interface TradeStatisticsService { | ||
| 30 | LocalDateTime beginTime, LocalDateTime endTime); | 30 | LocalDateTime beginTime, LocalDateTime endTime); |
| 31 | 31 | ||
| 32 | /** | 32 | /** |
| 33 | + * 获得交易状况统计 | ||
| 34 | + * | ||
| 35 | + * @return 统计数据对照 | ||
| 36 | + */ | ||
| 37 | + Integer getExpensePrice(LocalDateTime beginTime, LocalDateTime endTime); | ||
| 38 | + | ||
| 39 | + /** | ||
| 33 | * 获得交易状况明细 | 40 | * 获得交易状况明细 |
| 34 | * | 41 | * |
| 35 | * @return 统计数据列表 | 42 | * @return 统计数据列表 |
yudao-module-mall/yudao-module-statistics-biz/src/main/java/cn/iocoder/yudao/module/statistics/service/trade/TradeStatisticsServiceImpl.java
| @@ -2,8 +2,8 @@ package cn.iocoder.yudao.module.statistics.service.trade; | @@ -2,8 +2,8 @@ package cn.iocoder.yudao.module.statistics.service.trade; | ||
| 2 | 2 | ||
| 3 | import cn.hutool.core.date.LocalDateTimeUtil; | 3 | import cn.hutool.core.date.LocalDateTimeUtil; |
| 4 | import cn.iocoder.yudao.framework.common.util.date.LocalDateTimeUtils; | 4 | import cn.iocoder.yudao.framework.common.util.date.LocalDateTimeUtils; |
| 5 | -import cn.iocoder.yudao.module.pay.api.wallet.PayWalletApi; | ||
| 6 | -import cn.iocoder.yudao.module.pay.api.wallet.dto.WalletSummaryRespDTO; | 5 | +import cn.iocoder.yudao.module.statistics.service.pay.PayWalletStatisticsService; |
| 6 | +import cn.iocoder.yudao.module.statistics.service.trade.bo.WalletSummaryRespBO; | ||
| 7 | import cn.iocoder.yudao.module.statistics.controller.admin.trade.vo.TradeStatisticsComparisonRespVO; | 7 | import cn.iocoder.yudao.module.statistics.controller.admin.trade.vo.TradeStatisticsComparisonRespVO; |
| 8 | import cn.iocoder.yudao.module.statistics.controller.admin.trade.vo.TradeSummaryRespVO; | 8 | import cn.iocoder.yudao.module.statistics.controller.admin.trade.vo.TradeSummaryRespVO; |
| 9 | import cn.iocoder.yudao.module.statistics.controller.admin.trade.vo.TradeTrendSummaryRespVO; | 9 | import cn.iocoder.yudao.module.statistics.controller.admin.trade.vo.TradeTrendSummaryRespVO; |
| @@ -11,11 +11,8 @@ import cn.iocoder.yudao.module.statistics.convert.trade.TradeStatisticsConvert; | @@ -11,11 +11,8 @@ import cn.iocoder.yudao.module.statistics.convert.trade.TradeStatisticsConvert; | ||
| 11 | import cn.iocoder.yudao.module.statistics.dal.dataobject.trade.TradeStatisticsDO; | 11 | import cn.iocoder.yudao.module.statistics.dal.dataobject.trade.TradeStatisticsDO; |
| 12 | import cn.iocoder.yudao.module.statistics.dal.mysql.trade.TradeStatisticsMapper; | 12 | import cn.iocoder.yudao.module.statistics.dal.mysql.trade.TradeStatisticsMapper; |
| 13 | import cn.iocoder.yudao.module.statistics.service.trade.bo.TradeSummaryRespBO; | 13 | import cn.iocoder.yudao.module.statistics.service.trade.bo.TradeSummaryRespBO; |
| 14 | -import cn.iocoder.yudao.module.trade.api.aftersale.TradeAfterSaleApi; | ||
| 15 | -import cn.iocoder.yudao.module.trade.api.aftersale.dto.AfterSaleSummaryRespDTO; | ||
| 16 | -import cn.iocoder.yudao.module.trade.api.brokerage.TradeBrokerageApi; | ||
| 17 | -import cn.iocoder.yudao.module.trade.api.order.TradeOrderApi; | ||
| 18 | -import cn.iocoder.yudao.module.trade.api.order.dto.TradeOrderSummaryRespDTO; | 14 | +import cn.iocoder.yudao.module.statistics.service.trade.bo.AfterSaleSummaryRespBO; |
| 15 | +import cn.iocoder.yudao.module.statistics.service.trade.bo.TradeOrderSummaryRespBO; | ||
| 19 | import org.springframework.stereotype.Service; | 16 | import org.springframework.stereotype.Service; |
| 20 | import org.springframework.util.StopWatch; | 17 | import org.springframework.util.StopWatch; |
| 21 | import org.springframework.validation.annotation.Validated; | 18 | import org.springframework.validation.annotation.Validated; |
| @@ -37,18 +34,14 @@ public class TradeStatisticsServiceImpl implements TradeStatisticsService { | @@ -37,18 +34,14 @@ public class TradeStatisticsServiceImpl implements TradeStatisticsService { | ||
| 37 | @Resource | 34 | @Resource |
| 38 | private TradeStatisticsMapper tradeStatisticsMapper; | 35 | private TradeStatisticsMapper tradeStatisticsMapper; |
| 39 | 36 | ||
| 40 | - // TODO @疯狂:统计逻辑,自己服务 mapper 去统计,不要调用其它服务 API; | ||
| 41 | - // 主要的考虑点,其它服务是在线的业务,统计是离线业务,尽量不占用他们的 db 资源; | ||
| 42 | - // 统计服务,从建议使用从库,或者从 mysql 抽取到单独的 clickhouse 或者其它的大数据组件; | ||
| 43 | - | ||
| 44 | @Resource | 37 | @Resource |
| 45 | - private TradeOrderApi tradeOrderApi; | 38 | + private TradeOrderStatisticsService tradeOrderStatisticsService; |
| 46 | @Resource | 39 | @Resource |
| 47 | - private TradeAfterSaleApi tradeAfterSaleApi; | 40 | + private AfterSaleStatisticsService afterSaleStatisticsService; |
| 48 | @Resource | 41 | @Resource |
| 49 | - private TradeBrokerageApi tradeBrokerageApi; | 42 | + private BrokerageStatisticsService brokerageStatisticsService; |
| 50 | @Resource | 43 | @Resource |
| 51 | - private PayWalletApi payWalletApi; | 44 | + private PayWalletStatisticsService payWalletStatisticsService; |
| 52 | 45 | ||
| 53 | @Override | 46 | @Override |
| 54 | public TradeStatisticsComparisonRespVO<TradeSummaryRespVO> getTradeSummaryComparison() { | 47 | public TradeStatisticsComparisonRespVO<TradeSummaryRespVO> getTradeSummaryComparison() { |
| @@ -77,6 +70,11 @@ public class TradeStatisticsServiceImpl implements TradeStatisticsService { | @@ -77,6 +70,11 @@ public class TradeStatisticsServiceImpl implements TradeStatisticsService { | ||
| 77 | } | 70 | } |
| 78 | 71 | ||
| 79 | @Override | 72 | @Override |
| 73 | + public Integer getExpensePrice(LocalDateTime beginTime, LocalDateTime endTime) { | ||
| 74 | + return tradeStatisticsMapper.selectExpensePriceByTimeBetween(beginTime, endTime); | ||
| 75 | + } | ||
| 76 | + | ||
| 77 | + @Override | ||
| 80 | public List<TradeTrendSummaryRespVO> getTradeStatisticsList(LocalDateTime beginTime, LocalDateTime endTime) { | 78 | public List<TradeTrendSummaryRespVO> getTradeStatisticsList(LocalDateTime beginTime, LocalDateTime endTime) { |
| 81 | return tradeStatisticsMapper.selectListByTimeBetween(beginTime, endTime); | 79 | return tradeStatisticsMapper.selectListByTimeBetween(beginTime, endTime); |
| 82 | } | 80 | } |
| @@ -90,19 +88,19 @@ public class TradeStatisticsServiceImpl implements TradeStatisticsService { | @@ -90,19 +88,19 @@ public class TradeStatisticsServiceImpl implements TradeStatisticsService { | ||
| 90 | // 统计 | 88 | // 统计 |
| 91 | StopWatch stopWatch = new StopWatch("交易统计"); | 89 | StopWatch stopWatch = new StopWatch("交易统计"); |
| 92 | stopWatch.start("统计订单"); | 90 | stopWatch.start("统计订单"); |
| 93 | - TradeOrderSummaryRespDTO orderSummary = tradeOrderApi.getOrderSummary(beginTime, endTime); | 91 | + TradeOrderSummaryRespBO orderSummary = tradeOrderStatisticsService.getOrderSummary(beginTime, endTime); |
| 94 | stopWatch.stop(); | 92 | stopWatch.stop(); |
| 95 | 93 | ||
| 96 | stopWatch.start("统计售后"); | 94 | stopWatch.start("统计售后"); |
| 97 | - AfterSaleSummaryRespDTO afterSaleSummary = tradeAfterSaleApi.getAfterSaleSummary(beginTime, endTime); | 95 | + AfterSaleSummaryRespBO afterSaleSummary = afterSaleStatisticsService.getAfterSaleSummary(beginTime, endTime); |
| 98 | stopWatch.stop(); | 96 | stopWatch.stop(); |
| 99 | 97 | ||
| 100 | stopWatch.start("统计佣金"); | 98 | stopWatch.start("统计佣金"); |
| 101 | - Integer brokerageSettlementPrice = tradeBrokerageApi.getBrokerageSettlementPriceSummary(beginTime, endTime); | 99 | + Integer brokerageSettlementPrice = brokerageStatisticsService.getBrokerageSettlementPriceSummary(beginTime, endTime); |
| 102 | stopWatch.stop(); | 100 | stopWatch.stop(); |
| 103 | 101 | ||
| 104 | stopWatch.start("统计充值"); | 102 | stopWatch.start("统计充值"); |
| 105 | - WalletSummaryRespDTO walletSummary = payWalletApi.getWalletSummary(beginTime, endTime); | 103 | + WalletSummaryRespBO walletSummary = payWalletStatisticsService.getWalletSummary(beginTime, endTime); |
| 106 | stopWatch.stop(); | 104 | stopWatch.stop(); |
| 107 | // 插入数据 | 105 | // 插入数据 |
| 108 | TradeStatisticsDO entity = TradeStatisticsConvert.INSTANCE.convert(yesterday, orderSummary, afterSaleSummary, brokerageSettlementPrice, walletSummary); | 106 | TradeStatisticsDO entity = TradeStatisticsConvert.INSTANCE.convert(yesterday, orderSummary, afterSaleSummary, brokerageSettlementPrice, walletSummary); |
yudao-module-mall/yudao-module-trade-api/src/main/java/cn/iocoder/yudao/module/trade/api/aftersale/dto/AfterSaleSummaryRespDTO.java renamed to yudao-module-mall/yudao-module-statistics-biz/src/main/java/cn/iocoder/yudao/module/statistics/service/trade/bo/AfterSaleSummaryRespBO.java
| 1 | -package cn.iocoder.yudao.module.trade.api.aftersale.dto; | 1 | +package cn.iocoder.yudao.module.statistics.service.trade.bo; |
| 2 | 2 | ||
| 3 | import lombok.Data; | 3 | import lombok.Data; |
| 4 | 4 | ||
| @@ -8,7 +8,7 @@ import lombok.Data; | @@ -8,7 +8,7 @@ import lombok.Data; | ||
| 8 | * @author owen | 8 | * @author owen |
| 9 | */ | 9 | */ |
| 10 | @Data | 10 | @Data |
| 11 | -public class AfterSaleSummaryRespDTO { | 11 | +public class AfterSaleSummaryRespBO { |
| 12 | 12 | ||
| 13 | /** | 13 | /** |
| 14 | * 退款订单数 | 14 | * 退款订单数 |
yudao-module-mall/yudao-module-trade-api/src/main/java/cn/iocoder/yudao/module/trade/api/order/dto/TradeOrderSummaryRespDTO.java renamed to yudao-module-mall/yudao-module-statistics-biz/src/main/java/cn/iocoder/yudao/module/statistics/service/trade/bo/TradeOrderSummaryRespBO.java
| 1 | -package cn.iocoder.yudao.module.trade.api.order.dto; | 1 | +package cn.iocoder.yudao.module.statistics.service.trade.bo; |
| 2 | 2 | ||
| 3 | import lombok.Data; | 3 | import lombok.Data; |
| 4 | 4 | ||
| 5 | /** | 5 | /** |
| 6 | - * 订单统计 Response DTO | 6 | + * 订单统计 Response BO |
| 7 | * | 7 | * |
| 8 | * @author owen | 8 | * @author owen |
| 9 | */ | 9 | */ |
| 10 | @Data | 10 | @Data |
| 11 | -public class TradeOrderSummaryRespDTO { | 11 | +public class TradeOrderSummaryRespBO { |
| 12 | 12 | ||
| 13 | /** | 13 | /** |
| 14 | * 创建订单数 | 14 | * 创建订单数 |
| 15 | */ | 15 | */ |
| 16 | - private Long orderCreateCount; | 16 | + private Integer orderCreateCount; |
| 17 | /** | 17 | /** |
| 18 | * 支付订单商品数 | 18 | * 支付订单商品数 |
| 19 | */ | 19 | */ |
yudao-module-pay/yudao-module-pay-api/src/main/java/cn/iocoder/yudao/module/pay/api/wallet/dto/WalletSummaryRespDTO.java renamed to yudao-module-mall/yudao-module-statistics-biz/src/main/java/cn/iocoder/yudao/module/statistics/service/trade/bo/WalletSummaryRespBO.java
| 1 | -package cn.iocoder.yudao.module.pay.api.wallet.dto; | 1 | +package cn.iocoder.yudao.module.statistics.service.trade.bo; |
| 2 | 2 | ||
| 3 | import lombok.Data; | 3 | import lombok.Data; |
| 4 | 4 | ||
| @@ -8,7 +8,7 @@ import lombok.Data; | @@ -8,7 +8,7 @@ import lombok.Data; | ||
| 8 | * @author owen | 8 | * @author owen |
| 9 | */ | 9 | */ |
| 10 | @Data | 10 | @Data |
| 11 | -public class WalletSummaryRespDTO { | 11 | +public class WalletSummaryRespBO { |
| 12 | /** | 12 | /** |
| 13 | * 总支付金额(余额),单位:分 | 13 | * 总支付金额(余额),单位:分 |
| 14 | */ | 14 | */ |
yudao-module-mall/yudao-module-statistics-biz/src/main/resources/mapper/infra/ApiAccessLogStatisticsMapper.xml
0 → 100644
| 1 | +<?xml version="1.0" encoding="UTF-8"?> | ||
| 2 | +<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> | ||
| 3 | +<mapper namespace="cn.iocoder.yudao.module.statistics.dal.mysql.infra.ApiAccessLogStatisticsMapper"> | ||
| 4 | + <select id="selectCountByIp" resultType="java.lang.Integer"> | ||
| 5 | + SELECT COUNT(1) | ||
| 6 | + FROM infra_api_access_log | ||
| 7 | + WHERE deleted = FALSE | ||
| 8 | + AND create_time BETWEEN #{beginTime} AND #{endTime} | ||
| 9 | + GROUP BY user_ip | ||
| 10 | + </select> | ||
| 11 | + | ||
| 12 | + <select id="selectCountByUserId" resultType="java.lang.Integer"> | ||
| 13 | + SELECT COUNT(1) | ||
| 14 | + FROM infra_api_access_log | ||
| 15 | + WHERE user_id != 0 | ||
| 16 | + AND deleted = FALSE | ||
| 17 | + AND create_time BETWEEN #{beginTime} AND #{endTime} | ||
| 18 | + GROUP BY user_id | ||
| 19 | + </select> | ||
| 20 | +</mapper> |
yudao-module-mall/yudao-module-statistics-biz/src/main/resources/mapper/member/MemberStatisticsMapper.xml
0 → 100644
| 1 | +<?xml version="1.0" encoding="UTF-8"?> | ||
| 2 | +<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> | ||
| 3 | +<mapper namespace="cn.iocoder.yudao.module.statistics.dal.mysql.member.MemberStatisticsMapper"> | ||
| 4 | + | ||
| 5 | + <select id="selectSummaryListByAreaId" | ||
| 6 | + resultType="cn.iocoder.yudao.module.statistics.controller.admin.member.vo.MemberAreaStatisticsRespVO"> | ||
| 7 | + SELECT area_id, COUNT(1) AS userCount | ||
| 8 | + FROM member_user | ||
| 9 | + WHERE deleted = FALSE | ||
| 10 | + GROUP BY area_id | ||
| 11 | + ORDER BY userCount DESC | ||
| 12 | + </select> | ||
| 13 | + | ||
| 14 | + <select id="selectSummaryListBySex" | ||
| 15 | + resultType="cn.iocoder.yudao.module.statistics.controller.admin.member.vo.MemberSexStatisticsRespVO"> | ||
| 16 | + SELECT sex, COUNT(1) AS userCount | ||
| 17 | + FROM member_user | ||
| 18 | + WHERE deleted = FALSE | ||
| 19 | + GROUP BY sex | ||
| 20 | + ORDER BY userCount DESC | ||
| 21 | + </select> | ||
| 22 | + | ||
| 23 | + <select id="selectUserCount" resultType="java.lang.Integer"> | ||
| 24 | + SELECT COUNT(1) | ||
| 25 | + FROM member_user | ||
| 26 | + WHERE deleted = FALSE | ||
| 27 | + <if test="beginTime != null"> | ||
| 28 | + AND create_time >= #{beginTime} | ||
| 29 | + </if> | ||
| 30 | + <if test="endTime != null"> | ||
| 31 | + AND create_time <= #{endTime} | ||
| 32 | + </if> | ||
| 33 | + </select> | ||
| 34 | +</mapper> | ||
| 0 | \ No newline at end of file | 35 | \ No newline at end of file |
yudao-module-mall/yudao-module-statistics-biz/src/main/resources/mapper/pay/PayWalletStatisticsMapper.xml
0 → 100644
| 1 | +<?xml version="1.0" encoding="UTF-8"?> | ||
| 2 | +<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> | ||
| 3 | +<mapper namespace="cn.iocoder.yudao.module.statistics.dal.mysql.pay.PayWalletStatisticsMapper"> | ||
| 4 | + <select id="selectRechargeSummaryByPayTimeBetween" | ||
| 5 | + resultType="cn.iocoder.yudao.module.statistics.service.trade.bo.WalletSummaryRespBO"> | ||
| 6 | + SELECT COUNT(1) AS rechargePayCount, | ||
| 7 | + SUM(pay_price) AS rechargePayPrice | ||
| 8 | + FROM pay_wallet_recharge | ||
| 9 | + WHERE pay_status = #{payStatus} | ||
| 10 | + AND deleted = FALSE | ||
| 11 | + AND pay_time BETWEEN #{beginTime} AND #{endTime} | ||
| 12 | + </select> | ||
| 13 | + | ||
| 14 | + <select id="selectRechargeSummaryByRefundTimeBetween" | ||
| 15 | + resultType="cn.iocoder.yudao.module.statistics.service.trade.bo.WalletSummaryRespBO"> | ||
| 16 | + SELECT COUNT(1) AS rechargeRefundCount, | ||
| 17 | + SUM(pay_price) AS rechargeRefundPrice | ||
| 18 | + FROM pay_wallet_recharge | ||
| 19 | + WHERE refund_status = #{refundStatus} | ||
| 20 | + AND deleted = FALSE | ||
| 21 | + AND refund_time BETWEEN #{beginTime} AND #{endTime} | ||
| 22 | + </select> | ||
| 23 | + | ||
| 24 | + <select id="selectPriceSummaryByBizTypeAndCreateTimeBetween" resultType="java.lang.Integer"> | ||
| 25 | + SELECT SUM(price) | ||
| 26 | + FROM pay_wallet_transaction | ||
| 27 | + WHERE biz_type = #{bizType} | ||
| 28 | + AND deleted = FALSE | ||
| 29 | + AND create_time BETWEEN #{beginTime} AND #{endTime} | ||
| 30 | + </select> | ||
| 31 | + | ||
| 32 | + <select id="selectRechargeSummaryGroupByWalletId" | ||
| 33 | + resultType="cn.iocoder.yudao.module.statistics.controller.admin.member.vo.MemberSummaryRespVO"> | ||
| 34 | + SELECT COUNT(1) AS rechargeUserCount, | ||
| 35 | + SUM(pay_price) AS rechargePrice | ||
| 36 | + FROM pay_wallet_recharge | ||
| 37 | + WHERE pay_status = #{payStatus} | ||
| 38 | + AND deleted = FALSE | ||
| 39 | + <if test="beginTime != null"> | ||
| 40 | + AND pay_time >= #{beginTime} | ||
| 41 | + </if> | ||
| 42 | + <if test="endTime != null"> | ||
| 43 | + AND pay_time <= #{endTime} | ||
| 44 | + </if> | ||
| 45 | + GROUP BY wallet_id | ||
| 46 | + </select> | ||
| 47 | +</mapper> |
yudao-module-mall/yudao-module-statistics-biz/src/main/resources/mapper/trade/AfterSaleStatisticsMapper.xml
0 → 100644
| 1 | +<?xml version="1.0" encoding="UTF-8"?> | ||
| 2 | +<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> | ||
| 3 | +<mapper namespace="cn.iocoder.yudao.module.statistics.dal.mysql.trade.AfterSaleStatisticsMapper"> | ||
| 4 | + <select id="selectSummaryByRefundTimeBetween" | ||
| 5 | + resultType="cn.iocoder.yudao.module.statistics.service.trade.bo.AfterSaleSummaryRespBO"> | ||
| 6 | + SELECT COUNT(1) AS afterSaleCount, | ||
| 7 | + SUM(refund_price) AS afterSaleRefundPrice | ||
| 8 | + FROM trade_after_sale | ||
| 9 | + WHERE deleted = FALSE | ||
| 10 | + AND refund_time BETWEEN #{beginTime} AND #{endTime} | ||
| 11 | + </select> | ||
| 12 | +</mapper> |
yudao-module-mall/yudao-module-statistics-biz/src/main/resources/mapper/trade/BrokerageStatisticsMapper.xml
0 → 100644
| 1 | +<?xml version="1.0" encoding="UTF-8"?> | ||
| 2 | +<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> | ||
| 3 | +<mapper namespace="cn.iocoder.yudao.module.statistics.dal.mysql.trade.BrokerageStatisticsMapper"> | ||
| 4 | + <select id="selectSummaryPriceByStatusAndUnfreezeTimeBetween" resultType="java.lang.Integer"> | ||
| 5 | + SELECT SUM(price) | ||
| 6 | + FROM trade_brokerage_record | ||
| 7 | + WHERE biz_type = #{bizType} | ||
| 8 | + AND status = #{status} | ||
| 9 | + AND deleted = FALSE | ||
| 10 | + AND unfreeze_time BETWEEN #{beginTime} AND #{endTime} | ||
| 11 | + </select> | ||
| 12 | +</mapper> |
yudao-module-mall/yudao-module-statistics-biz/src/main/resources/mapper/trade/TradeOrderStatisticsMapper.xml
0 → 100644
| 1 | +<?xml version="1.0" encoding="UTF-8"?> | ||
| 2 | +<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> | ||
| 3 | +<mapper namespace="cn.iocoder.yudao.module.statistics.dal.mysql.trade.TradeOrderStatisticsMapper"> | ||
| 4 | + <select id="selectSummaryListByAreaId" | ||
| 5 | + resultType="cn.iocoder.yudao.module.statistics.controller.admin.member.vo.MemberAreaStatisticsRespVO"> | ||
| 6 | + SELECT receiver_area_id AS areaId, | ||
| 7 | + (SELECT COUNT(1) | ||
| 8 | + FROM trade_order AS s | ||
| 9 | + WHERE s.receiver_area_id = m.receiver_area_id) AS orderCreateCount, | ||
| 10 | + (SELECT COUNT(1) | ||
| 11 | + FROM trade_order AS s | ||
| 12 | + WHERE s.receiver_area_id = m.receiver_area_id | ||
| 13 | + AND s.pay_status = TRUE | ||
| 14 | + AND s.deleted = FALSE) AS orderPayCount, | ||
| 15 | + (SELECT SUM(s.pay_price) | ||
| 16 | + FROM trade_order AS s | ||
| 17 | + WHERE s.receiver_area_id = m.receiver_area_id | ||
| 18 | + AND s.pay_status = TRUE | ||
| 19 | + AND s.deleted = FALSE) AS orderPayPrice | ||
| 20 | + FROM trade_order m | ||
| 21 | + WHERE deleted = FALSE | ||
| 22 | + GROUP BY receiver_area_id | ||
| 23 | + </select> | ||
| 24 | + | ||
| 25 | + <select id="selectUserCountByCreateTimeBetween" resultType="java.lang.Integer"> | ||
| 26 | + SELECT COUNT(1) | ||
| 27 | + FROM trade_order | ||
| 28 | + WHERE deleted = FALSE | ||
| 29 | + AND create_time BETWEEN #{beginTime} AND #{endTime} | ||
| 30 | + GROUP BY user_id | ||
| 31 | + </select> | ||
| 32 | + | ||
| 33 | + <select id="selectUserCountByPayTimeBetween" resultType="java.lang.Integer"> | ||
| 34 | + SELECT COUNT(1) | ||
| 35 | + FROM trade_order | ||
| 36 | + WHERE deleted = FALSE | ||
| 37 | + AND pay_status = TRUE | ||
| 38 | + AND pay_time BETWEEN #{beginTime} AND #{endTime} | ||
| 39 | + GROUP BY user_id | ||
| 40 | + </select> | ||
| 41 | + | ||
| 42 | + <select id="selectCountByCreateTimeBetween" resultType="java.lang.Integer"> | ||
| 43 | + SELECT COUNT(1) | ||
| 44 | + FROM trade_order | ||
| 45 | + WHERE deleted = FALSE | ||
| 46 | + AND create_time BETWEEN #{beginTime} AND #{endTime} | ||
| 47 | + </select> | ||
| 48 | + | ||
| 49 | + <select id="selectCountByPayTimeBetween" resultType="java.lang.Integer"> | ||
| 50 | + SELECT COUNT(1) | ||
| 51 | + FROM trade_order | ||
| 52 | + WHERE pay_status = TRUE | ||
| 53 | + AND deleted = FALSE | ||
| 54 | + AND create_time BETWEEN #{beginTime} AND #{endTime} | ||
| 55 | + </select> | ||
| 56 | + | ||
| 57 | + <select id="selectSummaryPriceByPayTimeBetween" resultType="java.lang.Integer"> | ||
| 58 | + SELECT SUM(pay_price) | ||
| 59 | + FROM trade_order AS s | ||
| 60 | + WHERE s.pay_status = TRUE | ||
| 61 | + AND deleted = FALSE | ||
| 62 | + AND create_time BETWEEN #{beginTime} AND #{endTime} | ||
| 63 | + </select> | ||
| 64 | +</mapper> |
yudao-module-mall/yudao-module-statistics-biz/src/main/resources/mapper/trade/TradeStatisticsMapper.xml
| 1 | <?xml version="1.0" encoding="UTF-8"?> | 1 | <?xml version="1.0" encoding="UTF-8"?> |
| 2 | <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> | 2 | <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> |
| 3 | <mapper namespace="cn.iocoder.yudao.module.statistics.dal.mysql.trade.TradeStatisticsMapper"> | 3 | <mapper namespace="cn.iocoder.yudao.module.statistics.dal.mysql.trade.TradeStatisticsMapper"> |
| 4 | - | ||
| 5 | <select id="selectByTimeBetween" | 4 | <select id="selectByTimeBetween" |
| 6 | resultType="cn.iocoder.yudao.module.statistics.controller.admin.trade.vo.TradeTrendSummaryRespVO"> | 5 | resultType="cn.iocoder.yudao.module.statistics.controller.admin.trade.vo.TradeTrendSummaryRespVO"> |
| 7 | SELECT | 6 | SELECT |
| @@ -37,4 +36,16 @@ | @@ -37,4 +36,16 @@ | ||
| 37 | GROUP BY date | 36 | GROUP BY date |
| 38 | </select> | 37 | </select> |
| 39 | 38 | ||
| 39 | + <select id="selectExpensePriceByTimeBetween" resultType="java.lang.Integer"> | ||
| 40 | + SELECT -- 支出金额 = 余额支付金额 + 支付佣金金额 + 商品退款金额 | ||
| 41 | + SUM(order_wallet_pay_price + brokerage_settlement_price + after_sale_refund_price) AS expensePrice | ||
| 42 | + FROM trade_statistics | ||
| 43 | + WHERE deleted = FALSE | ||
| 44 | + <if test="beginTime != null"> | ||
| 45 | + AND time >= #{beginTime} | ||
| 46 | + </if> | ||
| 47 | + <if test="endTime != null"> | ||
| 48 | + AND time <= #{endTime} | ||
| 49 | + </if> | ||
| 50 | + </select> | ||
| 40 | </mapper> | 51 | </mapper> |
yudao-module-mall/yudao-module-trade-api/src/main/java/cn/iocoder/yudao/module/trade/api/aftersale/TradeAfterSaleApi.java
| 1 | package cn.iocoder.yudao.module.trade.api.aftersale; | 1 | package cn.iocoder.yudao.module.trade.api.aftersale; |
| 2 | 2 | ||
| 3 | -import cn.iocoder.yudao.module.trade.api.aftersale.dto.AfterSaleSummaryRespDTO; | ||
| 4 | - | ||
| 5 | -import java.time.LocalDateTime; | ||
| 6 | - | ||
| 7 | /** | 3 | /** |
| 8 | * 售后 API 接口 | 4 | * 售后 API 接口 |
| 9 | * | 5 | * |
| @@ -11,13 +7,4 @@ import java.time.LocalDateTime; | @@ -11,13 +7,4 @@ import java.time.LocalDateTime; | ||
| 11 | */ | 7 | */ |
| 12 | public interface TradeAfterSaleApi { | 8 | public interface TradeAfterSaleApi { |
| 13 | 9 | ||
| 14 | - /** | ||
| 15 | - * 获取售后单统计 | ||
| 16 | - * | ||
| 17 | - * @param beginTime 起始时间 | ||
| 18 | - * @param endTime 截止时间 | ||
| 19 | - * @return 售后统计结果 | ||
| 20 | - */ | ||
| 21 | - AfterSaleSummaryRespDTO getAfterSaleSummary(LocalDateTime beginTime, LocalDateTime endTime); | ||
| 22 | - | ||
| 23 | } | 10 | } |
yudao-module-mall/yudao-module-trade-api/src/main/java/cn/iocoder/yudao/module/trade/api/brokerage/TradeBrokerageApi.java
| 1 | package cn.iocoder.yudao.module.trade.api.brokerage; | 1 | package cn.iocoder.yudao.module.trade.api.brokerage; |
| 2 | 2 | ||
| 3 | -import java.time.LocalDateTime; | ||
| 4 | - | ||
| 5 | /** | 3 | /** |
| 6 | * 分销 API 接口 | 4 | * 分销 API 接口 |
| 7 | * | 5 | * |
| @@ -9,13 +7,4 @@ import java.time.LocalDateTime; | @@ -9,13 +7,4 @@ import java.time.LocalDateTime; | ||
| 9 | */ | 7 | */ |
| 10 | public interface TradeBrokerageApi { | 8 | public interface TradeBrokerageApi { |
| 11 | 9 | ||
| 12 | - /** | ||
| 13 | - * 获取已结算的佣金金额 | ||
| 14 | - * | ||
| 15 | - * @param beginTime 起始时间 | ||
| 16 | - * @param endTime 截止时间 | ||
| 17 | - * @return 已结算的佣金金额 | ||
| 18 | - */ | ||
| 19 | - Integer getBrokerageSettlementPriceSummary(LocalDateTime beginTime, LocalDateTime endTime); | ||
| 20 | - | ||
| 21 | } | 10 | } |
yudao-module-mall/yudao-module-trade-api/src/main/java/cn/iocoder/yudao/module/trade/api/order/TradeOrderApi.java
| 1 | package cn.iocoder.yudao.module.trade.api.order; | 1 | package cn.iocoder.yudao.module.trade.api.order; |
| 2 | 2 | ||
| 3 | import cn.iocoder.yudao.module.trade.api.order.dto.TradeOrderRespDTO; | 3 | import cn.iocoder.yudao.module.trade.api.order.dto.TradeOrderRespDTO; |
| 4 | -import cn.iocoder.yudao.module.trade.api.order.dto.TradeOrderSummaryRespDTO; | ||
| 5 | 4 | ||
| 6 | -import java.time.LocalDateTime; | ||
| 7 | import java.util.Collection; | 5 | import java.util.Collection; |
| 8 | import java.util.List; | 6 | import java.util.List; |
| 9 | 7 | ||
| @@ -39,6 +37,16 @@ public interface TradeOrderApi { | @@ -39,6 +37,16 @@ public interface TradeOrderApi { | ||
| 39 | */ | 37 | */ |
| 40 | TradeOrderSummaryRespDTO getOrderSummary(LocalDateTime beginTime, LocalDateTime endTime); | 38 | TradeOrderSummaryRespDTO getOrderSummary(LocalDateTime beginTime, LocalDateTime endTime); |
| 41 | 39 | ||
| 40 | + /** | ||
| 41 | + * 更新拼团相关信息到订单 | ||
| 42 | + * | ||
| 43 | + * @param orderId 订单编号 | ||
| 44 | + * @param activityId 拼团活动编号 | ||
| 45 | + * @param combinationRecordId 拼团记录编号 | ||
| 46 | + * @param headId 团长编号 | ||
| 47 | + */ | ||
| 48 | + void updateOrderCombinationInfo(Long orderId, Long activityId, Long combinationRecordId, Long headId); | ||
| 49 | + | ||
| 42 | // TODO 芋艿:需要优化下; | 50 | // TODO 芋艿:需要优化下; |
| 43 | /** | 51 | /** |
| 44 | * 取消支付订单 | 52 | * 取消支付订单 |
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/api/aftersale/TradeAfterSaleApiImpl.java
| 1 | package cn.iocoder.yudao.module.trade.api.aftersale; | 1 | package cn.iocoder.yudao.module.trade.api.aftersale; |
| 2 | 2 | ||
| 3 | -import cn.iocoder.yudao.module.trade.api.aftersale.dto.AfterSaleSummaryRespDTO; | ||
| 4 | import cn.iocoder.yudao.module.trade.service.aftersale.AfterSaleService; | 3 | import cn.iocoder.yudao.module.trade.service.aftersale.AfterSaleService; |
| 5 | import org.springframework.stereotype.Service; | 4 | import org.springframework.stereotype.Service; |
| 6 | import org.springframework.validation.annotation.Validated; | 5 | import org.springframework.validation.annotation.Validated; |
| 7 | 6 | ||
| 8 | import javax.annotation.Resource; | 7 | import javax.annotation.Resource; |
| 9 | -import java.time.LocalDateTime; | ||
| 10 | 8 | ||
| 11 | /** | 9 | /** |
| 12 | * 售后 API 接口实现类 | 10 | * 售后 API 接口实现类 |
| @@ -20,9 +18,4 @@ public class TradeAfterSaleApiImpl implements TradeAfterSaleApi { | @@ -20,9 +18,4 @@ public class TradeAfterSaleApiImpl implements TradeAfterSaleApi { | ||
| 20 | @Resource | 18 | @Resource |
| 21 | private AfterSaleService afterSaleService; | 19 | private AfterSaleService afterSaleService; |
| 22 | 20 | ||
| 23 | - @Override | ||
| 24 | - public AfterSaleSummaryRespDTO getAfterSaleSummary(LocalDateTime beginTime, LocalDateTime endTime) { | ||
| 25 | - return afterSaleService.getAfterSaleSummary(beginTime, endTime); | ||
| 26 | - } | ||
| 27 | - | ||
| 28 | } | 21 | } |
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/api/brokerage/TradeBrokerageApiImpl.java
| @@ -5,7 +5,6 @@ import org.springframework.stereotype.Service; | @@ -5,7 +5,6 @@ import org.springframework.stereotype.Service; | ||
| 5 | import org.springframework.validation.annotation.Validated; | 5 | import org.springframework.validation.annotation.Validated; |
| 6 | 6 | ||
| 7 | import javax.annotation.Resource; | 7 | import javax.annotation.Resource; |
| 8 | -import java.time.LocalDateTime; | ||
| 9 | 8 | ||
| 10 | /** | 9 | /** |
| 11 | * 订单 API 接口实现类 | 10 | * 订单 API 接口实现类 |
| @@ -19,9 +18,4 @@ public class TradeBrokerageApiImpl implements TradeBrokerageApi { | @@ -19,9 +18,4 @@ public class TradeBrokerageApiImpl implements TradeBrokerageApi { | ||
| 19 | @Resource | 18 | @Resource |
| 20 | private BrokerageRecordService brokerageRecordService; | 19 | private BrokerageRecordService brokerageRecordService; |
| 21 | 20 | ||
| 22 | - @Override | ||
| 23 | - public Integer getBrokerageSettlementPriceSummary(LocalDateTime beginTime, LocalDateTime endTime) { | ||
| 24 | - return brokerageRecordService.getBrokerageSettlementPriceSummary(beginTime, endTime); | ||
| 25 | - } | ||
| 26 | - | ||
| 27 | } | 21 | } |
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/api/order/TradeOrderApiImpl.java
| 1 | package cn.iocoder.yudao.module.trade.api.order; | 1 | package cn.iocoder.yudao.module.trade.api.order; |
| 2 | 2 | ||
| 3 | import cn.iocoder.yudao.module.trade.api.order.dto.TradeOrderRespDTO; | 3 | import cn.iocoder.yudao.module.trade.api.order.dto.TradeOrderRespDTO; |
| 4 | -import cn.iocoder.yudao.module.trade.api.order.dto.TradeOrderSummaryRespDTO; | ||
| 5 | import cn.iocoder.yudao.module.trade.convert.order.TradeOrderConvert; | 4 | import cn.iocoder.yudao.module.trade.convert.order.TradeOrderConvert; |
| 5 | +import cn.iocoder.yudao.module.trade.dal.dataobject.order.TradeOrderDO; | ||
| 6 | import cn.iocoder.yudao.module.trade.service.order.TradeOrderQueryService; | 6 | import cn.iocoder.yudao.module.trade.service.order.TradeOrderQueryService; |
| 7 | import cn.iocoder.yudao.module.trade.service.order.TradeOrderUpdateService; | 7 | import cn.iocoder.yudao.module.trade.service.order.TradeOrderUpdateService; |
| 8 | import org.springframework.stereotype.Service; | 8 | import org.springframework.stereotype.Service; |
| 9 | import org.springframework.validation.annotation.Validated; | 9 | import org.springframework.validation.annotation.Validated; |
| 10 | 10 | ||
| 11 | import javax.annotation.Resource; | 11 | import javax.annotation.Resource; |
| 12 | -import java.time.LocalDateTime; | ||
| 13 | import java.util.Collection; | 12 | import java.util.Collection; |
| 14 | import java.util.List; | 13 | import java.util.List; |
| 15 | 14 | ||
| 15 | +import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; | ||
| 16 | +import static cn.iocoder.yudao.module.trade.enums.ErrorCodeConstants.ORDER_NOT_FOUND; | ||
| 17 | + | ||
| 16 | /** | 18 | /** |
| 17 | * 订单 API 接口实现类 | 19 | * 订单 API 接口实现类 |
| 18 | * | 20 | * |
| @@ -43,6 +45,11 @@ public class TradeOrderApiImpl implements TradeOrderApi { | @@ -43,6 +45,11 @@ public class TradeOrderApiImpl implements TradeOrderApi { | ||
| 43 | } | 45 | } |
| 44 | 46 | ||
| 45 | @Override | 47 | @Override |
| 48 | + public void updateOrderCombinationInfo(Long orderId, Long activityId, Long combinationRecordId, Long headId) { | ||
| 49 | + tradeOrderUpdateService.updateOrderCombinationInfo(orderId, activityId, combinationRecordId, headId); | ||
| 50 | + } | ||
| 51 | + | ||
| 52 | + @Override | ||
| 46 | public void cancelPaidOrder(Long userId, Long orderId) { | 53 | public void cancelPaidOrder(Long userId, Long orderId) { |
| 47 | tradeOrderUpdateService.cancelPaidOrder(userId, orderId); | 54 | tradeOrderUpdateService.cancelPaidOrder(userId, orderId); |
| 48 | } | 55 | } |
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/dal/mysql/aftersale/AfterSaleMapper.java
| 1 | package cn.iocoder.yudao.module.trade.dal.mysql.aftersale; | 1 | package cn.iocoder.yudao.module.trade.dal.mysql.aftersale; |
| 2 | 2 | ||
| 3 | -import cn.hutool.core.bean.BeanUtil; | ||
| 4 | -import cn.hutool.core.collection.CollUtil; | ||
| 5 | import cn.iocoder.yudao.framework.common.pojo.PageParam; | 3 | import cn.iocoder.yudao.framework.common.pojo.PageParam; |
| 6 | import cn.iocoder.yudao.framework.common.pojo.PageResult; | 4 | import cn.iocoder.yudao.framework.common.pojo.PageResult; |
| 7 | import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; | 5 | import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; |
| 8 | import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; | 6 | import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; |
| 9 | -import cn.iocoder.yudao.module.trade.api.aftersale.dto.AfterSaleSummaryRespDTO; | ||
| 10 | import cn.iocoder.yudao.module.trade.controller.admin.aftersale.vo.AfterSalePageReqVO; | 7 | import cn.iocoder.yudao.module.trade.controller.admin.aftersale.vo.AfterSalePageReqVO; |
| 11 | import cn.iocoder.yudao.module.trade.dal.dataobject.aftersale.AfterSaleDO; | 8 | import cn.iocoder.yudao.module.trade.dal.dataobject.aftersale.AfterSaleDO; |
| 12 | import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; | 9 | import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; |
| 13 | -import com.github.yulichang.toolkit.MPJWrappers; | ||
| 14 | import org.apache.ibatis.annotations.Mapper; | 10 | import org.apache.ibatis.annotations.Mapper; |
| 15 | 11 | ||
| 16 | -import java.time.LocalDateTime; | ||
| 17 | import java.util.Collection; | 12 | import java.util.Collection; |
| 18 | 13 | ||
| 19 | @Mapper | 14 | @Mapper |
| @@ -53,12 +48,4 @@ public interface AfterSaleMapper extends BaseMapperX<AfterSaleDO> { | @@ -53,12 +48,4 @@ public interface AfterSaleMapper extends BaseMapperX<AfterSaleDO> { | ||
| 53 | .in(AfterSaleDO::getStatus, statuses)); | 48 | .in(AfterSaleDO::getStatus, statuses)); |
| 54 | } | 49 | } |
| 55 | 50 | ||
| 56 | - default AfterSaleSummaryRespDTO selectSummaryByRefundTimeBetween(LocalDateTime beginTime, LocalDateTime endTime) { | ||
| 57 | - return BeanUtil.copyProperties(CollUtil.get(selectMaps(MPJWrappers.<AfterSaleDO>lambdaJoin() | ||
| 58 | - .selectCount(AfterSaleDO::getId, AfterSaleSummaryRespDTO::getAfterSaleCount) | ||
| 59 | - .selectSum(AfterSaleDO::getRefundPrice, AfterSaleSummaryRespDTO::getAfterSaleRefundPrice) | ||
| 60 | - .between(AfterSaleDO::getRefundTime, beginTime, endTime)), 0), | ||
| 61 | - AfterSaleSummaryRespDTO.class); | ||
| 62 | - } | ||
| 63 | - | ||
| 64 | } | 51 | } |
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/dal/mysql/brokerage/BrokerageRecordMapper.java
| 1 | package cn.iocoder.yudao.module.trade.dal.mysql.brokerage; | 1 | package cn.iocoder.yudao.module.trade.dal.mysql.brokerage; |
| 2 | 2 | ||
| 3 | import cn.hutool.core.bean.BeanUtil; | 3 | import cn.hutool.core.bean.BeanUtil; |
| 4 | -import cn.hutool.core.collection.CollUtil; | ||
| 5 | -import cn.hutool.core.convert.Convert; | ||
| 6 | import cn.iocoder.yudao.framework.common.pojo.PageResult; | 4 | import cn.iocoder.yudao.framework.common.pojo.PageResult; |
| 7 | import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; | 5 | import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; |
| 8 | import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; | 6 | import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; |
| @@ -111,13 +109,4 @@ public interface BrokerageRecordMapper extends BaseMapperX<BrokerageRecordDO> { | @@ -111,13 +109,4 @@ public interface BrokerageRecordMapper extends BaseMapperX<BrokerageRecordDO> { | ||
| 111 | @Param("beginTime") LocalDateTime beginTime, | 109 | @Param("beginTime") LocalDateTime beginTime, |
| 112 | @Param("endTime") LocalDateTime endTime); | 110 | @Param("endTime") LocalDateTime endTime); |
| 113 | 111 | ||
| 114 | - default Integer selectSummaryPriceByStatusAndUnfreezeTimeBetween(Integer bizType, Integer status, | ||
| 115 | - LocalDateTime beginTime, LocalDateTime endTime) { | ||
| 116 | - return Convert.toInt(CollUtil.getFirst(selectObjs(MPJWrappers.<BrokerageRecordDO>lambdaJoin() | ||
| 117 | - .selectSum(BrokerageRecordDO::getPrice) | ||
| 118 | - .eq(BrokerageRecordDO::getBizType, bizType) | ||
| 119 | - .eq(BrokerageRecordDO::getStatus, status) | ||
| 120 | - .between(BrokerageRecordDO::getUnfreezeTime, beginTime, endTime))), 0); | ||
| 121 | - } | ||
| 122 | - | ||
| 123 | } | 112 | } |
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/dal/mysql/order/TradeOrderMapper.java
| 1 | package cn.iocoder.yudao.module.trade.dal.mysql.order; | 1 | package cn.iocoder.yudao.module.trade.dal.mysql.order; |
| 2 | 2 | ||
| 3 | -import cn.hutool.core.bean.BeanUtil; | ||
| 4 | -import cn.hutool.core.collection.CollUtil; | ||
| 5 | import cn.iocoder.yudao.framework.common.pojo.PageResult; | 3 | import cn.iocoder.yudao.framework.common.pojo.PageResult; |
| 6 | import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; | 4 | import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; |
| 7 | import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; | 5 | import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; |
| 8 | -import cn.iocoder.yudao.module.trade.api.order.dto.TradeOrderSummaryRespDTO; | ||
| 9 | import cn.iocoder.yudao.module.trade.controller.admin.order.vo.TradeOrderPageReqVO; | 6 | import cn.iocoder.yudao.module.trade.controller.admin.order.vo.TradeOrderPageReqVO; |
| 10 | import cn.iocoder.yudao.module.trade.controller.app.order.vo.AppTradeOrderPageReqVO; | 7 | import cn.iocoder.yudao.module.trade.controller.app.order.vo.AppTradeOrderPageReqVO; |
| 11 | import cn.iocoder.yudao.module.trade.dal.dataobject.order.TradeOrderDO; | 8 | import cn.iocoder.yudao.module.trade.dal.dataobject.order.TradeOrderDO; |
| 12 | import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; | 9 | import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; |
| 13 | -import com.github.yulichang.toolkit.MPJWrappers; | ||
| 14 | import org.apache.ibatis.annotations.Mapper; | 10 | import org.apache.ibatis.annotations.Mapper; |
| 15 | 11 | ||
| 16 | import java.time.LocalDateTime; | 12 | import java.time.LocalDateTime; |
| @@ -93,19 +89,6 @@ public interface TradeOrderMapper extends BaseMapperX<TradeOrderDO> { | @@ -93,19 +89,6 @@ public interface TradeOrderMapper extends BaseMapperX<TradeOrderDO> { | ||
| 93 | .eq(TradeOrderDO::getSeckillActivityId, seckillActivityId)); | 89 | .eq(TradeOrderDO::getSeckillActivityId, seckillActivityId)); |
| 94 | } | 90 | } |
| 95 | 91 | ||
| 96 | - default TradeOrderSummaryRespDTO selectSummaryByPayTimeBetween(LocalDateTime beginTime, LocalDateTime endTime) { | ||
| 97 | - return BeanUtil.copyProperties(CollUtil.get(selectMaps(MPJWrappers.<TradeOrderDO>lambdaJoin() | ||
| 98 | - .selectCount(TradeOrderDO::getId, TradeOrderSummaryRespDTO::getOrderPayCount) | ||
| 99 | - .selectSum(TradeOrderDO::getPayPrice, TradeOrderSummaryRespDTO::getOrderPayPrice) | ||
| 100 | - .between(TradeOrderDO::getPayTime, beginTime, endTime)), 0), | ||
| 101 | - TradeOrderSummaryRespDTO.class); | ||
| 102 | - } | ||
| 103 | - | ||
| 104 | - default Long selectCountByCreateTimeBetween(LocalDateTime beginTime, LocalDateTime endTime) { | ||
| 105 | - return selectCount(new LambdaQueryWrapperX<TradeOrderDO>() | ||
| 106 | - .between(TradeOrderDO::getCreateTime, beginTime, endTime)); | ||
| 107 | - } | ||
| 108 | - | ||
| 109 | default TradeOrderDO selectOneByPickUpVerifyCode(String pickUpVerifyCode) { | 92 | default TradeOrderDO selectOneByPickUpVerifyCode(String pickUpVerifyCode) { |
| 110 | return selectOne(TradeOrderDO::getPickUpVerifyCode, pickUpVerifyCode); | 93 | return selectOne(TradeOrderDO::getPickUpVerifyCode, pickUpVerifyCode); |
| 111 | } | 94 | } |
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/service/aftersale/AfterSaleService.java
| @@ -2,7 +2,6 @@ package cn.iocoder.yudao.module.trade.service.aftersale; | @@ -2,7 +2,6 @@ package cn.iocoder.yudao.module.trade.service.aftersale; | ||
| 2 | 2 | ||
| 3 | import cn.iocoder.yudao.framework.common.pojo.PageParam; | 3 | import cn.iocoder.yudao.framework.common.pojo.PageParam; |
| 4 | import cn.iocoder.yudao.framework.common.pojo.PageResult; | 4 | import cn.iocoder.yudao.framework.common.pojo.PageResult; |
| 5 | -import cn.iocoder.yudao.module.trade.api.aftersale.dto.AfterSaleSummaryRespDTO; | ||
| 6 | import cn.iocoder.yudao.module.trade.controller.admin.aftersale.vo.AfterSaleDisagreeReqVO; | 5 | import cn.iocoder.yudao.module.trade.controller.admin.aftersale.vo.AfterSaleDisagreeReqVO; |
| 7 | import cn.iocoder.yudao.module.trade.controller.admin.aftersale.vo.AfterSalePageReqVO; | 6 | import cn.iocoder.yudao.module.trade.controller.admin.aftersale.vo.AfterSalePageReqVO; |
| 8 | import cn.iocoder.yudao.module.trade.controller.admin.aftersale.vo.AfterSaleRefuseReqVO; | 7 | import cn.iocoder.yudao.module.trade.controller.admin.aftersale.vo.AfterSaleRefuseReqVO; |
| @@ -10,8 +9,6 @@ import cn.iocoder.yudao.module.trade.controller.app.aftersale.vo.AppAfterSaleCre | @@ -10,8 +9,6 @@ import cn.iocoder.yudao.module.trade.controller.app.aftersale.vo.AppAfterSaleCre | ||
| 10 | import cn.iocoder.yudao.module.trade.controller.app.aftersale.vo.AppAfterSaleDeliveryReqVO; | 9 | import cn.iocoder.yudao.module.trade.controller.app.aftersale.vo.AppAfterSaleDeliveryReqVO; |
| 11 | import cn.iocoder.yudao.module.trade.dal.dataobject.aftersale.AfterSaleDO; | 10 | import cn.iocoder.yudao.module.trade.dal.dataobject.aftersale.AfterSaleDO; |
| 12 | 11 | ||
| 13 | -import java.time.LocalDateTime; | ||
| 14 | - | ||
| 15 | /** | 12 | /** |
| 16 | * 售后订单 Service 接口 | 13 | * 售后订单 Service 接口 |
| 17 | * | 14 | * |
| @@ -127,13 +124,4 @@ public interface AfterSaleService { | @@ -127,13 +124,4 @@ public interface AfterSaleService { | ||
| 127 | */ | 124 | */ |
| 128 | Long getApplyingAfterSaleCount(Long userId); | 125 | Long getApplyingAfterSaleCount(Long userId); |
| 129 | 126 | ||
| 130 | - /** | ||
| 131 | - * 获取售后单统计 | ||
| 132 | - * | ||
| 133 | - * @param beginTime 起始时间 | ||
| 134 | - * @param endTime 截止时间 | ||
| 135 | - * @return 售后统计结果 | ||
| 136 | - */ | ||
| 137 | - AfterSaleSummaryRespDTO getAfterSaleSummary(LocalDateTime beginTime, LocalDateTime endTime); | ||
| 138 | - | ||
| 139 | } | 127 | } |
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/service/aftersale/AfterSaleServiceImpl.java
| @@ -7,7 +7,6 @@ import cn.iocoder.yudao.framework.common.pojo.PageResult; | @@ -7,7 +7,6 @@ import cn.iocoder.yudao.framework.common.pojo.PageResult; | ||
| 7 | import cn.iocoder.yudao.framework.common.util.object.ObjectUtils; | 7 | import cn.iocoder.yudao.framework.common.util.object.ObjectUtils; |
| 8 | import cn.iocoder.yudao.module.pay.api.refund.PayRefundApi; | 8 | import cn.iocoder.yudao.module.pay.api.refund.PayRefundApi; |
| 9 | import cn.iocoder.yudao.module.pay.api.refund.dto.PayRefundCreateReqDTO; | 9 | import cn.iocoder.yudao.module.pay.api.refund.dto.PayRefundCreateReqDTO; |
| 10 | -import cn.iocoder.yudao.module.trade.api.aftersale.dto.AfterSaleSummaryRespDTO; | ||
| 11 | import cn.iocoder.yudao.module.trade.controller.admin.aftersale.vo.AfterSaleDisagreeReqVO; | 10 | import cn.iocoder.yudao.module.trade.controller.admin.aftersale.vo.AfterSaleDisagreeReqVO; |
| 12 | import cn.iocoder.yudao.module.trade.controller.admin.aftersale.vo.AfterSalePageReqVO; | 11 | import cn.iocoder.yudao.module.trade.controller.admin.aftersale.vo.AfterSalePageReqVO; |
| 13 | import cn.iocoder.yudao.module.trade.controller.admin.aftersale.vo.AfterSaleRefuseReqVO; | 12 | import cn.iocoder.yudao.module.trade.controller.admin.aftersale.vo.AfterSaleRefuseReqVO; |
| @@ -411,9 +410,4 @@ public class AfterSaleServiceImpl implements AfterSaleService { | @@ -411,9 +410,4 @@ public class AfterSaleServiceImpl implements AfterSaleService { | ||
| 411 | return tradeAfterSaleMapper.selectCountByUserIdAndStatus(userId, AfterSaleStatusEnum.APPLYING_STATUSES); | 410 | return tradeAfterSaleMapper.selectCountByUserIdAndStatus(userId, AfterSaleStatusEnum.APPLYING_STATUSES); |
| 412 | } | 411 | } |
| 413 | 412 | ||
| 414 | - @Override | ||
| 415 | - public AfterSaleSummaryRespDTO getAfterSaleSummary(LocalDateTime beginTime, LocalDateTime endTime) { | ||
| 416 | - return tradeAfterSaleMapper.selectSummaryByRefundTimeBetween(beginTime,endTime); | ||
| 417 | - } | ||
| 418 | - | ||
| 419 | } | 413 | } |
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/service/brokerage/BrokerageRecordService.java
| @@ -156,13 +156,4 @@ public interface BrokerageRecordService { | @@ -156,13 +156,4 @@ public interface BrokerageRecordService { | ||
| 156 | */ | 156 | */ |
| 157 | AppBrokerageProductPriceRespVO calculateProductBrokeragePrice(Long userId, Long spuId); | 157 | AppBrokerageProductPriceRespVO calculateProductBrokeragePrice(Long userId, Long spuId); |
| 158 | 158 | ||
| 159 | - /** | ||
| 160 | - * 获取已结算的佣金金额 | ||
| 161 | - * | ||
| 162 | - * @param beginTime 起始时间 | ||
| 163 | - * @param endTime 截止时间 | ||
| 164 | - * @return 已结算的佣金金额 | ||
| 165 | - */ | ||
| 166 | - Integer getBrokerageSettlementPriceSummary(LocalDateTime beginTime, LocalDateTime endTime); | ||
| 167 | - | ||
| 168 | } | 159 | } |
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/service/brokerage/BrokerageRecordServiceImpl.java
| @@ -356,13 +356,6 @@ public class BrokerageRecordServiceImpl implements BrokerageRecordService { | @@ -356,13 +356,6 @@ public class BrokerageRecordServiceImpl implements BrokerageRecordService { | ||
| 356 | return respVO; | 356 | return respVO; |
| 357 | } | 357 | } |
| 358 | 358 | ||
| 359 | - @Override | ||
| 360 | - public Integer getBrokerageSettlementPriceSummary(LocalDateTime beginTime, LocalDateTime endTime) { | ||
| 361 | - return brokerageRecordMapper.selectSummaryPriceByStatusAndUnfreezeTimeBetween( | ||
| 362 | - BrokerageRecordBizTypeEnum.ORDER.getType(), BrokerageRecordStatusEnum.SETTLEMENT.getStatus(), | ||
| 363 | - beginTime, endTime); | ||
| 364 | - } | ||
| 365 | - | ||
| 366 | /** | 359 | /** |
| 367 | * 获得自身的代理对象,解决 AOP 生效问题 | 360 | * 获得自身的代理对象,解决 AOP 生效问题 |
| 368 | * | 361 | * |
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/service/order/TradeOrderQueryService.java
| 1 | package cn.iocoder.yudao.module.trade.service.order; | 1 | package cn.iocoder.yudao.module.trade.service.order; |
| 2 | 2 | ||
| 3 | import cn.iocoder.yudao.framework.common.pojo.PageResult; | 3 | import cn.iocoder.yudao.framework.common.pojo.PageResult; |
| 4 | -import cn.iocoder.yudao.module.trade.api.order.dto.TradeOrderSummaryRespDTO; | ||
| 5 | import cn.iocoder.yudao.module.trade.controller.admin.order.vo.TradeOrderPageReqVO; | 4 | import cn.iocoder.yudao.module.trade.controller.admin.order.vo.TradeOrderPageReqVO; |
| 6 | import cn.iocoder.yudao.module.trade.controller.app.order.vo.AppTradeOrderPageReqVO; | 5 | import cn.iocoder.yudao.module.trade.controller.app.order.vo.AppTradeOrderPageReqVO; |
| 7 | import cn.iocoder.yudao.module.trade.dal.dataobject.order.TradeOrderDO; | 6 | import cn.iocoder.yudao.module.trade.dal.dataobject.order.TradeOrderDO; |
| 8 | import cn.iocoder.yudao.module.trade.dal.dataobject.order.TradeOrderItemDO; | 7 | import cn.iocoder.yudao.module.trade.dal.dataobject.order.TradeOrderItemDO; |
| 9 | import cn.iocoder.yudao.module.trade.framework.delivery.core.client.dto.ExpressTrackRespDTO; | 8 | import cn.iocoder.yudao.module.trade.framework.delivery.core.client.dto.ExpressTrackRespDTO; |
| 10 | 9 | ||
| 11 | -import java.time.LocalDateTime; | ||
| 12 | import java.util.Collection; | 10 | import java.util.Collection; |
| 13 | import java.util.List; | 11 | import java.util.List; |
| 14 | 12 | ||
| @@ -148,13 +146,4 @@ public interface TradeOrderQueryService { | @@ -148,13 +146,4 @@ public interface TradeOrderQueryService { | ||
| 148 | */ | 146 | */ |
| 149 | List<TradeOrderItemDO> getOrderItemListByOrderId(Collection<Long> orderIds); | 147 | List<TradeOrderItemDO> getOrderItemListByOrderId(Collection<Long> orderIds); |
| 150 | 148 | ||
| 151 | - /** | ||
| 152 | - * 获取订单统计 | ||
| 153 | - * | ||
| 154 | - * @param beginTime 起始时间 | ||
| 155 | - * @param endTime 截止时间 | ||
| 156 | - * @return 订单统计结果 | ||
| 157 | - */ | ||
| 158 | - TradeOrderSummaryRespDTO getOrderSummary(LocalDateTime beginTime, LocalDateTime endTime); | ||
| 159 | - | ||
| 160 | } | 149 | } |
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/service/order/TradeOrderQueryServiceImpl.java
| @@ -7,7 +7,6 @@ import cn.hutool.extra.spring.SpringUtil; | @@ -7,7 +7,6 @@ import cn.hutool.extra.spring.SpringUtil; | ||
| 7 | import cn.iocoder.yudao.framework.common.pojo.PageResult; | 7 | import cn.iocoder.yudao.framework.common.pojo.PageResult; |
| 8 | import cn.iocoder.yudao.module.member.api.user.MemberUserApi; | 8 | import cn.iocoder.yudao.module.member.api.user.MemberUserApi; |
| 9 | import cn.iocoder.yudao.module.member.api.user.dto.MemberUserRespDTO; | 9 | import cn.iocoder.yudao.module.member.api.user.dto.MemberUserRespDTO; |
| 10 | -import cn.iocoder.yudao.module.trade.api.order.dto.TradeOrderSummaryRespDTO; | ||
| 11 | import cn.iocoder.yudao.module.trade.controller.admin.order.vo.TradeOrderPageReqVO; | 10 | import cn.iocoder.yudao.module.trade.controller.admin.order.vo.TradeOrderPageReqVO; |
| 12 | import cn.iocoder.yudao.module.trade.controller.app.order.vo.AppTradeOrderPageReqVO; | 11 | import cn.iocoder.yudao.module.trade.controller.app.order.vo.AppTradeOrderPageReqVO; |
| 13 | import cn.iocoder.yudao.module.trade.dal.dataobject.delivery.DeliveryExpressDO; | 12 | import cn.iocoder.yudao.module.trade.dal.dataobject.delivery.DeliveryExpressDO; |
| @@ -25,7 +24,6 @@ import org.springframework.cache.annotation.Cacheable; | @@ -25,7 +24,6 @@ import org.springframework.cache.annotation.Cacheable; | ||
| 25 | import org.springframework.stereotype.Service; | 24 | import org.springframework.stereotype.Service; |
| 26 | 25 | ||
| 27 | import javax.annotation.Resource; | 26 | import javax.annotation.Resource; |
| 28 | -import java.time.LocalDateTime; | ||
| 29 | import java.util.*; | 27 | import java.util.*; |
| 30 | 28 | ||
| 31 | import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; | 29 | import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; |
| @@ -188,13 +186,6 @@ public class TradeOrderQueryServiceImpl implements TradeOrderQueryService { | @@ -188,13 +186,6 @@ public class TradeOrderQueryServiceImpl implements TradeOrderQueryService { | ||
| 188 | .setPhone(receiverMobile)); | 186 | .setPhone(receiverMobile)); |
| 189 | } | 187 | } |
| 190 | 188 | ||
| 191 | - @Override | ||
| 192 | - public TradeOrderSummaryRespDTO getOrderSummary(LocalDateTime beginTime, LocalDateTime endTime) { | ||
| 193 | - TradeOrderSummaryRespDTO dto = tradeOrderMapper.selectSummaryByPayTimeBetween(beginTime, endTime); | ||
| 194 | - dto.setOrderCreateCount(tradeOrderMapper.selectCountByCreateTimeBetween(beginTime, endTime)); | ||
| 195 | - return dto; | ||
| 196 | - } | ||
| 197 | - | ||
| 198 | 189 | ||
| 199 | // =================== Order Item =================== | 190 | // =================== Order Item =================== |
| 200 | 191 |
yudao-module-pay/yudao-module-pay-api/src/main/java/cn/iocoder/yudao/module/pay/api/wallet/PayWalletApi.java
| 1 | package cn.iocoder.yudao.module.pay.api.wallet; | 1 | package cn.iocoder.yudao.module.pay.api.wallet; |
| 2 | 2 | ||
| 3 | -import cn.iocoder.yudao.module.pay.api.wallet.dto.WalletSummaryRespDTO; | ||
| 4 | - | ||
| 5 | -import java.time.LocalDateTime; | ||
| 6 | - | ||
| 7 | /** | 3 | /** |
| 8 | * 钱包 API 接口 | 4 | * 钱包 API 接口 |
| 9 | * | 5 | * |
| @@ -11,13 +7,4 @@ import java.time.LocalDateTime; | @@ -11,13 +7,4 @@ import java.time.LocalDateTime; | ||
| 11 | */ | 7 | */ |
| 12 | public interface PayWalletApi { | 8 | public interface PayWalletApi { |
| 13 | 9 | ||
| 14 | - /** | ||
| 15 | - * 获取钱包统计 | ||
| 16 | - * | ||
| 17 | - * @param beginTime 起始时间 | ||
| 18 | - * @param endTime 截止时间 | ||
| 19 | - * @return 钱包统计 | ||
| 20 | - */ | ||
| 21 | - WalletSummaryRespDTO getWalletSummary(LocalDateTime beginTime, LocalDateTime endTime); | ||
| 22 | - | ||
| 23 | } | 10 | } |
yudao-module-pay/yudao-module-pay-biz/src/main/java/cn/iocoder/yudao/module/pay/api/wallet/PayWalletApiImpl.java
| 1 | package cn.iocoder.yudao.module.pay.api.wallet; | 1 | package cn.iocoder.yudao.module.pay.api.wallet; |
| 2 | 2 | ||
| 3 | -import cn.iocoder.yudao.module.pay.api.wallet.dto.WalletSummaryRespDTO; | ||
| 4 | -import cn.iocoder.yudao.module.pay.enums.member.PayWalletBizTypeEnum; | ||
| 5 | import cn.iocoder.yudao.module.pay.service.wallet.PayWalletRechargeService; | 3 | import cn.iocoder.yudao.module.pay.service.wallet.PayWalletRechargeService; |
| 6 | import cn.iocoder.yudao.module.pay.service.wallet.PayWalletTransactionService; | 4 | import cn.iocoder.yudao.module.pay.service.wallet.PayWalletTransactionService; |
| 7 | import org.springframework.stereotype.Service; | 5 | import org.springframework.stereotype.Service; |
| 8 | import org.springframework.validation.annotation.Validated; | 6 | import org.springframework.validation.annotation.Validated; |
| 9 | 7 | ||
| 10 | import javax.annotation.Resource; | 8 | import javax.annotation.Resource; |
| 11 | -import java.time.LocalDateTime; | ||
| 12 | 9 | ||
| 13 | /** | 10 | /** |
| 14 | * 钱包 API 接口实现类 | 11 | * 钱包 API 接口实现类 |
| @@ -24,11 +21,4 @@ public class PayWalletApiImpl implements PayWalletApi { | @@ -24,11 +21,4 @@ public class PayWalletApiImpl implements PayWalletApi { | ||
| 24 | @Resource | 21 | @Resource |
| 25 | private PayWalletTransactionService payWalletTransactionService; | 22 | private PayWalletTransactionService payWalletTransactionService; |
| 26 | 23 | ||
| 27 | - @Override | ||
| 28 | - public WalletSummaryRespDTO getWalletSummary(LocalDateTime beginTime, LocalDateTime endTime) { | ||
| 29 | - WalletSummaryRespDTO walletSummary = payWalletRechargeService.getWalletSummary(beginTime, endTime); | ||
| 30 | - walletSummary.setOrderWalletPayPrice(payWalletTransactionService.getPriceSummary(PayWalletBizTypeEnum.PAYMENT, beginTime, endTime)); | ||
| 31 | - return walletSummary; | ||
| 32 | - } | ||
| 33 | - | ||
| 34 | } | 24 | } |
yudao-module-pay/yudao-module-pay-biz/src/main/java/cn/iocoder/yudao/module/pay/dal/mysql/wallet/PayWalletRechargeMapper.java
| 1 | package cn.iocoder.yudao.module.pay.dal.mysql.wallet; | 1 | package cn.iocoder.yudao.module.pay.dal.mysql.wallet; |
| 2 | 2 | ||
| 3 | -import cn.hutool.core.bean.BeanUtil; | ||
| 4 | -import cn.hutool.core.collection.CollUtil; | ||
| 5 | import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; | 3 | import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; |
| 6 | import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; | 4 | import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; |
| 7 | -import cn.iocoder.yudao.module.pay.api.wallet.dto.WalletSummaryRespDTO; | ||
| 8 | import cn.iocoder.yudao.module.pay.dal.dataobject.wallet.PayWalletRechargeDO; | 5 | import cn.iocoder.yudao.module.pay.dal.dataobject.wallet.PayWalletRechargeDO; |
| 9 | -import cn.iocoder.yudao.module.pay.enums.refund.PayRefundStatusEnum; | ||
| 10 | -import com.github.yulichang.toolkit.MPJWrappers; | ||
| 11 | import org.apache.ibatis.annotations.Mapper; | 6 | import org.apache.ibatis.annotations.Mapper; |
| 12 | 7 | ||
| 13 | -import java.time.LocalDateTime; | ||
| 14 | - | ||
| 15 | @Mapper | 8 | @Mapper |
| 16 | public interface PayWalletRechargeMapper extends BaseMapperX<PayWalletRechargeDO> { | 9 | public interface PayWalletRechargeMapper extends BaseMapperX<PayWalletRechargeDO> { |
| 17 | 10 | ||
| @@ -25,24 +18,6 @@ public interface PayWalletRechargeMapper extends BaseMapperX<PayWalletRechargeDO | @@ -25,24 +18,6 @@ public interface PayWalletRechargeMapper extends BaseMapperX<PayWalletRechargeDO | ||
| 25 | .eq(PayWalletRechargeDO::getId, id).eq(PayWalletRechargeDO::getRefundStatus, whereRefundStatus)); | 18 | .eq(PayWalletRechargeDO::getId, id).eq(PayWalletRechargeDO::getRefundStatus, whereRefundStatus)); |
| 26 | } | 19 | } |
| 27 | 20 | ||
| 28 | - default WalletSummaryRespDTO selectRechargeSummaryByPayTimeBetween(LocalDateTime beginTime, LocalDateTime endTime) { | ||
| 29 | - return BeanUtil.copyProperties(CollUtil.get(selectMaps(MPJWrappers.<PayWalletRechargeDO>lambdaJoin() | ||
| 30 | - .selectCount(PayWalletRechargeDO::getId, WalletSummaryRespDTO::getRechargePayCount) | ||
| 31 | - .selectSum(PayWalletRechargeDO::getPayPrice, WalletSummaryRespDTO::getRechargePayPrice) | ||
| 32 | - .eq(PayWalletRechargeDO::getPayStatus, true) | ||
| 33 | - .between(PayWalletRechargeDO::getPayTime, beginTime, endTime)), 0), | ||
| 34 | - WalletSummaryRespDTO.class); | ||
| 35 | - } | ||
| 36 | - | ||
| 37 | - default WalletSummaryRespDTO selectRechargeSummaryByRefundTimeBetween(LocalDateTime beginTime, LocalDateTime endTime) { | ||
| 38 | - return BeanUtil.copyProperties(CollUtil.get(selectMaps(MPJWrappers.<PayWalletRechargeDO>lambdaJoin() | ||
| 39 | - .selectCount(PayWalletRechargeDO::getId, WalletSummaryRespDTO::getRechargeRefundCount) | ||
| 40 | - .selectSum(PayWalletRechargeDO::getRefundPayPrice, WalletSummaryRespDTO::getRechargeRefundPrice) | ||
| 41 | - .eq(PayWalletRechargeDO::getRefundStatus, PayRefundStatusEnum.SUCCESS.getStatus()) | ||
| 42 | - .between(PayWalletRechargeDO::getRefundTime, beginTime, endTime)), 0), | ||
| 43 | - WalletSummaryRespDTO.class); | ||
| 44 | - } | ||
| 45 | - | ||
| 46 | } | 21 | } |
| 47 | 22 | ||
| 48 | 23 |
yudao-module-pay/yudao-module-pay-biz/src/main/java/cn/iocoder/yudao/module/pay/dal/mysql/wallet/PayWalletTransactionMapper.java
| @@ -6,12 +6,9 @@ import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; | @@ -6,12 +6,9 @@ import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; | ||
| 6 | import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; | 6 | import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; |
| 7 | import cn.iocoder.yudao.module.pay.controller.app.wallet.vo.transaction.AppPayWalletTransactionPageReqVO; | 7 | import cn.iocoder.yudao.module.pay.controller.app.wallet.vo.transaction.AppPayWalletTransactionPageReqVO; |
| 8 | import cn.iocoder.yudao.module.pay.dal.dataobject.wallet.PayWalletTransactionDO; | 8 | import cn.iocoder.yudao.module.pay.dal.dataobject.wallet.PayWalletTransactionDO; |
| 9 | -import com.github.yulichang.toolkit.MPJWrappers; | ||
| 10 | import org.apache.ibatis.annotations.Mapper; | 9 | import org.apache.ibatis.annotations.Mapper; |
| 11 | 10 | ||
| 12 | -import java.time.LocalDateTime; | ||
| 13 | import java.util.Objects; | 11 | import java.util.Objects; |
| 14 | -import java.util.Optional; | ||
| 15 | 12 | ||
| 16 | @Mapper | 13 | @Mapper |
| 17 | public interface PayWalletTransactionMapper extends BaseMapperX<PayWalletTransactionDO> { | 14 | public interface PayWalletTransactionMapper extends BaseMapperX<PayWalletTransactionDO> { |
| @@ -38,15 +35,6 @@ public interface PayWalletTransactionMapper extends BaseMapperX<PayWalletTransac | @@ -38,15 +35,6 @@ public interface PayWalletTransactionMapper extends BaseMapperX<PayWalletTransac | ||
| 38 | PayWalletTransactionDO::getBizType, bizType); | 35 | PayWalletTransactionDO::getBizType, bizType); |
| 39 | } | 36 | } |
| 40 | 37 | ||
| 41 | - default Integer selectSummaryByBizTypeAndCreateTimeBetween(Integer type, LocalDateTime beginTime, LocalDateTime endTime) { | ||
| 42 | - return Optional.ofNullable(selectOne(MPJWrappers.<PayWalletTransactionDO>lambdaJoin() | ||
| 43 | - .selectSum(PayWalletTransactionDO::getPrice) | ||
| 44 | - .eq(PayWalletTransactionDO::getBizType, type) | ||
| 45 | - .between(PayWalletTransactionDO::getCreateTime, beginTime, endTime))) | ||
| 46 | - .map(PayWalletTransactionDO::getPrice) | ||
| 47 | - .orElse(0); | ||
| 48 | - } | ||
| 49 | - | ||
| 50 | } | 38 | } |
| 51 | 39 | ||
| 52 | 40 |
yudao-module-pay/yudao-module-pay-biz/src/main/java/cn/iocoder/yudao/module/pay/service/wallet/PayWalletRechargeService.java
| 1 | package cn.iocoder.yudao.module.pay.service.wallet; | 1 | package cn.iocoder.yudao.module.pay.service.wallet; |
| 2 | 2 | ||
| 3 | -import cn.iocoder.yudao.module.pay.api.wallet.dto.WalletSummaryRespDTO; | ||
| 4 | import cn.iocoder.yudao.module.pay.controller.app.wallet.vo.recharge.AppPayWalletRechargeCreateReqVO; | 3 | import cn.iocoder.yudao.module.pay.controller.app.wallet.vo.recharge.AppPayWalletRechargeCreateReqVO; |
| 5 | import cn.iocoder.yudao.module.pay.dal.dataobject.wallet.PayWalletRechargeDO; | 4 | import cn.iocoder.yudao.module.pay.dal.dataobject.wallet.PayWalletRechargeDO; |
| 6 | 5 | ||
| 7 | -import java.time.LocalDateTime; | ||
| 8 | - | ||
| 9 | /** | 6 | /** |
| 10 | * 钱包充值 Service 接口 | 7 | * 钱包充值 Service 接口 |
| 11 | * | 8 | * |
| @@ -16,8 +13,8 @@ public interface PayWalletRechargeService { | @@ -16,8 +13,8 @@ public interface PayWalletRechargeService { | ||
| 16 | /** | 13 | /** |
| 17 | * 创建钱包充值记录(发起充值) | 14 | * 创建钱包充值记录(发起充值) |
| 18 | * | 15 | * |
| 19 | - * @param userId 用户 id | ||
| 20 | - * @param userType 用户类型 | 16 | + * @param userId 用户 id |
| 17 | + * @param userType 用户类型 | ||
| 21 | * @param createReqVO 钱包充值请求 VO | 18 | * @param createReqVO 钱包充值请求 VO |
| 22 | * @return 钱包充值记录 | 19 | * @return 钱包充值记录 |
| 23 | */ | 20 | */ |
| @@ -27,32 +24,25 @@ public interface PayWalletRechargeService { | @@ -27,32 +24,25 @@ public interface PayWalletRechargeService { | ||
| 27 | /** | 24 | /** |
| 28 | * 更新钱包充值成功 | 25 | * 更新钱包充值成功 |
| 29 | * | 26 | * |
| 30 | - * @param id 钱包充值记录 id | 27 | + * @param id 钱包充值记录 id |
| 31 | * @param payOrderId 支付订单 id | 28 | * @param payOrderId 支付订单 id |
| 32 | */ | 29 | */ |
| 33 | void updateWalletRechargerPaid(Long id, Long payOrderId); | 30 | void updateWalletRechargerPaid(Long id, Long payOrderId); |
| 34 | 31 | ||
| 35 | /** | 32 | /** |
| 36 | * 发起钱包充值退款 | 33 | * 发起钱包充值退款 |
| 37 | - * @param id 钱包充值编号 | 34 | + * |
| 35 | + * @param id 钱包充值编号 | ||
| 38 | * @param userIp 用户 ip 地址 | 36 | * @param userIp 用户 ip 地址 |
| 39 | */ | 37 | */ |
| 40 | void refundWalletRecharge(Long id, String userIp); | 38 | void refundWalletRecharge(Long id, String userIp); |
| 41 | 39 | ||
| 42 | /** | 40 | /** |
| 43 | * 更新钱包充值记录为已退款 | 41 | * 更新钱包充值记录为已退款 |
| 44 | - * @param id 钱包充值 id | 42 | + * |
| 43 | + * @param id 钱包充值 id | ||
| 45 | * @param payRefundId 退款单id | 44 | * @param payRefundId 退款单id |
| 46 | */ | 45 | */ |
| 47 | void updateWalletRechargeRefunded(Long id, Long payRefundId); | 46 | void updateWalletRechargeRefunded(Long id, Long payRefundId); |
| 48 | 47 | ||
| 49 | - /** | ||
| 50 | - * 获取钱包统计 | ||
| 51 | - * | ||
| 52 | - * @param beginTime 起始时间 | ||
| 53 | - * @param endTime 截止时间 | ||
| 54 | - * @return 钱包统计 | ||
| 55 | - */ | ||
| 56 | - WalletSummaryRespDTO getWalletSummary(LocalDateTime beginTime, LocalDateTime endTime); | ||
| 57 | - | ||
| 58 | } | 48 | } |
yudao-module-pay/yudao-module-pay-biz/src/main/java/cn/iocoder/yudao/module/pay/service/wallet/PayWalletRechargeServiceImpl.java
| @@ -4,7 +4,6 @@ import cn.hutool.core.lang.Assert; | @@ -4,7 +4,6 @@ import cn.hutool.core.lang.Assert; | ||
| 4 | import cn.iocoder.yudao.framework.pay.core.enums.refund.PayRefundStatusRespEnum; | 4 | import cn.iocoder.yudao.framework.pay.core.enums.refund.PayRefundStatusRespEnum; |
| 5 | import cn.iocoder.yudao.module.pay.api.order.dto.PayOrderCreateReqDTO; | 5 | import cn.iocoder.yudao.module.pay.api.order.dto.PayOrderCreateReqDTO; |
| 6 | import cn.iocoder.yudao.module.pay.api.refund.dto.PayRefundCreateReqDTO; | 6 | import cn.iocoder.yudao.module.pay.api.refund.dto.PayRefundCreateReqDTO; |
| 7 | -import cn.iocoder.yudao.module.pay.api.wallet.dto.WalletSummaryRespDTO; | ||
| 8 | import cn.iocoder.yudao.module.pay.controller.app.wallet.vo.recharge.AppPayWalletRechargeCreateReqVO; | 7 | import cn.iocoder.yudao.module.pay.controller.app.wallet.vo.recharge.AppPayWalletRechargeCreateReqVO; |
| 9 | import cn.iocoder.yudao.module.pay.convert.wallet.PayWalletRechargeConvert; | 8 | import cn.iocoder.yudao.module.pay.convert.wallet.PayWalletRechargeConvert; |
| 10 | import cn.iocoder.yudao.module.pay.dal.dataobject.order.PayOrderDO; | 9 | import cn.iocoder.yudao.module.pay.dal.dataobject.order.PayOrderDO; |
| @@ -258,15 +257,4 @@ public class PayWalletRechargeServiceImpl implements PayWalletRechargeService { | @@ -258,15 +257,4 @@ public class PayWalletRechargeServiceImpl implements PayWalletRechargeService { | ||
| 258 | return payOrder; | 257 | return payOrder; |
| 259 | } | 258 | } |
| 260 | 259 | ||
| 261 | - @Override | ||
| 262 | - public WalletSummaryRespDTO getWalletSummary(LocalDateTime beginTime, LocalDateTime endTime) { | ||
| 263 | - WalletSummaryRespDTO paySummary = walletRechargeMapper.selectRechargeSummaryByPayTimeBetween(beginTime, endTime); | ||
| 264 | - WalletSummaryRespDTO refundSummary = walletRechargeMapper.selectRechargeSummaryByRefundTimeBetween(beginTime, endTime); | ||
| 265 | - | ||
| 266 | - paySummary.setRechargeRefundCount(refundSummary.getRechargeRefundCount()); | ||
| 267 | - paySummary.setRechargeRefundPrice(refundSummary.getRechargeRefundPrice()); | ||
| 268 | - | ||
| 269 | - return paySummary; | ||
| 270 | - } | ||
| 271 | - | ||
| 272 | } | 260 | } |
yudao-module-pay/yudao-module-pay-biz/src/main/java/cn/iocoder/yudao/module/pay/service/wallet/PayWalletService.java
| 1 | package cn.iocoder.yudao.module.pay.service.wallet; | 1 | package cn.iocoder.yudao.module.pay.service.wallet; |
| 2 | 2 | ||
| 3 | -import cn.iocoder.yudao.module.pay.api.wallet.dto.WalletSummaryRespDTO; | ||
| 4 | import cn.iocoder.yudao.module.pay.dal.dataobject.wallet.PayWalletDO; | 3 | import cn.iocoder.yudao.module.pay.dal.dataobject.wallet.PayWalletDO; |
| 5 | import cn.iocoder.yudao.module.pay.dal.dataobject.wallet.PayWalletTransactionDO; | 4 | import cn.iocoder.yudao.module.pay.dal.dataobject.wallet.PayWalletTransactionDO; |
| 6 | import cn.iocoder.yudao.module.pay.enums.member.PayWalletBizTypeEnum; | 5 | import cn.iocoder.yudao.module.pay.enums.member.PayWalletBizTypeEnum; |
| 7 | 6 | ||
| 8 | -import java.time.LocalDateTime; | ||
| 9 | - | ||
| 10 | /** | 7 | /** |
| 11 | * 钱包 Service 接口 | 8 | * 钱包 Service 接口 |
| 12 | * | 9 | * |
yudao-module-pay/yudao-module-pay-biz/src/main/java/cn/iocoder/yudao/module/pay/service/wallet/PayWalletServiceImpl.java
| 1 | package cn.iocoder.yudao.module.pay.service.wallet; | 1 | package cn.iocoder.yudao.module.pay.service.wallet; |
| 2 | 2 | ||
| 3 | import cn.hutool.core.lang.Assert; | 3 | import cn.hutool.core.lang.Assert; |
| 4 | -import cn.iocoder.yudao.module.pay.api.wallet.dto.WalletSummaryRespDTO; | ||
| 5 | import cn.iocoder.yudao.module.pay.dal.dataobject.order.PayOrderExtensionDO; | 4 | import cn.iocoder.yudao.module.pay.dal.dataobject.order.PayOrderExtensionDO; |
| 6 | import cn.iocoder.yudao.module.pay.dal.dataobject.refund.PayRefundDO; | 5 | import cn.iocoder.yudao.module.pay.dal.dataobject.refund.PayRefundDO; |
| 7 | import cn.iocoder.yudao.module.pay.dal.dataobject.wallet.PayWalletDO; | 6 | import cn.iocoder.yudao.module.pay.dal.dataobject.wallet.PayWalletDO; |
yudao-module-pay/yudao-module-pay-biz/src/main/java/cn/iocoder/yudao/module/pay/service/wallet/PayWalletTransactionService.java
| @@ -7,7 +7,6 @@ import cn.iocoder.yudao.module.pay.enums.member.PayWalletBizTypeEnum; | @@ -7,7 +7,6 @@ import cn.iocoder.yudao.module.pay.enums.member.PayWalletBizTypeEnum; | ||
| 7 | import cn.iocoder.yudao.module.pay.service.wallet.bo.WalletTransactionCreateReqBO; | 7 | import cn.iocoder.yudao.module.pay.service.wallet.bo.WalletTransactionCreateReqBO; |
| 8 | 8 | ||
| 9 | import javax.validation.Valid; | 9 | import javax.validation.Valid; |
| 10 | -import java.time.LocalDateTime; | ||
| 11 | 10 | ||
| 12 | /** | 11 | /** |
| 13 | * 钱包余额流水 Service 接口 | 12 | * 钱包余额流水 Service 接口 |
| @@ -50,14 +49,4 @@ public interface PayWalletTransactionService { | @@ -50,14 +49,4 @@ public interface PayWalletTransactionService { | ||
| 50 | */ | 49 | */ |
| 51 | PayWalletTransactionDO getWalletTransaction(String bizId, PayWalletBizTypeEnum type); | 50 | PayWalletTransactionDO getWalletTransaction(String bizId, PayWalletBizTypeEnum type); |
| 52 | 51 | ||
| 53 | - /** | ||
| 54 | - * 获取支付金额合计 | ||
| 55 | - * | ||
| 56 | - * @param bizType 业务类型 | ||
| 57 | - * @param beginTime 开始时间 | ||
| 58 | - * @param endTime 结束时间 | ||
| 59 | - * @return 支付金额合计 | ||
| 60 | - */ | ||
| 61 | - Integer getPriceSummary(PayWalletBizTypeEnum bizType, LocalDateTime beginTime, LocalDateTime endTime); | ||
| 62 | - | ||
| 63 | } | 52 | } |
yudao-module-pay/yudao-module-pay-biz/src/main/java/cn/iocoder/yudao/module/pay/service/wallet/PayWalletTransactionServiceImpl.java
| @@ -13,7 +13,6 @@ import lombok.extern.slf4j.Slf4j; | @@ -13,7 +13,6 @@ import lombok.extern.slf4j.Slf4j; | ||
| 13 | import org.springframework.stereotype.Service; | 13 | import org.springframework.stereotype.Service; |
| 14 | 14 | ||
| 15 | import javax.annotation.Resource; | 15 | import javax.annotation.Resource; |
| 16 | -import java.time.LocalDateTime; | ||
| 17 | 16 | ||
| 18 | /** | 17 | /** |
| 19 | * 钱包流水 Service 实现类 | 18 | * 钱包流水 Service 实现类 |
| @@ -61,9 +60,4 @@ public class PayWalletTransactionServiceImpl implements PayWalletTransactionServ | @@ -61,9 +60,4 @@ public class PayWalletTransactionServiceImpl implements PayWalletTransactionServ | ||
| 61 | return payWalletTransactionMapper.selectByBiz(bizId, type.getType()); | 60 | return payWalletTransactionMapper.selectByBiz(bizId, type.getType()); |
| 62 | } | 61 | } |
| 63 | 62 | ||
| 64 | - @Override | ||
| 65 | - public Integer getPriceSummary(PayWalletBizTypeEnum bizType, LocalDateTime beginTime, LocalDateTime endTime) { | ||
| 66 | - return payWalletTransactionMapper.selectSummaryByBizTypeAndCreateTimeBetween(bizType.getType(), beginTime, endTime); | ||
| 67 | - } | ||
| 68 | - | ||
| 69 | } | 63 | } |
yudao-server/src/main/resources/application-local.yaml
| @@ -167,6 +167,7 @@ logging: | @@ -167,6 +167,7 @@ logging: | ||
| 167 | cn.iocoder.yudao.module.member.dal.mysql: debug | 167 | cn.iocoder.yudao.module.member.dal.mysql: debug |
| 168 | cn.iocoder.yudao.module.trade.dal.mysql: debug | 168 | cn.iocoder.yudao.module.trade.dal.mysql: debug |
| 169 | cn.iocoder.yudao.module.promotion.dal.mysql: debug | 169 | cn.iocoder.yudao.module.promotion.dal.mysql: debug |
| 170 | + cn.iocoder.yudao.module.statistics.dal.mysql: debug | ||
| 170 | 171 | ||
| 171 | debug: false | 172 | debug: false |
| 172 | 173 |