Commit d8e1610495fb3dfc66c1d368d4e26af952e8d37f

Authored by YunaiV
1 parent eca93073

feat: enhance MyBatis utility for sorting and update SQL aliases in TradeOrderStatisticsMapper

yudao-framework/yudao-spring-boot-starter-mybatis/src/main/java/cn/iocoder/yudao/framework/mybatis/core/mapper/BaseMapperX.java
... ... @@ -42,6 +42,7 @@ public interface BaseMapperX<T> extends MPJBaseMapper<T> {
42 42 default PageResult<T> selectPage(PageParam pageParam, Collection<SortingField> sortingFields, @Param("ew") Wrapper<T> queryWrapper) {
43 43 // 特殊:不分页,直接查询全部
44 44 if (PageParam.PAGE_SIZE_NONE.equals(pageParam.getPageSize())) {
  45 + MyBatisUtils.addOrder(queryWrapper, sortingFields);
45 46 List<T> list = selectList(queryWrapper);
46 47 return new PageResult<>(list, (long) list.size());
47 48 }
... ...
yudao-framework/yudao-spring-boot-starter-mybatis/src/main/java/cn/iocoder/yudao/framework/mybatis/core/util/MyBatisUtils.java
1 1 package cn.iocoder.yudao.framework.mybatis.core.util;
2 2  
3   -import cn.hutool.core.collection.CollectionUtil;
  3 +import cn.hutool.core.collection.CollUtil;
4 4 import cn.hutool.core.lang.func.Func1;
5 5 import cn.hutool.core.lang.func.LambdaUtil;
6 6 import cn.hutool.core.util.StrUtil;
... ... @@ -8,6 +8,8 @@ import cn.iocoder.yudao.framework.common.pojo.PageParam;
8 8 import cn.iocoder.yudao.framework.common.pojo.SortingField;
9 9 import cn.iocoder.yudao.framework.mybatis.core.enums.DbTypeEnum;
10 10 import com.baomidou.mybatisplus.annotation.DbType;
  11 +import com.baomidou.mybatisplus.core.conditions.Wrapper;
  12 +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
11 13 import com.baomidou.mybatisplus.core.metadata.OrderItem;
12 14 import com.baomidou.mybatisplus.core.toolkit.StringPool;
13 15 import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
... ... @@ -20,7 +22,6 @@ import net.sf.jsqlparser.schema.Table;
20 22 import java.util.ArrayList;
21 23 import java.util.Collection;
22 24 import java.util.List;
23   -import java.util.stream.Collectors;
24 25  
25 26 /**
26 27 * MyBatis 工具类
... ... @@ -37,15 +38,27 @@ public class MyBatisUtils {
37 38 // 页码 + 数量
38 39 Page<T> page = new Page<>(pageParam.getPageNo(), pageParam.getPageSize());
39 40 // 排序字段
40   - if (!CollectionUtil.isEmpty(sortingFields)) {
41   - page.addOrder(sortingFields.stream().map(sortingField -> SortingField.ORDER_ASC.equals(sortingField.getOrder())
42   - ? OrderItem.asc(StrUtil.toUnderlineCase(sortingField.getField()))
43   - : OrderItem.desc(StrUtil.toUnderlineCase(sortingField.getField())))
44   - .collect(Collectors.toList()));
  41 + if (CollUtil.isNotEmpty(sortingFields)) {
  42 + for (SortingField sortingField : sortingFields) {
  43 + page.addOrder(new OrderItem().setAsc(SortingField.ORDER_ASC.equals(sortingField.getOrder()))
  44 + .setColumn(StrUtil.toUnderlineCase(sortingField.getField())));
  45 + }
45 46 }
46 47 return page;
47 48 }
48 49  
  50 + public static <T> void addOrder(Wrapper<T> wrapper, Collection<SortingField> sortingFields) {
  51 + if (CollUtil.isEmpty(sortingFields)) {
  52 + return;
  53 + }
  54 + QueryWrapper<T> query = (QueryWrapper<T>) wrapper;
  55 + for (SortingField sortingField : sortingFields) {
  56 + query.orderBy(true,
  57 + SortingField.ORDER_ASC.equals(sortingField.getOrder()),
  58 + StrUtil.toUnderlineCase(sortingField.getField()));
  59 + }
  60 + }
  61 +
49 62 /**
50 63 * 将拦截器添加到链中
51 64 * 由于 MybatisPlusInterceptor 不支持添加拦截器,所以只能全量设置
... ...
yudao-module-mall/yudao-module-statistics/src/main/resources/mapper/trade/TradeOrderStatisticsMapper.xml
... ... @@ -76,8 +76,8 @@
76 76 <select id="selectListByPayTimeBetweenAndGroupByMonth"
77 77 resultType="cn.iocoder.yudao.module.statistics.controller.admin.trade.vo.TradeOrderTrendRespVO">
78 78 SELECT DATE_FORMAT(pay_time, '%Y-%m') AS date,
79   - COUNT(1) AS orderPayCount,
80   - SUM(pay_price) AS orderPayPrice
  79 + COUNT(1) AS order_pay_count,
  80 + SUM(pay_price) AS order_pay_price
81 81 FROM trade_order
82 82 WHERE pay_status = TRUE
83 83 AND create_time BETWEEN #{beginTime} AND #{endTime}
... ... @@ -95,8 +95,8 @@
95 95  
96 96 <select id="selectPaySummaryByPayStatusAndPayTimeBetween"
97 97 resultType="cn.iocoder.yudao.module.statistics.controller.admin.trade.vo.TradeOrderSummaryRespVO">
98   - SELECT IFNULL(SUM(pay_price), 0) AS orderPayPrice,
99   - COUNT(1) AS orderPayCount
  98 + SELECT IFNULL(SUM(pay_price), 0) AS order_pay_price,
  99 + COUNT(1) AS order_pay_count
100 100 FROM trade_order
101 101 WHERE pay_status = #{payStatus}
102 102 AND pay_time BETWEEN #{beginTime} AND #{endTime}
... ...