You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
4.4 KiB
4.4 KiB
后端多规格功能适配指南
概述
前端已完成商品多规格功能集成,需要后端相应适配以支持完整的多规格商品流程。
需要适配的API接口
1. 商品规格查询接口
接口: GET /shop/shop-goods-spec
当前问题: 参数模型中缺少 goodsId
字段
需要修改:
// 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
字段
需要修改:
// ShopGoodsSkuParam 类需要添加 goodsId 字段
public class ShopGoodsSkuParam extends PageParam {
private Long goodsId; // 添加此字段
private Long id;
private String keywords;
// ... getter/setter
}
3. 购物车接口适配
当前购物车数据结构:
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. 订单创建接口适配
前端订单数据结构:
interface OrderGoodsItem {
goodsId: number;
quantity: number;
skuId?: number; // SKU ID
specInfo?: string; // 规格信息字符串
}
后端需要处理:
- 订单商品项支持SKU信息
- 库存扣减时根据SKU进行
- 价格计算时使用SKU价格
- 订单详情显示规格信息
数据库表结构检查
1. 购物车表 (如果有)
确保包含以下字段:
ALTER TABLE shop_cart ADD COLUMN sku_id BIGINT COMMENT 'SKU ID';
ALTER TABLE shop_cart ADD COLUMN spec_info VARCHAR(500) COMMENT '规格信息';
2. 订单商品表
确保包含以下字段:
-- 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过滤:
// 示例查询逻辑
public List<ShopGoodsSpec> listByGoodsId(Long goodsId) {
return shopGoodsSpecMapper.selectList(
new QueryWrapper<ShopGoodsSpec>()
.eq("goods_id", goodsId)
.orderByAsc("spec_name", "spec_value")
);
}
前端调用示例
1. 加载商品规格
// 前端会这样调用
listShopGoodsSpec({ goodsId: 123 })
listShopGoodsSku({ goodsId: 123 })
2. 创建订单
// 单规格商品
{
goodsItems: [{
goodsId: 123,
quantity: 2
}]
}
// 多规格商品
{
goodsItems: [{
goodsId: 123,
quantity: 2,
skuId: 456,
specInfo: "颜色:红色|尺寸:L"
}]
}
测试建议
-
创建测试数据:
- 创建一个多规格商品
- 添加规格组(颜色、尺寸等)
- 生成对应的SKU数据
-
测试场景:
- 商品详情页规格加载
- 规格选择和SKU匹配
- 加入购物车(多规格)
- 立即购买(多规格)
- 订单创建和支付
-
边界情况:
- SKU库存为0的处理
- 规格数据不完整的处理
- 单规格和多规格商品混合购买
注意事项
- 向后兼容: 确保单规格商品的现有功能不受影响
- 数据一致性: SKU价格和库存与主商品数据的同步
- 性能优化: 规格和SKU数据的查询优化
- 错误处理: 规格选择错误、库存不足等异常情况的处理
完成检查清单
- ShopGoodsSpecParam 添加 goodsId 字段
- ShopGoodsSkuParam 添加 goodsId 字段
- 规格查询接口支持按商品ID过滤
- SKU查询接口支持按商品ID过滤
- 购物车接口支持SKU信息
- 订单创建接口支持SKU信息
- 库存扣减逻辑适配多规格
- 价格计算逻辑适配多规格
- 测试多规格商品完整流程