第14节:抽奖活动订单流程设计
-
操作总流程
┌──────────────────────────────────────────────────┐
│ raffle_activity (活动表) │
│ activity_id = 100301 活动名 = "双11抽奖" │
│ stock_count = 10000 剩余库存 = 8723 │
│ activity_count_id = 1 strategy_id = 100006 │
│ state = "create" │
└──────────────────┬───────────────────────────────┘
│
┌──────────────┼──────────────┐
▼ ▼ ▼
┌─────────────┐ ┌──────────────┐ ┌────────────────────┐
│raffle_activi│ │raffle_activi │ │raffle_activity_sku │
│ty_count │ │ty_account │ │ │
│(次数配置) │ │(用户账户) │ │(SKU商品) │
│ │ │ │ │ │
│count_id=1 │ │userId= │ │sku=9011 │
│total=100次 │ │ xiaofuge │ │activity_id=100301 │
│day=2次/天 │ │total=100 │ │count_id=1 │
│month=60次/月│ │ 剩余=97 │ │stock=5000 │
│ │ │day=2 │ │ 剩余=4897 │
│ │ │ 剩余=1 │ │ │
│ │ │month=60 │ │ │
│ │ │ 剩余=58 │ │ │
└─────────────┘ └──────┬───────┘ └────────────────────┘
│
┌────────────┼────────────┐
▼ ▼ ▼
┌───────────┐ ┌──────────┐ ┌──────────────┐
│订单表 │ │账户流水表 │ │抽奖记录... │
│(分库分表) │ │(分库分表) │ │ │
└───────────┘ └──────────┘ └──────────────┘
-
用户操作流程
Step 1:买抽奖次数
xiaofuge 看到活动,花积分买了 SKU 9011(一次购买 = 获得活动次数包):
raffle_activity_order (订单表,按 userId hash 落到 db01/table_000) ┌────┬──────────┬──────────┬─────────────┬──────────────┬──────────────┬──────────┐ │ id │ user_id │ order_id │ activity_id │ strategy_id │ order_time │ state │ ├────┼──────────┼──────────┼─────────────┼──────────────┼──────────────┼──────────┤ │ 1 │ xiaofuge │382877096 │ 100301 │ 100006 │ 2024-03-09 │ used │ │ │ │ 957 │ │ │ 14:24:15 │ │ │ 2 │ xiaofuge │912345678 │ 100301 │ 100006 │ 2024-03-10 │ not_used │ │ │ │ 901 │ │ │ 09:15:30 │ │ └────┴──────────┴──────────┴─────────────┴──────────────┴──────────────┴──────────┘订单状态:
not_used→ 下单但还没领取次数 /used→ 已领取 /expire→ 过期Step 2:订单履约,次数到账
第 1 笔订单变为
used后,次数加到 xiaofuge 的账户:raffle_activity_account (账户表,同样按 userId hash) ┌────┬──────────┬──────────┬───────┬──────┬──────┬──────┬────────┬────────┐ │ id │ user_id │activity_id│total │剩余 │day │剩余 │month │剩余 │ ├────┼──────────┼──────────┼───────┼──────┼──────┼──────┼────────┼────────┤ │ 1 │ xiaofuge │ 100301 │ 100 │ 97 │ 2 │ 1 │ 60 │ 58 │ └────┴──────────┴──────────┴───────┴──────┴──────┴──────┴────────┴────────┘解读:xiaofuge 总共拿了 100 次抽奖机会,今天已经用了 1 次(剩 1 次),本月用了 2 次(剩 58 次)。
Step 3:账户流水
每次账户变动都记流水:
raffle_activity_account_flow_000 (流水表,分表) ┌────┬──────────┬──────────┬──────────┬──────────────┬──────────┐ │ id │ user_id │ flow_id │flow_channel│ biz_id │total_cnt │ ├────┼──────────┼──────────┼──────────────┼──────────┼──────────┤ │ 1 │ xiaofuge │ F20240309│ activity │ 382877096957│ +100 │ │ │ │ 001 │ (活动领取) │ (关联订单) │ │ │ 2 │ xiaofuge │ F20240310│ activity │ - │ -1 │ │ │ │ 002 │ (抽奖消耗) │ │ │ └────┴──────────┴──────────┴──────────────┴──────────┴──────────┘

浙公网安备 33010602011771号