forked from gxwebsoft/mp-10550
优化下单流程
This commit is contained in:
181
docs/backend-multi-spec-integration.md
Normal file
181
docs/backend-multi-spec-integration.md
Normal file
@@ -0,0 +1,181 @@
|
||||
# 后端多规格功能适配指南
|
||||
|
||||
## 概述
|
||||
前端已完成商品多规格功能集成,需要后端相应适配以支持完整的多规格商品流程。
|
||||
|
||||
## 需要适配的API接口
|
||||
|
||||
### 1. 商品规格查询接口
|
||||
**接口**: `GET /shop/shop-goods-spec`
|
||||
**当前问题**: 参数模型中缺少 `goodsId` 字段
|
||||
**需要修改**:
|
||||
```java
|
||||
// ShopGoodsSpecParam 类需要添加 goodsId 字段
|
||||
public class ShopGoodsSpecParam extends PageParam {
|
||||
private Long goodsId; // 添加此字段
|
||||
private Long id;
|
||||
private String keywords;
|
||||
// ... getter/setter
|
||||
}
|
||||
```
|
||||
|
||||
### 2. 商品SKU查询接口
|
||||
**接口**: `GET /shop/shop-goods-sku`
|
||||
**当前问题**: 参数模型中缺少 `goodsId` 字段
|
||||
**需要修改**:
|
||||
```java
|
||||
// ShopGoodsSkuParam 类需要添加 goodsId 字段
|
||||
public class ShopGoodsSkuParam extends PageParam {
|
||||
private Long goodsId; // 添加此字段
|
||||
private Long id;
|
||||
private String keywords;
|
||||
// ... getter/setter
|
||||
}
|
||||
```
|
||||
|
||||
### 3. 购物车接口适配
|
||||
**当前购物车数据结构**:
|
||||
```typescript
|
||||
interface CartItem {
|
||||
goodsId: number;
|
||||
name: string;
|
||||
price: string;
|
||||
image: string;
|
||||
quantity: number;
|
||||
addTime: number;
|
||||
skuId?: number; // 新增SKU ID
|
||||
specInfo?: string; // 新增规格信息
|
||||
}
|
||||
```
|
||||
|
||||
**后端需要适配**:
|
||||
- 购物车存储时支持 `skuId` 和 `specInfo` 字段
|
||||
- 购物车查询时返回完整的SKU信息
|
||||
- 价格计算时优先使用SKU价格
|
||||
|
||||
### 4. 订单创建接口适配
|
||||
**前端订单数据结构**:
|
||||
```typescript
|
||||
interface OrderGoodsItem {
|
||||
goodsId: number;
|
||||
quantity: number;
|
||||
skuId?: number; // SKU ID
|
||||
specInfo?: string; // 规格信息字符串
|
||||
}
|
||||
```
|
||||
|
||||
**后端需要处理**:
|
||||
- 订单商品项支持SKU信息
|
||||
- 库存扣减时根据SKU进行
|
||||
- 价格计算时使用SKU价格
|
||||
- 订单详情显示规格信息
|
||||
|
||||
## 数据库表结构检查
|
||||
|
||||
### 1. 购物车表 (如果有)
|
||||
确保包含以下字段:
|
||||
```sql
|
||||
ALTER TABLE shop_cart ADD COLUMN sku_id BIGINT COMMENT 'SKU ID';
|
||||
ALTER TABLE shop_cart ADD COLUMN spec_info VARCHAR(500) COMMENT '规格信息';
|
||||
```
|
||||
|
||||
### 2. 订单商品表
|
||||
确保包含以下字段:
|
||||
```sql
|
||||
-- shop_order_goods 表应该已有这些字段
|
||||
-- sku_id BIGINT COMMENT 'SKU ID'
|
||||
-- spec VARCHAR(255) COMMENT '商品规格'
|
||||
```
|
||||
|
||||
## 业务逻辑适配
|
||||
|
||||
### 1. 库存管理
|
||||
- 单规格商品:使用 `shop_goods.stock`
|
||||
- 多规格商品:使用 `shop_goods_sku.stock`
|
||||
- 下单时根据是否有SKU选择对应的库存扣减逻辑
|
||||
|
||||
### 2. 价格计算
|
||||
- 单规格商品:使用 `shop_goods.price`
|
||||
- 多规格商品:使用 `shop_goods_sku.price`
|
||||
- 订单金额计算时优先使用SKU价格
|
||||
|
||||
### 3. 规格数据组织
|
||||
后端查询规格时需要按商品ID过滤:
|
||||
```java
|
||||
// 示例查询逻辑
|
||||
public List<ShopGoodsSpec> listByGoodsId(Long goodsId) {
|
||||
return shopGoodsSpecMapper.selectList(
|
||||
new QueryWrapper<ShopGoodsSpec>()
|
||||
.eq("goods_id", goodsId)
|
||||
.orderByAsc("spec_name", "spec_value")
|
||||
);
|
||||
}
|
||||
```
|
||||
|
||||
## 前端调用示例
|
||||
|
||||
### 1. 加载商品规格
|
||||
```typescript
|
||||
// 前端会这样调用
|
||||
listShopGoodsSpec({ goodsId: 123 })
|
||||
listShopGoodsSku({ goodsId: 123 })
|
||||
```
|
||||
|
||||
### 2. 创建订单
|
||||
```typescript
|
||||
// 单规格商品
|
||||
{
|
||||
goodsItems: [{
|
||||
goodsId: 123,
|
||||
quantity: 2
|
||||
}]
|
||||
}
|
||||
|
||||
// 多规格商品
|
||||
{
|
||||
goodsItems: [{
|
||||
goodsId: 123,
|
||||
quantity: 2,
|
||||
skuId: 456,
|
||||
specInfo: "颜色:红色|尺寸:L"
|
||||
}]
|
||||
}
|
||||
```
|
||||
|
||||
## 测试建议
|
||||
|
||||
1. **创建测试数据**:
|
||||
- 创建一个多规格商品
|
||||
- 添加规格组(颜色、尺寸等)
|
||||
- 生成对应的SKU数据
|
||||
|
||||
2. **测试场景**:
|
||||
- 商品详情页规格加载
|
||||
- 规格选择和SKU匹配
|
||||
- 加入购物车(多规格)
|
||||
- 立即购买(多规格)
|
||||
- 订单创建和支付
|
||||
|
||||
3. **边界情况**:
|
||||
- SKU库存为0的处理
|
||||
- 规格数据不完整的处理
|
||||
- 单规格和多规格商品混合购买
|
||||
|
||||
## 注意事项
|
||||
|
||||
1. **向后兼容**: 确保单规格商品的现有功能不受影响
|
||||
2. **数据一致性**: SKU价格和库存与主商品数据的同步
|
||||
3. **性能优化**: 规格和SKU数据的查询优化
|
||||
4. **错误处理**: 规格选择错误、库存不足等异常情况的处理
|
||||
|
||||
## 完成检查清单
|
||||
|
||||
- [ ] ShopGoodsSpecParam 添加 goodsId 字段
|
||||
- [ ] ShopGoodsSkuParam 添加 goodsId 字段
|
||||
- [ ] 规格查询接口支持按商品ID过滤
|
||||
- [ ] SKU查询接口支持按商品ID过滤
|
||||
- [ ] 购物车接口支持SKU信息
|
||||
- [ ] 订单创建接口支持SKU信息
|
||||
- [ ] 库存扣减逻辑适配多规格
|
||||
- [ ] 价格计算逻辑适配多规格
|
||||
- [ ] 测试多规格商品完整流程
|
||||
Reference in New Issue
Block a user