Files
xinlong-shop-taro/.workbuddy/memory/2026-08-01.md
赵忠林 f532b3923d fix(shop): 始终显示商品详情销量,避免销量隐藏
- 修改商品详情页销量展示,去除销量大于0的判断
- 销量字段不存在或为0时统一显示为0,提升信息一致性
- 列表页仍保持销量为0时不显示的原有逻辑
- 适配后端新增销量累加方式配置,支持显示和回滚逻辑调整
2026-08-01 21:19:06 +08:00

2.6 KiB
Raw Blame History

2026-08-01 工作记录

销量累加方式后台可配置功能

  • 用户需求商品详情页缺销量字段实际是销量为0时隐藏、下单后销量不累计希望后台可配置「销量累加方式」默认支付累加、可选下单累加。
  • 确认项1) 销量为0展示「销量0」2) 用户已加 shop_order.sales_accumulated 字段3) 取消订单回滚销量4) 退款不扣减销量本次预留结构不实现5) 列表页不显示已售0。

后端改动guilixu-java

  • ShopGoodsMapper.addSaleCount:改为 GREATEST(IFNULL(sales,0)+saleCount, 0),支持负数回滚且不为负。
  • ShopOrder 实体新增 salesAccumulated 字段Integer用户已加表字段
  • ShopSettingService 新增 getSalesAccumulateType()默认10=支付累加20=下单累加),读取 order 分类下 salesAccumulateType
  • ShopOrderServiceImpl.updateGoodsSales(order, rollback):改造支持幂等(按 salesAccumulated 标记)+ 回滚delta 取负)。updateSingleGoodsSales 接收 delta。
  • handlePaymentSuccess:仅当配置=10 时才累加销量。
  • 新增公开方法 accumulateSalesOnOrderCreated(order)(配置=20时下单累加handlePaidSuccess(order)(复用 handlePaymentSuccess供非微信支付路径触发rollbackSalesOnCancel(order)
  • OrderBusinessService.createOrder:保存订单商品后调 accumulateSalesOnOrderCreated;货到付款、余额支付分支补调 handlePaidSuccess(修复此前非微信支付不累加销量的 bug
  • ShopOrderServiceImpl.confirmOfflinePayment:确认线下收款成功后调 handlePaymentSuccess(覆盖线下付款场景)。
  • OrderCancelServiceImpl.cancelOrder:已累加销量时调 rollbackSalesOnCancel 回滚。

前端改动xinlong-shop-taro

  • pages/shop/product-detail.tsx:销量展示去掉 >0 判断,改为 {product.sales || 0} 始终显示。列表页(首页/分类/卡片保持原逻辑销量为0不显示

后台管理guilixu-admin

  • views/shop/shopSetting/components/order.vue新增「销量累加方式」单选10支付/20下单默认值10load 解析 salesAccumulateType。保存复用 batchSaveShopSetting。

配置初始化

  • 新增 guilixu-java/sql/sales_accumulate_config.sql可选代码默认已是10并补充 UPDATE shop_goods SET sales=0 WHERE sales IS NULL
  • 注意:数据库字段名需与实体 salesAccumulated 对应(下划线 sales_accumulatedMyBatis-Plus 默认映射)。

编译

  • mvn -o compile 通过exit 0