|
@@ -30,12 +30,17 @@
|
|
|
|
|
|
|
|
## 设计决策
|
|
## 设计决策
|
|
|
|
|
|
|
|
-### 1. 商品列表展示策略
|
|
|
|
|
|
|
+### 1. 规格概念澄清
|
|
|
|
|
+- **规格 = 子商品的名称**:子商品的`name`字段作为规格名称
|
|
|
|
|
+- **规格选择 = 选择子商品**:选择规格时实际选择对应的子商品ID
|
|
|
|
|
+- **规格信息存储**:购物车的`spec`字段存储子商品名称,保持现有数据结构兼容
|
|
|
|
|
+
|
|
|
|
|
+### 2. 商品列表展示策略
|
|
|
- **商品列表页**(首页、分类页、搜索页):只显示父商品(spuId=0)
|
|
- **商品列表页**(首页、分类页、搜索页):只显示父商品(spuId=0)
|
|
|
- **商品详情页**:显示父商品详情 + 规格选择器(子商品作为选项)
|
|
- **商品详情页**:显示父商品详情 + 规格选择器(子商品作为选项)
|
|
|
- **单规格商品**:保持现有行为不变(spuId=0且无子商品)
|
|
- **单规格商品**:保持现有行为不变(spuId=0且无子商品)
|
|
|
|
|
|
|
|
-### 2. API设计
|
|
|
|
|
|
|
+### 3. API设计
|
|
|
- **公共商品列表API**(`/api/v1/goods`):默认只返回父商品(spuId=0)
|
|
- **公共商品列表API**(`/api/v1/goods`):默认只返回父商品(spuId=0)
|
|
|
- **商品详情API**(`/api/v1/goods/:id`):
|
|
- **商品详情API**(`/api/v1/goods/:id`):
|
|
|
- 父商品:返回商品详情 + 子商品列表(作为规格选项)
|
|
- 父商品:返回商品详情 + 子商品列表(作为规格选项)
|
|
@@ -43,7 +48,7 @@
|
|
|
- **新增API**:`GET /api/v1/goods/:id/children` 获取指定父商品的子商品列表
|
|
- **新增API**:`GET /api/v1/goods/:id/children` 获取指定父商品的子商品列表
|
|
|
- **管理员商品API**:显示完整的父子商品关系树
|
|
- **管理员商品API**:显示完整的父子商品关系树
|
|
|
|
|
|
|
|
-### 3. 父子商品配置方式
|
|
|
|
|
|
|
+### 4. 父子商品配置方式
|
|
|
1. **手动关联**:在创建/编辑父商品时,选择已有商品作为子商品
|
|
1. **手动关联**:在创建/编辑父商品时,选择已有商品作为子商品
|
|
|
2. **批量创建**:创建父商品时,同时创建多个子商品规格(如不同颜色、尺寸等)
|
|
2. **批量创建**:创建父商品时,同时创建多个子商品规格(如不同颜色、尺寸等)
|
|
|
|
|
|
|
@@ -65,24 +70,24 @@
|
|
|
|
|
|
|
|
3. **故事3:父子商品多规格选择组件开发**
|
|
3. **故事3:父子商品多规格选择组件开发**
|
|
|
- 激活并增强现有的`GoodsSpecSelector`组件
|
|
- 激活并增强现有的`GoodsSpecSelector`组件
|
|
|
- - 支持父子商品关系,以子商品作为规格选项
|
|
|
|
|
- - 支持手动指定子商品功能
|
|
|
|
|
|
|
+ - 支持父子商品关系,以子商品名称作为规格选项显示
|
|
|
|
|
+ - 规格选择实际选择对应的子商品ID
|
|
|
- 适配多租户商品数据查询
|
|
- 适配多租户商品数据查询
|
|
|
- - **验收标准**:规格选择器能正确显示和选择子商品
|
|
|
|
|
|
|
+ - **验收标准**:规格选择器能正确显示子商品名称作为规格,并能选择对应的子商品
|
|
|
|
|
|
|
|
4. **故事4:商品详情页规格选择集成**
|
|
4. **故事4:商品详情页规格选择集成**
|
|
|
- 在商品详情页集成规格选择组件
|
|
- 在商品详情页集成规格选择组件
|
|
|
- "立即购买"和"加入购物车"支持规格选择
|
|
- "立即购买"和"加入购物车"支持规格选择
|
|
|
- - 规格选择后的价格和库存实时更新
|
|
|
|
|
|
|
+ - 规格选择后使用子商品的价格和库存信息
|
|
|
- 多租户环境下的商品规格数据获取
|
|
- 多租户环境下的商品规格数据获取
|
|
|
- - **验收标准**:用户能在商品详情页成功选择规格并加入购物车
|
|
|
|
|
|
|
+ - **验收标准**:用户能在商品详情页成功选择规格,系统使用正确的子商品价格和库存
|
|
|
|
|
|
|
|
5. **故事5:购物车和订单规格支持**
|
|
5. **故事5:购物车和订单规格支持**
|
|
|
- - 购物车系统支持规格信息的存储和显示
|
|
|
|
|
- - 订单提交流程传递规格信息
|
|
|
|
|
- - 订单详情页显示规格信息
|
|
|
|
|
|
|
+ - 购物车系统支持存储子商品ID和名称(作为规格)
|
|
|
|
|
+ - 订单提交流程传递子商品ID和规格信息
|
|
|
|
|
+ - 订单详情页显示具体的子商品规格信息
|
|
|
- 多租户订单系统的规格兼容性
|
|
- 多租户订单系统的规格兼容性
|
|
|
- - **验收标准**:购物车和订单正确记录和显示规格信息
|
|
|
|
|
|
|
+ - **验收标准**:购物车和订单正确记录子商品ID和名称,保持现有spec字段兼容
|
|
|
|
|
|
|
|
## 兼容性要求
|
|
## 兼容性要求
|
|
|
- [ ] 现有API保持向后兼容,新增端点不影响现有功能
|
|
- [ ] 现有API保持向后兼容,新增端点不影响现有功能
|
|
@@ -122,9 +127,15 @@
|
|
|
- 规格选择器数据懒加载
|
|
- 规格选择器数据懒加载
|
|
|
|
|
|
|
|
### 前端适配
|
|
### 前端适配
|
|
|
-- 保持现有购物车数据结构,扩展spec字段使用
|
|
|
|
|
-- 规格选择器与现有UI样式保持一致
|
|
|
|
|
-- 错误处理和加载状态完善
|
|
|
|
|
|
|
+- **规格选择器**:显示子商品名称作为规格选项,选择时记录子商品ID
|
|
|
|
|
+- **购物车数据结构**:
|
|
|
|
|
+ - `id`: 子商品ID(实际购买的商品)
|
|
|
|
|
+ - `name`: 子商品名称(作为规格显示)
|
|
|
|
|
+ - `spec`: 子商品名称(保持现有spec字段兼容)
|
|
|
|
|
+ - `price`: 子商品价格
|
|
|
|
|
+ - `stock`: 子商品库存
|
|
|
|
|
+- **商品详情页**:父商品信息展示,规格选择后使用子商品价格和库存
|
|
|
|
|
+- 保持现有UI样式和错误处理机制
|
|
|
|
|
|
|
|
---
|
|
---
|
|
|
**史诗创建时间**:2025-12-06
|
|
**史诗创建时间**:2025-12-06
|