From ea80777ef62130cad72d9167f9100762aa876a80 Mon Sep 17 00:00:00 2001 From: Chopper Date: Mon, 6 Dec 2021 14:57:29 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E4=BB=A3=E7=A0=81=E7=BB=93?= =?UTF-8?q?=E6=9E=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../statistics/entity/vo/OrderOverviewVO.java | 79 ++++++++-- .../mapper/OrderStatisticsMapper.java | 6 +- .../service/OrderStatisticsService.java | 12 +- .../service/StoreFlowStatisticsService.java | 20 +++ .../IndexStatisticsServiceImpl.java | 2 +- .../OrderStatisticsServiceImpl.java | 141 +----------------- .../StoreFlowStatisticsServiceImpl.java | 133 +++++++++++++++++ 7 files changed, 237 insertions(+), 156 deletions(-) diff --git a/framework/src/main/java/cn/lili/modules/statistics/entity/vo/OrderOverviewVO.java b/framework/src/main/java/cn/lili/modules/statistics/entity/vo/OrderOverviewVO.java index ce3dbf16..3bf8f8b4 100644 --- a/framework/src/main/java/cn/lili/modules/statistics/entity/vo/OrderOverviewVO.java +++ b/framework/src/main/java/cn/lili/modules/statistics/entity/vo/OrderOverviewVO.java @@ -13,41 +13,41 @@ import lombok.Data; public class OrderOverviewVO { @ApiModelProperty(value = "UV人次") - private Integer uvNum = 0; + private Long uvNum; /** * 下单统计 */ @ApiModelProperty(value = "下单数量") - private Long orderNum = 0L; + private Long orderNum; @ApiModelProperty(value = "下单人数") - private Long orderMemberNum = 0L; + private Long orderMemberNum; @ApiModelProperty(value = "下单金额") - private Double orderAmount = 0D; + private Double orderAmount; /** * 付款统计 */ @ApiModelProperty(value = "付款订单数量") - private Long paymentOrderNum = 0L; + private Long paymentOrderNum; @ApiModelProperty(value = "付款人数") - private Long paymentsNum = 0L; + private Long paymentsNum; @ApiModelProperty(value = "付款金额") - private Double paymentAmount = 0D; + private Double paymentAmount; /** * 退单统计 */ @ApiModelProperty(value = "退单笔数") - private Long refundOrderNum = 0L; + private Long refundOrderNum; @ApiModelProperty(value = "退单金额") - private Double refundOrderPrice = 0D; + private Double refundOrderPrice; /** * 转换率 @@ -61,5 +61,66 @@ public class OrderOverviewVO { @ApiModelProperty(value = "整体转换率") private String overallConversionRate; + public Long getUvNum() { + if (uvNum == null) { + return 0L; + } + return uvNum; + } + public Long getOrderNum() { + if (orderNum == null) { + return 0L; + } + return orderNum; + } + + public Long getOrderMemberNum() { + if (orderMemberNum == null) { + return 0L; + } + return orderMemberNum; + } + + public Double getOrderAmount() { + if (orderAmount == null) { + return 0D; + } + return orderAmount; + } + + public Long getPaymentOrderNum() { + if (paymentOrderNum == null) { + return 0L; + } + return paymentOrderNum; + } + + public Long getPaymentsNum() { + if (paymentsNum == null) { + return 0L; + } + return paymentsNum; + } + + public Double getPaymentAmount() { + if (paymentAmount == null) { + return 0D; + } + return paymentAmount; + } + + public Long getRefundOrderNum() { + if (refundOrderNum == null) { + return 0L; + } + return refundOrderNum; + } + + public Double getRefundOrderPrice() { + if (refundOrderPrice == null) { + return 0D; + } + return refundOrderPrice; + } } diff --git a/framework/src/main/java/cn/lili/modules/statistics/mapper/OrderStatisticsMapper.java b/framework/src/main/java/cn/lili/modules/statistics/mapper/OrderStatisticsMapper.java index 9d7ea098..f1fff3c1 100644 --- a/framework/src/main/java/cn/lili/modules/statistics/mapper/OrderStatisticsMapper.java +++ b/framework/src/main/java/cn/lili/modules/statistics/mapper/OrderStatisticsMapper.java @@ -1,6 +1,6 @@ package cn.lili.modules.statistics.mapper; -import cn.lili.modules.order.order.entity.dos.StoreFlow; +import cn.lili.modules.order.order.entity.dos.Order; import cn.lili.modules.order.order.entity.vo.OrderSimpleVO; import cn.lili.modules.statistics.entity.vo.OrderStatisticsDataVO; import com.baomidou.mybatisplus.core.conditions.Wrapper; @@ -18,10 +18,11 @@ import java.util.List; * @author Bulbasaur * @since 2020/11/17 7:34 下午 */ -public interface OrderStatisticsMapper extends BaseMapper { +public interface OrderStatisticsMapper extends BaseMapper { /** * 获取订单统计数据 + * * @param queryWrapper 查询条件 * @return 订单统计列表 */ @@ -31,6 +32,7 @@ public interface OrderStatisticsMapper extends BaseMapper { /** * 订单数量 + * * @param queryWrapper 查询条件 * @return 订单数量 */ diff --git a/framework/src/main/java/cn/lili/modules/statistics/service/OrderStatisticsService.java b/framework/src/main/java/cn/lili/modules/statistics/service/OrderStatisticsService.java index 809a0ddf..37752dc8 100644 --- a/framework/src/main/java/cn/lili/modules/statistics/service/OrderStatisticsService.java +++ b/framework/src/main/java/cn/lili/modules/statistics/service/OrderStatisticsService.java @@ -1,7 +1,7 @@ package cn.lili.modules.statistics.service; import cn.lili.common.vo.PageVO; -import cn.lili.modules.order.order.entity.dos.StoreFlow; +import cn.lili.modules.order.order.entity.dos.Order; import cn.lili.modules.order.order.entity.vo.OrderSimpleVO; import cn.lili.modules.statistics.entity.dto.StatisticsQueryParam; import cn.lili.modules.statistics.entity.vo.OrderOverviewVO; @@ -18,7 +18,7 @@ import java.util.Map; * @author Bulbasaur * @since 2020/12/9 11:06 */ -public interface OrderStatisticsService extends IService { +public interface OrderStatisticsService extends IService { /** * 订单统计概览 @@ -35,14 +35,6 @@ public interface OrderStatisticsService extends IService { */ Map getStoreOrderStatisticsPrice(); - - /** - * 查询今日付款统计 - * - * @return 订单统计金额 - */ - Map getOrderStatisticsPrice(); - /** * 获取订单总数量 * diff --git a/framework/src/main/java/cn/lili/modules/statistics/service/StoreFlowStatisticsService.java b/framework/src/main/java/cn/lili/modules/statistics/service/StoreFlowStatisticsService.java index ed3beb32..9f99d7dd 100644 --- a/framework/src/main/java/cn/lili/modules/statistics/service/StoreFlowStatisticsService.java +++ b/framework/src/main/java/cn/lili/modules/statistics/service/StoreFlowStatisticsService.java @@ -2,14 +2,18 @@ package cn.lili.modules.statistics.service; import cn.lili.modules.order.order.entity.dos.StoreFlow; import cn.lili.modules.statistics.entity.dto.GoodsStatisticsQueryParam; +import cn.lili.modules.statistics.entity.dto.StatisticsQueryParam; import cn.lili.modules.statistics.entity.vo.CategoryStatisticsDataVO; import cn.lili.modules.statistics.entity.vo.GoodsStatisticsDataVO; +import cn.lili.modules.statistics.entity.vo.OrderOverviewVO; import cn.lili.modules.statistics.entity.vo.StoreStatisticsDataVO; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; +import java.util.Date; import java.util.List; +import java.util.Map; /** * 流水统计业务层 @@ -46,4 +50,20 @@ public interface StoreFlowStatisticsService extends IService { * @return */ List getStoreStatisticsData(Page page, QueryWrapper queryWrapper); + + /** + * 查询今日付款统计 + * + * @return 订单统计金额 + */ + Map getOrderStatisticsPrice(); + + /** + * 订单统计,数据概览 + * + * @param dates + * @param orderOverviewVO + * @param statisticsQueryParam + */ + void overview(Date[] dates, OrderOverviewVO orderOverviewVO, StatisticsQueryParam statisticsQueryParam); } \ No newline at end of file diff --git a/framework/src/main/java/cn/lili/modules/statistics/serviceimpl/IndexStatisticsServiceImpl.java b/framework/src/main/java/cn/lili/modules/statistics/serviceimpl/IndexStatisticsServiceImpl.java index e4982190..82b953c2 100644 --- a/framework/src/main/java/cn/lili/modules/statistics/serviceimpl/IndexStatisticsServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/statistics/serviceimpl/IndexStatisticsServiceImpl.java @@ -133,7 +133,7 @@ public class IndexStatisticsServiceImpl implements IndexStatisticsService { indexStatisticsVO.setStoreNum(storeStatisticsService.storeNum()); //下单统计 - Map map = orderStatisticsService.getOrderStatisticsPrice(); + Map map = storeFlowStatisticsService.getOrderStatisticsPrice(); //今日下单数 indexStatisticsVO.setTodayOrderNum(map.get("num") == null ? 0L : (Long) map.get("num")); //今日下单金额 diff --git a/framework/src/main/java/cn/lili/modules/statistics/serviceimpl/OrderStatisticsServiceImpl.java b/framework/src/main/java/cn/lili/modules/statistics/serviceimpl/OrderStatisticsServiceImpl.java index 820d933f..367bfe2b 100644 --- a/framework/src/main/java/cn/lili/modules/statistics/serviceimpl/OrderStatisticsServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/statistics/serviceimpl/OrderStatisticsServiceImpl.java @@ -1,18 +1,14 @@ package cn.lili.modules.statistics.serviceimpl; -import cn.lili.common.security.AuthUser; import cn.lili.common.security.context.UserContext; import cn.lili.common.security.enums.UserEnums; import cn.lili.common.utils.CurrencyUtil; -import cn.lili.common.utils.DateUtil; import cn.lili.common.utils.StringUtils; import cn.lili.common.vo.PageVO; import cn.lili.modules.order.order.entity.dos.Order; -import cn.lili.modules.order.order.entity.dos.StoreFlow; import cn.lili.modules.order.order.entity.enums.FlowTypeEnum; import cn.lili.modules.order.order.entity.enums.PayStatusEnum; import cn.lili.modules.order.order.entity.vo.OrderSimpleVO; -import cn.lili.modules.order.order.service.OrderService; import cn.lili.modules.statistics.entity.dto.StatisticsQueryParam; import cn.lili.modules.statistics.entity.vo.OrderOverviewVO; import cn.lili.modules.statistics.entity.vo.OrderStatisticsDataVO; @@ -38,18 +34,13 @@ import java.util.*; * @since 2020/12/9 17:16 */ @Service -public class OrderStatisticsServiceImpl extends ServiceImpl implements OrderStatisticsService { +public class OrderStatisticsServiceImpl extends ServiceImpl implements OrderStatisticsService { /** * 平台PV统计 */ @Autowired private PlatformViewService platformViewService; - /** - * 订单 - */ - @Autowired - private OrderService orderService; @Override public OrderOverviewVO overview(StatisticsQueryParam statisticsQueryParam) { @@ -57,16 +48,10 @@ public class OrderStatisticsServiceImpl extends ServiceImpl getStoreOrderStatisticsPrice() { QueryWrapper queryWrapper = new QueryWrapper(); @@ -205,23 +94,6 @@ public class OrderStatisticsServiceImpl extends ServiceImpl getOrderStatisticsPrice() { - QueryWrapper queryWrapper = Wrappers.query(); - //支付订单 - queryWrapper.eq("flow_type", FlowTypeEnum.PAY.name()); - - //商家查询,则增加商家判定 - AuthUser authUser = UserContext.getCurrentUser(); - if (authUser.getRole().equals(UserEnums.STORE)) { - queryWrapper.eq("store_id", authUser.getStoreId()); - } - //大于今天凌晨 - queryWrapper.ge("create_time", DateUtil.startOfTodDayTime()); - - queryWrapper.select("SUM(final_price) AS price , COUNT(0) AS num"); - return this.getMap(queryWrapper); - } @Override public Integer orderNum(String orderStatus) { @@ -229,7 +101,7 @@ public class OrderStatisticsServiceImpl extends ServiceImpl getOrderStatisticsPrice() { + QueryWrapper queryWrapper = Wrappers.query(); + //支付订单 + queryWrapper.eq("flow_type", FlowTypeEnum.PAY.name()); + + //商家查询,则增加商家判定 + AuthUser authUser = UserContext.getCurrentUser(); + if (authUser.getRole().equals(UserEnums.STORE)) { + queryWrapper.eq("store_id", authUser.getStoreId()); + } + //大于今天凌晨 + queryWrapper.ge("create_time", cn.lili.common.utils.DateUtil.startOfTodDayTime()); + + queryWrapper.select("SUM(final_price) AS price , COUNT(0) AS num"); + return this.getMap(queryWrapper); + } + + + @Override + public void overview(Date[] dates, OrderOverviewVO orderOverviewVO, StatisticsQueryParam statisticsQueryParam) { + //下单统计 + initOrder(dates, orderOverviewVO, statisticsQueryParam); + + //付款统计 + initPayment(dates, orderOverviewVO, statisticsQueryParam); + + //退单统计 + initAfterSale(dates, orderOverviewVO, statisticsQueryParam); + } + + /** + * 订单统计-下单属性填充 + * + * @param dates + * @param orderOverviewVO + */ + private void initOrder(Date[] dates, OrderOverviewVO orderOverviewVO, StatisticsQueryParam statisticsQueryParam) { + //构建查询条件 + QueryWrapper queryWrapper = Wrappers.query(); + //时间区间 + queryWrapper.between("create_time", dates[0], dates[1]); + //如果有店铺id传入,则查询店铺 + if (StringUtils.isNotEmpty(statisticsQueryParam.getStoreId())) { + queryWrapper.eq("store_id", statisticsQueryParam.getStoreId()); + } + //查询流水金额和订单数量 + queryWrapper.select("SUM(flow_price) AS price , COUNT(0) AS num"); + //获取查询结果 + Map order = this.getMap(queryWrapper); + //赋予订单数和流水金额 + orderOverviewVO.setOrderNum(order != null && order.containsKey("num") ? (Long) order.get("num") : 0L); + orderOverviewVO.setOrderAmount(order != null && order.containsKey("price") ? (double) order.get("price") : 0L); + + //查询下单人数 + queryWrapper = Wrappers.query(); + //时间区间 + queryWrapper.between("create_time", dates[0], dates[1]); + //如果有店铺id传入,则查询店铺 + if (StringUtils.isNotEmpty(statisticsQueryParam.getStoreId())) { + queryWrapper.eq("store_id", statisticsQueryParam.getStoreId()); + } + //查询下单人数的sql + queryWrapper.select("count(DISTINCT member_id) AS num"); + //获取查询结果 + Map memberNum = this.getMap(queryWrapper); + //写入下单人数 + orderOverviewVO.setOrderMemberNum(memberNum != null && memberNum.containsKey("num") ? (Long) memberNum.get("num") : 0L); + } + + /** + * 订单统计-付款属性填充 + * + * @param dates + * @param orderOverviewVO + */ + private void initPayment(Date[] dates, OrderOverviewVO orderOverviewVO, StatisticsQueryParam statisticsQueryParam) { + //付款订单数,付款金额 + QueryWrapper queryWrapper = Wrappers.query(); + queryWrapper.between("create_time", dates[0], dates[1]); + //如果有店铺id传入,则查询店铺 + if (StringUtils.isNotEmpty(statisticsQueryParam.getStoreId())) { + queryWrapper.eq("store_id", statisticsQueryParam.getStoreId()); + } + queryWrapper.select("SUM(final_price) AS price , COUNT(0) AS num"); + queryWrapper.eq("flow_type", FlowTypeEnum.PAY.name()); + Map payment = this.getMap(queryWrapper); + + orderOverviewVO.setPaymentOrderNum(payment != null && payment.containsKey("num") ? (Long) payment.get("num") : 0L); + orderOverviewVO.setPaymentAmount(payment != null && payment.containsKey("price") ? (Double) payment.get("price") : 0D); + + //付款人数 + queryWrapper = Wrappers.query(); + queryWrapper.between("create_time", dates[0], dates[1]); + //如果有店铺id传入,则查询店铺 + if (StringUtils.isNotEmpty(statisticsQueryParam.getStoreId())) { + queryWrapper.eq("store_id", statisticsQueryParam.getStoreId()); + } + queryWrapper.select("COUNT(0) AS num"); + queryWrapper.groupBy("member_id"); + Map paymentMemberNum = this.getMap(queryWrapper); + + orderOverviewVO.setPaymentsNum(paymentMemberNum != null && paymentMemberNum.containsKey("num") ? (Long) paymentMemberNum.get("num") : 0L); + } + + /** + * 订单统计-付款属性填充 + * + * @param dates + * @param orderOverviewVO + */ + private void initAfterSale(Date[] dates, OrderOverviewVO orderOverviewVO, StatisticsQueryParam statisticsQueryParam) { + //付款订单数,付款金额 + QueryWrapper queryWrapper = Wrappers.query(); + queryWrapper.between("create_time", dates[0], dates[1]); + queryWrapper.select("SUM(final_price) AS price , COUNT(0) AS num"); + //如果有店铺id传入,则查询店铺 + if (StringUtils.isNotEmpty(statisticsQueryParam.getStoreId())) { + queryWrapper.eq("store_id", statisticsQueryParam.getStoreId()); + } + queryWrapper.eq("flow_type", FlowTypeEnum.REFUND.name()); + Map payment = this.getMap(queryWrapper); + orderOverviewVO.setRefundOrderNum(payment != null && payment.containsKey("num") ? (Long) payment.get("num") : 0L); + orderOverviewVO.setRefundOrderPrice(payment != null && payment.containsKey("price") ? (Double) payment.get("price") : 0D); + } + + /** * 组织查询条件 *