156 lines
8.5 KiB
Markdown
156 lines
8.5 KiB
Markdown
# Requirements Document
|
||
|
||
## Introduction
|
||
|
||
本文档定义了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]] - 老项目盒子扩展模型
|
||
|
||
## 盒子类型定义
|
||
|
||
系统支持多种盒子类型,每种类型有不同的字段配置:
|
||
|
||
| 类型值 | 类型名称 | 特有字段 |
|
||
|--------|----------|----------|
|
||
| 1 | 一番赏 | 套数、锁箱、每日限购 |
|
||
| 2 | 无限赏 | 怒气值、道具卡 |
|
||
| 3 | 擂台赏 | 全局赏数量 |
|
||
| 5 | 福袋 | 套数 |
|
||
| 6 | 幸运赏 | 套数、锁箱、限购 |
|
||
| 8 | 领主赏 | 领主开关、领主返还、领主奖品 |
|
||
| 9 | 连击赏 | 连击次数、连击奖品 |
|
||
| 10 | 盲盒 | 套数、盒子描述 |
|
||
| 15 | 福利屋 | 开始/结束/开奖时间、限购次数 |
|
||
|
||
## Requirements
|
||
|
||
### Requirement 1: 盒子列表页面
|
||
|
||
**User Story:** As a 管理员, I want 查看和管理所有盒子, so that 我可以进行日常运营。
|
||
|
||
#### Acceptance Criteria
|
||
|
||
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 在列表中显示开始/结束/开奖时间
|
||
|
||
### Requirement 2: 盒子新增功能
|
||
|
||
**User Story:** As a 管理员, I want 新增盒子, so that 我可以上架新的抽奖活动。
|
||
|
||
#### Acceptance Criteria
|
||
|
||
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 显示时间配置(开始/结束/开奖)
|
||
|
||
### Requirement 3: 盒子编辑功能
|
||
|
||
**User Story:** As a 管理员, I want 编辑已有盒子, so that 我可以调整活动配置。
|
||
|
||
#### Acceptance Criteria
|
||
|
||
1. WHEN 管理员打开盒子编辑对话框 THEN Admin_Web SHALL 禁用盒子类型选择(不可修改)
|
||
2. THE Admin_Web SHALL 回显盒子当前配置数据
|
||
3. WHEN 管理员修改配置并提交 THEN Admin_Web SHALL 调用API更新盒子并刷新列表
|
||
|
||
### Requirement 4: 奖品列表管理
|
||
|
||
**User Story:** As a 管理员, I want 管理盒子的奖品, so that 我可以配置抽奖内容。
|
||
|
||
#### Acceptance Criteria
|
||
|
||
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 支持添加、编辑、删除奖品操作
|
||
|
||
### Requirement 5: 奖品新增/编辑功能
|
||
|
||
**User Story:** As a 管理员, I want 新增和编辑奖品, so that 我可以配置抽奖奖品。
|
||
|
||
#### Acceptance Criteria
|
||
|
||
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)
|