From fee909b675bc8d50b80946147b4af1d94b1472c2 Mon Sep 17 00:00:00 2001 From: Tankaikai Date: Tue, 11 Mar 2025 19:31:11 +0800 Subject: [PATCH] =?UTF-8?q?=E6=95=B0=E6=8D=AE=E7=BB=9F=E8=AE=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../admin/DataSummaryController.java | 8 ++-- .../param/DataSummaryProductSaleParam.java | 9 +++++ .../order/param/SaleSummaryCountParam.java | 23 ++++++----- .../czg/order/service/DataSummaryService.java | 5 ++- .../com/czg/order/vo/SaleSummaryCountVo.java | 22 ++++------- .../order/mapper/ShopProdStatisticMapper.java | 12 +++++- .../service/impl/DataSummaryServiceImpl.java | 26 ++++++++++--- .../service/impl/SaleSummaryServiceImpl.java | 10 ++++- .../mapper/ShopOrderStatisticMapper.xml | 18 ++++----- .../mapper/ShopProdStatisticMapper.xml | 39 +++++++++++++++++++ 10 files changed, 128 insertions(+), 44 deletions(-) diff --git a/cash-api/order-server/src/main/java/com/czg/controller/admin/DataSummaryController.java b/cash-api/order-server/src/main/java/com/czg/controller/admin/DataSummaryController.java index b1fdc72b..69c339b2 100644 --- a/cash-api/order-server/src/main/java/com/czg/controller/admin/DataSummaryController.java +++ b/cash-api/order-server/src/main/java/com/czg/controller/admin/DataSummaryController.java @@ -7,12 +7,13 @@ import com.czg.order.param.DataSummaryTradeParam; import com.czg.order.service.DataSummaryService; import com.czg.order.vo.DataSummaryDateAmountVo; import com.czg.order.vo.DataSummaryPayTypeVo; -import com.czg.order.vo.DataSummaryProductSaleVo; +import com.czg.order.vo.DataSummaryProductSaleRankingVo; import com.czg.resp.CzgResult; import com.czg.sa.StpKit; import com.czg.utils.AssertUtil; import com.czg.validator.ValidatorUtil; import com.czg.validator.group.DefaultGroup; +import com.mybatisflex.core.paginate.Page; import lombok.AllArgsConstructor; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; @@ -52,10 +53,11 @@ public class DataSummaryController { @GetMapping("productSaleDate") @OperationLog("商品销售-右下") //@SaAdminCheckPermission("dataSummary:productSaleData") - public CzgResult getProductSaleData(DataSummaryProductSaleParam param) { + public CzgResult> getProductSaleData(DataSummaryProductSaleParam param) { + ValidatorUtil.validateEntity(param, DefaultGroup.class); Long shopId = StpKit.USER.getShopId(0L); param.setShopId(shopId); - DataSummaryProductSaleVo data = dataSummaryService.getProductSaleData(param); + Page data = dataSummaryService.getProductSaleRankingPage(param); return CzgResult.success(data); } diff --git a/cash-common/cash-common-service/src/main/java/com/czg/order/param/DataSummaryProductSaleParam.java b/cash-common/cash-common-service/src/main/java/com/czg/order/param/DataSummaryProductSaleParam.java index 9b779160..9a8e9713 100644 --- a/cash-common/cash-common-service/src/main/java/com/czg/order/param/DataSummaryProductSaleParam.java +++ b/cash-common/cash-common-service/src/main/java/com/czg/order/param/DataSummaryProductSaleParam.java @@ -1,10 +1,13 @@ package com.czg.order.param; import com.alibaba.fastjson2.annotation.JSONField; +import com.czg.validator.group.DefaultGroup; +import jakarta.validation.constraints.NotNull; import lombok.Data; import java.io.Serial; import java.io.Serializable; +import java.util.List; /** * 数据统计-营业-产品销量 @@ -21,7 +24,13 @@ public class DataSummaryProductSaleParam implements Serializable { /** * 天数 */ + @NotNull(message = "天数不能为空", groups = DefaultGroup.class) private Integer day; + /** + * 天数列表 + */ + @JSONField(serialize = false) + private List days; /** * 店铺id */ diff --git a/cash-common/cash-common-service/src/main/java/com/czg/order/param/SaleSummaryCountParam.java b/cash-common/cash-common-service/src/main/java/com/czg/order/param/SaleSummaryCountParam.java index aed12aed..0b25ebcc 100644 --- a/cash-common/cash-common-service/src/main/java/com/czg/order/param/SaleSummaryCountParam.java +++ b/cash-common/cash-common-service/src/main/java/com/czg/order/param/SaleSummaryCountParam.java @@ -1,5 +1,6 @@ package com.czg.order.param; +import com.alibaba.fastjson2.annotation.JSONField; import lombok.Data; import java.io.Serial; @@ -17,20 +18,24 @@ public class SaleSummaryCountParam implements Serializable { private static final long serialVersionUID = 1L; /** - * shopId + * 店铺id */ + @JSONField(serialize = false) private Long shopId; - /** - * 分类id - */ - private Long cateId; /** * 商品名称 */ - private String proName; + private String productName; /** - * 类型 + * 商品分类id */ - private Integer type; - + private Long prodCategoryId; + /** + * 开始日期 格式:yyyy-MM-dd + */ + private String beginDate; + /** + * 结束日期 格式:yyyy-MM-dd + */ + private String endDate; } diff --git a/cash-common/cash-common-service/src/main/java/com/czg/order/service/DataSummaryService.java b/cash-common/cash-common-service/src/main/java/com/czg/order/service/DataSummaryService.java index 4b76f4f0..7288bade 100644 --- a/cash-common/cash-common-service/src/main/java/com/czg/order/service/DataSummaryService.java +++ b/cash-common/cash-common-service/src/main/java/com/czg/order/service/DataSummaryService.java @@ -5,7 +5,8 @@ import com.czg.order.param.DataSummaryProductSaleParam; import com.czg.order.param.DataSummaryTradeParam; import com.czg.order.vo.DataSummaryDateAmountVo; import com.czg.order.vo.DataSummaryPayTypeVo; -import com.czg.order.vo.DataSummaryProductSaleVo; +import com.czg.order.vo.DataSummaryProductSaleRankingVo; +import com.mybatisflex.core.paginate.Page; /** * 数据统计Service接口 @@ -17,7 +18,7 @@ public interface DataSummaryService { ShopOrderStatistic getTradeData(DataSummaryTradeParam param); - DataSummaryProductSaleVo getProductSaleData(DataSummaryProductSaleParam param); + Page getProductSaleRankingPage(DataSummaryProductSaleParam param); DataSummaryDateAmountVo getSummaryAmountData(Long shopId,Integer day); diff --git a/cash-common/cash-common-service/src/main/java/com/czg/order/vo/SaleSummaryCountVo.java b/cash-common/cash-common-service/src/main/java/com/czg/order/vo/SaleSummaryCountVo.java index d6f6cc92..7a52e385 100644 --- a/cash-common/cash-common-service/src/main/java/com/czg/order/vo/SaleSummaryCountVo.java +++ b/cash-common/cash-common-service/src/main/java/com/czg/order/vo/SaleSummaryCountVo.java @@ -1,7 +1,6 @@ package com.czg.order.vo; import lombok.Data; -import lombok.NoArgsConstructor; import java.io.Serial; import java.io.Serializable; @@ -12,7 +11,6 @@ import java.math.BigDecimal; * @author tankaikai * @since 2025-03-07 16:22 */ -@NoArgsConstructor @Data public class SaleSummaryCountVo implements Serializable { @@ -20,23 +18,19 @@ public class SaleSummaryCountVo implements Serializable { private static final long serialVersionUID = 1L; /** - * icon + * 总金额 */ - private String icon; + private BigDecimal totalAmount = BigDecimal.ZERO; /** - * isAmount + * 退款金额 */ - private String isAmount; + private BigDecimal refundAmount = BigDecimal.ZERO; /** - * payAmount + * 总数量 */ - private Double payAmount; + private BigDecimal saleCount = BigDecimal.ZERO; /** - * payType + * 退单量 */ - private String payType; - /** - * saveAmount - */ - private BigDecimal saveAmount; + private Integer refundCount = 0; } diff --git a/cash-service/order-service/src/main/java/com/czg/service/order/mapper/ShopProdStatisticMapper.java b/cash-service/order-service/src/main/java/com/czg/service/order/mapper/ShopProdStatisticMapper.java index a5176080..28bc8bc4 100644 --- a/cash-service/order-service/src/main/java/com/czg/service/order/mapper/ShopProdStatisticMapper.java +++ b/cash-service/order-service/src/main/java/com/czg/service/order/mapper/ShopProdStatisticMapper.java @@ -1,7 +1,13 @@ package com.czg.service.order.mapper; -import com.mybatisflex.core.BaseMapper; import com.czg.order.entity.ShopProdStatistic; +import com.czg.order.param.DataSummaryProductSaleParam; +import com.czg.order.param.SaleSummaryCountParam; +import com.czg.order.vo.DataSummaryProductSaleRankingVo; +import com.czg.order.vo.SaleSummaryCountVo; +import com.mybatisflex.core.BaseMapper; + +import java.util.List; /** * 映射层。 @@ -11,4 +17,8 @@ import com.czg.order.entity.ShopProdStatistic; */ public interface ShopProdStatisticMapper extends BaseMapper { + List findProdRandingSummaryPage(DataSummaryProductSaleParam param); + + SaleSummaryCountVo getSaleSummaryCount(SaleSummaryCountParam param); + } diff --git a/cash-service/order-service/src/main/java/com/czg/service/order/service/impl/DataSummaryServiceImpl.java b/cash-service/order-service/src/main/java/com/czg/service/order/service/impl/DataSummaryServiceImpl.java index 3aab06b3..d4871914 100644 --- a/cash-service/order-service/src/main/java/com/czg/service/order/service/impl/DataSummaryServiceImpl.java +++ b/cash-service/order-service/src/main/java/com/czg/service/order/service/impl/DataSummaryServiceImpl.java @@ -10,9 +10,14 @@ import com.czg.order.param.DataSummaryTradeParam; import com.czg.order.service.DataSummaryService; import com.czg.order.vo.DataSummaryDateAmountVo; import com.czg.order.vo.DataSummaryPayTypeVo; -import com.czg.order.vo.DataSummaryProductSaleVo; +import com.czg.order.vo.DataSummaryProductSaleRankingVo; import com.czg.service.order.mapper.OrderInfoMapper; import com.czg.service.order.mapper.ShopOrderStatisticMapper; +import com.czg.service.order.mapper.ShopProdStatisticMapper; +import com.czg.utils.PageUtil; +import com.github.pagehelper.PageHelper; +import com.github.pagehelper.PageInfo; +import com.mybatisflex.core.paginate.Page; import com.mybatisflex.core.query.QueryWrapper; import jakarta.annotation.Resource; import org.springframework.stereotype.Service; @@ -34,6 +39,8 @@ public class DataSummaryServiceImpl implements DataSummaryService { private ShopOrderStatisticMapper shopOrderStatisticMapper; @Resource private OrderInfoMapper orderInfoMapper; + @Resource + private ShopProdStatisticMapper shopProdStatisticMapper; @Override public ShopOrderStatistic getTradeData(DataSummaryTradeParam param) { @@ -45,10 +52,19 @@ public class DataSummaryServiceImpl implements DataSummaryService { } @Override - public DataSummaryProductSaleVo getProductSaleData(DataSummaryProductSaleParam param) { - DataSummaryProductSaleVo data = new DataSummaryProductSaleVo(); - System.out.println(1); - return data; + public Page getProductSaleRankingPage(DataSummaryProductSaleParam param) { + LocalDate now = LocalDate.now(); + Integer day = param.getDay(); + LocalDate beginDate = now.plusDays(-day); + List days = new ArrayList<>(); + for (int i = 1; i <= day; i++) { + String thisDay = beginDate.plusDays(i).format(DatePattern.NORM_DATE_FORMATTER); + days.add(thisDay); + } + param.setDays(days); + PageHelper.startPage(PageUtil.buildPageHelp()); + PageInfo pageInfo = new PageInfo<>(shopProdStatisticMapper.findProdRandingSummaryPage(param)); + return PageUtil.convert(pageInfo); } @Override diff --git a/cash-service/order-service/src/main/java/com/czg/service/order/service/impl/SaleSummaryServiceImpl.java b/cash-service/order-service/src/main/java/com/czg/service/order/service/impl/SaleSummaryServiceImpl.java index 9f72b333..08923586 100644 --- a/cash-service/order-service/src/main/java/com/czg/service/order/service/impl/SaleSummaryServiceImpl.java +++ b/cash-service/order-service/src/main/java/com/czg/service/order/service/impl/SaleSummaryServiceImpl.java @@ -4,7 +4,9 @@ import com.czg.order.param.SaleSummaryCountParam; import com.czg.order.service.SaleSummaryService; import com.czg.order.vo.SaleSummaryCountVo; import com.czg.order.vo.SaleSummaryInfoVo; +import com.czg.service.order.mapper.ShopProdStatisticMapper; import com.mybatisflex.core.paginate.Page; +import jakarta.annotation.Resource; import org.springframework.stereotype.Service; import java.util.ArrayList; @@ -18,10 +20,16 @@ import java.util.List; */ @Service public class SaleSummaryServiceImpl implements SaleSummaryService { + @Resource + private ShopProdStatisticMapper shopProdStatisticMapper; @Override public SaleSummaryCountVo summaryCount(SaleSummaryCountParam param) { - return new SaleSummaryCountVo(); + SaleSummaryCountVo saleSummaryCount = shopProdStatisticMapper.getSaleSummaryCount(param); + if (saleSummaryCount == null) { + saleSummaryCount = new SaleSummaryCountVo(); + } + return saleSummaryCount; } @Override diff --git a/cash-service/order-service/src/main/resources/mapper/ShopOrderStatisticMapper.xml b/cash-service/order-service/src/main/resources/mapper/ShopOrderStatisticMapper.xml index cdbef80c..09757702 100644 --- a/cash-service/order-service/src/main/resources/mapper/ShopOrderStatisticMapper.xml +++ b/cash-service/order-service/src/main/resources/mapper/ShopOrderStatisticMapper.xml @@ -7,22 +7,22 @@ + select + t1.prod_id, + t2.name as product_name, + sum(t1.sale_count) as number, + sum(t1.sale_amount) as amount + from tb_shop_prod_statistic t1 + left join tb_product t2 on t1.prod_id = t2.id + where t1.shop_id = #{shopId} + and t1.create_day in + + #{day} + + group by t1.prod_id + +