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