Browse Source

fix:商城首页统计

liujunchi 3 years ago
parent
commit
e2a12e0b6e

+ 16 - 10
cooleshow-mall/mall-admin/src/main/java/com/yonge/cooleshow/admin/controller/AdminStatisticalController.java

@@ -1,20 +1,14 @@
 package com.yonge.cooleshow.admin.controller;
 
 import com.yonge.cooleshow.admin.dto.HomeStatistical;
-import com.yonge.cooleshow.admin.dto.search.UserStatisticalSearch;
+import com.yonge.cooleshow.admin.dto.search.OrderStatisticalSearch;
 import com.yonge.cooleshow.admin.service.OmsOrderService;
 import com.yonge.cooleshow.mall.common.api.CommonResult;
-import com.yonge.cooleshow.mbg.model.CmsPrefrenceArea;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Controller;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestMethod;
-import org.springframework.web.bind.annotation.ResponseBody;
-
-import java.util.List;
+import org.springframework.web.bind.annotation.*;
 
 /**
  * Description
@@ -34,9 +28,21 @@ public class AdminStatisticalController {
     @ApiOperation("商城首页统计")
     @RequestMapping(value = "/home", method = RequestMethod.GET)
     @ResponseBody
-    public CommonResult<HomeStatistical> userStatistical() {
+    public CommonResult<HomeStatistical> count() {
+
+        HomeStatistical statistical = orderService.countStatistical();
+
+        return CommonResult.success(statistical);
+
+    }
+
+
+    @ApiOperation("商城首页统计")
+    @PostMapping(value = "/orderStatistical")
+    @ResponseBody
+    public CommonResult<HomeStatistical> orderStatistical(@RequestBody OrderStatisticalSearch search) {
 
-        HomeStatistical statistical = orderService.statistical();
+        HomeStatistical statistical = orderService.orderStatistical(search);
 
         return CommonResult.success(statistical);
 

+ 13 - 5
cooleshow-mall/mall-admin/src/main/java/com/yonge/cooleshow/admin/dao/OmsOrderDao.java

@@ -1,13 +1,11 @@
 package com.yonge.cooleshow.admin.dao;
 
-import com.yonge.cooleshow.admin.dto.HomeStatistical;
-import com.yonge.cooleshow.admin.dto.OmsOrderDeliveryParam;
-import com.yonge.cooleshow.admin.dto.OmsOrderDetail;
-import com.yonge.cooleshow.admin.dto.OmsOrderQueryParam;
+import com.yonge.cooleshow.admin.dto.*;
 import com.yonge.cooleshow.admin.dto.search.UserStatisticalSearch;
 import com.yonge.cooleshow.mbg.model.OmsOrder;
 import org.apache.ibatis.annotations.Param;
 
+import java.util.Date;
 import java.util.List;
 import java.util.Map;
 
@@ -31,10 +29,20 @@ public interface OmsOrderDao {
      */
     OmsOrderDetail getDetail(@Param("id") Long id);
 
-    List<Map<String,Object>> getUserOrderInfoList(Map<String, Object> param);
+    List<Map<String, Object>> getUserOrderInfoList(Map<String, Object> param);
 
     /**
      * 统计订单状态数量
      */
     HomeStatistical selectOrderStatusNum();
+
+    /**
+     * 统计订单完成数量 和订单金额
+     *
+     * @param startTime  开始时间
+     * @param endTime    结束时间
+     * @param dateFormat 时间统计格式   (DAY:按天统计, WEEK:按周统计, MONTH:按月统计)
+     * @return
+     */
+    List<OrderStatistical> selectOrderCountAndAmount(@Param("startTime") Date startTime, @Param("endTime") Date endTime, @Param("dateFormat") String dateFormat);
 }

+ 3 - 3
cooleshow-mall/mall-admin/src/main/java/com/yonge/cooleshow/admin/dto/HomeStatistical.java

@@ -24,7 +24,7 @@ public class HomeStatistical {
     private Integer yesterdayOrderNum;
 
     @ApiModelProperty("昨日销售金额")
-    private Integer yesterdayOrderAmount;
+    private BigDecimal yesterdayOrderAmount;
 
 
     @ApiModelProperty("待付款订单")
@@ -90,11 +90,11 @@ public class HomeStatistical {
         this.yesterdayOrderNum = yesterdayOrderNum;
     }
 
-    public Integer getYesterdayOrderAmount() {
+    public BigDecimal getYesterdayOrderAmount() {
         return yesterdayOrderAmount;
     }
 
-    public void setYesterdayOrderAmount(Integer yesterdayOrderAmount) {
+    public void setYesterdayOrderAmount(BigDecimal yesterdayOrderAmount) {
         this.yesterdayOrderAmount = yesterdayOrderAmount;
     }
 

+ 50 - 0
cooleshow-mall/mall-admin/src/main/java/com/yonge/cooleshow/admin/dto/OrderStatistical.java

@@ -0,0 +1,50 @@
+package com.yonge.cooleshow.admin.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.math.BigDecimal;
+
+/**
+ * Description
+ *
+ * @author liujunchi
+ * @date 2022-05-25
+ */
+@ApiModel("订单统计")
+public class OrderStatistical {
+
+    @ApiModelProperty("日期")
+    private String date;
+
+    @ApiModelProperty("订单数")
+    private Integer orderNum;
+
+    @ApiModelProperty("订单总额")
+    private BigDecimal orderAmount;
+
+
+    public String getDate() {
+        return date;
+    }
+
+    public void setDate(String date) {
+        this.date = date;
+    }
+
+    public Integer getOrderNum() {
+        return orderNum;
+    }
+
+    public void setOrderNum(Integer orderNum) {
+        this.orderNum = orderNum;
+    }
+
+    public BigDecimal getOrderAmount() {
+        return orderAmount;
+    }
+
+    public void setOrderAmount(BigDecimal orderAmount) {
+        this.orderAmount = orderAmount;
+    }
+}

+ 36 - 0
cooleshow-mall/mall-admin/src/main/java/com/yonge/cooleshow/admin/dto/search/OrderStatisticalSearch.java

@@ -0,0 +1,36 @@
+package com.yonge.cooleshow.admin.dto.search;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ * Description
+ *
+ * @author liujunchi
+ * @date 2022-05-25
+ */
+@ApiModel("商城首页订单统计")
+public class OrderStatisticalSearch {
+
+    @ApiModelProperty("开始日期")
+    private String startDate;
+
+    @ApiModelProperty("结束日期")
+    private String endDate;
+
+    public String getStartDate() {
+        return startDate;
+    }
+
+    public void setStartDate(String startDate) {
+        this.startDate = startDate;
+    }
+
+    public String getEndDate() {
+        return endDate;
+    }
+
+    public void setEndDate(String endDate) {
+        this.endDate = endDate;
+    }
+}

+ 10 - 2
cooleshow-mall/mall-admin/src/main/java/com/yonge/cooleshow/admin/service/OmsOrderService.java

@@ -1,9 +1,9 @@
 package com.yonge.cooleshow.admin.service;
 
 import com.yonge.cooleshow.admin.dto.*;
+import com.yonge.cooleshow.admin.dto.search.OrderStatisticalSearch;
 import com.yonge.cooleshow.admin.dto.search.UserStatisticalSearch;
 import com.yonge.cooleshow.mbg.model.OmsOrder;
-import com.yonge.cooleshow.admin.dto.*;
 import org.springframework.transaction.annotation.Transactional;
 
 import java.util.List;
@@ -80,5 +80,13 @@ public interface OmsOrderService {
     /**
      * 首页统计
      */
-    HomeStatistical statistical();
+    HomeStatistical countStatistical();
+
+    /**
+     * 订单统计
+     *
+     * @param search 条件
+     * @return
+     */
+    HomeStatistical orderStatistical(OrderStatisticalSearch search);
 }

+ 48 - 1
cooleshow-mall/mall-admin/src/main/java/com/yonge/cooleshow/admin/service/impl/OmsOrderServiceImpl.java

@@ -4,6 +4,7 @@ import com.github.pagehelper.PageHelper;
 import com.yonge.cooleshow.admin.dao.OmsOrderDao;
 import com.yonge.cooleshow.admin.dao.OmsOrderOperateHistoryDao;
 import com.yonge.cooleshow.admin.dto.*;
+import com.yonge.cooleshow.admin.dto.search.OrderStatisticalSearch;
 import com.yonge.cooleshow.admin.dto.search.UserStatisticalSearch;
 import com.yonge.cooleshow.admin.service.OmsOrderReturnApplyService;
 import com.yonge.cooleshow.admin.service.PmsProductService;
@@ -14,9 +15,15 @@ import com.yonge.cooleshow.mbg.model.OmsOrderExample;
 import com.yonge.cooleshow.mbg.model.OmsOrderOperateHistory;
 import com.yonge.cooleshow.admin.dto.*;
 import com.yonge.cooleshow.admin.service.OmsOrderService;
+import com.yonge.toolset.utils.date.DateUtil;
+import enums.OrderStatisticalEnum;
+import org.joda.time.LocalDate;
+import org.joda.time.LocalDateTime;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.util.CollectionUtils;
 
+import java.math.BigDecimal;
 import java.util.Date;
 import java.util.List;
 import java.util.Map;
@@ -173,7 +180,7 @@ public class OmsOrderServiceImpl implements OmsOrderService {
     }
 
     @Override
-    public HomeStatistical statistical() {
+    public HomeStatistical countStatistical() {
         HomeStatistical  homeStatistical = new HomeStatistical();
         // 订单状态
         homeStatistical = orderDao.selectOrderStatusNum();
@@ -187,6 +194,46 @@ public class OmsOrderServiceImpl implements OmsOrderService {
         // 已下架 已上架 全部商品
         homeStatistical = productService.countProductShowStatus();
 
+        Date endTime = LocalDateTime.now().toDate();
+        LocalDateTime localDateTime = LocalDateTime.now().plusDays(-1);
+        LocalDate localDate = localDateTime.toLocalDate();
+        Date startTime = localDate.toDate();
+
+        // 今日、昨日 订单总数和销售总额
+        List<OrderStatistical> orderStatistical = orderDao
+                .selectOrderCountAndAmount(startTime, endTime, OrderStatisticalEnum.DAY.name());
+
+        Map<String, List<OrderStatistical>> collect = orderStatistical.stream()
+                              .collect(Collectors.groupingBy(OrderStatistical::getDate));
+        List<OrderStatistical> yesterdayOrderStatistical = collect.get(DateUtil.format(startTime, "yyyy-MM-dd"));
+
+        if (!CollectionUtils.isEmpty(yesterdayOrderStatistical)) {
+            OrderStatistical startOrder = yesterdayOrderStatistical.get(0);
+            homeStatistical.setYesterdayOrderNum(startOrder.getOrderNum());
+            homeStatistical.setYesterdayOrderAmount(startOrder.getOrderAmount());
+        } else {
+            homeStatistical.setYesterdayOrderNum(0);
+            homeStatistical.setYesterdayOrderAmount(BigDecimal.ZERO);
+        }
+
+        List<OrderStatistical> todayOrderStatistical = collect.get(DateUtil.format(endTime, "yyyy-MM-dd"));
+
+        if (!CollectionUtils.isEmpty(todayOrderStatistical)) {
+            OrderStatistical startOrder = todayOrderStatistical.get(0);
+            homeStatistical.setTodayOrderNum(startOrder.getOrderNum());
+            homeStatistical.setTodayOrderAmount(startOrder.getOrderAmount());
+        } else {
+            homeStatistical.setTodayOrderNum(0);
+            homeStatistical.setTodayOrderAmount(BigDecimal.ZERO);
+        }
+
         return homeStatistical;
     }
+
+    @Override
+    public HomeStatistical orderStatistical(OrderStatisticalSearch search) {
+
+        return null;
+
+    }
 }

+ 29 - 0
cooleshow-mall/mall-admin/src/main/java/enums/OrderStatisticalEnum.java

@@ -0,0 +1,29 @@
+package enums;
+
+/**
+ * Description
+ *
+ * @author liujunchi
+ * @date 2022-05-25
+ */
+public enum OrderStatisticalEnum {
+
+    DAY("按天统计"),
+    WEEK("按周统计"),
+    MONTH("按月统计"),
+    ;
+
+    private String msg;
+
+    OrderStatisticalEnum(String msg) {
+        this.msg = msg;
+    }
+
+    public String getMsg() {
+        return msg;
+    }
+
+    public void setMsg(String msg) {
+        this.msg = msg;
+    }
+}