主题
营销管理 PRD
文档信息
| 项目 | 内容 |
|---|---|
| 产品名称 | PMForge - 营销管理 |
| 文档版本 | v2.0 |
| 创建日期 | 2026-09-21 |
| 最后更新 | 2026-09-24 |
| 文档状态 | 评审中 |
| 优先级 | P1 |
一、功能概述
1.1 功能定位
营销管理是 PMForge 商城模块的"促销策划部"——就像超市里的促销团队,负责策划满减活动、发放优惠券、组织限时秒杀、拼团砍价,还要管理首页的 Banner 广告位和推荐位,让顾客"看到优惠→想买→下单"。本模块涵盖优惠券模板管理 → 三种发放模式(全员/定向/领取活动) → 满减/折扣活动 → 秒杀 → 拼团 → 砍价 → Banner 广告位 → 推荐位完整营销链路。
通俗理解:把商城比作超市,营销管理就是"促销策划部"。优惠券模板是"优惠券的印刷模具"——模具刻好了(模板创建),才能批量印刷发出去(发放);满减活动是"超市门口的促销牌——满200减30";秒杀是"限时特价抢购——仅限10分钟、限50件";拼团是"3人成团享团购价";砍价是"邀请好友帮砍,砍到底价拿走";Banner 是"超市入口的大海报";推荐位是"收银台旁的推荐货架"。
本模块为 C 端用户提供丰富的促销体验和流量引导,为运营人员提供灵活的营销工具组合,直接驱动转化率、客单价和平台 GMV 增长。
1.2 目标用户
| 用户类型 | 核心诉求 | 使用频率 |
|---|---|---|
| 运营人员 | 快速创建优惠券/促销活动,灵活配置营销规则,提升 GMV | 每日高频 |
| 后台管理员 | 审核活动上下架、监控活动运行状态、管理 Banner 与推荐位资源 | 每日中频 |
| C 端消费者 | 领取优惠券享折扣、参与秒杀/拼团/砍价获取低价商品 | 每日高频 |
| 数据分析师 | 分析优惠券核销率、活动 ROI、Banner 点击率,评估营销效果 | 每周中频 |
1.3 业务价值
| 价值维度 | 具体收益 | 衡量指标 |
|---|---|---|
| 提升转化率 | 优惠券 + 满减降低用户决策门槛 | 下单转化率提升 10%+ |
| 提升客单价 | 满减阶梯引导用户凑单 | 客单价提升 15%+ |
| 拉新获客 | 拼团/砍价社交裂变带来新用户 | 裂变系数(K 值)> 1.5 |
| 清理库存 | 秒杀活动快速消化滞销品 | 滞销品周转率提升 30%+ |
| 流量分配 | Banner + 推荐位精准引导用户流向 | Banner 点击率 > 3% |
| 营销 ROI 可量化 | 完整的活动数据链路支撑效果评估 | ROI 分析覆盖率 100% |
1.4 功能范围
| 功能分类 | 后台管理端 | 前台用户端 |
|---|---|---|
| 优惠券模板管理 | ✅ | ❌ |
| 优惠券发放(全员/定向/领取活动) | ✅ | ❌ |
| 优惠券领取/使用记录 | ✅ | ❌ |
| 优惠券中心 | ❌ | ✅ |
| 满减/折扣活动管理 | ✅ | ❌ |
| 秒杀活动管理 | ✅ | ❌ |
| 拼团活动管理 | ✅ | ❌ |
| 砍价活动管理 | ✅ | ❌ |
| 活动商品配置 | ✅ | ❌ |
| 秒杀/拼团/砍价活动页 | ❌ | ✅ |
| 下单使用优惠券 | ❌ | ✅ |
| Banner 管理 | ✅ | ❌ |
| Banner 展示 | ❌ | ✅ |
| 推荐位管理 | ✅ | ❌ |
| 推荐内容展示 | ❌ | ✅ |
二、用户场景
2.1 用户角色
| 角色 | 描述 | 核心诉求 |
|---|---|---|
| 运营小陈 | 负责策划和执行营销活动 | 快速创建各类营销活动,灵活配置优惠券和促销规则 |
| 管理员老周 | 管理营销资源和审核活动 | 管理 Banner 广告位、推荐位,监控活动运行状态 |
| 消费者小美 | 平台购物用户 | 领取优惠券享受折扣、参与秒杀/拼团/砍价获取低价商品 |
| 数据分析师小林 | 评估营销效果 | 获取优惠券核销率、活动 ROI 等关键指标,输出分析报告 |
2.2 使用场景
场景1:运营小陈创建双11满减活动
- 用户:运营小陈
- 前置条件:已有上架状态的商品
- 操作流程:
- 小陈登录后台 → 进入"促销管理 → 满减/折扣"
- 点击"新建活动" → 填写活动名称"双11满200减30"
- 设置优惠规则:满200元减30元、满400元减80元(多阶梯)
- 设置活动时间:11月1日 00:00 ~ 11月11日 23:59
- 进入"配置商品" → 从左侧商品库批量勾选参与商品到右侧
- 点击"上架" → 用户在前台浏览活动商品并享受优惠
- 期望结果:活动上架后用户立即可见,下单时自动匹配满减规则
- 验收标准(AC):
- AC-1:支持设置多阶梯满减规则(如满100减10、满200减30),阶梯数无上限
- AC-2:活动上架后,前台商品详情页展示活动标签和优惠规则
- AC-3:同一商品在同一时间段不能参加多个同类型活动,系统给出冲突提示
- AC-4:活动进行中不可修改优惠规则,需先下架再编辑
- AC-5:活动到期后状态自动流转为"已结束"
场景2:运营小陈发放新用户优惠券
- 用户:运营小陈
- 前置条件:已创建优惠券模板(满100减20,总量10000张)
- 操作流程:
- 小陈进入"优惠券 → 模板管理" → 找到"新用户满减券"模板
- 点击"发放" → 选择"创建领取活动"
- 设置活动名称"新人专享券"、活动时间、每人限领1张
- 生成领取链接/页面 → 新用户注册后在优惠券中心可见并领取
- 用户领取后 → 下单时系统自动匹配可用优惠券
- 期望结果:三种发放模式(全员/定向/领取活动)灵活选用,优惠券能自动匹配订单
- 验收标准(AC):
- AC-1:全员发放一键操作,10000 张券发放完成 < 30 秒
- AC-2:定向发放支持输入用户 ID 列表,自动跳过已达限领数的用户
- AC-3:领取活动中模板库存为 0 时前台展示"已领完",不可继续领取
- AC-4:用户下单时,系统自动列出满足门槛且范围匹配的可用优惠券
- AC-5:订单取消/退款后,已使用的优惠券恢复为"未使用"状态(已过期则标记过期)
场景3:消费者小美参与秒杀抢购
- 用户:消费者小美
- 前置条件:平台已创建并上架秒杀活动
- 操作流程:
- 小美进入秒杀频道 → 看到按时间段分场的秒杀商品(10:00场、14:00场)
- 选择心仪商品 → 看到秒杀价、原价、已抢百分比、倒计时
- 点击"立即抢购" → 系统校验库存和限购 → 生成秒杀订单
- 在限定时间内完成支付 → 抢购成功
- 期望结果:秒杀页面加载快,抢购流程顺畅,库存实时扣减不超卖
- 验收标准(AC):
- AC-1:秒杀下单响应时间 < 100ms(Redis 预扣减库存)
- AC-2:库存扣减使用 Redis Lua 脚本原子操作,绝不超卖
- AC-3:超过限购数量时提示"每人限购X件,您已达到限购上限"
- AC-4:秒杀库存独立于商品原库存,活动结束剩余库存自动回滚
- AC-5:未支付的秒杀订单超时后自动取消并释放库存
场景4:数据分析师小林评估优惠券效果
- 用户:数据分析师小林
- 前置条件:已有优惠券发放和使用数据
- 操作流程:
- 小林进入"统计分析 → 营销统计 → 优惠券统计"
- 查看核心指标:发放总量、领取总量、使用总量、核销率
- 查看每日发放/领取/使用趋势折线图
- 按模板维度查看明细表:各模板的核销率和带来的 GMV
- 导出数据到 Excel → 编写活动效果分析报告
- 期望结果:一键查看全链路数据,核销率和 ROI 自动计算
- 验收标准(AC):
- AC-1:核销率 = 使用量 / 领取量 × 100%,数据准确
- AC-2:"带来的 GMV" = 使用该优惠券的订单总金额
- AC-3:支持按模板筛选,查看单个模板的详细数据
- AC-4:导出数据与页面展示一致(含筛选条件),格式 .xlsx
- AC-5:统计数据 T+1 更新,每日凌晨 02:00 前完成离线计算
三、功能需求
3.1 后台管理端
3.1.1 功能清单
| 功能 | 优先级 | 说明 |
|---|---|---|
| 优惠券模板管理 | P0 | 创建/编辑/删除优惠券模板 |
| 优惠券发放(全员) | P0 | 向所有用户发放优惠券 |
| 优惠券发放(指定用户) | P1 | 向指定用户列表发放优惠券 |
| 优惠券领取活动 | P0 | 创建领取活动,用户自行领取 |
| 优惠券领取/使用记录 | P0 | 查看用户领取和使用优惠券的记录 |
| 满减/折扣活动管理 | P0 | 创建/编辑/删除满减折扣活动 |
| 活动商品配置 | P0 | 为活动配置参与商品 |
| 秒杀活动管理 | P0 | 创建/编辑/删除秒杀活动 |
| 拼团活动管理 | P1 | 创建/编辑/删除拼团活动 |
| 砍价活动管理 | P2 | 创建/编辑/删除砍价活动 |
| Banner 管理 | P0 | 创建/编辑/删除 Banner |
| 推荐位管理 | P1 | 管理首页推荐位和推荐商品 |
3.1.2 优惠券模板管理
页面布局:

发放弹窗:

业务流程:
- 运营人员点击"新建模板"
- 填写模板信息:名称、类型(满减/折扣/立减)、面额、使用门槛
- 设置有效期模式:固定时间段 或 领取后N天有效
- 设置发放总量、每人限领、使用范围(全部商品/指定分类/指定商品)
- 保存模板 → 通过"发放"按钮选择发放方式
业务规则:
| 规则编号 | 规则描述 | 设计原因 |
|---|---|---|
| R-01 | 优惠券类型:满减券、折扣券、立减券 | 三种类型覆盖"有门槛减免、比例折扣、无门槛减免"三大场景 |
| R-02 | 满减券需设置使用门槛金额和减免金额 | 门槛引导用户凑单,提升客单价 |
| R-03 | 折扣券需设置折扣比例(如 8 折 = 80),可设减免上限 | 防止高价商品折扣金额过大造成亏损 |
| R-04 | 立减券直接减免固定金额,无使用门槛 | 用于无差别普惠促销,提升用户好感 |
| R-05 | 有效期支持两种模式:固定时间段 / 领取后N天 | 固定段适合活动促销,领后N天适合日常发放 |
| R-06 | 发放量为 -1 表示不限量 | 日常普惠券不限制发放总量 |
| R-07 | 使用范围支持:全部商品、指定分类、指定商品 SPU | 精细化控制优惠券可用范围,避免跨品类亏损 |
| R-08 | 每人限领数量默认为 1,可配置 | 防止单个用户大量囤券 |
| R-09 | 模板状态自动流转:未开始 → 进行中 → 已结束,支持手动下架 | 减少运营手动维护状态的工作量 |
接口设计:
| 接口名称 | 请求方式 | 接口路径 | 权限标识 | 说明 |
|---|---|---|---|---|
| 获取模板分页 | GET | /admin-api/promotion/coupon-template/page | promotion:coupon-template:query | 分页查询优惠券模板 |
| 获取模板详情 | GET | /admin-api/promotion/coupon-template/get | promotion:coupon-template:query | 获取模板详情 |
| 创建模板 | POST | /admin-api/promotion/coupon-template/create | promotion:coupon-template:create | 创建优惠券模板 |
| 更新模板 | PUT | /admin-api/promotion/coupon-template/update | promotion:coupon-template:update | 更新优惠券模板 |
| 删除模板 | DELETE | /admin-api/promotion/coupon-template/delete | promotion:coupon-template:delete | 删除优惠券模板 |
3.1.3 优惠券发放
业务流程:
- 在模板列表选择模板 → 点击"发放"
- 弹窗选择发放方式:全员发放 / 指定用户 / 领取活动
- 全员发放:确认后异步批量发放,返回成功/失败数量
- 指定用户:输入用户 ID 列表,系统自动校验限领和库存
- 领取活动:跳转创建领取活动页面,设置活动时间和限领数
业务规则:
| 规则编号 | 规则描述 | 设计原因 |
|---|---|---|
| R-01 | 全员发放向所有注册用户发放,异步执行 | 用户量大时同步执行会超时 |
| R-02 | 全员发放需检查模板剩余数量是否充足 | 库存不足时提前告知运营 |
| R-03 | 指定用户发放时校验每个用户是否已达限领数量 | 超限用户自动跳过,不浪费库存 |
| R-04 | 发放成功后自动更新模板的 takenCount | 保证库存数据实时准确 |
| R-05 | 领取活动需设置独立的活动时间和限领数 | 活动维度控制发放节奏 |
接口设计:
| 接口名称 | 请求方式 | 接口路径 | 权限标识 | 说明 |
|---|---|---|---|---|
| 全员发放 | POST | /admin-api/promotion/coupon/send-all | promotion:coupon:send | 向所有用户发放 |
| 指定用户发放 | POST | /admin-api/promotion/coupon/send-users | promotion:coupon:send | 向指定用户发放 |
| 创建领取活动 | POST | /admin-api/promotion/coupon-activity/create | promotion:coupon-activity:create | 创建领取活动 |
3.1.4 满减/折扣活动管理
页面布局:

业务规则:
| 规则编号 | 规则描述 | 设计原因 |
|---|---|---|
| R-01 | 活动类型:满减(按金额)、满减(按件数)、折扣 | 覆盖"凑单满减、多件满减、比例折扣"三种常见促销 |
| R-02 | 满减按金额可设多阶梯(如满100减10、满200减30) | 阶梯引导用户多凑单,提升客单价 |
| R-03 | 折扣可设减免上限金额 | 防止高价商品折扣过大造成亏损 |
| R-04 | 同一商品同一时间段不能参加多个同类型活动 | 避免优惠叠加造成资损 |
| R-05 | 上架后的活动不可修改优惠规则,需先下架 | 防止进行中的活动规则变化导致已下单用户纠纷 |
| R-06 | 活动状态自动流转:未开始 → 进行中 → 已结束 | 减少运营手动维护成本 |
接口设计:
| 接口名称 | 请求方式 | 接口路径 | 权限标识 | 说明 |
|---|---|---|---|---|
| 获取活动分页 | GET | /admin-api/promotion/discount-activity/page | promotion:discount-activity:query | 分页查询 |
| 获取活动详情 | GET | /admin-api/promotion/discount-activity/get | promotion:discount-activity:query | 含阶梯规则 |
| 创建活动 | POST | /admin-api/promotion/discount-activity/create | promotion:discount-activity:create | 创建活动 |
| 更新活动 | PUT | /admin-api/promotion/discount-activity/update | promotion:discount-activity:update | 更新活动 |
| 删除活动 | DELETE | /admin-api/promotion/discount-activity/delete | promotion:discount-activity:delete | 删除活动 |
| 上架活动 | PUT | /admin-api/promotion/discount-activity/enable | promotion:discount-activity:update | 上架 |
| 下架活动 | PUT | /admin-api/promotion/discount-activity/disable | promotion:discount-activity:update | 下架 |
3.1.5 活动商品配置
页面布局:

业务规则:
| 规则编号 | 规则描述 | 设计原因 |
|---|---|---|
| R-01 | 同一商品在同一时间段不能参加多个同类型活动 | 防止优惠叠加资损 |
| R-02 | 活动商品可选择使用活动规则自动计算或单独设置活动价 | 灵活适配不同定价策略 |
| R-03 | 活动库存可单独设置,不设置则使用商品原库存 | 活动库存隔离,防止活动抢购影响正常销售 |
| R-04 | 支持左右双栏批量添加/移除商品 | 提升运营配置效率 |
接口设计:
| 接口名称 | 请求方式 | 接口路径 | 权限标识 | 说明 |
|---|---|---|---|---|
| 获取活动商品列表 | GET | /admin-api/promotion/discount-product/list | promotion:discount-product:query | 获取活动下所有商品 |
| 添加活动商品 | POST | /admin-api/promotion/discount-product/create | promotion:discount-product:create | 批量添加 |
| 删除活动商品 | DELETE | /admin-api/promotion/discount-product/delete | promotion:discount-product:delete | 移除商品 |
3.1.6 秒杀活动管理
页面布局:

业务规则:
| 规则编号 | 规则描述 | 设计原因 |
|---|---|---|
| R-01 | 秒杀商品需设置秒杀价、秒杀库存、每人限购数量 | 三要素控制秒杀成本和公平性 |
| R-02 | 秒杀价必须低于商品原价 | 确保用户感知到优惠 |
| R-03 | 秒杀库存独立于商品原库存 | 隔离活动库存,不影响正常销售 |
| R-04 | 采用 Redis 预扣减库存 + Lua 脚本原子操作 | 高并发下防止超卖 |
| R-05 | 用户限购数量在活动期间内生效 | 防止黄牛囤货,保证公平 |
| R-06 | 未支付订单超时后自动取消并释放库存 | 释放被占用库存,提高售罄率 |
接口设计:
| 接口名称 | 请求方式 | 接口路径 | 权限标识 | 说明 |
|---|---|---|---|---|
| 获取秒杀活动分页 | GET | /admin-api/promotion/seckill-activity/page | promotion:seckill-activity:query | 分页查询 |
| 获取秒杀活动详情 | GET | /admin-api/promotion/seckill-activity/get | promotion:seckill-activity:query | 含秒杀商品 |
| 创建秒杀活动 | POST | /admin-api/promotion/seckill-activity/create | promotion:seckill-activity:create | 创建活动 |
| 更新秒杀活动 | PUT | /admin-api/promotion/seckill-activity/update | promotion:seckill-activity:update | 更新活动 |
| 删除秒杀活动 | DELETE | /admin-api/promotion/seckill-activity/delete | promotion:seckill-activity:delete | 删除活动 |
| 上架/下架 | PUT | /admin-api/promotion/seckill-activity/enable|disable | promotion:seckill-activity:update | 上下架 |
| 秒杀商品管理 | GET/POST/DELETE | /admin-api/promotion/seckill-product/* | promotion:seckill-activity:* | 商品CRUD |
3.1.7 拼团活动管理
页面布局:

业务规则:
| 规则编号 | 规则描述 | 设计原因 |
|---|---|---|
| R-01 | 拼团活动需设置成团人数(如 3 人成团) | 控制拼团门槛,人数越少越容易成团 |
| R-02 | 拼团商品需设置团购价和单人购买价(不参团价格) | 团购价更低才能吸引用户拼团 |
| R-03 | 团购价必须低于单人购买价 | 保证拼团有价格优势 |
| R-04 | 可设置成团有效时长(如 24 小时内成团) | 超时未成团自动退款,保障用户体验 |
| R-05 | 支持设置是否允许模拟成团(系统补齐剩余人数) | 运营可选择性兜底,提高成团率 |
| R-06 | 超时未成团自动退款 | 避免用户资金长期被占 |
接口设计:
| 接口名称 | 请求方式 | 接口路径 | 权限标识 | 说明 |
|---|---|---|---|---|
| 获取拼团活动分页 | GET | /admin-api/promotion/combination-activity/page | promotion:combination-activity:query | 分页查询 |
| 获取拼团活动详情 | GET | /admin-api/promotion/combination-activity/get | promotion:combination-activity:query | 含拼团商品 |
| 创建/更新/删除 | POST/PUT/DELETE | /admin-api/promotion/combination-activity/* | promotion:combination-activity:* | 活动CRUD |
| 上架/下架 | PUT | /admin-api/promotion/combination-activity/enable|disable | promotion:combination-activity:update | 上下架 |
| 拼团商品管理 | GET/POST/DELETE | /admin-api/promotion/combination-product/* | promotion:combination-activity:* | 商品CRUD |
| 拼团记录分页 | GET | /admin-api/promotion/combination-record/page | promotion:combination-activity:query | 查询拼团记录 |
3.1.8 砍价活动管理
页面布局:

业务规则:
| 规则编号 | 规则描述 | 设计原因 |
|---|---|---|
| R-01 | 砍价商品需设置砍价起始价和砍价底价 | 起始价是用户看到的价格,底价是最终可购买价 |
| R-02 | 每次砍价金额在最小值和最大值之间随机 | 随机性增加趣味性和社交分享动力 |
| R-03 | 可设置砍价总刀数限制 | 控制砍到底价所需的最大次数,平衡成本和吸引力 |
| R-04 | 砍价成功后用户可以底价购买商品 | 底价购买是用户砍价的终极目标 |
| R-05 | 可设置砍价有效时长 | 超时未完成则砍价记录失效 |
| R-06 | 砍价库存独立管理 | 隔离活动库存,防止影响正常销售 |
接口设计:
| 接口名称 | 请求方式 | 接口路径 | 权限标识 | 说明 |
|---|---|---|---|---|
| 获取砍价活动分页 | GET | /admin-api/promotion/bargain-activity/page | promotion:bargain-activity:query | 分页查询 |
| 获取砍价活动详情 | GET | /admin-api/promotion/bargain-activity/get | promotion:bargain-activity:query | 含砍价商品 |
| 创建/更新/删除 | POST/PUT/DELETE | /admin-api/promotion/bargain-activity/* | promotion:bargain-activity:* | 活动CRUD |
| 上架/下架 | PUT | /admin-api/promotion/bargain-activity/enable|disable | promotion:bargain-activity:update | 上下架 |
| 砍价商品管理 | GET/POST/DELETE | /admin-api/promotion/bargain-product/* | promotion:bargain-activity:* | 商品CRUD |
| 砍价记录分页 | GET | /admin-api/promotion/bargain-record/page | promotion:bargain-activity:query | 查询砍价记录 |
3.1.9 Banner 管理
页面布局:

业务规则:
| 规则编号 | 规则描述 | 设计原因 |
|---|---|---|
| R-01 | Banner 支持配置图片、跳转链接、展示位置、排序权重 | 完整的广告位管理能力 |
| R-02 | 展示位置(position)标识 Banner 所在的页面区域 | 不同页面区域展示不同内容 |
| R-03 | 同一位置下按 sort 字段升序排列 | 运营可灵活控制展示顺序 |
| R-04 | 链接类型:商品详情、活动页面、自定义链接、无跳转 | 灵活配置点击后的跳转目标 |
| R-05 | Banner 分类用于分组管理 | 大量 Banner 时便于归类查找 |
接口设计:
| 接口名称 | 请求方式 | 接口路径 | 权限标识 | 说明 |
|---|---|---|---|---|
| 获取 Banner 分页 | GET | /admin-api/promotion/banner/page | promotion:banner:query | 分页查询 |
| 获取 Banner 详情 | GET | /admin-api/promotion/banner/get | promotion:banner:query | 获取详情 |
| 创建 Banner | POST | /admin-api/promotion/banner/create | promotion:banner:create | 创建 |
| 更新 Banner | PUT | /admin-api/promotion/banner/update | promotion:banner:update | 更新 |
| 删除 Banner | DELETE | /admin-api/promotion/banner/delete | promotion:banner:delete | 删除 |
| 更新状态 | PUT | /admin-api/promotion/banner/update-status | promotion:banner:update | 上架/下架 |
3.1.10 推荐位管理
业务规则:
| 规则编号 | 规则描述 | 设计原因 |
|---|---|---|
| R-01 | 推荐位通过 position 编码标识(如 home_hot、home_new) | 编码化管理,前后端约定一致 |
| R-02 | 每个推荐位下可配置多个推荐商品 | 一个位置可展示多个商品 |
| R-03 | 推荐商品支持设置排序权重 | 运营可控制商品展示顺序 |
| R-04 | 推荐商品必须是已上架状态 | 避免推荐了用户看不到的商品 |
接口设计:
| 接口名称 | 请求方式 | 接口路径 | 权限标识 | 说明 |
|---|---|---|---|---|
| 获取推荐商品列表 | GET | /admin-api/promotion/recommend/list | promotion:recommend:query | 获取指定推荐位商品 |
| 设置推荐商品 | POST | /admin-api/promotion/recommend/create | promotion:recommend:create | 添加到推荐位 |
| 更新排序 | PUT | /admin-api/promotion/recommend/update-sort | promotion:recommend:update | 更新排序 |
| 删除推荐商品 | DELETE | /admin-api/promotion/recommend/delete | promotion:recommend:delete | 从推荐位移除 |
3.2 前台用户端
3.2.1 功能清单
| 功能 | 优先级 | 说明 |
|---|---|---|
| 优惠券中心 | P0 | 展示可领/已领/已用/已过期的优惠券 |
| 领取优惠券 | P0 | 从优惠券中心或领取活动领取 |
| 秒杀活动页面 | P0 | 展示秒杀活动列表和商品 |
| 拼团活动页面 | P1 | 展示拼团活动列表和商品 |
| 砍价活动页面 | P2 | 展示砍价活动列表和商品 |
| 下单使用优惠券 | P0 | 结算页面选择可用优惠券 |
| Banner 展示 | P0 | 首页/频道页展示 Banner |
| 推荐商品展示 | P1 | 首页展示推荐商品 |
3.2.2 优惠券中心
业务规则:
| 规则编号 | 规则描述 | 设计原因 |
|---|---|---|
| R-01 | Tab 切换:可领取 / 已领取 / 已使用 / 已过期 | 清晰分类,方便用户管理自己的优惠券 |
| R-02 | 已达限领数量的模板不再展示 | 避免用户看到领不了的券产生困惑 |
| R-03 | 模板库存为 0 时展示"已领完" | 告知用户真实状态 |
| R-04 | 已领取的优惠券按到期时间升序排列 | 即将到期的排前面,引导用户尽快使用 |
| R-05 | 下单时自动匹配可用优惠券 | 降低用户使用优惠券的操作成本 |
3.2.3 秒杀活动页面
业务规则:
| 规则编号 | 规则描述 | 设计原因 |
|---|---|---|
| R-01 | 按时间段分场展示(如 10:00 场、14:00 场) | 分场制造紧迫感,提升用户粘性 |
| R-02 | 即将开始的场次展示倒计时 | 提前吸引用户等待 |
| R-03 | 进行中的场次展示"立即抢购"按钮 | 明确操作引导 |
| R-04 | 已抢完的商品展示"已抢光" | 告知库存状态 |
| R-05 | 商品卡片展示:秒杀价、原价、进度条(已抢百分比) | 进度条营造抢购氛围 |
3.2.4 拼团活动页面
业务规则:
| 规则编号 | 规则描述 | 设计原因 |
|---|---|---|
| R-01 | 展示团购价、原价、成团人数 | 清晰展示拼团优惠力度 |
| R-02 | 支持发起拼团和参加已有拼团 | 两种参团方式覆盖不同场景 |
| R-03 | 拼团详情页展示团成员和倒计时 | 透明展示拼团进度 |
| R-04 | 支持分享链接给好友参团 | 社交裂变的核心路径 |
3.2.5 砍价活动页面
业务规则:
| 规则编号 | 规则描述 | 设计原因 |
|---|---|---|
| R-01 | 展示原价、底价、已砍金额 | 让用户清楚知道砍价进度 |
| R-02 | 支持发起砍价和邀请好友帮砍 | 社交裂变的核心路径 |
| R-03 | 每次帮砍金额随机 | 增加趣味性和不确定性 |
| R-04 | 砍到底价后可直接下单购买 | 明确的目标激励用户持续分享 |
3.2.6 下单使用优惠券
业务规则:
| 规则编号 | 规则描述 | 设计原因 |
|---|---|---|
| R-01 | 仅展示"未使用"且在有效期内的优惠券 | 过滤不可用券,减少干扰 |
| R-02 | 订单金额需满足使用门槛 | 满减券的基本条件 |
| R-03 | 优惠券使用范围需包含订单中的商品 | 确保券和商品匹配 |
| R-04 | 每笔订单只能使用一张优惠券 | 避免多券叠加造成资损 |
| R-05 | 下单成功后优惠券状态变为"已使用",关联订单号 | 建立券和订单的关联关系 |
| R-06 | 订单取消/退款时优惠券退回(已过期则标记过期) | 保障用户权益 |
四、非功能需求
4.1 性能
| 指标 | 要求 | 实现策略 |
|---|---|---|
| 秒杀抢购下单 | 响应 < 100ms | Redis 预扣减库存 + Lua 原子脚本 + 异步落库 |
| 秒杀库存扣减 | 支持 ≥ 5000 QPS | Redis 单线程原子操作,无锁竞争 |
| 优惠券领取 | 响应 < 200ms | Redis 原子操作防超领 |
| 优惠券模板列表 | 响应 < 500ms | 分页查询 + 索引优化 |
| Banner 列表查询 | 响应 < 200ms | Redis 缓存,TTL 5 分钟 |
| 推荐商品列表 | 响应 < 300ms | Redis 缓存,TTL 5 分钟 |
| 活动商品列表 | 响应 < 500ms | 分页查询 |
4.2 安全
| 安全措施 | 说明 |
|---|---|
| 秒杀防超卖 | Redis Lua 脚本原子扣减库存,保证并发安全 |
| 优惠券防刷 | 同一用户同一模板限领次数校验 + 接口频率限制 |
| 秒杀防刷 | 用户维度限购校验 + 接口限流 + 可配置验证码 |
| 拼团防作弊 | 校验参团用户真实身份,禁止同一用户重复参团 |
| 金额防篡改 | 服务端重新计算优惠金额,不信任前端传入的优惠值 |
| 数据权限 | 所有后台操作基于租户隔离,记录操作日志 |
4.3 可用性
| 维度 | 要求 |
|---|---|
| 活动状态自动流转 | 定时任务每分钟扫描,自动将到期活动标记为"已结束",将未开始且已到开始时间的活动标记为"进行中" |
| 秒杀库存回滚 | 未支付订单超时取消后,自动回滚秒杀库存 |
| 拼团超时处理 | 成团超时后自动退款,模拟成团时系统自动补齐人数 |
| 优惠券过期处理 | 定时任务每日凌晨扫描,将过期优惠券标记为"已过期" |
4.4 错误码
| 错误码 | 含义 | 用户提示 |
|---|---|---|
| PROMOTION_TEMPLATE_NOT_FOUND | 优惠券模板不存在 | "优惠券模板不存在" |
| PROMOTION_TEMPLATE_STOCK_EMPTY | 模板库存不足 | "优惠券已领完" |
| PROMOTION_COUPON_LIMIT_REACHED | 达到限领数量 | "您已领取过该优惠券" |
| PROMOTION_COUPON_NOT_AVAILABLE | 优惠券不可用 | "该优惠券不满足使用条件" |
| PROMOTION_ACTIVITY_CONFLICT | 活动商品冲突 | "该商品已参加其他同类型活动" |
| PROMOTION_SECKILL_STOCK_EMPTY | 秒杀库存不足 | "手慢了,已被抢光" |
| PROMOTION_SECKILL_LIMIT_REACHED | 秒杀限购上限 | "每人限购X件,您已达到上限" |
| PROMOTION_GROUP_FULL | 拼团人数已满 | "该团已满员" |
| PROMOTION_GROUP_TIMEOUT | 拼团超时未成团 | "拼团超时已自动退款" |
| PROMOTION_BARGAIN_COMPLETED | 砍价已完成 | "该商品已砍到底价" |
五、数据设计
5.1 表概览
| 序号 | 表名 | 说明 | 核心字段 |
|---|---|---|---|
| 1 | promotion_coupon_template | 优惠券模板 | name, type, discount_price, validity_type, total_count, scope_type |
| 2 | promotion_coupon | 用户优惠券 | template_id, user_id, status, use_time, order_id |
| 3 | promotion_coupon_activity | 优惠券领取活动 | template_id, total_count, start_time, end_time |
| 4 | promotion_discount_activity | 满减/折扣活动 | name, type, start_time, end_time, status |
| 5 | promotion_discount_product | 满减/折扣活动商品 | activity_id, spu_id, sku_id, activity_price |
| 6 | promotion_seckill_activity | 秒杀活动 | name, start_time, end_time, status |
| 7 | promotion_seckill_product | 秒杀商品 | activity_id, spu_id, seckill_price, seckill_stock |
| 8 | promotion_combination_activity | 拼团活动 | name, user_size, virtual_group, expire_time |
| 9 | promotion_combination_product | 拼团商品 | activity_id, spu_id, combination_price, single_price |
| 10 | promotion_bargain_activity | 砍价活动 | name, start_time, end_time, status |
| 11 | promotion_bargain_product | 砍价商品 | activity_id, spu_id, bargain_start/end_price |
| 12 | promotion_banner | Banner | title, image_url, link_url, position, sort |
| 13 | promotion_recommend | 推荐位商品 | position, spu_id, sort |
5.2 表关系

5.3 缓存策略
| 缓存对象 | 缓存方式 | TTL | 更新策略 |
|---|---|---|---|
| 秒杀库存 | Redis 字符串 | 活动结束自动清理 | 活动上架时初始化,Lua 原子扣减 |
| 优惠券模板库存 | Redis 字符串 | 模板结束自动清理 | 发放时原子扣减 |
| Banner 列表 | Redis 字符串(JSON) | 5 分钟 | 后台修改时主动失效 |
| 推荐位商品 | Redis 字符串(JSON) | 5 分钟 | 后台修改时主动失效 |
| 用户限领计数 | Redis Hash | 活动结束自动清理 | 领取时原子递增 |
六、跨模块联动
6.1 营销 → 商品
| 联动场景 | 触发条件 | 联动行为 | 数据流向 |
|---|---|---|---|
| 活动商品校验 | 配置活动商品时 | 校验商品是否已上架、库存是否充足 | 营销 → 商品(读) |
| 商品信息展示 | 活动页面展示商品 | 读取商品名称、图片、原价等信息 | 商品 → 营销(读) |
| 活动库存隔离 | 设置活动库存 | 活动库存独立于商品原库存 | 营销独立管理 |
6.2 营销 → 交易
| 联动场景 | 触发条件 | 联动行为 | 数据流向 |
|---|---|---|---|
| 下单计算优惠 | 用户提交订单 | 计算满减/折扣/优惠券减免金额 | 营销 → 交易(提供计算服务) |
| 优惠券核销 | 订单支付成功 | 将优惠券状态标记为"已使用" | 营销 ← 交易(回调) |
| 退款退券 | 订单退款 | 将优惠券恢复为"未使用"或标记过期 | 营销 ← 交易(回调) |
| 秒杀下单 | 秒杀抢购 | 创建秒杀订单,扣减秒杀库存 | 交易 → 营销(库存扣减) |
| 拼团/砍价下单 | 拼团/砍价成功 | 创建优惠订单 | 交易 → 营销(价格来源) |
6.3 营销 → 会员
| 联动场景 | 触发条件 | 联动行为 | 数据流向 |
|---|---|---|---|
| 优惠券发放到用户 | 全员/定向发放 | 在用户维度生成优惠券记录 | 营销 → 会员(关联用户) |
| 拼团/砍价分享 | 用户发起拼团/砍价 | 生成分享链接,好友通过链接参团/帮砍 | 营销 → 会员(社交关系) |
| 用户等级联动 | 会员等级变化 | 高等级会员可领取专属优惠券(预留) | 会员 → 营销(触发) |
6.4 营销 → 统计分析
| 联动场景 | 触发条件 | 联动行为 | 数据流向 |
|---|---|---|---|
| 优惠券数据统计 | T+1 离线任务 | 统计发放/领取/使用/核销率 | 营销 → 统计(数据源) |
| 活动效果统计 | T+1 离线任务 | 统计活动参与人数、成交额、ROI | 营销 → 统计(数据源) |
| Banner 点击统计 | 实时事件 | 记录 Banner 点击次数和 UV | 营销 → 统计(事件流) |
七、附录
7.1 名词解释
| 名词 | 解释 | 通俗理解 |
|---|---|---|
| 优惠券模板 | 优惠券的"印刷模具",定义券的类型、面额、使用条件等 | 就像做月饼的模具——模具刻好了,才能批量做出同样的月饼 |
| 满减券 | 订单金额达到门槛后减免固定金额(如满100减20) | 超市"满200减30"的促销牌 |
| 折扣券 | 订单金额按折扣比例减免(如8折) | 商场"全场8折"的促销标签 |
| 立减券 | 无门槛直接减免固定金额 | 直接抵扣现金的"代金券" |
| 秒杀 | 限时限量的特价抢购活动 | 超市"限时10分钟、限50件、特价9.9"的抢购 |
| 拼团 | 多人组团以团购价购买商品 | "3人成团,每人省10元"——人越多越便宜 |
| 砍价 | 邀请好友帮忙砍价,砍到底价后可购买 | 菜市场讨价还价的线上版——叫上朋友帮你"砍一刀" |
| 成团 | 拼团达到指定人数,拼团成功 | 凑够了人数,大家一起享受团购价 |
| 模拟成团 | 系统自动补齐拼团剩余人数 | 差1个人就成团了,系统"虚拟"补1个人让你成团 |
| SPU | Standard Product Unit,标准产品单元 | 一个商品,如"可口可乐" |
| SKU | Stock Keeping Unit,库存量单位 | 具体规格,如"可口可乐330ml罐装" |
| GMV | Gross Merchandise Volume,商品交易总额 | 平台总共卖了多少钱 |
| Banner | 页面上的广告横幅图片 | 超市入口的大海报/横幅 |
| 推荐位 | 页面上指定的推荐商品展示区域 | 收银台旁的"推荐货架" |
| ROI | Return on Investment,投资回报率 | 花1块钱做促销,赚回来多少钱 |
7.2 权限标识汇总
| 权限标识 | 说明 |
|---|---|
| promotion:coupon-template:query | 查看优惠券模板 |
| promotion:coupon-template:create | 创建优惠券模板 |
| promotion:coupon-template:update | 修改优惠券模板 |
| promotion:coupon-template:delete | 删除优惠券模板 |
| promotion:coupon:query | 查看优惠券领取/使用记录 |
| promotion:coupon:send | 发放优惠券 |
| promotion:coupon-activity:query | 查看领取活动 |
| promotion:coupon-activity:create | 创建领取活动 |
| promotion:coupon-activity:update | 修改领取活动 |
| promotion:coupon-activity:delete | 删除领取活动 |
| promotion:discount-activity:query | 查看满减/折扣活动 |
| promotion:discount-activity:create | 创建满减/折扣活动 |
| promotion:discount-activity:update | 修改满减/折扣活动 |
| promotion:discount-activity:delete | 删除满减/折扣活动 |
| promotion:discount-product:query | 查看活动商品 |
| promotion:discount-product:create | 添加活动商品 |
| promotion:discount-product:delete | 删除活动商品 |
| promotion:seckill-activity:query | 查看秒杀活动 |
| promotion:seckill-activity:create | 创建秒杀活动 |
| promotion:seckill-activity:update | 修改秒杀活动 |
| promotion:seckill-activity:delete | 删除秒杀活动 |
| promotion:combination-activity:query | 查看拼团活动 |
| promotion:combination-activity:create | 创建拼团活动 |
| promotion:combination-activity:update | 修改拼团活动 |
| promotion:combination-activity:delete | 删除拼团活动 |
| promotion:bargain-activity:query | 查看砍价活动 |
| promotion:bargain-activity:create | 创建砍价活动 |
| promotion:bargain-activity:update | 修改砍价活动 |
| promotion:bargain-activity:delete | 删除砍价活动 |
| promotion:banner:query | 查看 Banner |
| promotion:banner:create | 创建 Banner |
| promotion:banner:update | 修改 Banner |
| promotion:banner:delete | 删除 Banner |
| promotion:recommend:query | 查看推荐位 |
| promotion:recommend:create | 设置推荐商品 |
| promotion:recommend:update | 修改推荐商品排序 |
| promotion:recommend:delete | 删除推荐商品 |