fix(cart): 修复购物车同一商品重复显示问题

- 后端新增 ShopCartService.addToCart 方法,按 user_id+goods_id+sku_id 判重合并数量
- 修改 ShopCartController.save 调用为 addToCart,避免重复插入购物车记录
- sku_id 为 null 或 0 时,判重逻辑支持 null-safe 匹配
- 提供历史数据清理脚本 sql/shop_cart_merge_duplicates.sql 合并重复购物车数据
- 更新文档记录购物车合并逻辑及相关接口说明
- 编译通过,后端服务需重启生效
This commit is contained in:
2026-07-15 17:07:42 +08:00
parent b45a5722eb
commit fad7c5f58e
2 changed files with 13 additions and 0 deletions

View File

@@ -187,3 +187,15 @@
- 微信支付(1):未付款 `payStatus=false`,正常进入 statusFilter=0
- 修复:`getCardStatus` 第 30 行去掉 `&& !isOffline` 条件,改为 `if (!payStatus && !isCod) return { text: '待付款' }`。保留 `!isCod`(货到付款的特殊兜底,虽然正常流程不会走到这里);清理掉不再使用的 `isOffline` 变量
- 决策依据:用户认可"线下付款订单出现在待付款 Tab"是合理的,因此只改前端文案判断,不动后端 SQL
## 修复购物车同一商品并列显示(应合并数量)
- 现象:购物车页面同一商品并列显示多行,本应合并数量到一行
- 根因:后端 `ShopCartController.save()` 直接调用 MyBatis-Plus 默认 `shopCartService.save()`,每次加购都 INSERT 新行,没有"同用户+商品+SKU已存在则累加数量"逻辑
- 后端修复(`/Users/gxwebsoft/JAVA/guilixu-java`3 个文件):
1. `ShopCartService.java` — 接口新增 `boolean addToCart(ShopCart shopCart)` 方法
2. `ShopCartServiceImpl.java` — 实现 `addToCart`:按 user_id+goods_id+sku_id 查询是否已存在skuId 为 null/0 时匹配 IS NULL 或 =0存在则累加 cart_num 后 updateById不存在才 save引入 `QueryWrapper`
3. `ShopCartController.java``save()` 接口从 `shopCartService.save(shopCart)` 改为 `shopCartService.addToCart(shopCart)`
- 注意:`ShopCart.userId``Integer` 类型(不是 Long`goodsId` 是 Long
- 历史数据清理:提供 `sql/shop_cart_merge_duplicates.sql`,按 (user_id,goods_id,sku_id) 分组合并 cart_num 并删除重复行sku_id 可能为 NULL`<=>` null-safe 匹配);执行前先备份
- 编译验证Maven compile 成功
- 后端需重启服务才生效

View File

@@ -39,6 +39,7 @@
- 门店中心:`src/pages/store/center/index.tsx`
- 购物车 API`src/api/shop/shopCart/index.ts`(批量删除接口 `/shop/shop-cart/batch` 后端期望直接接收 `ArrayList<Integer>``[1,2,3]`,不要用 `{ ids }` 包裹)
- 购物车 Context`src/contexts/CartContext.tsx`
- 购物车合并加购:后端 `ShopCartServiceImpl.addToCart()` 按 user_id+goods_id+sku_id 判重,已存在则累加 cart_num不存在才新增skuId 为 null/0单规格匹配 IS NULL 或 =0。`ShopCart.userId` 是 Integer非 Long。历史重复数据清理脚本 `sql/shop_cart_merge_duplicates.sql`
## 订阅消息
- 模板 ID`sh1K9iK7vZjebUNFu6OsMsnsJxm4whThWGrhN7I4zVg`(交易提醒)