订单 XS20****0243(实物 · ¥56.50) · 买家 会员A (#1 · V5)
本页由命令行生成器 读真实库渲染,用于替代此前手工维护的静态示例页。
php think doc:reward-sample --preset=all · 生成时间:2026-09-20 06:52:30 · 口径版本:v2026.09.19sales_order / order_item / reward_record / point_record / config_param(只读,不改动任何业务数据)。会员A/会员B/…;会员 ID / 商户 ID / 商品 ID → 顺序别名;商品名 → 示例商品A/示例商品B;备注中的长数字串 → ****。订单金额 ¥56.50,应发合计 ¥0.00,扣烧伤后实发 ¥0.00。
reward:order#1(逐商品明细 batch = reward:order#ID:item#ID)。「应发」= T3 计提口径,「实发」= 应发 − 烧伤;烧伤含 T3 资格烧伤与 T6 差额烧伤。每个商品独立计提:入账基数 = 该商品的 pay_amount(见文末口径要点)。
| # | 商品 | 单价 | 数量 | 金额 | 券/红包抵扣 | pay_amount(基数) | 让利值 | 让利额 | 商户 |
|---|---|---|---|---|---|---|---|---|---|
| 1 | 示例商品A | 45.00 | 1 | 45.00 | 0.00 | 45.00 | 20% | 9.00 | #1 |
| 2 | 示例商品B | 11.50 | 1 | 11.50 | 0.00 | 11.50 | 20% | 2.30 | #1 |
按推荐链深度排序(根 → 买家)。买家带 买家 标记。
| # | 会员 | 等级 | 身份 | 分享奖 | 团队奖 | 推荐奖 | 奖励合计 | 本单获得(消费积分) |
|---|---|---|---|---|---|---|---|---|
| 1 | 会员A #1 | V5 | 买家 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 |
逐条来自 reward_record,未做任何加工。
reward_record,明细为空。买家 会员A 在本单的 point_record。
| 参数 | 值 | 说明 |
|---|---|---|
share_reward_rate | 10% | 分享奖比例(每级固定,不衰减) |
team_reward_rate | 5% | 团队奖比例(每级固定,单向 pass-up) |
recommend_reward_rate | 10% | 推荐奖比例 |
point_release_rate | 0.2% | 消费积分每日释放比例 → 专属红包 |
team_max_level | 5 | 团队加速封顶级数 |
red_packet_tax_rate | 6% | 平台税(加速奖 + 静态释放两条路径都有);当前未入账,★拍板入 platform_tax_reserve |
burn_gap_enable | true | 差额烧伤开关(余额不足时差额蒸发;拍板并入同一沉淀科目 source=burn_gap) |
dividend_overlay_min_level | 1 | 参与分红叠加的最低等级 |
v1..v6_dividend_rate | 6% / 5% / 4% / 3% / 2% / 1% | 各级分红比例 |
下表取自 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。 |