秒杀活动专项手册
本文覆盖 DGJ2.0 秒杀活动从 OPS 创建、OA 审批、启用,到服务站列表、加购、下单、支付、转采购、补偿的完整链路。适用于秒杀联调和线上排查。
适用场景
- OPS 创建/导入活动商品失败。
- OA 审批通过后活动未启用或服务站不可见。
- 服务站列表显示有库存,但加购/下单失败。
- 秒杀订单待支付、支付超时、取消、关闭后数量未回滚。
- 支付成功但采购单未生成或状态不一致。
locked_qty、used_qty、活动总量异常。
入口文件
- OPS/内部活动:
application/controllers/inner/activity/FlashActivity.php - PC 服务站入口:
application/controllers/scm/FlashSale.php - 移动商城入口:
application/controllers/inner/moveMall/FlashSale.php - 活动管理服务:
application/Services/Activity/FlashActivitySer.php - 服务站购买服务:
application/Services/Activity/FlashSaleSer.php - 秒杀枚举:
application/KzData/Enums/FlashActivityEnums.php - 秒杀补偿任务:
application/controllers/tasks/FlashSaleTask.php - OA 回调:
application/controllers/tasks/OaNotify.php
核心表
- 活动主表:
t_flash_activity - 活动商品:
t_flash_activity_goods - 服务站范围:
t_flash_activity_station_scope - 秒杀购物车:
t_flash_cart - 秒杀订单主表:
t_flash_order - 秒杀订单明细:
t_flash_order_detail - 活动日志:
t_flash_activity_log - 关联采购单:
t_scm_po_order、t_scm_po_order_info - 支付明细:
t_scm_po_order_payinfo、t_scm_payment
状态和枚举
- 活动类型:单品售卖、套包售卖。
- 库存范围:服务站对应仓、指定仓、全局预留。
- 审批状态:草稿、审批中、审批通过、审批驳回。
- 启用状态:草稿、启用、提前结束。
- 页面状态:未开始、进行中、已结束。
- 商品状态:待开始、进行中、已结束、已失效。
- 秒杀订单:已创建、待支付、已支付、已取消、已关闭。
- 秒杀采购单:
PoOrderEnums::ORDERTYPE_FLASH_ORDER = 30-Cxx-77,SRC_ORDER_TYPE_FLASH_ACTIVITY = 13。
主流程
flowchart TD
A["OPS 创建活动"] --> B["配置活动商品、库存、范围"]
B --> C["提交 OA 审批"]
C --> D{"审批结果"}
D -->|通过| E["启用活动"]
D -->|驳回| F["活动不可售"]
E --> G["服务站列表/详情"]
G --> H["加购或立即购买"]
H --> I["创建秒杀订单并锁定数量"]
I --> J["确认页/支付"]
J -->|支付成功| K["生成或推进采购单"]
J -->|超时/取消| L["释放锁定数量"]
K --> M["采购后续出库/入库/关闭"]
列表和加购排查
- 查活动是否审批通过、启用、当前时间在活动窗口内。
- 查服务站是否被黑名单排除或未命中白名单。
- 查活动商品状态是否进行中,商品是否启用。
- 查库存范围:
- 服务站对应仓:按当前服务站仓库查库存。
- 指定仓:按活动配置仓库查库存。
- 全局预留:按活动总量、锁定量、已用量判断。
- 查限购:单品限购、套包限购、服务站已购数量。
- 查购物车:
t_flash_cart是否有效,活动或商品失效后购物车应失效。
下单和支付排查
- 查
t_flash_order状态。 - 查
t_flash_order_detail的商品、数量、活动商品 id。 - 查
t_flash_activity_goods.locked_qty是否增加。 - 在线支付查
t_scm_po_order_payinfo、t_scm_payment。 - 支付成功后查采购单:
orderType = 30-Cxx-77srcOrderType = 13- 来源单号能关联秒杀订单。
- 如果支付成功但采购单未生成,查
FlashSaleSer补偿和支付回调日志。
超时、取消和关闭
- 待支付超时:
FlashSaleTask::expireWaitPayOrders。 - 主动取消:秒杀订单变取消,释放锁定量。
- 采购关闭:要确认秒杀订单和活动商品数量是否同步回滚。
- 已支付补偿:
compensatePaidOrders。 - 已关闭补偿:
compensateClosedOrders。
常用 SQL 模板
-- 活动和活动商品
select * from t_flash_activity where id = :activity_id;
select * from t_flash_activity_goods where activity_id = :activity_id;
select * from t_flash_activity_station_scope where activity_id = :activity_id;
-- 购物车和秒杀订单
select * from t_flash_cart where sid = :sid and activity_id = :activity_id;
select * from t_flash_order where sid = :sid and order_no = :flash_order_no;
select * from t_flash_order_detail where flash_order_id = :flash_order_id;
-- 秒杀转采购
select * from t_scm_po_order
where sid = :sid and orderType = '30-Cxx-77' and srcOrderType = 13;
常用 rg 命令
rg -n "class FlashSale|FlashSaleSer|FlashActivitySer" application/controllers application/Services
rg -n "locked_qty|used_qty|ORDER_STATUS_WAIT_PAY|ORDERTYPE_FLASH_ORDER" application/Services application/KzData/Enums
rg -n "expireWaitPayOrders|refreshInvalidCarts|compensatePaidOrders|compensateClosedOrders" application/controllers/tasks/FlashSaleTask.php
rg -n "OA_TEMPLATE_CODE|callback20260526" application/controllers/tasks application/Services/Activity application/KzData/Enums
改动风险和回归清单
- OPS 创建、编辑、导入、导出、提交审批。
- OA 审批通过、驳回、重复回调。
- 服务站列表、详情、黑白名单、库存范围。
- 加购、购物车失效、确认页、提交订单。
- 支付成功、支付超时、主动取消、采购关闭。
- 补偿任务幂等,重点防止重复生成采购单或重复释放库存。