From 884f5c68ac8c738f90f1ca257605cfbb5d7f12db Mon Sep 17 00:00:00 2001
From: mitao <2763622819@qq.com>
Date: 星期三, 26 六月 2024 09:09:27 +0800
Subject: [PATCH] 提交【管理后台】-工作台接口

---
 ruoyi-modules/ruoyi-order/src/main/resources/mapper/order/OrderMapper.xml                                    |   12 +
 ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/service/impl/AuctionGoodsServiceImpl.java        |   28 ++-
 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/management/vo/MgtAmountChartVO.java       |   20 ++
 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/management/dto/MgtOrderStaticsQuery.java  |    6 
 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/management/vo/MgtOrderStaticsVO.java      |   14 
 ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/constant/CacheConstants.java              |    2 
 ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/RuoYiGoodsApplication.java                           |    2 
 ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/RuoYiAuctionApplication.java                     |    4 
 ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/GoodsSkuServiceImpl.java                |    7 
 ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/service/async/AuctionAsyncMethodService.java     |   11 
 ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/async/AsyncMethodService.java                |    5 
 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/OrderServiceImpl.java                   |   12 +
 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/management/vo/MgtOrderStaticsChartVO.java |   30 +++
 ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/task/AuctionGoodsScheduler.java                  |    2 
 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/management/vo/MgtCountChartVO.java        |   18 ++
 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/MgtBusinessDataService.java             |  267 ++++++++++++++++++++++++++++
 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/mapper/OrderMapper.java                              |   13 +
 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/IOrderService.java                           |   10 +
 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/management/MgtBusinessDataController.java |   24 ++
 19 files changed, 444 insertions(+), 43 deletions(-)

diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/constant/CacheConstants.java b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/constant/CacheConstants.java
index 9987afb..2ccbc5c 100644
--- a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/constant/CacheConstants.java
+++ b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/constant/CacheConstants.java
@@ -10,7 +10,7 @@
     /**
      * 缓存有效期,默认720(分钟)
      */
-    public final static long EXPIRATION = 720;
+    public final static long EXPIRATION = 720 * 10;
 
     /**
      * 缓存刷新时间,默认120(分钟)
diff --git a/ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/RuoYiAuctionApplication.java b/ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/RuoYiAuctionApplication.java
index db66f58..802f5f2 100644
--- a/ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/RuoYiAuctionApplication.java
+++ b/ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/RuoYiAuctionApplication.java
@@ -6,12 +6,16 @@
 import org.mybatis.spring.annotation.MapperScan;
 import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.scheduling.annotation.EnableAsync;
+import org.springframework.scheduling.annotation.EnableScheduling;
 
 /**
  * 系统模块
  * 
  * @author ruoyi
  */
+@EnableAsync
+@EnableScheduling
 @EnableCustomConfig
 @MapperScan({"com.ruoyi.auction.mapper"})
 @EnableCustomSwagger2
diff --git a/ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/service/async/AuctionAsyncMethodService.java b/ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/service/async/AuctionAsyncMethodService.java
index 2886e27..983c10c 100644
--- a/ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/service/async/AuctionAsyncMethodService.java
+++ b/ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/service/async/AuctionAsyncMethodService.java
@@ -32,6 +32,7 @@
     @Async
     @Transactional(rollbackFor = Exception.class)
     public void auctionGoodsScheduleTask(List<AuctionGoods> auctionGoodsList) {
+        log.info("开始执行定时任务");
         for (AuctionGoods auctionGoods : auctionGoodsList) {
             LocalDateTime startTime = auctionGoods.getStartTime();
             LocalDateTime endTime = auctionGoods.getEndTime();
@@ -93,9 +94,6 @@
     private void handleStartDelayTask(Long id, DelayTaskEnum delayTaskEnum, LocalDateTime startTime,
             Long timeout) {
         String startTaskKey = delayTaskEnum.getCode() + "-" + id;
-        redisService.setCacheObject(
-                startTaskKey,
-                startTime, timeout, TimeUnit.SECONDS);
         // 查询延时任务
         DelayTask startDelayTask = sysUserClient.getDelayTask(
                 startTaskKey, SecurityConstants.INNER).getData();
@@ -109,10 +107,8 @@
             sysUserClient.addDelayTask(startDelayTask, SecurityConstants.INNER);
         } else {
             if (!startDelayTask.getExecuteTime().isEqual(startTime)) {
-                sysUserClient.deleteDelayTask(
-                        startTaskKey, SecurityConstants.INNER);
-                redisService.deleteObject(
-                        startTaskKey);
+                sysUserClient.deleteDelayTask(startTaskKey, SecurityConstants.INNER);
+                redisService.deleteObject(startTaskKey);
                 startDelayTask.setDelFlag(0);
                 startDelayTask.setCreateTime(LocalDateTime.now());
                 startDelayTask.setExecuteTime(LocalDateTime.now().plusSeconds(timeout));
@@ -121,6 +117,7 @@
                 sysUserClient.addDelayTask(startDelayTask, SecurityConstants.INNER);
             }
         }
+        redisService.setCacheObject(startTaskKey, startTime, timeout, TimeUnit.SECONDS);
         log.info(">>>>>>>>>>>>>>>>>>>>延时任务{}执行了<<<<<<<<<<<<<<<<<<<<", startTaskKey);
     }
 }
diff --git a/ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/service/impl/AuctionGoodsServiceImpl.java b/ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/service/impl/AuctionGoodsServiceImpl.java
index d69ae1f..676db97 100644
--- a/ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/service/impl/AuctionGoodsServiceImpl.java
+++ b/ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/service/impl/AuctionGoodsServiceImpl.java
@@ -66,7 +66,14 @@
 import io.seata.spring.annotation.GlobalTransactional;
 import java.math.BigDecimal;
 import java.time.LocalDateTime;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Objects;
+import java.util.Set;
 import java.util.concurrent.ConcurrentHashMap;
 import java.util.stream.Collectors;
 import javax.annotation.Resource;
@@ -213,6 +220,15 @@
             if (goodsSku.getStock() + auctionGoodsOrg.getAuctionStock() < dto.getAuctionStock()) {
                 throw new ServiceException("商品库存不足");
             }
+            if (!auctionGoodsOrg.getAuctionStock().equals(dto.getAuctionStock())) {
+                // 更新商品库存
+                GoodsStockUpdDTO goodsStockUpdDTO = new GoodsStockUpdDTO();
+                goodsStockUpdDTO.setGoodsSkuId(goodsSkuId);
+                goodsStockUpdDTO.setAuctionStock(
+                        auctionGoodsOrg.getAuctionStock() - dto.getAuctionStock());
+                goodsSkuClient.updGoodsStock(Lists.newArrayList(goodsStockUpdDTO),
+                        SecurityConstants.INNER);
+            }
             auctionGoodsOrg.setStartingPrice(dto.getStartingPrice());
             auctionGoodsOrg.setMinimumMarkupAmount(dto.getMinimumMarkupAmount());
             auctionGoodsOrg.setStartTime(dto.getStartTime());
@@ -224,15 +240,8 @@
             auctionGoodsOrg.setShareTitle(dto.getShareTitle());
             auctionGoodsOrg.setSharePic(dto.getSharePic());
             this.updateById(auctionGoodsOrg);
-            // 更新商品库存
-            GoodsStockUpdDTO goodsStockUpdDTO = new GoodsStockUpdDTO();
-            goodsStockUpdDTO.setGoodsSkuId(goodsSkuId);
-            goodsStockUpdDTO.setAuctionStock(
-                    auctionGoodsOrg.getAuctionStock() - dto.getAuctionStock());
-            goodsSkuClient.updGoodsStock(Lists.newArrayList(goodsStockUpdDTO),
-                    SecurityConstants.INNER);
-            auctionAsyncMethodService.auctionGoodsScheduleTask(Lists.newArrayList(auctionGoods));
         }
+        auctionAsyncMethodService.auctionGoodsScheduleTask(Lists.newArrayList(auctionGoods));
     }
 
     /**
@@ -640,7 +649,6 @@
                 .equals(AuctionStartStatusEnum.IN_AUCTION)) {
             auctionGoods.setStartStatus(AuctionStartStatusEnum.ENDED);
             this.updateById(auctionGoods);
-            // TODO 退保证金
             orderClient.returnBondByAuctionGoodsId(id, SecurityConstants.INNER);
 
             Map<String, Object> map = new ConcurrentHashMap<>();
diff --git a/ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/task/AuctionGoodsScheduler.java b/ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/task/AuctionGoodsScheduler.java
index 6e1d109..a41d75c 100644
--- a/ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/task/AuctionGoodsScheduler.java
+++ b/ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/task/AuctionGoodsScheduler.java
@@ -31,7 +31,7 @@
     }
 
     private void handleTaskStart() {
-        log.info(">>>>>>>>>>>>>>>>>>>>定时任务秒杀/团购开始执行<<<<<<<<<<<<<<<<<<<<");
+        log.info(">>>>>>>>>>>>>>>>>>>>定时任务普通拍品开始执行<<<<<<<<<<<<<<<<<<<<");
         LocalDateTime checkTime = LocalDateTime.now().plusHours(1);
         List<AuctionGoods> list = auctionGoodsService.lambdaQuery()
                 .eq(AuctionGoods::getListingStatus, ListingStatusEnum.ON_SHELVES)
diff --git a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/RuoYiGoodsApplication.java b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/RuoYiGoodsApplication.java
index 9422961..65762d0 100644
--- a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/RuoYiGoodsApplication.java
+++ b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/RuoYiGoodsApplication.java
@@ -6,6 +6,7 @@
 import org.mybatis.spring.annotation.MapperScan;
 import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.scheduling.annotation.EnableAsync;
 import org.springframework.scheduling.annotation.EnableScheduling;
 
 /**
@@ -13,6 +14,7 @@
  * 
  * @author ruoyi
  */
+@EnableAsync
 @EnableCustomConfig
 @MapperScan({"com.ruoyi.goods.mapper"})
 @EnableCustomSwagger2
diff --git a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/async/AsyncMethodService.java b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/async/AsyncMethodService.java
index 46b2c60..4dfb39a 100644
--- a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/async/AsyncMethodService.java
+++ b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/async/AsyncMethodService.java
@@ -3,7 +3,6 @@
 import com.ruoyi.common.core.constant.SecurityConstants;
 import com.ruoyi.common.core.utils.StringUtils;
 import com.ruoyi.common.redis.service.RedisService;
-import com.ruoyi.system.api.domain.GoodsGroupPurchase;
 import com.ruoyi.system.api.constants.DelayTaskEnum;
 import com.ruoyi.system.api.domain.DelayTask;
 import com.ruoyi.system.api.domain.GoodsGroupPurchase;
@@ -120,9 +119,6 @@
     private void handleStartDelayTask(Long id, DelayTaskEnum delayTaskEnum, LocalDateTime startTime,
             Long timeout) {
         String startTaskKey = delayTaskEnum.getCode() + "-" + id;
-        redisService.setCacheObject(
-                startTaskKey,
-                startTime, timeout, TimeUnit.SECONDS);
         //查询延时任务
         DelayTask startDelayTask = sysUserClient.getDelayTask(
                 startTaskKey, SecurityConstants.INNER).getData();
@@ -148,6 +144,7 @@
                 sysUserClient.addDelayTask(startDelayTask, SecurityConstants.INNER);
             }
         }
+        redisService.setCacheObject(startTaskKey, startTime, timeout, TimeUnit.SECONDS);
         log.info(">>>>>>>>>>>>>>>>>>>>延时任务{}执行了<<<<<<<<<<<<<<<<<<<<", startTaskKey);
     }
 }
diff --git a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/GoodsSkuServiceImpl.java b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/GoodsSkuServiceImpl.java
index d3a3065..e900f48 100644
--- a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/GoodsSkuServiceImpl.java
+++ b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/GoodsSkuServiceImpl.java
@@ -17,7 +17,6 @@
 import com.ruoyi.goods.controller.management.dto.GoodsInfoTitleValueDTO;
 import com.ruoyi.goods.controller.management.dto.GoodsSkuDTO;
 import com.ruoyi.goods.controller.management.dto.GoodsSkuQuery;
-import com.ruoyi.system.api.domain.vo.GoodsInfoTitleValueVO;
 import com.ruoyi.goods.controller.management.vo.GoodsSkuVO;
 import com.ruoyi.goods.domain.GoodsBrowseRecord;
 import com.ruoyi.goods.domain.GoodsInfoTitleValue;
@@ -39,6 +38,7 @@
 import com.ruoyi.system.api.domain.dto.GoodsStockUpdDTO;
 import com.ruoyi.system.api.domain.dto.HomeGoodsSkuDTO;
 import com.ruoyi.system.api.domain.dto.ListStatusDTO;
+import com.ruoyi.system.api.domain.vo.GoodsInfoTitleValueVO;
 import com.ruoyi.system.api.domain.vo.HomeGoodsSkuInfoVO;
 import com.ruoyi.system.api.domain.vo.HomeGoodsSkuListVO;
 import com.ruoyi.system.api.domain.vo.OrderVO;
@@ -270,6 +270,7 @@
     @Override
     @Transactional(propagation = Propagation.REQUIRES_NEW)
     public void updGoodsStock(List<GoodsStockUpdDTO> goodsStockUpdDTOS) {
+        log.info("开始批量更新商品库存");
         List<Long> goodsSkuIdList = goodsStockUpdDTOS.stream()
                 .map(GoodsStockUpdDTO::getGoodsSkuId)
                 .collect(Collectors.toList());
@@ -287,7 +288,7 @@
             try {
                 redissonLock.lock(30, TimeUnit.SECONDS);
                 Integer auctionStock = stockMap.get(skus.getId());
-                if (StringUtils.isNotNull(auctionStock) && auctionStock > 0) {
+                if (StringUtils.isNotNull(auctionStock)) {
                     // 更新商品库存,更新五次失败抛出异常
                     boolean isUpdated = false;
                     for (int i = 0; i < 5; i++) {
@@ -306,7 +307,7 @@
                 redissonLock.unlock();
             }
         }
-
+        log.info("批量更新商品库存结束");
     }
 
     @Override
diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/management/MgtBusinessDataController.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/management/MgtBusinessDataController.java
index 7327e45..737ac11 100644
--- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/management/MgtBusinessDataController.java
+++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/management/MgtBusinessDataController.java
@@ -2,11 +2,14 @@
 
 import com.ruoyi.common.core.domain.R;
 import com.ruoyi.order.controller.management.dto.MgtOrderStaticsQuery;
+import com.ruoyi.order.controller.management.vo.MgtOrderStaticsChartVO;
 import com.ruoyi.order.controller.management.vo.MgtOrderStaticsVO;
 import com.ruoyi.order.service.impl.MgtBusinessDataService;
 import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
 import lombok.RequiredArgsConstructor;
 import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
@@ -16,7 +19,7 @@
  * @author mitao
  * @date 2024/6/19
  */
-@Api(tags = "业务数据相关接口")
+@Api(tags = {"管理后台-工作台-业务数据统计"})
 @RestController
 @RequestMapping("/mgt/business-data")
 @RequiredArgsConstructor
@@ -24,8 +27,27 @@
 
     private final MgtBusinessDataService mgtBusinessDataService;
 
+    /**
+     * 获取业务数据统计
+     *
+     * @param query 订单统计查询对象
+     * @return MgtOrderStaticsVO
+     */
+
+    @ApiOperation(value = "获取业务数据统计", notes = "获取业务数据统计")
     @PostMapping("/get-overview")
     public R<MgtOrderStaticsVO> getOverview(@Validated @RequestBody MgtOrderStaticsQuery query) {
         return R.ok(mgtBusinessDataService.getOverview(query));
     }
+
+    /**
+     * 获取图表数据
+     *
+     * @return MgtOrderStaticsChartVO
+     */
+    @ApiOperation(value = "获取业务数据统计图表数据", notes = "获取业务数据统计图表数据")
+    @GetMapping("/get-chart")
+    public R<MgtOrderStaticsChartVO> getChart() {
+        return R.ok(mgtBusinessDataService.getChart());
+    }
 }
diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/management/dto/MgtOrderStaticsQuery.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/management/dto/MgtOrderStaticsQuery.java
index 7318dd3..5106fa5 100644
--- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/management/dto/MgtOrderStaticsQuery.java
+++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/management/dto/MgtOrderStaticsQuery.java
@@ -6,13 +6,19 @@
 import java.io.Serializable;
 import java.time.LocalDateTime;
 import javax.validation.constraints.NotNull;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
 import lombok.Data;
+import lombok.NoArgsConstructor;
 
 /**
  * @author mitao
  * @date 2024/6/19
  */
 @Data
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
 @ApiModel("订单统计查询对象")
 public class MgtOrderStaticsQuery implements Serializable {
 
diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/management/vo/MgtAmountChartVO.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/management/vo/MgtAmountChartVO.java
new file mode 100644
index 0000000..a75132b
--- /dev/null
+++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/management/vo/MgtAmountChartVO.java
@@ -0,0 +1,20 @@
+package com.ruoyi.order.controller.management.vo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import java.io.Serializable;
+import java.math.BigDecimal;
+import lombok.Data;
+
+@Data
+@ApiModel("订单金额统计图表对象")
+public class MgtAmountChartVO implements Serializable {
+
+    private static final long serialVersionUID = 8440194640873107140L;
+
+    @ApiModelProperty(value = "日期", notes = "X轴")
+    private String date;
+
+    @ApiModelProperty(value = "总金额", notes = "Y轴")
+    private BigDecimal value;
+}
\ No newline at end of file
diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/management/vo/MgtCountChartVO.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/management/vo/MgtCountChartVO.java
new file mode 100644
index 0000000..dc9193f
--- /dev/null
+++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/management/vo/MgtCountChartVO.java
@@ -0,0 +1,18 @@
+package com.ruoyi.order.controller.management.vo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import java.io.Serializable;
+import lombok.Data;
+
+@Data
+@ApiModel("订单总数统计图表对象")
+public class MgtCountChartVO implements Serializable {
+
+    private static final long serialVersionUID = 8440194640873107140L;
+
+    @ApiModelProperty(value = "日期", notes = "X轴")
+    private String date;
+    @ApiModelProperty(value = "订单总数", notes = "Y轴")
+    private Long value;
+}
\ No newline at end of file
diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/management/vo/MgtOrderStaticsChartVO.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/management/vo/MgtOrderStaticsChartVO.java
new file mode 100644
index 0000000..7715e75
--- /dev/null
+++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/management/vo/MgtOrderStaticsChartVO.java
@@ -0,0 +1,30 @@
+package com.ruoyi.order.controller.management.vo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import java.util.List;
+import lombok.Data;
+
+/**
+ * @author mitao
+ * @date 2024/6/25
+ */
+@Data
+@ApiModel("订单统计图表对象")
+public class MgtOrderStaticsChartVO {
+
+    @ApiModelProperty(value = "商城订单总数", notes = "商城订单总数")
+    private List<MgtCountChartVO> mallOrderCountList;
+
+    @ApiModelProperty(value = "商城订单总金额", notes = "商城订单总金额")
+    private List<MgtAmountChartVO> mallOrderTotalAmountList;
+
+    @ApiModelProperty(value = "拍卖订单总数", notes = "拍卖订单总数")
+    private List<MgtCountChartVO> auctionOrderCount;
+
+    @ApiModelProperty(value = "拍卖订单总金额", notes = "拍卖订单总金额")
+    private List<MgtAmountChartVO> auctionOrderTotalAmount;
+
+
+}
+
diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/management/vo/MgtOrderStaticsVO.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/management/vo/MgtOrderStaticsVO.java
index f6e0475..8f06c19 100644
--- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/management/vo/MgtOrderStaticsVO.java
+++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/management/vo/MgtOrderStaticsVO.java
@@ -16,16 +16,16 @@
 
     private static final long serialVersionUID = -6511810306263817540L;
     @ApiModelProperty("商城订单统计-订单总数")
-    private Integer mallOrderTotalCount;
+    private Long mallOrderTotalCount;
 
     @ApiModelProperty("商城订单统计-商城订单")
-    private Integer mallOrderCount;
+    private Long mallOrderCount;
 
     @ApiModelProperty("商城订单统计-秒杀订单")
-    private Integer seckillOrderCount;
+    private Long seckillOrderCount;
 
     @ApiModelProperty("商城订单统计-团购订单")
-    private Integer groupPurchaseOrderCount;
+    private Long groupPurchaseOrderCount;
 
     @ApiModelProperty("商城订单统计-订单总金额")
     private BigDecimal mallOrderTotalAmount;
@@ -40,13 +40,13 @@
     private BigDecimal groupPurchaseTotalAmount;
 
     @ApiModelProperty("拍卖订单统计-订单总数")
-    private Integer auctionOrderTotalCount;
+    private Long auctionOrderTotalCount;
 
     @ApiModelProperty("拍卖订单统计-拍卖商品订单")
-    private Integer auctionGoodsOrderCount;
+    private Long auctionGoodsOrderCount;
 
     @ApiModelProperty("拍卖订单统计-拍卖场订单")
-    private Integer auctionSalesroomOrderCount;
+    private Long auctionSalesroomOrderCount;
 
     @ApiModelProperty("拍卖订单统计-订单总金额")
     private BigDecimal auctionOrderTotalAmount;
diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/mapper/OrderMapper.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/mapper/OrderMapper.java
index e9e372d..fd426e8 100644
--- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/mapper/OrderMapper.java
+++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/mapper/OrderMapper.java
@@ -2,11 +2,11 @@
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.ruoyi.system.api.domain.Order;
-import java.util.List;
-
 import com.ruoyi.system.api.domain.dto.HomeGoodsSkuDTO;
 import com.ruoyi.system.api.domain.dto.MemberOrderDTO;
 import com.ruoyi.system.api.domain.vo.OrderVO;
+import java.time.LocalDateTime;
+import java.util.List;
 import org.apache.ibatis.annotations.Param;
 
 /**
@@ -42,4 +42,13 @@
 
     List<OrderVO> getOrderByGroupPurchaseMemberList(HomeGoodsSkuDTO homeGoodsSkuDTO);
 
+    /**
+     * 查询统计订单列表
+     *
+     * @param startTime 开始时间
+     * @param endTime   结束时间
+     * @return List<Order>
+     */
+    List<Order> getStaticsOrderList(@Param("startTime") LocalDateTime startTime,
+            @Param("endTime") LocalDateTime endTime);
 }
diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/IOrderService.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/IOrderService.java
index 3e74b85..60939f4 100644
--- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/IOrderService.java
+++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/IOrderService.java
@@ -14,6 +14,7 @@
 import com.ruoyi.system.api.domain.vo.MemberOrderNumVO;
 import com.ruoyi.system.api.domain.vo.MemberTiOrderVO;
 import com.ruoyi.system.api.domain.vo.OrderVO;
+import java.time.LocalDateTime;
 import java.util.Collection;
 import java.util.List;
 import org.springframework.web.bind.annotation.RequestBody;
@@ -128,4 +129,13 @@
      * @param id 订单id
      */
     void refundBond(Long id);
+
+    /**
+     * 查询统计订单列表
+     *
+     * @param startTime 开始时间
+     * @param endTime   结束时间
+     * @return List<Order>
+     */
+    List<Order> getStaticsOrderList(LocalDateTime startTime, LocalDateTime endTime);
 }
diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/MgtBusinessDataService.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/MgtBusinessDataService.java
index db8ee35..75fef99 100644
--- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/MgtBusinessDataService.java
+++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/MgtBusinessDataService.java
@@ -1,44 +1,163 @@
 package com.ruoyi.order.service.impl;
 
+import com.ruoyi.common.core.enums.AuctionOrderTypeEnum;
+import com.ruoyi.common.core.enums.OrderFromEnum;
+import com.ruoyi.common.core.enums.OrderTypeEnum;
 import com.ruoyi.common.core.enums.TimeTypeEnum;
 import com.ruoyi.common.core.exception.ServiceException;
 import com.ruoyi.common.core.utils.DateUtils;
+import com.ruoyi.common.core.utils.page.CollUtils;
 import com.ruoyi.order.controller.management.dto.MgtOrderStaticsQuery;
+import com.ruoyi.order.controller.management.vo.MgtAmountChartVO;
+import com.ruoyi.order.controller.management.vo.MgtCountChartVO;
+import com.ruoyi.order.controller.management.vo.MgtOrderStaticsChartVO;
 import com.ruoyi.order.controller.management.vo.MgtOrderStaticsVO;
 import com.ruoyi.order.service.IOrderService;
+import com.ruoyi.system.api.domain.Order;
+import java.math.BigDecimal;
+import java.time.LocalDate;
 import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
+import java.time.temporal.ChronoUnit;
+import java.util.List;
+import java.util.Map;
 import java.util.Objects;
+import java.util.concurrent.CompletableFuture;
+import java.util.concurrent.ExecutionException;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
 import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.jetbrains.annotations.NotNull;
 import org.springframework.stereotype.Service;
 
 /**
  * @author mitao
  * @date 2024/6/19
  */
+@Slf4j
 @Service
 @RequiredArgsConstructor
 public class MgtBusinessDataService {
 
     private final IOrderService orderService;
 
+    /**
+     * 获取业务数据统计
+     *
+     * @param query 订单统计查询对象
+     * @return MgtOrderStaticsVO
+     */
     public MgtOrderStaticsVO getOverview(MgtOrderStaticsQuery query) {
-        LocalDateTime now = LocalDateTime.now();
+
         LocalDateTime startTime = null;
         LocalDateTime endTime = null;
-        getTimeByTimeType(query, startTime, endTime, now);
-        return null;
+        getTimeByTimeType(query, startTime, endTime);
+        List<Order> orderList = orderService.getStaticsOrderList(startTime, endTime);
+        if (orderList.isEmpty()) {
+            throw new ServiceException("暂无数据");
+        }
+        MgtOrderStaticsVO mgtOrderStaticsVO = new MgtOrderStaticsVO();
+        /* ***************************************商城订单统计*************************************** */
+        // 商城订单统计-订单总数
+        long mallOrderTotalCount = orderList.stream()
+                .filter(order -> !order.getOrderFrom().equals(OrderFromEnum.AUCTION_ORDERS))
+                .count();
+        // 商城订单统计-订单总数
+        long mallOrderCount = orderList.stream()
+                .filter(order -> order.getOrderFrom().equals(OrderFromEnum.COMMODITY_ORDER))
+                .count();
+        // 商城订单统计-商城订单
+        long seckillOrderCount = orderList.stream()
+                .filter(order -> order.getOrderFrom().equals(OrderFromEnum.SNAP_ORDERS))
+                .count();
+        // 商城订单统计-团购订单
+        long groupPurchaseOrderCount = orderList.stream()
+                .filter(order -> order.getOrderFrom().equals(OrderFromEnum.GROUP_PURCHASE_ORDERS))
+                .count();
+        // 商城订单统计-订单总金额
+        BigDecimal mallOrderTotalAmount = orderList.stream()
+                .filter(order -> !order.getOrderFrom().equals(OrderFromEnum.AUCTION_ORDERS))
+                .map(Order::getTotalAmount).reduce(BigDecimal::add).orElse(BigDecimal.ZERO);
+        // 商城订单统计 - 商城总金额
+        BigDecimal mallTotalAmount = orderList.stream()
+                .filter(order -> order.getOrderFrom().equals(OrderFromEnum.COMMODITY_ORDER))
+                .map(Order::getTotalAmount).reduce(BigDecimal::add).orElse(BigDecimal.ZERO);
+        // 商城订单统计-秒杀总金额
+        BigDecimal seckillTotalAmount = orderList.stream()
+                .filter(order -> order.getOrderFrom().equals(OrderFromEnum.SNAP_ORDERS))
+                .map(Order::getTotalAmount).reduce(BigDecimal::add).orElse(BigDecimal.ZERO);
+
+        // 商城订单统计-团购总金额
+        BigDecimal groupPurchaseTotalAmount = orderList.stream()
+                .filter(order -> order.getOrderFrom().equals(OrderFromEnum.GROUP_PURCHASE_ORDERS))
+                .map(Order::getTotalAmount).reduce(BigDecimal::add).orElse(BigDecimal.ZERO);
+
+        mgtOrderStaticsVO.setMallOrderTotalCount(mallOrderTotalCount);
+        mgtOrderStaticsVO.setMallOrderCount(mallOrderCount);
+        mgtOrderStaticsVO.setSeckillOrderCount(seckillOrderCount);
+        mgtOrderStaticsVO.setGroupPurchaseOrderCount(groupPurchaseOrderCount);
+
+        mgtOrderStaticsVO.setMallOrderTotalAmount(mallOrderTotalAmount);
+        mgtOrderStaticsVO.setMallTotalAmount(mallTotalAmount);
+        mgtOrderStaticsVO.setSeckillTotalAmount(seckillTotalAmount);
+        mgtOrderStaticsVO.setGroupPurchaseTotalAmount(groupPurchaseTotalAmount);
+
+        /* ***************************************拍卖订单统计*************************************** */
+        // 拍卖订单统计-订单总数
+        long auctionOrderTotalCount = orderList.stream()
+                .filter(order -> order.getOrderFrom().equals(OrderFromEnum.AUCTION_ORDERS))
+                .count();
+        // 商城订单统计-订单总数
+        long auctionGoodsOrderCount = orderList.stream()
+                .filter(order -> order.getOrderFrom().equals(OrderFromEnum.AUCTION_ORDERS)
+                        && order.getAuctionOrderType().equals(AuctionOrderTypeEnum.REGULAR_ITEMS))
+                .count();
+        // 拍卖订单统计-拍卖商品订单
+        long auctionSalesroomOrderCount = orderList.stream()
+                .filter(order -> order.getOrderFrom().equals(OrderFromEnum.AUCTION_ORDERS)
+                        && order.getAuctionOrderType().equals(AuctionOrderTypeEnum.AUCTION_ITEMS))
+                .count();
+        // 拍卖订单统计-订单总金额
+        BigDecimal auctionOrderTotalAmount = orderList.stream()
+                .filter(order -> order.getOrderFrom().equals(OrderFromEnum.AUCTION_ORDERS))
+                .map(Order::getTotalAmount)
+                .reduce(BigDecimal::add).orElse(BigDecimal.ZERO);
+        // 拍卖订单统计-拍卖商品总金额
+        BigDecimal auctionGoodsTotalAmount = orderList.stream()
+                .filter(order -> order.getOrderFrom().equals(OrderFromEnum.AUCTION_ORDERS)
+                        && order.getAuctionOrderType().equals(AuctionOrderTypeEnum.REGULAR_ITEMS)
+                )
+                .map(Order::getTotalAmount).reduce(BigDecimal::add).orElse(BigDecimal.ZERO);
+        // 拍卖订单统计-拍卖场总金额
+        BigDecimal auctionSalesroomTotalAmount = orderList.stream()
+                .filter(order -> order.getOrderFrom().equals(OrderFromEnum.AUCTION_ORDERS)
+                        && order.getAuctionOrderType().equals(AuctionOrderTypeEnum.AUCTION_ITEMS))
+                .map(Order::getTotalAmount).reduce(BigDecimal::add).orElse(BigDecimal.ZERO);
+
+        mgtOrderStaticsVO.setAuctionOrderTotalCount(auctionOrderTotalCount);
+        mgtOrderStaticsVO.setAuctionGoodsOrderCount(auctionGoodsOrderCount);
+        mgtOrderStaticsVO.setAuctionSalesroomOrderCount(auctionSalesroomOrderCount);
+
+        mgtOrderStaticsVO.setAuctionOrderTotalAmount(auctionOrderTotalAmount);
+        mgtOrderStaticsVO.setAuctionGoodsTotalAmount(auctionGoodsTotalAmount);
+        mgtOrderStaticsVO.setAuctionSalesroomTotalAmount(auctionSalesroomTotalAmount);
+        return mgtOrderStaticsVO;
     }
 
-    private static void getTimeByTimeType(MgtOrderStaticsQuery query, LocalDateTime startTime,
-            LocalDateTime endTime, LocalDateTime now) {
+    private void getTimeByTimeType(MgtOrderStaticsQuery query, LocalDateTime startTime,
+            LocalDateTime endTime) {
+        LocalDateTime now = LocalDateTime.now();
         if (Objects.equals(TimeTypeEnum.TODAY.getCode(), query.getTimeType())) {
             startTime = DateUtils.getDayStart(now);
             endTime = DateUtils.getDayEnd(now);
         } else if (Objects.equals(TimeTypeEnum.PAST_SEVEN_DAYS.getCode(), query.getTimeType())) {
-            startTime = DateUtils.getDayStart(now.minusDays(7));
+            startTime = DateUtils.getDayStart(now.minusDays(6)); // 过去七天 为过去六天加今天
             endTime = DateUtils.getDayEnd(now);
         } else if (Objects.equals(TimeTypeEnum.PAST_THIRTY_DAYS.getCode(), query.getTimeType())) {
-            startTime = DateUtils.getDayStart(now.minusDays(30));
+            startTime = DateUtils.getDayStart(now.minusDays(29)); // 过去30天 为过去29天加今天
             endTime = DateUtils.getDayEnd(now);
         } else if (Objects.equals(TimeTypeEnum.CUSTOM.getCode(), query.getTimeType())) {
             if (Objects.isNull(query.getStartTime()) || Objects.isNull(query.getEndTime())) {
@@ -51,4 +170,138 @@
             endTime = DateUtils.getDayEnd(now);
         }
     }
+
+    /**
+     * 获取图表数据
+     *
+     * @return MgtOrderStaticsChartVO
+     */
+    public MgtOrderStaticsChartVO getChart() {
+        LocalDateTime now = LocalDateTime.now();
+        LocalDateTime startTime = DateUtils.getDayStart(now.minusDays(29));
+        LocalDateTime endTime = DateUtils.getDayEnd(now);
+        List<LocalDate> datesBetween = getDatesBetween(startTime.toLocalDate(),
+                endTime.toLocalDate());
+        // 根据开始时间和结束时间,获取这个范围的每一天的日期
+        List<Order> orderList = orderService.getStaticsOrderList(startTime, endTime);
+        ExecutorService executorService = Executors.newFixedThreadPool(4);
+        // 商城订单总数
+        CompletableFuture<List<MgtCountChartVO>> mallOrderCountFuture = CompletableFuture.supplyAsync(
+                () -> getMgtCountChartVOS(datesBetween, orderList, OrderTypeEnum.MALL_ODER),
+                executorService);
+        // 商城订单总金额
+        CompletableFuture<List<MgtAmountChartVO>> mallOrderTotalAmountFuture = CompletableFuture.supplyAsync(
+                () -> getMgtAmountChartVOS(datesBetween, orderList, OrderTypeEnum.MALL_ODER),
+                executorService);
+        // 拍卖订单总数
+        CompletableFuture<List<MgtCountChartVO>> auctionOrderCountFuture = CompletableFuture.supplyAsync(
+                () -> getMgtCountChartVOS(datesBetween, orderList, OrderTypeEnum.AUCTION_ORDER),
+                executorService);
+        // 拍卖订单总金额
+        CompletableFuture<List<MgtAmountChartVO>> auctionOrderTotalAmountFuture = CompletableFuture.supplyAsync(
+                () -> getMgtAmountChartVOS(datesBetween, orderList, OrderTypeEnum.AUCTION_ORDER),
+                executorService);
+        // 等待所有任务完成
+        CompletableFuture<Void> futureAll = CompletableFuture.allOf(mallOrderCountFuture,
+                mallOrderTotalAmountFuture, auctionOrderCountFuture, auctionOrderTotalAmountFuture);
+        MgtOrderStaticsChartVO mgtOrderStaticsChartVO = new MgtOrderStaticsChartVO();
+        futureAll.thenRun(() -> {
+            try {
+                mgtOrderStaticsChartVO.setMallOrderCountList(mallOrderCountFuture.get());
+                mgtOrderStaticsChartVO.setMallOrderTotalAmountList(
+                        mallOrderTotalAmountFuture.get());
+                mgtOrderStaticsChartVO.setAuctionOrderCount(auctionOrderCountFuture.get());
+                mgtOrderStaticsChartVO.setAuctionOrderTotalAmount(
+                        auctionOrderTotalAmountFuture.get());
+            } catch (InterruptedException | ExecutionException e) {
+                throw new RuntimeException(e);
+            }
+            executorService.shutdown(); // 关闭线程池
+        });
+        return mgtOrderStaticsChartVO;
+    }
+
+    @NotNull
+    private static List<MgtAmountChartVO> getMgtAmountChartVOS(List<LocalDate> datesBetween,
+            List<Order> orderList, OrderTypeEnum type) {
+        Map<String, BigDecimal> orderTotalAmountMap;
+        if (type.equals(OrderTypeEnum.MALL_ODER)) {
+            orderTotalAmountMap = orderList.stream()
+                    .filter(order -> !order.getOrderFrom().equals(OrderFromEnum.AUCTION_ORDERS))
+                    .collect(Collectors.groupingBy(order -> order.getOrderTime().toLocalDate()
+                                    .format(DateTimeFormatter.ofPattern("MM-dd")),
+                            Collectors.reducing(BigDecimal.ZERO, Order::getTotalAmount,
+                                    BigDecimal::add)));
+        } else if (type.equals(OrderTypeEnum.AUCTION_ORDER)) {
+            orderTotalAmountMap = orderList.stream()
+                    .filter(order -> order.getOrderFrom().equals(OrderFromEnum.AUCTION_ORDERS))
+                    .collect(Collectors.groupingBy(order -> order.getOrderTime().toLocalDate()
+                                    .format(DateTimeFormatter.ofPattern("MM-dd")),
+                            Collectors.reducing(BigDecimal.ZERO, Order::getTotalAmount,
+                                    BigDecimal::add)));
+        } else {
+            orderTotalAmountMap = null;
+        }
+        if (orderTotalAmountMap != null) {
+            return datesBetween.stream().map(date -> {
+                MgtAmountChartVO mgtAmountChartVO = new MgtAmountChartVO();
+                mgtAmountChartVO.setDate(date.format(DateTimeFormatter.ofPattern("MM-dd")));
+                BigDecimal orderTotalAmount = orderTotalAmountMap.get(
+                        date.format(DateTimeFormatter.ofPattern("MM-dd")));
+                mgtAmountChartVO.setValue(
+                        orderTotalAmount == null ? BigDecimal.ZERO : orderTotalAmount);
+                return mgtAmountChartVO;
+            }).collect(Collectors.toList());
+        } else {
+            return CollUtils.emptyList();
+        }
+    }
+
+    @NotNull
+    private static List<MgtCountChartVO> getMgtCountChartVOS(List<LocalDate> datesBetween,
+            List<Order> orderList, OrderTypeEnum type) {
+        Map<String, Long> orderCountMap;
+        if (type.equals(OrderTypeEnum.MALL_ODER)) {
+            orderCountMap = orderList.stream()
+                    .filter(order -> !order.getOrderFrom().equals(OrderFromEnum.AUCTION_ORDERS))
+                    .collect(Collectors.groupingBy(order -> order.getOrderTime().toLocalDate()
+                                    .format(DateTimeFormatter.ofPattern("MM-dd")),
+                            Collectors.counting()));
+        } else if (type.equals(OrderTypeEnum.AUCTION_ORDER)) {
+            orderCountMap = orderList.stream()
+                    .filter(order -> order.getOrderFrom().equals(OrderFromEnum.AUCTION_ORDERS))
+                    .collect(Collectors.groupingBy(order -> order.getOrderTime().toLocalDate()
+                                    .format(DateTimeFormatter.ofPattern("MM-dd")),
+                            Collectors.counting()));
+        } else {
+            orderCountMap = null;
+        }
+        if (orderCountMap != null) {
+            return datesBetween.stream().map(date -> {
+                MgtCountChartVO mgtCountChartVO = new MgtCountChartVO();
+                mgtCountChartVO.setDate(date.format(DateTimeFormatter.ofPattern("MM-dd")));
+                Long orderCount = orderCountMap.get(
+                        date.format(DateTimeFormatter.ofPattern("MM-dd")));
+                mgtCountChartVO.setValue(orderCount == null ? 0L : orderCount);
+                return mgtCountChartVO;
+            }).collect(Collectors.toList());
+        } else {
+            return CollUtils.emptyList();
+        }
+    }
+
+    public List<LocalDate> getDatesBetween(LocalDate startDate, LocalDate endDate) {
+        // 检查开始日期是否晚于结束日期
+        if (startDate.isAfter(endDate)) {
+            throw new IllegalArgumentException("开始日期必须早于结束日期");
+        }
+
+        // 使用ChronoUnit.DAYS.between计算日期差,并生成日期范围的流
+        long numOfDaysBetween = ChronoUnit.DAYS.between(startDate, endDate);
+
+        // 使用Stream.iterate生成日期序列,再用limit限制天数,最后collect收集结果
+        return Stream.iterate(startDate, date -> date.plusDays(1))
+                .limit(numOfDaysBetween + 1) // 加1是因为包含结束日期
+                .collect(Collectors.toList());
+    }
 }
diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/OrderServiceImpl.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/OrderServiceImpl.java
index 73b55a0..324d2ba 100644
--- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/OrderServiceImpl.java
+++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/OrderServiceImpl.java
@@ -1198,4 +1198,16 @@
             }
         }
     }
+
+    /**
+     * 查询统计订单列表
+     *
+     * @param startTime 开始时间
+     * @param endTime   结束时间
+     * @return List<Order>
+     */
+    @Override
+    public List<Order> getStaticsOrderList(LocalDateTime startTime, LocalDateTime endTime) {
+        return baseMapper.getStaticsOrderList(startTime, endTime);
+    }
 }
diff --git a/ruoyi-modules/ruoyi-order/src/main/resources/mapper/order/OrderMapper.xml b/ruoyi-modules/ruoyi-order/src/main/resources/mapper/order/OrderMapper.xml
index 0567732..081487b 100644
--- a/ruoyi-modules/ruoyi-order/src/main/resources/mapper/order/OrderMapper.xml
+++ b/ruoyi-modules/ruoyi-order/src/main/resources/mapper/order/OrderMapper.xml
@@ -92,5 +92,17 @@
       AND   o.member_id=#{memberId}
     </where>
   </select>
+  <select id="getStaticsOrderList" resultType="com.ruoyi.system.api.domain.Order">
+    SELECT o.*
+    FROM t_order o
+    LEFT JOIN t_order_return_request torr ON o.id = torr.order_id
+    <where>
+      o.order_status IN (1, 2, 3, 4)
+      OR (o.order_status = 6 AND torr.audit_status != 2)
+      <if test="startTime != null and endTime != null">
+        AND o.create_time between #{startTime,jdbcType=TIMESTAMP} and #{endTime,jdbcType=TIMESTAMP}
+      </if>
+    </where>
+  </select>
 
 </mapper>

--
Gitblit v1.7.1