33
This commit is contained in:
parent
a856055637
commit
d44fee2b8e
|
|
@ -1,6 +1,67 @@
|
|||
# 商品管理模块前端设计文档
|
||||
# Design Document
|
||||
|
||||
## 架构设计
|
||||
## Overview
|
||||
|
||||
本设计文档描述了HoneyBox后台管理系统商品管理模块前端迁移的技术方案。该模块将老项目(PHP ThinkPHP + Layui)的商品管理前端页面迁移到新项目(ASP.NET Core + Vue 3 + Element Plus)。
|
||||
|
||||
主要工作包括:
|
||||
1. 补充缺失的后端API接口(盒子类型CRUD、盒子扩展设置、复制盒子、清空抽奖)
|
||||
2. 创建Vue 3前端页面和组件
|
||||
3. 实现API调用层
|
||||
4. 实现复杂的盒子类型条件字段逻辑
|
||||
|
||||
商品管理模块是系统核心模块,涉及10+种盒子类型,每种类型有不同的字段配置,是本次迁移中复杂度最高的模块。
|
||||
|
||||
## Architecture
|
||||
|
||||
### 前端架构
|
||||
|
||||
```
|
||||
admin-web/src/
|
||||
├── api/
|
||||
│ └── business/
|
||||
│ └── goods.ts # 商品管理API
|
||||
├── views/
|
||||
│ └── business/
|
||||
│ └── goods/
|
||||
│ ├── index.vue # 盒子列表主页面
|
||||
│ ├── type.vue # 盒子类型管理页面
|
||||
│ ├── config/
|
||||
│ │ └── typeFieldConfig.ts # 盒子类型字段配置
|
||||
│ └── components/
|
||||
│ ├── GoodsSearchForm.vue # 搜索表单组件
|
||||
│ ├── GoodsTable.vue # 盒子列表表格
|
||||
│ ├── GoodsAddDialog.vue # 盒子新增弹窗
|
||||
│ ├── GoodsEditDialog.vue # 盒子编辑弹窗
|
||||
│ ├── GoodsExtendDialog.vue # 盒子扩展设置弹窗
|
||||
│ ├── PrizeListDialog.vue # 奖品列表弹窗
|
||||
│ ├── PrizeAddDialog.vue # 奖品新增弹窗
|
||||
│ ├── PrizeEditDialog.vue # 奖品编辑弹窗
|
||||
│ └── TypeFormDialog.vue # 类型新增/编辑弹窗
|
||||
└── router/
|
||||
└── modules/
|
||||
└── business.ts # 业务模块路由
|
||||
```
|
||||
|
||||
### 后端架构
|
||||
|
||||
```
|
||||
HoneyBox.Admin.Business/
|
||||
├── Controllers/
|
||||
│ ├── GoodsController.cs # 商品管理控制器(补充API)
|
||||
│ ├── GoodsTypesController.cs # 盒子类型控制器(补充API)
|
||||
│ └── PrizesController.cs # 奖品管理控制器
|
||||
├── Services/
|
||||
│ ├── GoodsService.cs # 商品业务服务(补充方法)
|
||||
│ └── Interfaces/
|
||||
│ └── IGoodsService.cs
|
||||
└── Models/
|
||||
└── Goods/
|
||||
├── GoodsModels.cs # 商品相关模型
|
||||
├── PrizeModels.cs # 奖品相关模型
|
||||
├── GoodsTypeModels.cs # 盒子类型模型(新增)
|
||||
└── GoodsExtendModels.cs # 盒子扩展模型(新增)
|
||||
```
|
||||
|
||||
### 目录结构
|
||||
|
||||
|
|
@ -431,3 +492,95 @@ try {
|
|||
handleApiError(error, '创建失败');
|
||||
}
|
||||
```
|
||||
|
||||
## Correctness Properties
|
||||
|
||||
*A property is a characteristic or behavior that should hold true across all valid executions of a system-essentially, a formal statement about what the system should do. Properties serve as the bridge between human-readable specifications and machine-verifiable correctness guarantees.*
|
||||
|
||||
### Property 1: 盒子类型字段配置一致性
|
||||
|
||||
*For any* 盒子类型,前端字段配置应与后端数据模型保持一致,确保根据类型显示/隐藏的字段与数据库字段对应。
|
||||
|
||||
**Validates: Requirements 2.2, 2.8, 2.9, 2.10**
|
||||
|
||||
### Property 2: 盒子创建参数验证
|
||||
|
||||
*For any* 盒子创建请求,当必填字段缺失或数据格式无效时,系统应该返回错误提示而不是创建盒子。
|
||||
|
||||
**Validates: Requirements 2.3, 2.4**
|
||||
|
||||
### Property 3: 盒子状态切换一致性
|
||||
|
||||
*For any* 盒子状态变更操作,上架操作应该将status设为1,下架操作应该将status设为0,且操作后列表应该显示正确的状态。
|
||||
|
||||
**Validates: Requirements 1.3**
|
||||
|
||||
### Property 4: 奖品概率总和验证
|
||||
|
||||
*For any* 概率类型盒子(无限赏、翻倍赏等),所有奖品的概率总和不应超过100%。
|
||||
|
||||
**Validates: Requirements 4.5**
|
||||
|
||||
### Property 5: 盒子扩展设置继承
|
||||
|
||||
*For any* 盒子扩展设置查询,当盒子没有独立扩展配置时,应该返回其所属盒子类型的默认支付配置。
|
||||
|
||||
**Validates: Requirements 7.1, 7.4**
|
||||
|
||||
### Property 6: API响应格式一致性
|
||||
|
||||
*For any* 后端API响应,响应格式应该符合统一的ApiResponse结构:{ code: number, message: string, data: T },其中code为0表示成功。
|
||||
|
||||
**Validates: Requirements 8.1-8.9**
|
||||
|
||||
## Error Handling
|
||||
|
||||
### 前端错误处理
|
||||
|
||||
1. **网络错误**: 显示"网络连接失败"提示,允许用户重试
|
||||
2. **401未授权**: 自动刷新token或跳转登录页
|
||||
3. **403无权限**: 显示"没有操作权限"提示
|
||||
4. **业务错误**: 显示后端返回的错误消息
|
||||
5. **表单验证错误**: 在表单字段下方显示验证错误信息
|
||||
6. **危险操作**: 清空抽奖等危险操作需要二次确认
|
||||
|
||||
### 后端错误处理
|
||||
|
||||
1. **参数验证失败**: 返回400状态码和验证错误详情
|
||||
2. **资源不存在**: 返回404状态码和"盒子不存在"消息
|
||||
3. **业务规则违反**: 返回业务错误码和描述消息(如概率超过100%)
|
||||
4. **服务器错误**: 返回500状态码和通用错误消息
|
||||
|
||||
## Testing Strategy
|
||||
|
||||
### 单元测试
|
||||
|
||||
1. **前端组件测试**
|
||||
- 测试搜索表单组件的参数收集
|
||||
- 测试盒子类型字段配置的正确性
|
||||
- 测试奖品列表动态列的渲染
|
||||
|
||||
2. **后端服务测试**
|
||||
- 测试GoodsService的各个方法
|
||||
- 测试盒子类型CRUD操作
|
||||
- 测试盒子扩展设置的继承逻辑
|
||||
|
||||
### 属性测试
|
||||
|
||||
使用属性测试验证以下属性:
|
||||
- 盒子类型字段配置一致性
|
||||
- 盒子创建参数验证
|
||||
- 奖品概率总和验证
|
||||
- 盒子扩展设置继承
|
||||
- API响应格式一致性
|
||||
|
||||
### 集成测试
|
||||
|
||||
1. **API集成测试**
|
||||
- 测试完整的API请求-响应流程
|
||||
- 测试权限验证
|
||||
|
||||
2. **端到端测试**
|
||||
- 测试盒子列表页面的完整功能流程
|
||||
- 测试盒子新增的类型条件字段逻辑
|
||||
- 测试奖品管理的完整操作流程
|
||||
|
|
|
|||
|
|
@ -1,18 +1,33 @@
|
|||
# 商品管理模块前端迁移需求文档
|
||||
# Requirements Document
|
||||
|
||||
## 概述
|
||||
## Introduction
|
||||
|
||||
将 PHP 老项目 (`server/php/app/admin/view/Goods/`) 中的商品管理功能迁移到新的 Vue 3 + Element Plus 前端框架。
|
||||
本文档定义了HoneyBox后台管理系统商品管理模块前端迁移的需求。该模块需要将老项目(PHP ThinkPHP + Layui)的商品管理前端页面迁移到新项目(ASP.NET Core + Vue 3 + Element Plus)。
|
||||
|
||||
后端API已部分迁移完成,本次主要任务是创建前端页面并与已有API对接,同时补充缺失的API接口。
|
||||
|
||||
## Glossary
|
||||
|
||||
- **Admin_Web**: 新项目后台管理前端,位于 `server/HoneyBox/src/HoneyBox.Admin/admin-web`
|
||||
- **Goods_Controller**: 商品管理后端控制器,位于 `server/HoneyBox/src/HoneyBox.Admin.Business/Controllers/GoodsController.cs`
|
||||
- **Goods_Service**: 商品业务服务,位于 `server/HoneyBox/src/HoneyBox.Admin.Business/Services/GoodsService.cs`
|
||||
- **GoodsTypes_Controller**: 盒子类型管理控制器,位于 `server/HoneyBox/src/HoneyBox.Admin.Business/Controllers/GoodsTypesController.cs`
|
||||
- **Prizes_Controller**: 奖品管理控制器,位于 `server/HoneyBox/src/HoneyBox.Admin.Business/Controllers/PrizesController.cs`
|
||||
- **Old_View**: 老项目视图文件,位于 `server/php/app/admin/view/Goods/`
|
||||
- **Element_Plus**: Vue 3 UI组件库
|
||||
- **Layui**: 老项目使用的前端UI框架
|
||||
|
||||
## 参考文档
|
||||
|
||||
- #[[file:docs/后台管理系统-功能分析清单.md]] - 模块功能分析
|
||||
- #[[file:server/HoneyBox/src/HoneyBox.Admin.Business/Controllers/GoodsController.cs]] - 后端API
|
||||
- #[[file:server/HoneyBox/src/HoneyBox.Admin.Business/Services/GoodsService.cs]] - 后端服务
|
||||
- #[[file:server/php/app/admin/controller/GoodsType.php]] - 老项目盒子类型控制器
|
||||
- #[[file:server/php/app/common/model/GoodsExtend.php]] - 老项目盒子扩展模型
|
||||
|
||||
## 盒子类型定义
|
||||
|
||||
系统支持10种盒子类型,每种类型有不同的字段配置:
|
||||
系统支持多种盒子类型,每种类型有不同的字段配置:
|
||||
|
||||
| 类型值 | 类型名称 | 特有字段 |
|
||||
|--------|----------|----------|
|
||||
|
|
@ -24,111 +39,117 @@
|
|||
| 8 | 领主赏 | 领主开关、领主返还、领主奖品 |
|
||||
| 9 | 连击赏 | 连击次数、连击奖品 |
|
||||
| 10 | 盲盒 | 套数、盒子描述 |
|
||||
| 11 | 幸运赏(新) | 套数、锁箱、每日限购 |
|
||||
| 15 | 福利屋 | 开始/结束/开奖时间、限购次数 |
|
||||
| 16 | 翻倍赏 | 怒气值、道具卡 |
|
||||
| 17 | 特殊盒子 | 每日限购 |
|
||||
|
||||
## 用户故事
|
||||
## Requirements
|
||||
|
||||
### US-001: 盒子列表管理
|
||||
作为后台管理员,我需要查看和管理所有盒子,以便进行日常运营。
|
||||
### Requirement 1: 盒子列表页面
|
||||
|
||||
**验收标准:**
|
||||
- AC-001.1: 支持按盒子标题、状态、类型搜索
|
||||
- AC-001.2: 列表显示盒子ID、类型、名称、价格、套数、图片、状态等信息
|
||||
- AC-001.3: 支持上架/下架状态切换
|
||||
- AC-001.4: 支持编辑、删除、复制盒子操作
|
||||
- AC-001.5: 支持查看和管理盒子奖品
|
||||
- AC-001.6: 支持盒子扩展设置(支付方式配置)
|
||||
- AC-001.7: 福利屋类型显示开始/结束/开奖时间
|
||||
**User Story:** As a 管理员, I want 查看和管理所有盒子, so that 我可以进行日常运营。
|
||||
|
||||
### US-002: 盒子新增
|
||||
作为后台管理员,我需要新增盒子,以便上架新的抽奖活动。
|
||||
#### Acceptance Criteria
|
||||
|
||||
**验收标准:**
|
||||
- AC-002.1: 支持选择盒子类型(10种类型)
|
||||
- AC-002.2: 根据盒子类型动态显示/隐藏相关字段
|
||||
- AC-002.3: 支持配置基础信息(名称、价格、排序、描述)
|
||||
- AC-002.4: 支持配置首抽五折、是否最新
|
||||
- AC-002.5: 支持配置自动下架(利润值、抽数阈值、下架金额)
|
||||
- AC-002.6: 支持配置解锁金额
|
||||
- AC-002.7: 支持上传盒子封面图和详情图
|
||||
- AC-002.8: 一番赏/幸运赏类型支持配置套数、锁箱、每日限购
|
||||
- AC-002.9: 无限赏/翻倍赏类型支持配置怒气值、道具卡
|
||||
- AC-002.10: 福利屋类型支持配置时间(开始/结束/开奖)
|
||||
1. WHEN 管理员访问盒子管理页面 THEN Admin_Web SHALL 显示盒子列表表格,包含盒子ID、类型、名称、价格、套数、图片、状态等字段
|
||||
2. WHEN 管理员输入搜索条件(盒子标题、状态、类型)并点击搜索 THEN Admin_Web SHALL 根据条件筛选并显示匹配的盒子列表
|
||||
3. WHEN 管理员点击状态开关 THEN Admin_Web SHALL 调用API切换盒子上架/下架状态
|
||||
4. WHEN 管理员点击"编辑"按钮 THEN Admin_Web SHALL 弹出盒子编辑对话框
|
||||
5. WHEN 管理员点击"删除"按钮 THEN Admin_Web SHALL 弹出确认对话框,确认后调用API删除盒子
|
||||
6. WHEN 管理员点击"复制"按钮 THEN Admin_Web SHALL 调用API复制盒子(含奖品)
|
||||
7. WHEN 管理员点击"奖品"按钮 THEN Admin_Web SHALL 弹出奖品列表对话框
|
||||
8. WHEN 管理员点击"扩展设置"按钮 THEN Admin_Web SHALL 弹出扩展设置对话框
|
||||
9. WHEN 管理员点击"清空抽奖"按钮 THEN Admin_Web SHALL 弹出危险操作确认对话框,确认后清空抽奖记录
|
||||
10. WHEN 盒子类型为福利屋 THEN Admin_Web SHALL 在列表中显示开始/结束/开奖时间
|
||||
|
||||
### US-003: 盒子编辑
|
||||
作为后台管理员,我需要编辑已有盒子,以便调整活动配置。
|
||||
### Requirement 2: 盒子新增功能
|
||||
|
||||
**验收标准:**
|
||||
- AC-003.1: 盒子类型不可修改(编辑时禁用)
|
||||
- AC-003.2: 其他字段可正常编辑
|
||||
- AC-003.3: 保存后刷新列表
|
||||
**User Story:** As a 管理员, I want 新增盒子, so that 我可以上架新的抽奖活动。
|
||||
|
||||
### US-004: 奖品列表管理
|
||||
作为后台管理员,我需要管理盒子的奖品,以便配置抽奖内容。
|
||||
#### Acceptance Criteria
|
||||
|
||||
**验收标准:**
|
||||
- AC-004.1: 支持按奖品标题搜索
|
||||
- AC-004.2: 根据盒子类型动态显示不同列(数量/概率)
|
||||
- AC-004.3: 支持树形表格展示(宝箱类型可展开子奖品)
|
||||
- AC-004.4: 显示概率统计(无限赏等类型)
|
||||
- AC-004.5: 支持排序字段直接编辑
|
||||
- AC-004.6: 支持添加、编辑、删除奖品
|
||||
1. WHEN 管理员点击"新增盒子"按钮 THEN Admin_Web SHALL 弹出盒子新增对话框,显示盒子类型选择
|
||||
2. WHEN 管理员选择盒子类型 THEN Admin_Web SHALL 根据类型动态显示/隐藏相关字段
|
||||
3. THE Admin_Web SHALL 支持配置基础信息(名称、价格、排序、描述)
|
||||
4. THE Admin_Web SHALL 支持配置首抽五折、是否最新开关
|
||||
5. THE Admin_Web SHALL 支持配置自动下架(利润值、抽数阈值、下架金额)
|
||||
6. THE Admin_Web SHALL 支持配置解锁金额
|
||||
7. THE Admin_Web SHALL 支持上传盒子封面图和详情图
|
||||
8. WHEN 盒子类型为一番赏/幸运赏 THEN Admin_Web SHALL 显示套数、锁箱、每日限购配置
|
||||
9. WHEN 盒子类型为无限赏/翻倍赏 THEN Admin_Web SHALL 显示怒气值、道具卡配置
|
||||
10. WHEN 盒子类型为福利屋 THEN Admin_Web SHALL 显示时间配置(开始/结束/开奖)
|
||||
|
||||
### US-005: 奖品新增/编辑
|
||||
作为后台管理员,我需要新增和编辑奖品,以便配置抽奖奖品。
|
||||
### Requirement 3: 盒子编辑功能
|
||||
|
||||
**验收标准:**
|
||||
- AC-005.1: 支持配置奖品基础信息(名称、类型、售价、采购价、参考价)
|
||||
- AC-005.2: 支持选择奖品分类(现货/预售/货币/宝箱)
|
||||
- AC-005.3: 支持选择奖品等级(A/B/C/D/E等)
|
||||
- AC-005.4: 根据盒子类型显示数量或概率字段
|
||||
- AC-005.5: 翻倍赏支持配置赠送倍率
|
||||
- AC-005.6: 预售类型支持配置预售时间
|
||||
- AC-005.7: 支持配置赠送货币
|
||||
- AC-005.8: 支持上传奖品图片和详情图
|
||||
**User Story:** As a 管理员, I want 编辑已有盒子, so that 我可以调整活动配置。
|
||||
|
||||
### US-006: 盒子类型管理
|
||||
作为后台管理员,我需要管理盒子类型,以便配置类型属性。
|
||||
#### Acceptance Criteria
|
||||
|
||||
**验收标准:**
|
||||
- AC-006.1: 显示类型列表(ID、名称、Key、排序)
|
||||
- AC-006.2: 支持首页显示、分类显示开关
|
||||
- AC-006.3: 支持配置支付方式(微信/余额/货币/优惠券)
|
||||
- AC-006.4: 支持配置角标文字
|
||||
- AC-006.5: 支持新增、编辑、删除类型
|
||||
1. WHEN 管理员打开盒子编辑对话框 THEN Admin_Web SHALL 禁用盒子类型选择(不可修改)
|
||||
2. THE Admin_Web SHALL 回显盒子当前配置数据
|
||||
3. WHEN 管理员修改配置并提交 THEN Admin_Web SHALL 调用API更新盒子并刷新列表
|
||||
|
||||
### US-007: 盒子扩展设置
|
||||
作为后台管理员,我需要为单个盒子配置独立的支付方式。
|
||||
### Requirement 4: 奖品列表管理
|
||||
|
||||
**验收标准:**
|
||||
- AC-007.1: 显示盒子基本信息
|
||||
- AC-007.2: 支持多选支付方式
|
||||
- AC-007.3: 支持选择支付类型(抵扣/支付)
|
||||
- AC-007.4: 支持删除扩展设置恢复默认
|
||||
**User Story:** As a 管理员, I want 管理盒子的奖品, so that 我可以配置抽奖内容。
|
||||
|
||||
## 非功能需求
|
||||
#### Acceptance Criteria
|
||||
|
||||
### NFR-001: 性能
|
||||
- 盒子列表分页加载,每页默认20条
|
||||
- 图片使用懒加载
|
||||
- 表单提交防重复点击
|
||||
1. WHEN 管理员打开奖品列表对话框 THEN Admin_Web SHALL 显示该盒子的所有奖品
|
||||
2. WHEN 管理员输入奖品标题搜索 THEN Admin_Web SHALL 筛选显示匹配的奖品
|
||||
3. THE Admin_Web SHALL 根据盒子类型动态显示不同列(数量/概率)
|
||||
4. WHEN 奖品类型为宝箱 THEN Admin_Web SHALL 支持树形表格展开显示子奖品
|
||||
5. THE Admin_Web SHALL 显示概率统计(无限赏等类型)
|
||||
6. THE Admin_Web SHALL 支持添加、编辑、删除奖品操作
|
||||
|
||||
### NFR-002: 用户体验
|
||||
- 表单验证实时反馈
|
||||
- 操作成功/失败提示
|
||||
- 删除操作二次确认
|
||||
- 图片上传支持预览
|
||||
### Requirement 5: 奖品新增/编辑功能
|
||||
|
||||
### NFR-003: 兼容性
|
||||
- 支持 Chrome、Firefox、Edge 最新版本
|
||||
- 响应式布局适配不同屏幕
|
||||
**User Story:** As a 管理员, I want 新增和编辑奖品, so that 我可以配置抽奖奖品。
|
||||
|
||||
## 约束条件
|
||||
#### Acceptance Criteria
|
||||
|
||||
- 后端API已完成,使用现有的 GoodsController 和 PrizesController
|
||||
- 遵循现有项目的代码规范和目录结构
|
||||
- 使用 Element Plus 组件库
|
||||
- 使用 TypeScript 编写
|
||||
1. THE Admin_Web SHALL 支持配置奖品基础信息(名称、售价、采购价、参考价)
|
||||
2. THE Admin_Web SHALL 支持选择奖品分类(现货/预售/货币/宝箱)
|
||||
3. THE Admin_Web SHALL 支持选择奖品等级(A/B/C/D/E等)
|
||||
4. THE Admin_Web SHALL 根据盒子类型显示数量或概率字段
|
||||
5. WHEN 盒子类型为翻倍赏 THEN Admin_Web SHALL 显示赠送倍率配置
|
||||
6. WHEN 奖品分类为预售 THEN Admin_Web SHALL 显示预售时间配置
|
||||
7. THE Admin_Web SHALL 支持配置赠送货币
|
||||
8. THE Admin_Web SHALL 支持上传奖品图片和详情图
|
||||
|
||||
### Requirement 6: 盒子类型管理
|
||||
|
||||
**User Story:** As a 管理员, I want 管理盒子类型, so that 我可以配置类型属性。
|
||||
|
||||
#### Acceptance Criteria
|
||||
|
||||
1. WHEN 管理员访问盒子类型管理页面 THEN Admin_Web SHALL 显示类型列表(ID、名称、Key、排序)
|
||||
2. THE Admin_Web SHALL 支持首页显示、分类显示开关
|
||||
3. THE Admin_Web SHALL 支持配置支付方式(微信/余额/积分/积分2/优惠券)
|
||||
4. THE Admin_Web SHALL 支持配置角标文字
|
||||
5. THE Admin_Web SHALL 支持新增、编辑、删除类型操作
|
||||
|
||||
### Requirement 7: 盒子扩展设置
|
||||
|
||||
**User Story:** As a 管理员, I want 为单个盒子配置独立的支付方式, so that 我可以覆盖类型默认配置。
|
||||
|
||||
#### Acceptance Criteria
|
||||
|
||||
1. WHEN 管理员打开扩展设置对话框 THEN Admin_Web SHALL 显示盒子基本信息
|
||||
2. THE Admin_Web SHALL 支持多选支付方式(微信/余额/积分/积分2/优惠券)
|
||||
3. THE Admin_Web SHALL 支持选择支付类型(抵扣模式/支付模式)
|
||||
4. WHEN 管理员点击"删除扩展设置" THEN Admin_Web SHALL 删除独立配置,恢复使用类型默认配置
|
||||
|
||||
### Requirement 8: API补充迁移
|
||||
|
||||
**User Story:** As a 开发者, I want 补充缺失的后端API, so that 前端页面可以正常工作。
|
||||
|
||||
#### Acceptance Criteria
|
||||
|
||||
1. THE GoodsTypes_Controller SHALL 提供创建盒子类型API(POST /api/admin/business/goods-types)
|
||||
2. THE GoodsTypes_Controller SHALL 提供更新盒子类型API(PUT /api/admin/business/goods-types/{id})
|
||||
3. THE GoodsTypes_Controller SHALL 提供删除盒子类型API(DELETE /api/admin/business/goods-types/{id})
|
||||
4. THE GoodsTypes_Controller SHALL 提供修改类型状态API(PUT /api/admin/business/goods-types/{id}/status)
|
||||
5. THE Goods_Controller SHALL 提供获取扩展设置API(GET /api/admin/business/goods/{id}/extend)
|
||||
6. THE Goods_Controller SHALL 提供更新扩展设置API(PUT /api/admin/business/goods/{id}/extend)
|
||||
7. THE Goods_Controller SHALL 提供删除扩展设置API(DELETE /api/admin/business/goods/{id}/extend)
|
||||
8. THE Goods_Controller SHALL 提供复制盒子API(POST /api/admin/business/goods/{id}/copy)
|
||||
9. THE Goods_Controller SHALL 提供清空抽奖API(POST /api/admin/business/goods/{id}/clear-lottery)
|
||||
|
|
|
|||
|
|
@ -1,215 +1,300 @@
|
|||
# 商品管理模块前端迁移任务清单
|
||||
# Implementation Plan: 商品管理模块前端迁移
|
||||
|
||||
## Overview
|
||||
|
||||
本实现计划将商品管理模块从老项目(PHP ThinkPHP + Layui)迁移到新项目(ASP.NET Core + Vue 3 + Element Plus)。实现分为后端API补充和前端页面开发两个主要部分。
|
||||
|
||||
## 任务概览
|
||||
|
||||
| 阶段 | 任务数 | 预计工时 |
|
||||
|------|--------|----------|
|
||||
| 1. 基础设施 | 2 | 2h |
|
||||
| 2. 盒子列表 | 4 | 6h |
|
||||
| 3. 盒子新增/编辑 | 3 | 8h |
|
||||
| 4. 奖品管理 | 4 | 6h |
|
||||
| 5. 盒子类型管理 | 2 | 3h |
|
||||
| 6. 测试 | 2 | 3h |
|
||||
| **总计** | **17** | **28h** |
|
||||
| 1. 后端API补充 - 盒子类型管理 | 4 | 3h |
|
||||
| 2. 后端API补充 - 盒子扩展功能 | 4 | 3h |
|
||||
| 3. Checkpoint - 后端API验证 | 1 | 0.5h |
|
||||
| 4. 前端API层开发 | 2 | 2h |
|
||||
| 5. 前端盒子列表页面 | 4 | 6h |
|
||||
| 6. 前端盒子新增/编辑 | 3 | 8h |
|
||||
| 7. 前端奖品管理 | 4 | 6h |
|
||||
| 8. Checkpoint - 盒子管理验证 | 1 | 0.5h |
|
||||
| 9. 前端盒子类型管理 | 2 | 3h |
|
||||
| 10. 前端扩展功能 | 2 | 2h |
|
||||
| 11. 路由和权限配置 | 1 | 1h |
|
||||
| 12. Checkpoint - 完整功能验证 | 1 | 0.5h |
|
||||
| 13. 属性测试 | 6 | 2h |
|
||||
| 14. Final Checkpoint | 1 | 0.5h |
|
||||
| **总计** | **36** | **38h** |
|
||||
|
||||
---
|
||||
|
||||
## 阶段1: 基础设施
|
||||
## Tasks
|
||||
|
||||
### Task 1.1: 创建API接口层
|
||||
- [ ] 创建 `src/api/business/goods.ts`
|
||||
- [ ] 实现盒子管理API(getList, getDetail, create, update, delete, setStatus)
|
||||
- [ ] 实现奖品管理API(getPrizes, addPrize, getDetail, update, delete)
|
||||
- [ ] 实现盒子类型API(getList, create, update, delete)
|
||||
- [ ] 定义请求/响应类型接口
|
||||
- [ ] 1. 后端API补充 - 盒子类型管理
|
||||
- [ ] 1.1 创建盒子类型相关模型
|
||||
- 在 `Models/Goods/` 下创建 `GoodsTypeModels.cs`
|
||||
- 定义 `GoodsTypeCreateRequest` 类(name, value, sortOrder, isShow, isFenlei, flName, cornerText, payWechat, payBalance, payCurrency, payCurrency2, payCoupon, isDeduction)
|
||||
- 定义 `GoodsTypeUpdateRequest` 类
|
||||
- 定义 `GoodsTypeStatusRequest` 类
|
||||
- 更新 `GoodsTypeDto` 添加完整字段
|
||||
- _Requirements: 8.1, 8.2, 8.3, 8.4_
|
||||
|
||||
**关联需求:** US-001, US-002, US-004, US-006
|
||||
- [ ] 1.2 扩展盒子类型服务接口
|
||||
- 在 `IGoodsService.cs` 添加 `CreateGoodsTypeAsync` 方法
|
||||
- 在 `IGoodsService.cs` 添加 `UpdateGoodsTypeAsync` 方法
|
||||
- 在 `IGoodsService.cs` 添加 `DeleteGoodsTypeAsync` 方法
|
||||
- 在 `IGoodsService.cs` 添加 `SetGoodsTypeStatusAsync` 方法
|
||||
- _Requirements: 8.1, 8.2, 8.3, 8.4_
|
||||
|
||||
### Task 1.2: 创建类型定义和配置
|
||||
- [ ] 创建盒子类型枚举 `GoodsType`
|
||||
- [ ] 创建盒子类型标签映射 `GoodsTypeLabels`
|
||||
- [ ] 创建盒子类型字段配置 `GoodsTypeFieldConfigs`
|
||||
- [ ] 创建奖品分类枚举 `PrizeCategory`
|
||||
- [ ] 创建数据模型接口(GoodsItem, PrizeItem等)
|
||||
- [ ] 1.3 实现盒子类型服务方法
|
||||
- 在 `GoodsService.cs` 实现 `CreateGoodsTypeAsync`
|
||||
- 在 `GoodsService.cs` 实现 `UpdateGoodsTypeAsync`
|
||||
- 在 `GoodsService.cs` 实现 `DeleteGoodsTypeAsync`
|
||||
- 在 `GoodsService.cs` 实现 `SetGoodsTypeStatusAsync`
|
||||
- 更新 `GetGoodsTypesAsync` 返回完整字段
|
||||
- _Requirements: 8.1, 8.2, 8.3, 8.4_
|
||||
|
||||
**关联需求:** US-002, US-005
|
||||
- [ ] 1.4 扩展盒子类型控制器
|
||||
- 在 `GoodsTypesController.cs` 添加 `POST /` 创建盒子类型
|
||||
- 在 `GoodsTypesController.cs` 添加 `PUT /{id}` 更新盒子类型
|
||||
- 在 `GoodsTypesController.cs` 添加 `DELETE /{id}` 删除盒子类型
|
||||
- 在 `GoodsTypesController.cs` 添加 `PUT /{id}/status` 修改状态
|
||||
- _Requirements: 8.1, 8.2, 8.3, 8.4_
|
||||
|
||||
---
|
||||
- [ ] 2. 后端API补充 - 盒子扩展功能
|
||||
- [ ] 2.1 创建盒子扩展相关模型
|
||||
- 在 `Models/Goods/` 下创建 `GoodsExtendModels.cs`
|
||||
- 定义 `GoodsExtendDto` 类(goodsId, payWechat, payBalance, payCurrency, payCurrency2, payCoupon, isDeduction)
|
||||
- 定义 `GoodsExtendUpdateRequest` 类
|
||||
- _Requirements: 8.5, 8.6, 8.7_
|
||||
|
||||
## 阶段2: 盒子列表
|
||||
- [ ] 2.2 扩展商品服务接口
|
||||
- 在 `IGoodsService.cs` 添加 `GetGoodsExtendAsync` 方法
|
||||
- 在 `IGoodsService.cs` 添加 `UpdateGoodsExtendAsync` 方法
|
||||
- 在 `IGoodsService.cs` 添加 `DeleteGoodsExtendAsync` 方法
|
||||
- 在 `IGoodsService.cs` 添加 `CopyGoodsAsync` 方法
|
||||
- 在 `IGoodsService.cs` 添加 `ClearGoodsLotteryAsync` 方法
|
||||
- _Requirements: 8.5, 8.6, 8.7, 8.8, 8.9_
|
||||
|
||||
### Task 2.1: 创建盒子列表页面
|
||||
- [ ] 创建 `src/views/business/goods/index.vue`
|
||||
- [ ] 实现页面布局(搜索区 + 表格区)
|
||||
- [ ] 集成搜索表单和表格组件
|
||||
- [ ] 实现分页逻辑
|
||||
- [ ] 2.3 实现盒子扩展服务方法
|
||||
- 在 `GoodsService.cs` 实现 `GetGoodsExtendAsync`(如无扩展配置则返回盒子类型默认配置)
|
||||
- 在 `GoodsService.cs` 实现 `UpdateGoodsExtendAsync`
|
||||
- 在 `GoodsService.cs` 实现 `DeleteGoodsExtendAsync`
|
||||
- 在 `GoodsService.cs` 实现 `CopyGoodsAsync`(复制盒子及其奖品)
|
||||
- 在 `GoodsService.cs` 实现 `ClearGoodsLotteryAsync`(清空抽奖记录)
|
||||
- _Requirements: 8.5, 8.6, 8.7, 8.8, 8.9_
|
||||
|
||||
**关联需求:** US-001 (AC-001.1, AC-001.2)
|
||||
- [ ] 2.4 扩展商品控制器
|
||||
- 在 `GoodsController.cs` 添加 `GET /{id}/extend` 获取扩展设置
|
||||
- 在 `GoodsController.cs` 添加 `PUT /{id}/extend` 更新扩展设置
|
||||
- 在 `GoodsController.cs` 添加 `DELETE /{id}/extend` 删除扩展设置
|
||||
- 在 `GoodsController.cs` 添加 `POST /{id}/copy` 复制盒子
|
||||
- 在 `GoodsController.cs` 添加 `POST /{id}/clear-lottery` 清空抽奖
|
||||
- _Requirements: 8.5, 8.6, 8.7, 8.8, 8.9_
|
||||
|
||||
### Task 2.2: 创建搜索表单组件
|
||||
- [ ] 创建 `src/views/business/goods/components/GoodsSearchForm.vue`
|
||||
- [ ] 实现盒子标题输入框
|
||||
- [ ] 实现状态下拉选择(上架/下架/售罄)
|
||||
- [ ] 实现盒子类型下拉选择
|
||||
- [ ] 实现搜索和重置按钮
|
||||
- [ ] 3. Checkpoint - 后端API验证
|
||||
- 确保所有新增API编译通过
|
||||
- 使用Swagger测试API基本功能
|
||||
- 确保权限验证正常工作
|
||||
|
||||
**关联需求:** US-001 (AC-001.1)
|
||||
- [ ] 4. 前端API层开发
|
||||
- [ ] 4.1 创建商品管理API模块
|
||||
- 创建 `src/api/business/goods.ts`
|
||||
- 定义所有TypeScript接口(GoodsItem, GoodsDetail, GoodsCreateRequest, GoodsUpdateRequest等)
|
||||
- 实现盒子列表查询API调用
|
||||
- 实现盒子详情API调用
|
||||
- 实现盒子创建/更新/删除API调用
|
||||
- 实现盒子状态管理API调用
|
||||
- 实现盒子复制API调用
|
||||
- 实现清空抽奖API调用
|
||||
- _Requirements: 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 1.9_
|
||||
|
||||
### Task 2.3: 创建盒子表格组件
|
||||
- [ ] 创建 `src/views/business/goods/components/GoodsTable.vue`
|
||||
- [ ] 实现表格列配置(ID、类型、名称、价格、套数、图片、状态等)
|
||||
- [ ] 实现图片预览功能
|
||||
- [ ] 实现状态切换开关
|
||||
- [ ] 实现排序字段直接编辑
|
||||
- [ ] 福利屋类型显示时间信息
|
||||
- [ ] 4.2 实现奖品和类型相关API调用
|
||||
- 实现奖品列表查询API调用
|
||||
- 实现奖品创建/更新/删除API调用
|
||||
- 实现盒子类型列表API调用
|
||||
- 实现盒子类型创建/更新/删除API调用
|
||||
- 实现盒子扩展设置API调用
|
||||
- _Requirements: 4.1, 4.6, 6.1, 6.5, 7.1, 7.2, 7.3, 7.4_
|
||||
|
||||
**关联需求:** US-001 (AC-001.2, AC-001.3, AC-001.7)
|
||||
- [ ] 5. 前端盒子列表页面开发
|
||||
- [ ] 5.1 创建盒子列表主页面
|
||||
- 创建 `src/views/business/goods/index.vue`
|
||||
- 实现页面布局(搜索区 + 表格区)
|
||||
- 集成搜索表单和表格组件
|
||||
- 实现分页逻辑
|
||||
- _Requirements: 1.1, 1.2_
|
||||
|
||||
### Task 2.4: 实现盒子操作功能
|
||||
- [ ] 实现编辑按钮(打开编辑弹窗)
|
||||
- [ ] 实现删除按钮(二次确认)
|
||||
- [ ] 实现复制按钮
|
||||
- [ ] 实现奖品按钮(打开奖品列表弹窗)
|
||||
- [ ] 实现扩展设置按钮(打开扩展设置弹窗)
|
||||
- [ ] 实现清空抽奖按钮(危险操作,二次确认)
|
||||
- [ ] 5.2 创建搜索表单组件
|
||||
- 创建 `src/views/business/goods/components/GoodsSearchForm.vue`
|
||||
- 实现盒子标题输入框
|
||||
- 实现状态下拉选择(上架/下架/售罄)
|
||||
- 实现盒子类型下拉选择
|
||||
- 实现搜索和重置按钮
|
||||
- _Requirements: 1.2_
|
||||
|
||||
**关联需求:** US-001 (AC-001.4, AC-001.5, AC-001.6)
|
||||
- [ ] 5.3 创建盒子表格组件
|
||||
- 创建 `src/views/business/goods/components/GoodsTable.vue`
|
||||
- 实现表格列配置(ID、类型、名称、价格、套数、图片、状态等)
|
||||
- 实现图片预览功能
|
||||
- 实现状态切换开关
|
||||
- 实现排序字段直接编辑
|
||||
- 福利屋类型显示时间信息
|
||||
- _Requirements: 1.1, 1.3, 1.10_
|
||||
|
||||
---
|
||||
- [ ] 5.4 实现盒子操作功能
|
||||
- 实现编辑按钮(打开编辑弹窗)
|
||||
- 实现删除按钮(二次确认)
|
||||
- 实现复制按钮
|
||||
- 实现奖品按钮(打开奖品列表弹窗)
|
||||
- 实现扩展设置按钮(打开扩展设置弹窗)
|
||||
- 实现清空抽奖按钮(危险操作,二次确认)
|
||||
- _Requirements: 1.4, 1.5, 1.6, 1.7, 1.8, 1.9_
|
||||
|
||||
## 阶段3: 盒子新增/编辑
|
||||
- [ ] 6. 前端盒子新增/编辑开发
|
||||
- [ ] 6.1 创建盒子新增弹窗
|
||||
- 创建 `src/views/business/goods/components/GoodsAddDialog.vue`
|
||||
- 实现盒子类型选择(单选按钮组)
|
||||
- 实现基础信息表单(名称、价格、排序、描述)
|
||||
- 实现首抽五折、是否最新开关
|
||||
- 实现图片上传(封面图、详情图)
|
||||
- 实现表单验证
|
||||
- _Requirements: 2.1, 2.3, 2.4, 2.7_
|
||||
|
||||
### Task 3.1: 创建盒子新增弹窗
|
||||
- [ ] 创建 `src/views/business/goods/components/GoodsAddDialog.vue`
|
||||
- [ ] 实现盒子类型选择(单选按钮组)
|
||||
- [ ] 实现基础信息表单(名称、价格、排序、描述)
|
||||
- [ ] 实现首抽五折、是否最新开关
|
||||
- [ ] 实现图片上传(封面图、详情图)
|
||||
- [ ] 实现表单验证
|
||||
- [ ] 6.2 实现盒子类型条件字段
|
||||
- 实现根据类型动态显示/隐藏字段逻辑
|
||||
- 一番赏/幸运赏:套数、锁箱、每日限购
|
||||
- 无限赏/翻倍赏:怒气值开关、怒气值、道具卡选择
|
||||
- 福利屋:开始时间、结束时间、开奖时间、限购次数
|
||||
- 领主赏:领主开关、领主返还、领主奖品选择
|
||||
- 连击赏:连击次数、连击奖品选择
|
||||
- 实现自动下架配置(利润值、抽数阈值、下架金额)
|
||||
- 实现解锁金额配置
|
||||
- _Requirements: 2.2, 2.5, 2.6, 2.8, 2.9, 2.10_
|
||||
|
||||
**关联需求:** US-002 (AC-002.1, AC-002.3, AC-002.4, AC-002.7)
|
||||
- [ ] 6.3 创建盒子编辑弹窗
|
||||
- 创建 `src/views/business/goods/components/GoodsEditDialog.vue`
|
||||
- 复用新增弹窗的表单结构
|
||||
- 禁用盒子类型选择
|
||||
- 实现数据回显
|
||||
- 实现更新逻辑
|
||||
- _Requirements: 3.1, 3.2, 3.3_
|
||||
|
||||
### Task 3.2: 实现盒子类型条件字段
|
||||
- [ ] 实现根据类型动态显示/隐藏字段逻辑
|
||||
- [ ] 一番赏/幸运赏:套数、锁箱、每日限购
|
||||
- [ ] 无限赏/翻倍赏:怒气值开关、怒气值、道具卡选择
|
||||
- [ ] 福利屋:开始时间、结束时间、开奖时间、限购次数
|
||||
- [ ] 领主赏:领主开关、领主返还、领主奖品选择
|
||||
- [ ] 连击赏:连击次数、连击奖品选择
|
||||
- [ ] 实现自动下架配置(利润值、抽数阈值、下架金额)
|
||||
- [ ] 实现解锁金额配置
|
||||
- [ ] 7. 前端奖品管理开发
|
||||
- [ ] 7.1 创建奖品列表弹窗
|
||||
- 创建 `src/views/business/goods/components/PrizeListDialog.vue`
|
||||
- 实现奖品搜索(标题)
|
||||
- 实现动态列配置(根据盒子类型显示数量/概率)
|
||||
- 实现树形表格(宝箱类型展开子奖品)
|
||||
- 显示概率统计(无限赏等类型)
|
||||
- 实现排序字段直接编辑
|
||||
- _Requirements: 4.1, 4.2, 4.3, 4.4, 4.5_
|
||||
|
||||
**关联需求:** US-002 (AC-002.2, AC-002.5, AC-002.6, AC-002.8, AC-002.9, AC-002.10)
|
||||
- [ ] 7.2 创建奖品新增弹窗
|
||||
- 创建 `src/views/business/goods/components/PrizeAddDialog.vue`
|
||||
- 实现基础信息表单(名称、售价、采购价、参考价)
|
||||
- 实现奖品分类选择(现货/预售/货币/宝箱)
|
||||
- 实现奖品等级选择(A/B/C/D/E)
|
||||
- 实现图片上传(奖品图、详情图)
|
||||
- 实现表单验证
|
||||
- _Requirements: 5.1, 5.2, 5.3, 5.8_
|
||||
|
||||
### Task 3.3: 创建盒子编辑弹窗
|
||||
- [ ] 创建 `src/views/business/goods/components/GoodsEditDialog.vue`
|
||||
- [ ] 复用新增弹窗的表单结构
|
||||
- [ ] 禁用盒子类型选择
|
||||
- [ ] 实现数据回显
|
||||
- [ ] 实现更新逻辑
|
||||
- [ ] 7.3 实现奖品条件字段
|
||||
- 根据盒子类型显示数量或概率字段
|
||||
- 翻倍赏显示赠送倍率
|
||||
- 领主赏显示是否领主开关
|
||||
- 预售类型显示预售时间
|
||||
- 实现赠送货币配置组件
|
||||
- _Requirements: 5.4, 5.5, 5.6, 5.7_
|
||||
|
||||
**关联需求:** US-003 (AC-003.1, AC-003.2, AC-003.3)
|
||||
- [ ] 7.4 创建奖品编辑弹窗
|
||||
- 创建 `src/views/business/goods/components/PrizeEditDialog.vue`
|
||||
- 复用新增弹窗的表单结构
|
||||
- 实现数据回显
|
||||
- 实现更新逻辑
|
||||
- 实现删除功能
|
||||
- _Requirements: 4.6_
|
||||
|
||||
---
|
||||
- [ ] 8. Checkpoint - 盒子管理验证
|
||||
- 确保盒子列表页面正常显示
|
||||
- 测试搜索和分页功能
|
||||
- 测试盒子新增/编辑/删除功能
|
||||
- 测试奖品管理功能
|
||||
|
||||
## 阶段4: 奖品管理
|
||||
- [ ] 9. 前端盒子类型管理开发
|
||||
- [ ] 9.1 创建盒子类型管理页面
|
||||
- 创建 `src/views/business/goods/type.vue`
|
||||
- 实现类型列表表格(ID、名称、Key、排序)
|
||||
- 实现首页显示、分类显示开关
|
||||
- 显示支付方式、角标文字
|
||||
- 实现新增、编辑、删除操作
|
||||
- _Requirements: 6.1, 6.2, 6.3, 6.4, 6.5_
|
||||
|
||||
### Task 4.1: 创建奖品列表弹窗
|
||||
- [ ] 创建 `src/views/business/goods/components/PrizeListDialog.vue`
|
||||
- [ ] 实现奖品搜索(标题)
|
||||
- [ ] 实现动态列配置(根据盒子类型显示数量/概率)
|
||||
- [ ] 实现树形表格(宝箱类型展开子奖品)
|
||||
- [ ] 显示概率统计(无限赏等类型)
|
||||
- [ ] 实现排序字段直接编辑
|
||||
- [ ] 9.2 创建类型新增/编辑弹窗
|
||||
- 创建 `src/views/business/goods/components/TypeFormDialog.vue`
|
||||
- 实现类型名称、Key、排序输入
|
||||
- 实现首页显示、分类显示开关
|
||||
- 实现支付方式多选(微信/余额/积分/积分2/优惠券)
|
||||
- 实现角标文字输入
|
||||
- 实现支付类型选择(抵扣/支付)
|
||||
- _Requirements: 6.2, 6.3, 6.4, 6.5_
|
||||
|
||||
**关联需求:** US-004 (AC-004.1, AC-004.2, AC-004.3, AC-004.4, AC-004.5)
|
||||
- [ ] 10. 前端扩展功能开发
|
||||
- [ ] 10.1 创建盒子扩展设置弹窗
|
||||
- 创建 `src/views/business/goods/components/GoodsExtendDialog.vue`
|
||||
- 显示盒子基本信息
|
||||
- 实现支付方式多选
|
||||
- 实现支付类型选择
|
||||
- 实现保存和删除扩展设置
|
||||
- _Requirements: 7.1, 7.2, 7.3, 7.4_
|
||||
|
||||
### Task 4.2: 创建奖品新增弹窗
|
||||
- [ ] 创建 `src/views/business/goods/components/PrizeAddDialog.vue`
|
||||
- [ ] 实现基础信息表单(名称、售价、采购价、参考价)
|
||||
- [ ] 实现奖品分类选择(现货/预售/货币/宝箱)
|
||||
- [ ] 实现奖品等级选择(A/B/C/D/E)
|
||||
- [ ] 实现图片上传(奖品图、详情图)
|
||||
- [ ] 实现表单验证
|
||||
- [ ] 10.2 创建盒子类型字段配置
|
||||
- 创建 `src/views/business/goods/config/typeFieldConfig.ts`
|
||||
- 定义盒子类型枚举 `GoodsType`
|
||||
- 定义盒子类型标签映射 `GoodsTypeLabels`
|
||||
- 定义盒子类型字段配置 `GoodsTypeFieldConfigs`
|
||||
- 定义奖品分类枚举 `PrizeCategory`
|
||||
- _Requirements: 2.2, 5.4_
|
||||
|
||||
**关联需求:** US-005 (AC-005.1, AC-005.2, AC-005.3, AC-005.8)
|
||||
- [ ] 11. 路由和权限配置
|
||||
- [ ] 11.1 配置路由和权限
|
||||
- 在 `src/router/modules/business.ts` 添加路由配置
|
||||
- 配置盒子管理路由 `/business/goods`
|
||||
- 配置盒子类型路由 `/business/goods/type`
|
||||
- 配置权限标识 `goods:list`, `goods:type`
|
||||
|
||||
### Task 4.3: 实现奖品条件字段
|
||||
- [ ] 根据盒子类型显示数量或概率字段
|
||||
- [ ] 翻倍赏显示赠送倍率
|
||||
- [ ] 领主赏显示是否领主开关
|
||||
- [ ] 预售类型显示预售时间
|
||||
- [ ] 实现赠送货币配置组件
|
||||
- [ ] 12. Checkpoint - 完整功能验证
|
||||
- 确保所有页面正常访问
|
||||
- 测试完整的商品管理流程
|
||||
- 验证权限控制正常工作
|
||||
|
||||
**关联需求:** US-005 (AC-005.4, AC-005.5, AC-005.6, AC-005.7)
|
||||
- [ ] 13. 属性测试
|
||||
- [ ] 13.1 编写盒子类型字段配置一致性属性测试
|
||||
- **Property 1: 盒子类型字段配置一致性**
|
||||
- **Validates: Requirements 2.2, 2.8, 2.9, 2.10**
|
||||
|
||||
### Task 4.4: 创建奖品编辑弹窗
|
||||
- [ ] 创建 `src/views/business/goods/components/PrizeEditDialog.vue`
|
||||
- [ ] 复用新增弹窗的表单结构
|
||||
- [ ] 实现数据回显
|
||||
- [ ] 实现更新逻辑
|
||||
- [ ] 实现删除功能
|
||||
- [ ] 13.2 编写盒子创建参数验证属性测试
|
||||
- **Property 2: 盒子创建参数验证**
|
||||
- **Validates: Requirements 2.3, 2.4**
|
||||
|
||||
**关联需求:** US-004 (AC-004.6)
|
||||
- [ ] 13.3 编写盒子状态切换一致性属性测试
|
||||
- **Property 3: 盒子状态切换一致性**
|
||||
- **Validates: Requirements 1.3**
|
||||
|
||||
---
|
||||
- [ ] 13.4 编写奖品概率总和验证属性测试
|
||||
- **Property 4: 奖品概率总和验证**
|
||||
- **Validates: Requirements 4.5**
|
||||
|
||||
## 阶段5: 盒子类型管理
|
||||
- [ ] 13.5 编写盒子扩展设置继承属性测试
|
||||
- **Property 5: 盒子扩展设置继承**
|
||||
- **Validates: Requirements 7.1, 7.4**
|
||||
|
||||
### Task 5.1: 创建盒子类型管理页面
|
||||
- [ ] 创建 `src/views/business/goods/type.vue`
|
||||
- [ ] 实现类型列表表格(ID、名称、Key、排序)
|
||||
- [ ] 实现首页显示、分类显示开关
|
||||
- [ ] 显示支付方式、角标文字
|
||||
- [ ] 实现新增、编辑、删除操作
|
||||
- [ ] 13.6 编写API响应格式一致性属性测试
|
||||
- **Property 6: API响应格式一致性**
|
||||
- **Validates: Requirements 8.1-8.9**
|
||||
|
||||
**关联需求:** US-006 (AC-006.1, AC-006.2, AC-006.3, AC-006.4, AC-006.5)
|
||||
|
||||
### Task 5.2: 创建类型新增/编辑弹窗
|
||||
- [ ] 创建 `src/views/business/goods/components/TypeAddDialog.vue`
|
||||
- [ ] 创建 `src/views/business/goods/components/TypeEditDialog.vue`
|
||||
- [ ] 实现类型名称、Key、排序输入
|
||||
- [ ] 实现首页显示、分类显示开关
|
||||
- [ ] 实现支付方式多选
|
||||
- [ ] 实现角标文字输入
|
||||
- [ ] 实现支付类型选择(抵扣/支付)
|
||||
|
||||
**关联需求:** US-006 (AC-006.2, AC-006.3, AC-006.4, AC-006.5)
|
||||
|
||||
---
|
||||
|
||||
## 阶段6: 扩展功能和测试
|
||||
|
||||
### Task 6.1: 创建盒子扩展设置弹窗
|
||||
- [ ] 创建 `src/views/business/goods/components/GoodsExtendDialog.vue`
|
||||
- [ ] 显示盒子基本信息
|
||||
- [ ] 实现支付方式多选
|
||||
- [ ] 实现支付类型选择
|
||||
- [ ] 实现保存和删除扩展设置
|
||||
|
||||
**关联需求:** US-007 (AC-007.1, AC-007.2, AC-007.3, AC-007.4)
|
||||
|
||||
### Task 6.2: 配置路由和权限
|
||||
- [ ] 在 `src/router/modules/business.ts` 添加路由配置
|
||||
- [ ] 配置盒子管理路由 `/business/goods`
|
||||
- [ ] 配置盒子类型路由 `/business/goods/type`
|
||||
- [ ] 配置权限标识 `goods:list`, `goods:type`
|
||||
|
||||
**关联需求:** 所有
|
||||
|
||||
---
|
||||
|
||||
## 阶段7: 属性测试
|
||||
|
||||
### Task 7.1: 创建属性测试
|
||||
- [ ] 创建 `GoodsManagementFrontendPropertyTests.cs`
|
||||
- [ ] 测试盒子类型字段配置一致性
|
||||
- [ ] 测试盒子创建有效数据成功
|
||||
- [ ] 测试盒子创建无效类型失败
|
||||
- [ ] 测试奖品创建有效数据成功
|
||||
- [ ] 测试奖品概率总和不超过100%
|
||||
|
||||
**关联需求:** NFR-001
|
||||
- [ ] 14. Final Checkpoint - 最终验证
|
||||
- 确保所有测试通过
|
||||
- 确保所有功能正常工作
|
||||
- 如有问题,询问用户
|
||||
|
||||
---
|
||||
|
||||
|
|
@ -219,6 +304,8 @@
|
|||
- [ ] 盒子列表正常显示,支持搜索、分页
|
||||
- [ ] 盒子新增支持10种类型,字段动态显示正确
|
||||
- [ ] 盒子编辑类型不可修改,其他字段可编辑
|
||||
- [ ] 盒子复制功能正常(含奖品)
|
||||
- [ ] 清空抽奖功能正常(有二次确认)
|
||||
- [ ] 奖品列表根据盒子类型显示不同列
|
||||
- [ ] 奖品新增/编辑功能正常
|
||||
- [ ] 盒子类型管理功能正常
|
||||
|
|
@ -231,3 +318,10 @@
|
|||
- [ ] 操作提示正确显示
|
||||
- [ ] 删除操作有二次确认
|
||||
- [ ] 属性测试全部通过
|
||||
|
||||
## Notes
|
||||
|
||||
- 每个Checkpoint确保增量验证
|
||||
- 后端API需要先完成才能进行前端开发
|
||||
- 属性测试验证通用正确性属性
|
||||
- 盒子类型字段配置是核心复杂度,需要仔细处理
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user