订单奖励流向完整示例

订单 XS20****3429(礼包 · ¥100,580.00) · 买家 会员A (#1 · V5)
本页由命令行生成器 读真实库渲染,用于替代此前手工维护的静态示例页。

口径版本 v2026.09.19 生成于 2026-09-20 06:52:30 数据来源:订单别名 #1 最近一笔已支付礼包订单 已脱敏
★ 本页为自动生成产物,请勿手工编辑 —— 任何手工改动都会在下一次生成时被覆盖。
生成命令:php think doc:reward-sample --preset=all · 生成时间:2026-09-20 06:52:30 · 口径版本:v2026.09.19
页面数据实时取自 sales_order / order_item / reward_record / point_record / config_param(只读,不改动任何业务数据)。
★ 本页已脱敏:真实订单号 → 保留首尾各 4 位(其余打码);会员昵称 → 会员A/会员B/…;会员 ID / 商户 ID / 商品 ID → 顺序别名;商品名 → 示例商品A/示例商品B;备注中的长数字串 → ****。
金额、比例、状态、时间与奖励结构全部保持真实 —— 脱敏只替换身份标识,不改变任何数值。

0. 本单资金概览

订单金额 ¥100,580.00,应发合计 ¥12,069.60,扣烧伤后实发 ¥2,011.60。

100,580.00
订单金额
12,069.60
应发奖励合计(should)
2,011.60
实际发放额(should − burn)
10,058.00
烧伤合计(资格 + 差额)
120.70
6% 平台税(当前未入账)
1,890.90
净红包入账(paid − tax)
10,058.00
分享奖合计
2,011.60
团队奖合计
12,069.60
上级可见合计(分享 + 团队)
奖励批次号 reward:order#1(逐商品明细 batch = reward:order#ID:item#ID)。「应发」= T3 计提口径,「实发」= 应发 − 烧伤;烧伤含 T3 资格烧伤与 T6 差额烧伤。

1. 订单商品与计提基数

每个商品独立计提:入账基数 = 该商品的 pay_amount(见文末口径要点)。

#商品单价数量金额券/红包抵扣pay_amount(基数)让利值让利额商户
1示例商品A100,580.001100,580.000.00100,580.0060%60,348.00#1

2. 奖励受益链

按推荐链深度排序(根 → 买家)。买家带 买家 标记。

#会员等级身份分享奖团队奖推荐奖奖励合计本单获得(消费积分)
1会员B #2V6受益人10,058.000.000.000.00—
2会员A #1V5买家0.001,005.800.001,005.80301,740.00
3会员C #3V0受益人0.001,005.800.001,005.80—

3. 奖励计提明细

逐条来自 reward_record,未做任何加工。

#受益人类型奖励线来源会员应发实发(T3)烧伤实际发放状态时间
1会员B #2分享奖购买者线会员A10,058.000.0010,058.000.00已计提2026-09-19 23:50:57
2会员A #1团队奖购买者线会员A1,005.801,005.800.001,005.80已发放2026-09-19 23:50:57
3会员C #3团队奖购买者线会员A1,005.801,005.800.001,005.80已发放2026-09-19 23:50:57

4. 本单积分按池明细

买家 会员A 在本单的 point_record。

#事件积分池池间转换变动变动后余额关联商品备注时间
1商品实付积分发放·消费池消费积分外部/订单 → 消费积分301,740.00301,740.00示例商品A商品发放(实付×让利60.00%×5) order#****:item#****2026-09-19 23:50:57
2积分变动·消费池让利值外部/订单 → 让利值60,348.0060,348.00示例商品A让利值发放(订单明细让利) order#****:item#****2026-09-19 23:50:57
3加速奖划转·消费池消费积分消费积分 → 专属红包-1,005.80300,734.20示例商品A团队加速奖划转(消费积分→专属红包) 应发****.80 税后入账945.46 扣税60.34 [reward#18]2026-09-19 23:50:57
279,394.95
消费积分 consume_point(当前余额)
0.00
兑换积分 exchange_point(当前余额)
0.00
锁仓积分 lock_point(当前余额)
21,004.39
专属红包 red_packet(当前余额)

5. 参数快照

参数值说明
share_reward_rate10%分享奖比例(每级固定,不衰减)
team_reward_rate5%团队奖比例(每级固定,单向 pass-up)
recommend_reward_rate10%推荐奖比例
point_release_rate0.2%消费积分每日释放比例 → 专属红包
team_max_level5团队加速封顶级数
red_packet_tax_rate6%平台税(加速奖 + 静态释放两条路径都有);当前未入账,★拍板入 platform_tax_reserve
burn_gap_enabletrue差额烧伤开关(余额不足时差额蒸发;拍板并入同一沉淀科目 source=burn_gap)
dividend_overlay_min_level1参与分红叠加的最低等级
v1..v6_dividend_rate6% / 5% / 4% / 3% / 2% / 1%各级分红比例

6. 口径要点(易漂移项 · 单一出处)

下表取自 RewardFlowService::caliberNotes(),后台动态页与本文档共用同一份定义,不再各写各的。

项现行口径(✓)历史错写(✗)
入账基数
settle_base
取 order_item 存储列 pay_amount(SettleBase::itemPayAmount():pay_amount 或 coupon_amount 任一为正即取 pay_amount;两者皆为 0 才回落 amount,老库无该列时回落 amount)。写成「amount − coupon_amount 现场相减」——会丢掉 pay_amount 的快照语义。
每日释放落点
release_to
消费积分 → 按 point_release_rate 每日释放为「专属红包 red_packet」(释放额同样扣 6% 平台税后入账);前置条件为前一日有活跃值。写成「释放 → 兑换池 exchange_point」。
锁仓解冻落点(事件驱动 · 需求 C)
thaw_to
PointEngine::thawLockEvent()(2026-09-17 取代定时任务 point:thaw)写 consume_point(消费积分),非兑换积分。触发:礼包支付成功(基数 B = 明细原价 order_item.amount)/ 普通商品确认收货(基数 B = 让利额)。中心 R = 买家直接推荐人:★ R 直发 10%(lock_ref_rate,R 本人一次性、不递归,必有效会员否则灼烧);① 向上 1%(R 上级链 ×0.5^(k−1),必有效会员,否则灼烧递归);② 向下 1%(买家下级树 ×0.5^(d−1) 无限递归,层内按剩余锁仓 lock_point 占比分配;★2026-09-19 修正,原写 lock_point−lock_released 属双扣)。单会员解冻额 cap 剩余锁仓(= lock_point),杜绝超发;幂等按 order_id+item_id+source='lock_thaw'。写成「解冻 → 兑换池」,或写成「每日按 0.2% 静态解冻」(旧 point:thaw 已被事件驱动取代),或漏掉「向上/向下围着推荐人 R 转、非有效会员灼烧」。
分红加权池
dividend_pool
DividendEngine::allocate() 加权取 consume_point(消费积分)。写成「按兑换积分 exchange_point 加权」。兑换积分 → 兑换权益(exchange_equity_record)是另一条独立路径,也不参与分红加权。
团队加速
team_accel
【新口径 v2 已启用】以「买家的推荐人 R」为中心的三段式:①分享奖(推荐人奖) → R 本人 = 基数B × team_share_rate(0.10);②向上奖 → R 的上级链第 k 级 = 基数B × team_up_rate(0.05) × 0.5^(k−1),team_up_max_level=0(无限制,沿上行链发到链顶);③向下奖 → R 的下级树第 d 层 = 基数B × team_down_rate(0.02) × 0.5^(d−1),封顶 team_down_max_level(1) 层;该层**仅有效会员(status=1且has_gift_purchase=1)参与分配、等分(平分)0.02 池**(非有效会员不参与;team_down_valid_only=1,层内 alloc=equal)。★基数B 按是否礼包区分叉:【礼包区】= 订单金额(扣券后实付);【其他】= 让利额(order_item.rebate_amount)。买家无推荐人 ⇒ 无中心 R ⇒ 全 0。★★触发范围:礼包单(type=1)支付成功即计提;非礼包单(商城区 type≠1)**已放开**(accel_nongift_enable=1)但须**已确认收货**(status=4 待评价 / 5 已完成)——实时触发点为「确认收货」,与普通商品积分**同点**发放(奖励若早于积分会造成时点错配、污染 T3 烧伤判定)。写成「每级固定 10%」「只向上不向下」「基数全站统一用让利额」,或漏掉「礼包区按订单金额、其他按让利额」这条分叉;或误称非礼包单只要支付就计提(实为确认收货时)。
工作室(level1)计提
studio_accrue
已纳入自动计提(agent_studio_auto=true,由 AgentSettleCommand 月度执行)。写成「工作室不自动计提,仅 agent_funds 手动经费」。
6% 平台税覆盖路径
tax_paths
加速奖 PointEngine::rewardAccelTransfer() 与静态释放 PointEngine::releaseDaily() 两条路径都有 6% 税。当前实现 = 税额不写入任何账户(无账可对);★Q20-3 已拍板改为记入平台税沉淀科目 platform_tax_reserve(开关 tax_reserve_enable 默认 0 = 现状零行为变更,P0 建表后生效)。写成「只有加速奖有 6% 税」,或反过来声称「6% 税已入某账户」。
差额烧伤
burn_gap
余额不足时差额当前不写入任何账户;★拍板并入平台税沉淀科目(source=burn_gap)。写成「差额自动补足」或「差额退回」。
有效用户资格(礼包购买门槛)
valid_user
奖励(积分入账 / 加速奖)仅对「有效用户」发放:有效用户 = 买过礼包(member.has_gift_purchase=1)且账号正常(status=1)。未买过礼包的账号即使 status=1 正常,其应得奖励也视为不资格 → 全额烧伤归平台(不入账、不补发、不写会员流水)。礼包支付成功时由 GiftPostPay::handle 在积分发放/加速奖计提前置 has_gift_purchase=1;存量由迁移脚本补标。判定入口:PointEngine::isValidUser()(积分入账/加速奖资格)、RewardEngine 加速奖中心 R 的资格判定复用该字段。写成「只要 status=1 就发奖励」「未买礼包只是少一条推荐链」「烧伤只发生在消费积分余额不足时」。有效用户门槛(看 has_gift_purchase)与余额烧伤(看 consume_point)是两套独立闸门,前者不通过 ⇒ 整笔不发放。
晋升业绩口径
promo_perf
非礼包让利额(线上 sales_order.rebate_amount + 线下 merchant_verify.rebate_amount),沿推荐链含自身。写成「礼包订单实付」——与现行口径量级差约 5 倍。
积分事件枚举
point_type_enum
type:1 发放 / 2 扣减 / 3 每日释放 / 4 锁仓解冻 / 5 互转 / 6 加速奖划转 / 7 第三方 / 8 股票兑换。把 type=4 标成「奖励发放」,或漏掉 5/6/7/8。