feat(shop-zone): 新增专区销量统计功能

- 后端新增专区销量统计相关 VO 并扩展 ShopHomeSection 实体
- 新增批量查询专区销量汇总与商品排行的 Mapper 方法及接口
- Controller 增加获取专区销量统计的接口支持时间范围查询
- 前端接口定义新增专区销量统计类型及请求方法
- 专区管理页面列表新增销量件数、销售额列及销量详情按钮
- 实现专区销量统计弹窗支持时间筛选、汇总展示和排行显示
- 完成前端相关界面和交互设计,保证功能完整可用
- 统计口径基于已支付且未取消/退款订单商品实际成交数据
This commit is contained in:
2026-08-17 12:40:08 +08:00
parent fe97f49afe
commit ced8c7cff7
15 changed files with 1082 additions and 448 deletions
+11
View File
@@ -80,3 +80,14 @@
- **正确做法**:清空/置空场景改用 `UpdateWrapper.set("section_ids", newVal)` 显式 setnewVal 可 null),绕过字段策略。
- 已修复点:`ShopHomeSectionController.addGoods`/`removeGoods`(2026-08-17)改用此模式。同项目其它"置空某字段"的更新都要警惕此坑。
### 专区销量统计(2026-08-17 新增)
- 需求:专区管理页 `/special/zone` 统计专区销量(件数 + 销售额),用户确认 **方案B(订单真实成交聚合)+ 列表汇总列 + 独立统计弹窗**
- **后端(guilixu-java,仅此,无需 mp-java**
- `ShopHomeSection` 实体加 `salesNum`/`salesAmount``@TableField(exist=false)` 统计字段,`pageRel` 分页后批量填充)。
- 新增 VO`SectionSalesSummaryVO`(列表汇总)、`ShopSectionGoodsRankVO`(商品排行项)、`SectionSalesStatsVO`(含 `List<ShopSectionGoodsRankVO> goodsRank`)。
- `ShopHomeSectionMapper.xml` 新增两条 JOIN 聚合 SQL`selectSectionSalesSummary`(批量,`FIND_IN_SET(section_id, g.section_ids)` 关联商品 → 聚合 `shop_order_goods`)、`selectSectionGoodsRank`(单专区 TOP50 排行)。
- `ShopHomeSectionController` 新增 `GET /shop/shop-home-section/{id}/stats?start=&end=`
- **统计口径**`shop_order_goods.pay_status=1`(已付款) 且 `order_status NOT IN (2已取消, 6退款成功)`;按 `tenant_id` 隔离;时间范围对应 `shop_order_goods.create_time`yyyy-MM-dd HH:mm:ss)。
- ⚠️ 订单商品表**无 sectionId**,专区销量=该专区 `section_ids` 关联商品的销量汇总;商品若属多个专区会被各专区重复计入(业务口径已知)。
- **前端(guilixu-admin**`src/api/shop/shopZone``getSectionSalesStats` + 类型;`zone/index.vue` 列表加「销量件数」「销售额」两列 + 操作列「销量」按钮;新建 `src/views/special/zone/components/SectionSalesStatsModal.vue`(时间范围 今日/近7天/近30天/自定义 + 汇总卡片 + 商品销量排行)。前端 `vite build` 已通过。