20 KiB
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
-
1. 后端优惠券API开发
-
1.1 创建优惠券Models
- 在
HoneyBox.Admin.Business/Models/Coupon/创建目录 - 创建
CouponModels.cs定义请求和响应模型 - 定义
CouponListRequest列表查询请求 - 定义
CouponResponse优惠券响应模型 - 定义
CouponCreateRequest新增请求 - 定义
CouponUpdateRequest编辑请求 - 定义
CouponReceiveListRequest领取记录查询请求 - 定义
CouponReceiveResponse领取记录响应模型 - Requirements: 15.1
- 在
-
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
- 在
-
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
- 在
-
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
- 在
-
1.5 注册优惠券服务
- 在
ServiceCollectionExtensions.cs注册ICouponService和CouponService - Requirements: 15.1
- 在
-
-
2. 后端广告API开发
-
2.1 创建广告Models
- 在
HoneyBox.Admin.Business/Models/Advert/创建目录 - 创建
AdvertModels.cs定义请求和响应模型 - 定义
AdvertListRequest列表查询请求 - 定义
AdvertResponse广告响应模型 - 定义
AdvertCreateRequest新增请求 - 定义
AdvertUpdateRequest编辑请求 - 定义
AdvertTypeResponse广告类型响应模型 - 定义
AdvertTypeCreateRequest广告类型新增请求 - Requirements: 15.6
- 在
-
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
- 在
-
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
- 在
-
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
- 在
-
2.5 注册广告服务
- 在
ServiceCollectionExtensions.cs注册IAdvertService和AdvertService - Requirements: 15.6
- 在
-
-
3. 后端排行榜API开发
-
3.1 创建排行榜Models
- 在
HoneyBox.Admin.Business/Models/Rank/创建目录 - 创建
RankModels.cs定义请求和响应模型 - 定义
RankPrizeListRequest奖品列表查询请求 - 定义
RankPrizeResponse奖品响应模型 - 定义
RankPrizeCreateRequest奖品新增请求 - 定义
RankPrizeUpdateRequest奖品编辑请求 - 定义
RankLogListRequest中奖记录查询请求 - 定义
RankLogResponse中奖记录响应模型 - 定义
UserRankListRequest用户排行榜查询请求 - 定义
UserRankResponse用户排行榜响应模型 - Requirements: 15.14
- 在
-
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
- 在
-
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
- 在
-
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
- 在
-
3.5 注册排行榜服务
- 在
ServiceCollectionExtensions.cs注册IRankService和RankService - Requirements: 15.14
- 在
-
3.6 创建菜单SQL脚本
- 在
HoneyBox/scripts/创建seed_marketing_management_menus.sql - 添加优惠券管理菜单项
- 添加广告管理菜单项
- 添加排行榜管理菜单项
- 添加相关权限配置
- Requirements: 14.1-14.11
- 在
-
-
4. Checkpoint - 后端API验证
- 确保所有API编译通过
- 使用Swagger测试API基本功能
- 确保权限验证正常工作
-
5. 前端API层开发
-
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
- 创建
-
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
- 创建
-
5.3 创建排行榜API模块
- 创建
src/api/business/rank.ts - 定义所有TypeScript接口(RankPrizeResponse, RankLogResponse等)
- 实现周榜奖品CRUD API调用
- 实现周榜中奖记录查询API调用
- 实现月榜奖品CRUD API调用
- 实现月榜中奖记录查询API调用
- 实现用户排行榜查询API调用
- Requirements: 15.14-15.24
- 创建
-
-
6. 前端优惠券页面开发
-
6.1 创建优惠券列表主页面
- 创建
src/views/business/coupon/list.vue - 实现页面布局(搜索区 + 表格区)
- 集成搜索表单和表格组件
- 实现分页逻辑
- 实现新增、编辑、删除操作
- Requirements: 1.1, 1.4, 1.5
- 创建
-
6.2 创建优惠券搜索表单组件
- 创建
src/views/business/coupon/components/CouponSearchForm.vue - 实现标题关键词输入框
- 实现类型下拉选择(新人优惠券/权益优惠券/满减优惠券)
- 实现搜索和重置按钮
- Requirements: 1.2, 1.3
- 创建
-
6.3 创建优惠券表格组件
- 创建
src/views/business/coupon/components/CouponTable.vue - 实现表格列配置(ID、名称、满减门槛、优惠金额、有效期、类型、时间)
- 实现操作按钮(编辑、删除)
- 实现删除确认弹窗
- Requirements: 1.1, 1.5
- 创建
-
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
- 创建
-
6.5 创建优惠券领取记录页面
- 创建
src/views/business/coupon/receive.vue - 实现页面布局(搜索区 + 表格区)
- 实现用户ID、优惠券标题、状态搜索
- 实现表格列配置(ID、用户信息、优惠券名称、满减门槛、优惠金额、状态、过期时间、领取时间)
- 实现分页逻辑
- Requirements: 4.1, 4.2, 4.3, 4.4, 4.5
- 创建
-
-
7. 前端广告页面开发
-
7.1 创建广告列表主页面
- 创建
src/views/business/advert/list.vue - 实现页面布局(类型筛选 + 表格区)
- 实现广告类型下拉筛选
- 实现分页逻辑
- 实现新增、编辑、删除操作
- 实现查看全部类型按钮
- Requirements: 5.1, 5.2, 5.3, 5.4, 5.5
- 创建
-
7.2 创建广告表格组件
- 创建
src/views/business/advert/components/AdvertTable.vue - 实现表格列配置(类型、图片、排序值)
- 实现图片预览功能
- 实现操作按钮(编辑、删除)
- 实现删除确认弹窗
- Requirements: 5.1, 5.4
- 创建
-
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
- 创建
-
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
- 创建
-
7.5 创建广告类型表单组件
- 创建
src/views/business/advert/components/AdvertTypeForm.vue - 实现类型名称输入
- 实现排序值输入
- 实现表单验证
- Requirements: 8.2, 8.3
- 创建
-
-
8. Checkpoint - 优惠券广告页面验证
- 确保优惠券列表页面正常显示
- 确保优惠券新增、编辑、删除功能正常
- 确保优惠券领取记录页面正常显示
- 确保广告列表页面正常显示
- 确保广告新增、编辑、删除功能正常
- 确保广告类型管理功能正常
- 测试搜索和分页功能
- 测试条件显示字段功能
-
9. 前端排行榜页面开发
-
9.1 创建周榜奖品列表页面
- 创建
src/views/business/rank/week.vue - 实现页面布局(表格区)
- 实现表格列配置(排名、奖品名称、图片、售价、采购价、奖赏类型)
- 实现图片预览功能
- 实现新增、编辑、删除操作
- Requirements: 9.1, 9.2, 9.5, 9.6
- 创建
-
9.2 创建排行榜奖品表单弹窗
- 创建
src/views/business/rank/components/RankPrizeFormDialog.vue - 实现排名输入(验证唯一性)
- 实现奖品名称输入
- 实现奖品类型选择
- 实现售价、采购价输入
- 实现图片上传
- 实现表单验证
- 实现提交逻辑
- Requirements: 9.2, 9.3, 9.4, 9.5
- 创建
-
9.3 创建周榜中奖记录页面
- 创建
src/views/business/rank/week-log.vue - 实现页面布局(搜索区 + 表格区)
- 实现用户UID、手机号搜索
- 实现表格列配置(排名、用户信息、奖品信息、消费金额、统计时间)
- 实现分页逻辑
- Requirements: 10.1, 10.2, 10.3, 10.4
- 创建
-
9.4 创建月榜奖品列表页面
- 创建
src/views/business/rank/month.vue - 复用周榜奖品列表结构
- 实现月榜奖品CRUD操作
- Requirements: 11.1, 11.2, 11.5, 11.6
- 创建
-
9.5 创建月榜中奖记录页面
- 创建
src/views/business/rank/month-log.vue - 复用周榜中奖记录结构
- 实现月榜中奖记录查询
- Requirements: 12.1, 12.2, 12.3, 12.4
- 创建
-
9.6 创建用户排行榜页面
- 创建
src/views/business/rank/user.vue - 实现排行榜类型切换(邀请新人/亏损补贴/达达券/钻石/UU币)
- 实现通用排行榜表格(排名、用户信息、数值)
- 实现亏损排行榜特殊字段(消耗金额、达达券金额、出货金额、亏损率)
- 实现分页逻辑
- Requirements: 13.1, 13.2, 13.3, 13.4, 13.5, 13.6
- 创建
-
-
10. 路由和菜单配置
-
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
- 在
-
10.2 执行菜单SQL脚本
- 执行
seed_marketing_management_menus.sql添加菜单 - 验证菜单显示正常
- Requirements: 14.1-14.11
- 执行
-
-
11. Checkpoint - 完整功能验证
- 确保所有页面正常访问
- 测试完整的优惠券管理流程
- 测试完整的广告管理流程
- 测试完整的排行榜管理流程
- 验证权限控制正常工作
-
12. 属性测试
-
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
-
12.2 编写分页参数传递属性测试
- Property 2: 分页参数正确传递
- Validates: Requirements 1.4, 4.5, 5.5, 10.4, 12.4, 13.6
-
12.3 编写表单必填字段验证属性测试
- Property 3: 表单必填字段验证
- Validates: Requirements 2.4, 2.5, 6.7, 8.3, 9.4
-
12.4 编写条件显示字段属性测试
- Property 4: 条件显示字段正确切换
- Validates: Requirements 6.4, 6.5, 6.6
-
12.5 编写API响应格式一致性属性测试
- Property 5: API响应格式一致性
- Validates: Requirements 15.25, 15.26
-
-
13. Final Checkpoint - 最终验证
- 确保所有测试通过
- 确保所有功能正常工作
- 如有问题,询问用户
验收检查清单
功能验收
- 优惠券列表正常显示,支持搜索、分页
- 优惠券新增功能正常
- 优惠券编辑功能正常
- 优惠券删除功能正常(有二次确认)
- 优惠券领取记录正常显示,支持搜索、分页
- 广告列表正常显示,支持类型筛选、分页
- 广告新增功能正常
- 广告编辑功能正常
- 广告删除功能正常(有二次确认)
- 广告类型管理功能正常
- 广告跳转类型条件显示正常
- 周榜奖品列表正常显示
- 周榜奖品新增、编辑、删除功能正常
- 周榜中奖记录正常显示,支持搜索、分页
- 月榜奖品列表正常显示
- 月榜奖品新增、编辑、删除功能正常
- 月榜中奖记录正常显示,支持搜索、分页
- 用户排行榜正常显示,支持类型切换、分页
- 亏损排行榜特殊字段正常显示
非功能验收
- 分页加载性能正常
- 图片懒加载生效
- 表单验证实时反馈
- 操作提示正确显示
- 危险操作有二次确认
- 属性测试全部通过
Notes
- 每个Checkpoint确保增量验证
- 后端API需要先完成才能进行前端开发
- 属性测试验证通用正确性属性
- 所有任务均为必需任务,确保全面测试覆盖
- 周榜和月榜功能结构相同,可复用组件
- 广告跳转类型的条件显示是核心功能,需要仔细测试