From 19df67e19f23cd2a04d1c7f355e1e656f4140af4 Mon Sep 17 00:00:00 2001
From: huliguo <2023611923@qq.com>
Date: 星期四, 17 四月 2025 20:04:14 +0800
Subject: [PATCH] 后台:首页统计、系统管理、广告管理、用户管理、商品分类管理

---
 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/OrderController.java |  114 +++++++++++++++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 111 insertions(+), 3 deletions(-)

diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/OrderController.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/OrderController.java
index 59a0cec..593366c 100644
--- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/OrderController.java
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/OrderController.java
@@ -4,6 +4,7 @@
 import com.alibaba.fastjson2.JSON;
 import com.alibaba.fastjson2.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.ruoyi.account.api.feignClient.AppUserClient;
 import com.ruoyi.account.api.model.AppUser;
@@ -15,6 +16,8 @@
 import com.ruoyi.common.core.web.page.PageInfo;
 import com.ruoyi.common.core.web.page.TableDataInfo;
 import com.ruoyi.common.security.service.TokenService;
+import com.ruoyi.order.dto.ConfirmOrderDTO;
+
 import com.ruoyi.order.enums.OrderStatus;
 import com.ruoyi.order.mapper.OrderMapper;
 import com.ruoyi.order.model.Order;
@@ -22,10 +25,13 @@
 import com.ruoyi.order.util.payment.model.RefundCallbackResult;
 import com.ruoyi.order.util.payment.model.UniPayCallbackResult;
 import com.ruoyi.order.util.vo.MapTrackKD100Vo;
+import com.ruoyi.order.util.vo.ShopAnalysisVO;
 import com.ruoyi.order.vo.*;
 import com.ruoyi.other.api.domain.BaseSetting;
 import com.ruoyi.other.api.domain.Goods;
+import com.ruoyi.other.api.dto.ShopAnalysisDTO;
 import com.ruoyi.other.api.feignClient.BaseSettingClient;
+import com.ruoyi.other.api.feignClient.ShopClient;
 import com.ruoyi.system.api.domain.SysUser;
 import com.ruoyi.system.api.feignClient.SysUserClient;
 import com.ruoyi.system.api.model.LoginUser;
@@ -40,7 +46,10 @@
 import java.math.BigDecimal;
 import java.text.ParseException;
 import java.text.SimpleDateFormat;
+import java.time.Duration;
+import java.time.LocalDate;
 import java.time.LocalDateTime;
+import java.time.LocalTime;
 import java.time.format.DateTimeFormatter;
 import java.util.*;
 import java.util.stream.Collectors;
@@ -70,13 +79,16 @@
     @Resource
     private AppUserClient appUserClient;
 
+    @Resource
+    private ShopClient shopClient;
+
 
 
     @ResponseBody
-    @GetMapping("/confirmOrder")
+    @PostMapping("/confirmOrder")
     @ApiOperation(value = "确定订单", tags = {"商城-订单-小程序"})
-    public R<ConfirmOrderVo> confirmOrder(@ApiParam("商品id") Integer goodId,@ApiParam("支付类型(1-现金,2-积分)")Integer type) {
-        ConfirmOrderVo confirmOrderVo = orderService.confirmOrder(goodId,type);
+    public R<ConfirmOrderVo> confirmOrder(@RequestBody ConfirmOrderDTO confirmOrderDTO) {
+        ConfirmOrderVo confirmOrderVo = orderService.confirmOrder(confirmOrderDTO.getGoodId(),confirmOrderDTO.getType());
         return R.ok(confirmOrderVo);
     }
 
@@ -644,5 +656,101 @@
     }
 
 
+    /**
+     * 工作台统计
+     */
+    @PostMapping("/homeStatistics/getShopAnalysis")
+    @ApiOperation(value = "店铺分析", tags = {"后台-工作台-店铺统计"})
+    public R<ShopAnalysisVO> getShopAnalysis(@RequestBody ShopAnalysisDTO shopAnalysisDTO) {
+        ShopAnalysisVO shopAnalysisVO = new ShopAnalysisVO();
+        if (shopAnalysisDTO.getStartTime() == null || shopAnalysisDTO.getEndTime() == null) {
+            LocalDate now = LocalDate.now();
+            shopAnalysisDTO.setStartTime(now.minusDays(6)); // 7天前
+            shopAnalysisDTO.setEndTime(now);
+        }
+        else if (shopAnalysisDTO.getStartTime().isAfter(shopAnalysisDTO.getEndTime())) {
+            return R.fail("开始时间不能大于结束时间");
+        }
+       /* // 限制最大查询范围不超过3个月(可选)
+        else if (Duration.between(shopAnalysisDTO.getStartTime(), shopAnalysisDTO.getEndTime()).toDays() > 90) {
+            return R.fail("查询时间范围不能超过90天");
+        }*/
+        //订单统计
+        QueryWrapper<Order> queryWrapper = new QueryWrapper<>();
+        queryWrapper.select("count(*) as total","SUM(total_amount) as total_money");
+        queryWrapper.eq("del_flag", 0);
+        queryWrapper.in("order_status", Arrays.asList(3,4,8));//待核销  已完成  已评价
+        queryWrapper.eq("pay_status",2);
+        queryWrapper.ge("create_time", shopAnalysisDTO.getStartTime().atStartOfDay());
+        queryWrapper.le("create_time", shopAnalysisDTO.getEndTime().atTime(LocalTime.MAX));
+
+        if (null!=shopAnalysisDTO.getShopId()){
+            queryWrapper.eq("shop_id", shopAnalysisDTO.getShopId());
+        }
+        Map<String, Object> result = orderService.getMap(queryWrapper);
+        if (result == null || result.get("total") == null) {
+            shopAnalysisVO.setTotal(0);
+        }else {
+            shopAnalysisVO.setTotal(Integer.valueOf(result.get("total").toString()));
+        }
+
+        if (result == null || result.get("total_money") == null) {
+            shopAnalysisVO.setTotalMoney(BigDecimal.ZERO);
+        }else {
+            shopAnalysisVO.setTotalMoney(new BigDecimal(result.get("total_money").toString()));
+        }
+
+
+        //收益分析
+        Map<String, Object> shopResult =shopClient.getIncomeAnalysis(shopAnalysisDTO).getData();
+        if (shopResult!=null){
+            if (shopResult.get("balance")==null||shopResult.get("canWithdrawMoney")==null){
+                shopAnalysisVO.setCanWithdrawMoney(BigDecimal.ZERO);
+                shopAnalysisVO.setFreezeMoney(BigDecimal.ZERO);
+            }else {
+                shopAnalysisVO.setCanWithdrawMoney(new BigDecimal(shopResult.get("canWithdrawMoney").toString()));
+                shopAnalysisVO.setFreezeMoney(new BigDecimal(shopResult.get("balance").toString()).subtract(shopAnalysisVO.getCanWithdrawMoney()));
+            }
+            if (shopResult.get("withdrawMoney")==null){
+                shopAnalysisVO.setWithdrawMoney(BigDecimal.ZERO);
+            }else {
+                shopAnalysisVO.setWithdrawMoney(new BigDecimal(shopResult.get("withdrawMoney").toString()));
+            }
+            if (shopResult.get("withdrawAuditMoney")==null){
+                shopAnalysisVO.setWithdrawAuditMoney(BigDecimal.ZERO);
+            }else {
+                shopAnalysisVO.setWithdrawAuditMoney(new BigDecimal(shopResult.get("withdrawAuditMoney").toString()));
+            }
+        }else {
+            shopAnalysisVO.setCanWithdrawMoney(BigDecimal.ZERO);
+            shopAnalysisVO.setFreezeMoney(BigDecimal.ZERO);
+            shopAnalysisVO.setWithdrawMoney(BigDecimal.ZERO);
+            shopAnalysisVO.setWithdrawAuditMoney(BigDecimal.ZERO);
+        }
+
+
+        //折线图
+        List<OrderStatisticsDetail> orderStatisticsDetailList=orderService.getOrderListGroupByDate(shopAnalysisDTO.getStartTime(), shopAnalysisDTO.getEndTime());
+        shopAnalysisVO.setOrderStatisticsDetailList(orderStatisticsDetailList);
+        return R.ok(shopAnalysisVO);
+    }
+
+    /**
+     * 统计用户总消费积分数和现金支付金额
+     */
+    @GetMapping("/getOrderCountByAppUserId/")
+    R<Map<String ,Object>> getConsumeScoreAndPayAmount(@RequestParam(value = "userId",required = false) Long userId){
+        QueryWrapper<Order> queryWrapper = new QueryWrapper<>();
+        // 条件构造  统计充值积分
+        queryWrapper.select("SUM(point) as total_points","SUM(payment_amount) as payment_amounts");
+        queryWrapper.eq("del_flag", 0);
+        queryWrapper.in("order_status", Arrays.asList(3,4,8));//待核销  已完成  已评价
+        queryWrapper.eq("pay_status",2);
+        if (userId != null) {
+            queryWrapper.eq("user_id", userId);
+        }
+        return R.ok(orderService.getMap(queryWrapper));
+    }
+
 }
 

--
Gitblit v1.7.1