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

20 KiB
Raw Blame History

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 注册 ICouponServiceCouponService
      • 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 注册 IAdvertServiceAdvertService
      • 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 注册 IRankServiceRankService
      • 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需要先完成才能进行前端开发
  • 属性测试验证通用正确性属性
  • 所有任务均为必需任务,确保全面测试覆盖
  • 周榜和月榜功能结构相同,可复用组件
  • 广告跳转类型的条件显示是核心功能,需要仔细测试