HaniBlindBox/.kiro/specs/marketing-management-frontend/tasks.md
2026-01-18 02:45:30 +08:00

471 lines
20 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Implementation Plan: 营销活动管理模块前端迁移
## Overview
本实现计划将营销活动管理模块从老项目PHP ThinkPHP + Layui迁移到新项目ASP.NET Core + Vue 3 + Element Plus。实现分为后端API开发和前端页面开发两个主要部分。
## 任务概览
| 阶段 | 任务数 | 预计工时 |
|------|--------|----------|
| 1. 后端优惠券API开发 | 5 | 3h |
| 2. 后端广告API开发 | 5 | 3h |
| 3. 后端排行榜API开发 | 6 | 4h |
| 4. Checkpoint - 后端API验证 | 1 | 0.5h |
| 5. 前端API层开发 | 3 | 2h |
| 6. 前端优惠券页面开发 | 5 | 4h |
| 7. 前端广告页面开发 | 5 | 4h |
| 8. Checkpoint - 优惠券广告页面验证 | 1 | 0.5h |
| 9. 前端排行榜页面开发 | 6 | 5h |
| 10. 路由和菜单配置 | 2 | 1h |
| 11. Checkpoint - 完整功能验证 | 1 | 0.5h |
| 12. 属性测试 | 5 | 2h |
| 13. Final Checkpoint | 1 | 0.5h |
| **总计** | **46** | **30h** |
---
## Tasks
- [x] 1. 后端优惠券API开发
- [x] 1.1 创建优惠券Models
-`HoneyBox.Admin.Business/Models/Coupon/` 创建目录
- 创建 `CouponModels.cs` 定义请求和响应模型
- 定义 `CouponListRequest` 列表查询请求
- 定义 `CouponResponse` 优惠券响应模型
- 定义 `CouponCreateRequest` 新增请求
- 定义 `CouponUpdateRequest` 编辑请求
- 定义 `CouponReceiveListRequest` 领取记录查询请求
- 定义 `CouponReceiveResponse` 领取记录响应模型
- _Requirements: 15.1_
- [x] 1.2 创建优惠券Service接口
-`HoneyBox.Admin.Business/Services/Interfaces/` 创建 `ICouponService.cs`
- 定义 `GetCouponsAsync` 列表查询方法
- 定义 `GetCouponByIdAsync` 详情查询方法
- 定义 `CreateCouponAsync` 新增方法
- 定义 `UpdateCouponAsync` 编辑方法
- 定义 `DeleteCouponAsync` 删除方法
- 定义 `GetCouponReceivesAsync` 领取记录查询方法
- _Requirements: 15.1, 15.2, 15.3, 15.4, 15.5_
- [x] 1.3 实现优惠券Service
-`HoneyBox.Admin.Business/Services/` 创建 `CouponService.cs`
- 实现列表查询逻辑,支持关键词和类型筛选
- 实现分页逻辑
- 实现新增优惠券逻辑,验证必填字段
- 实现编辑优惠券逻辑
- 实现删除优惠券逻辑
- 实现领取记录查询逻辑支持用户ID、标题、状态筛选
- _Requirements: 1.1, 1.2, 1.3, 1.4, 2.6, 3.2, 4.1, 4.2, 4.3, 4.4_
- [x] 1.4 创建优惠券Controller
-`HoneyBox.Admin.Business/Controllers/` 创建 `CouponController.cs`
- 实现 `GET /api/business/coupon` 列表查询接口
- 实现 `GET /api/business/coupon/{id}` 详情查询接口
- 实现 `POST /api/business/coupon` 新增接口
- 实现 `PUT /api/business/coupon/{id}` 编辑接口
- 实现 `DELETE /api/business/coupon/{id}` 删除接口
- 实现 `GET /api/business/coupon/receive` 领取记录查询接口
- _Requirements: 15.1, 15.2, 15.3, 15.4, 15.5_
- [x] 1.5 注册优惠券服务
-`ServiceCollectionExtensions.cs` 注册 `ICouponService``CouponService`
- _Requirements: 15.1_
- [x] 2. 后端广告API开发
- [x] 2.1 创建广告Models
-`HoneyBox.Admin.Business/Models/Advert/` 创建目录
- 创建 `AdvertModels.cs` 定义请求和响应模型
- 定义 `AdvertListRequest` 列表查询请求
- 定义 `AdvertResponse` 广告响应模型
- 定义 `AdvertCreateRequest` 新增请求
- 定义 `AdvertUpdateRequest` 编辑请求
- 定义 `AdvertTypeResponse` 广告类型响应模型
- 定义 `AdvertTypeCreateRequest` 广告类型新增请求
- _Requirements: 15.6_
- [x] 2.2 创建广告Service接口
-`HoneyBox.Admin.Business/Services/Interfaces/` 创建 `IAdvertService.cs`
- 定义 `GetAdvertsAsync` 列表查询方法
- 定义 `GetAdvertByIdAsync` 详情查询方法
- 定义 `CreateAdvertAsync` 新增方法
- 定义 `UpdateAdvertAsync` 编辑方法
- 定义 `DeleteAdvertAsync` 删除方法
- 定义 `GetAdvertTypesAsync` 类型列表查询方法
- 定义 `CreateAdvertTypeAsync` 类型新增方法
- 定义 `UpdateAdvertTypeAsync` 类型编辑方法
- 定义 `DeleteAdvertTypeAsync` 类型删除方法
- _Requirements: 15.6, 15.7, 15.8, 15.9, 15.10, 15.11, 15.12, 15.13_
- [x] 2.3 实现广告Service
-`HoneyBox.Admin.Business/Services/` 创建 `AdvertService.cs`
- 实现广告列表查询逻辑,支持类型筛选
- 实现分页逻辑
- 实现新增广告逻辑,验证图片和跳转配置
- 实现编辑广告逻辑
- 实现删除广告逻辑
- 实现广告类型CRUD逻辑
- 实现删除类型时检查关联广告
- _Requirements: 5.1, 5.2, 6.8, 7.2, 8.1, 8.4, 8.6, 8.7_
- [x] 2.4 创建广告Controller
-`HoneyBox.Admin.Business/Controllers/` 创建 `AdvertController.cs`
- 实现 `GET /api/business/advert` 列表查询接口
- 实现 `GET /api/business/advert/{id}` 详情查询接口
- 实现 `POST /api/business/advert` 新增接口
- 实现 `PUT /api/business/advert/{id}` 编辑接口
- 实现 `DELETE /api/business/advert/{id}` 删除接口
- 实现 `GET /api/business/advert/types` 类型列表查询接口
- 实现 `POST /api/business/advert/types` 类型新增接口
- 实现 `PUT /api/business/advert/types/{id}` 类型编辑接口
- 实现 `DELETE /api/business/advert/types/{id}` 类型删除接口
- _Requirements: 15.6, 15.7, 15.8, 15.9, 15.10, 15.11, 15.12, 15.13_
- [x] 2.5 注册广告服务
-`ServiceCollectionExtensions.cs` 注册 `IAdvertService``AdvertService`
- _Requirements: 15.6_
- [x] 3. 后端排行榜API开发
- [x] 3.1 创建排行榜Models
-`HoneyBox.Admin.Business/Models/Rank/` 创建目录
- 创建 `RankModels.cs` 定义请求和响应模型
- 定义 `RankPrizeListRequest` 奖品列表查询请求
- 定义 `RankPrizeResponse` 奖品响应模型
- 定义 `RankPrizeCreateRequest` 奖品新增请求
- 定义 `RankPrizeUpdateRequest` 奖品编辑请求
- 定义 `RankLogListRequest` 中奖记录查询请求
- 定义 `RankLogResponse` 中奖记录响应模型
- 定义 `UserRankListRequest` 用户排行榜查询请求
- 定义 `UserRankResponse` 用户排行榜响应模型
- _Requirements: 15.14_
- [x] 3.2 创建排行榜Service接口
-`HoneyBox.Admin.Business/Services/Interfaces/` 创建 `IRankService.cs`
- 定义 `GetWeekPrizesAsync` 周榜奖品列表查询方法
- 定义 `CreateWeekPrizeAsync` 周榜奖品新增方法
- 定义 `UpdateWeekPrizeAsync` 周榜奖品编辑方法
- 定义 `DeleteWeekPrizeAsync` 周榜奖品删除方法
- 定义 `GetWeekLogsAsync` 周榜中奖记录查询方法
- 定义 `GetMonthPrizesAsync` 月榜奖品列表查询方法
- 定义 `CreateMonthPrizeAsync` 月榜奖品新增方法
- 定义 `UpdateMonthPrizeAsync` 月榜奖品编辑方法
- 定义 `DeleteMonthPrizeAsync` 月榜奖品删除方法
- 定义 `GetMonthLogsAsync` 月榜中奖记录查询方法
- 定义 `GetUserRankAsync` 用户排行榜查询方法
- _Requirements: 15.14-15.24_
- [x] 3.3 实现排行榜Service
-`HoneyBox.Admin.Business/Services/` 创建 `RankService.cs`
- 实现周榜奖品CRUD逻辑验证排名唯一性
- 实现周榜中奖记录查询逻辑支持用户ID和手机号筛选
- 实现月榜奖品CRUD逻辑验证排名唯一性
- 实现月榜中奖记录查询逻辑
- 实现用户排行榜查询逻辑,支持多种排行榜类型
- _Requirements: 9.1-9.6, 10.1-10.4, 11.1-11.6, 12.1-12.4, 13.1-13.6_
- [x] 3.4 创建排行榜Controller
-`HoneyBox.Admin.Business/Controllers/` 创建 `RankController.cs`
- 实现 `GET /api/business/rank/week` 周榜奖品列表接口
- 实现 `POST /api/business/rank/week` 周榜奖品新增接口
- 实现 `PUT /api/business/rank/week/{id}` 周榜奖品编辑接口
- 实现 `DELETE /api/business/rank/week/{id}` 周榜奖品删除接口
- 实现 `GET /api/business/rank/week/log` 周榜中奖记录接口
- 实现 `GET /api/business/rank/month` 月榜奖品列表接口
- 实现 `POST /api/business/rank/month` 月榜奖品新增接口
- 实现 `PUT /api/business/rank/month/{id}` 月榜奖品编辑接口
- 实现 `DELETE /api/business/rank/month/{id}` 月榜奖品删除接口
- 实现 `GET /api/business/rank/month/log` 月榜中奖记录接口
- 实现 `GET /api/business/rank/user` 用户排行榜接口
- _Requirements: 15.14-15.24_
- [x] 3.5 注册排行榜服务
-`ServiceCollectionExtensions.cs` 注册 `IRankService``RankService`
- _Requirements: 15.14_
- [x] 3.6 创建菜单SQL脚本
-`HoneyBox/scripts/` 创建 `seed_marketing_management_menus.sql`
- 添加优惠券管理菜单项
- 添加广告管理菜单项
- 添加排行榜管理菜单项
- 添加相关权限配置
- _Requirements: 14.1-14.11_
- [x] 4. Checkpoint - 后端API验证
- 确保所有API编译通过
- 使用Swagger测试API基本功能
- 确保权限验证正常工作
- [x] 5. 前端API层开发
- [x] 5.1 创建优惠券API模块
- 创建 `src/api/business/coupon.ts`
- 定义所有TypeScript接口CouponListRequest, CouponResponse等
- 实现优惠券列表查询API调用 `getCoupons`
- 实现优惠券详情查询API调用 `getCouponById`
- 实现优惠券新增API调用 `createCoupon`
- 实现优惠券编辑API调用 `updateCoupon`
- 实现优惠券删除API调用 `deleteCoupon`
- 实现优惠券领取记录查询API调用 `getCouponReceives`
- _Requirements: 15.1, 15.2, 15.3, 15.4, 15.5_
- [x] 5.2 创建广告API模块
- 创建 `src/api/business/advert.ts`
- 定义所有TypeScript接口AdvertListRequest, AdvertResponse等
- 实现广告列表查询API调用 `getAdverts`
- 实现广告详情查询API调用 `getAdvertById`
- 实现广告新增API调用 `createAdvert`
- 实现广告编辑API调用 `updateAdvert`
- 实现广告删除API调用 `deleteAdvert`
- 实现广告类型列表查询API调用 `getAdvertTypes`
- 实现广告类型新增API调用 `createAdvertType`
- 实现广告类型编辑API调用 `updateAdvertType`
- 实现广告类型删除API调用 `deleteAdvertType`
- _Requirements: 15.6-15.13_
- [x] 5.3 创建排行榜API模块
- 创建 `src/api/business/rank.ts`
- 定义所有TypeScript接口RankPrizeResponse, RankLogResponse等
- 实现周榜奖品CRUD API调用
- 实现周榜中奖记录查询API调用
- 实现月榜奖品CRUD API调用
- 实现月榜中奖记录查询API调用
- 实现用户排行榜查询API调用
- _Requirements: 15.14-15.24_
- [x] 6. 前端优惠券页面开发
- [x] 6.1 创建优惠券列表主页面
- 创建 `src/views/business/coupon/list.vue`
- 实现页面布局(搜索区 + 表格区)
- 集成搜索表单和表格组件
- 实现分页逻辑
- 实现新增、编辑、删除操作
- _Requirements: 1.1, 1.4, 1.5_
- [x] 6.2 创建优惠券搜索表单组件
- 创建 `src/views/business/coupon/components/CouponSearchForm.vue`
- 实现标题关键词输入框
- 实现类型下拉选择(新人优惠券/权益优惠券/满减优惠券)
- 实现搜索和重置按钮
- _Requirements: 1.2, 1.3_
- [x] 6.3 创建优惠券表格组件
- 创建 `src/views/business/coupon/components/CouponTable.vue`
- 实现表格列配置ID、名称、满减门槛、优惠金额、有效期、类型、时间
- 实现操作按钮(编辑、删除)
- 实现删除确认弹窗
- _Requirements: 1.1, 1.5_
- [x] 6.4 创建优惠券表单弹窗
- 创建 `src/views/business/coupon/components/CouponFormDialog.vue`
- 实现类型选择(新人优惠券/权益优惠券/满减优惠券)
- 实现使用限制选择(不限制/一番赏/无限赏/擂台赏/全局赏/领主赏/连击赏)
- 实现名称、满减门槛、优惠金额、有效期输入
- 实现表单验证
- 实现提交逻辑
- _Requirements: 2.1, 2.2, 2.3, 2.4, 2.5, 2.6, 3.1, 3.2_
- [x] 6.5 创建优惠券领取记录页面
- 创建 `src/views/business/coupon/receive.vue`
- 实现页面布局(搜索区 + 表格区)
- 实现用户ID、优惠券标题、状态搜索
- 实现表格列配置ID、用户信息、优惠券名称、满减门槛、优惠金额、状态、过期时间、领取时间
- 实现分页逻辑
- _Requirements: 4.1, 4.2, 4.3, 4.4, 4.5_
- [x] 7. 前端广告页面开发
- [x] 7.1 创建广告列表主页面
- 创建 `src/views/business/advert/list.vue`
- 实现页面布局(类型筛选 + 表格区)
- 实现广告类型下拉筛选
- 实现分页逻辑
- 实现新增、编辑、删除操作
- 实现查看全部类型按钮
- _Requirements: 5.1, 5.2, 5.3, 5.4, 5.5_
- [x] 7.2 创建广告表格组件
- 创建 `src/views/business/advert/components/AdvertTable.vue`
- 实现表格列配置(类型、图片、排序值)
- 实现图片预览功能
- 实现操作按钮(编辑、删除)
- 实现删除确认弹窗
- _Requirements: 5.1, 5.4_
- [x] 7.3 创建广告表单弹窗
- 创建 `src/views/business/advert/components/AdvertFormDialog.vue`
- 实现广告类型选择(动态加载)
- 实现跳转类型选择(不跳转/优惠券/一番赏/无限赏/连击赏/自定义URL
- 实现条件显示字段优惠券ID/盒子ID/跳转链接)
- 实现图片上传
- 实现排序值输入
- 实现表单验证
- 实现提交逻辑
- _Requirements: 6.1, 6.2, 6.3, 6.4, 6.5, 6.6, 6.7, 6.8, 7.1, 7.2_
- [x] 7.4 创建广告类型管理弹窗
- 创建 `src/views/business/advert/components/AdvertTypeDialog.vue`
- 实现类型列表展示ID、名称、排序
- 实现添加类型功能
- 实现编辑类型功能
- 实现删除类型功能(检查关联广告)
- 实现表单验证(名称必填、名称唯一)
- _Requirements: 8.1, 8.2, 8.3, 8.4, 8.5, 8.6, 8.7_
- [x] 7.5 创建广告类型表单组件
- 创建 `src/views/business/advert/components/AdvertTypeForm.vue`
- 实现类型名称输入
- 实现排序值输入
- 实现表单验证
- _Requirements: 8.2, 8.3_
- [x] 8. Checkpoint - 优惠券广告页面验证
- 确保优惠券列表页面正常显示
- 确保优惠券新增、编辑、删除功能正常
- 确保优惠券领取记录页面正常显示
- 确保广告列表页面正常显示
- 确保广告新增、编辑、删除功能正常
- 确保广告类型管理功能正常
- 测试搜索和分页功能
- 测试条件显示字段功能
- [x] 9. 前端排行榜页面开发
- [x] 9.1 创建周榜奖品列表页面
- 创建 `src/views/business/rank/week.vue`
- 实现页面布局(表格区)
- 实现表格列配置(排名、奖品名称、图片、售价、采购价、奖赏类型)
- 实现图片预览功能
- 实现新增、编辑、删除操作
- _Requirements: 9.1, 9.2, 9.5, 9.6_
- [x] 9.2 创建排行榜奖品表单弹窗
- 创建 `src/views/business/rank/components/RankPrizeFormDialog.vue`
- 实现排名输入(验证唯一性)
- 实现奖品名称输入
- 实现奖品类型选择
- 实现售价、采购价输入
- 实现图片上传
- 实现表单验证
- 实现提交逻辑
- _Requirements: 9.2, 9.3, 9.4, 9.5_
- [x] 9.3 创建周榜中奖记录页面
- 创建 `src/views/business/rank/week-log.vue`
- 实现页面布局(搜索区 + 表格区)
- 实现用户UID、手机号搜索
- 实现表格列配置(排名、用户信息、奖品信息、消费金额、统计时间)
- 实现分页逻辑
- _Requirements: 10.1, 10.2, 10.3, 10.4_
- [x] 9.4 创建月榜奖品列表页面
- 创建 `src/views/business/rank/month.vue`
- 复用周榜奖品列表结构
- 实现月榜奖品CRUD操作
- _Requirements: 11.1, 11.2, 11.5, 11.6_
- [x] 9.5 创建月榜中奖记录页面
- 创建 `src/views/business/rank/month-log.vue`
- 复用周榜中奖记录结构
- 实现月榜中奖记录查询
- _Requirements: 12.1, 12.2, 12.3, 12.4_
- [x] 9.6 创建用户排行榜页面
- 创建 `src/views/business/rank/user.vue`
- 实现排行榜类型切换(邀请新人/亏损补贴/达达券/钻石/UU币
- 实现通用排行榜表格(排名、用户信息、数值)
- 实现亏损排行榜特殊字段(消耗金额、达达券金额、出货金额、亏损率)
- 实现分页逻辑
- _Requirements: 13.1, 13.2, 13.3, 13.4, 13.5, 13.6_
- [x] 10. 路由和菜单配置
- [x] 10.1 配置路由
-`src/router/modules/business.ts` 添加营销活动路由配置
- 配置优惠券列表路由 `/business/coupon/list`
- 配置优惠券领取记录路由 `/business/coupon/receive`
- 配置广告列表路由 `/business/advert/list`
- 配置周榜奖品路由 `/business/rank/week`
- 配置周榜中奖记录路由 `/business/rank/week-log`
- 配置月榜奖品路由 `/business/rank/month`
- 配置月榜中奖记录路由 `/business/rank/month-log`
- 配置用户排行榜路由 `/business/rank/user`
- 配置权限标识
- _Requirements: 14.1-14.11_
- [x] 10.2 执行菜单SQL脚本
- 执行 `seed_marketing_management_menus.sql` 添加菜单
- 验证菜单显示正常
- _Requirements: 14.1-14.11_
- [x] 11. Checkpoint - 完整功能验证
- 确保所有页面正常访问
- 测试完整的优惠券管理流程
- 测试完整的广告管理流程
- 测试完整的排行榜管理流程
- 验证权限控制正常工作
- [x] 12. 属性测试
- [x] 12.1 编写搜索参数传递属性测试
- **Property 1: 搜索参数正确传递**
- **Validates: Requirements 1.2, 1.3, 4.2, 4.3, 4.4, 5.2, 10.2, 10.3, 12.2, 12.3, 13.2**
- [x] 12.2 编写分页参数传递属性测试
- **Property 2: 分页参数正确传递**
- **Validates: Requirements 1.4, 4.5, 5.5, 10.4, 12.4, 13.6**
- [x] 12.3 编写表单必填字段验证属性测试
- **Property 3: 表单必填字段验证**
- **Validates: Requirements 2.4, 2.5, 6.7, 8.3, 9.4**
- [x] 12.4 编写条件显示字段属性测试
- **Property 4: 条件显示字段正确切换**
- **Validates: Requirements 6.4, 6.5, 6.6**
- [x] 12.5 编写API响应格式一致性属性测试
- **Property 5: API响应格式一致性**
- **Validates: Requirements 15.25, 15.26**
- [x] 13. Final Checkpoint - 最终验证
- 确保所有测试通过
- 确保所有功能正常工作
- 如有问题,询问用户
---
## 验收检查清单
### 功能验收
- [ ] 优惠券列表正常显示,支持搜索、分页
- [ ] 优惠券新增功能正常
- [ ] 优惠券编辑功能正常
- [ ] 优惠券删除功能正常(有二次确认)
- [ ] 优惠券领取记录正常显示,支持搜索、分页
- [ ] 广告列表正常显示,支持类型筛选、分页
- [ ] 广告新增功能正常
- [ ] 广告编辑功能正常
- [ ] 广告删除功能正常(有二次确认)
- [ ] 广告类型管理功能正常
- [ ] 广告跳转类型条件显示正常
- [ ] 周榜奖品列表正常显示
- [ ] 周榜奖品新增、编辑、删除功能正常
- [ ] 周榜中奖记录正常显示,支持搜索、分页
- [ ] 月榜奖品列表正常显示
- [ ] 月榜奖品新增、编辑、删除功能正常
- [ ] 月榜中奖记录正常显示,支持搜索、分页
- [ ] 用户排行榜正常显示,支持类型切换、分页
- [ ] 亏损排行榜特殊字段正常显示
### 非功能验收
- [ ] 分页加载性能正常
- [ ] 图片懒加载生效
- [ ] 表单验证实时反馈
- [ ] 操作提示正确显示
- [ ] 危险操作有二次确认
- [ ] 属性测试全部通过
## Notes
- 每个Checkpoint确保增量验证
- 后端API需要先完成才能进行前端开发
- 属性测试验证通用正确性属性
- 所有任务均为必需任务,确保全面测试覆盖
- 周榜和月榜功能结构相同,可复用组件
- 广告跳转类型的条件显示是核心功能,需要仔细测试