Commit Graph
10 Commits
Author SHA1 Message Date
kate522 61667aa03c feat(revenue): immediate commission credit with independent withdrawable pool
Aligns affiliate commission with the reference theme: commission is credited
to a dedicated COMMISSION asset pool the moment an order is paid, removing the
7-day settlement freeze, the settlement cron, and the settlement_days setting.

- Ledger: add AssetType::COMMISSION (isolated from the recharge balance wallet)
- CommissionLedger: credit-on-record + opportunistic debt repayment; refunds
  claw back the full commission from the pool, carrying any shortfall as debt
  (aksrt_commission_debt) that future commission pays down first
- Withdrawal: make asset-aware via a source discriminator (commission vs
  balance); each pool keeps independent daily limits, pending gate, and
  reject-refund. Balance withdrawal (recharge + creator income) is unchanged
- Fix pay_rebate_self_s: honor self-commission at purchase time
- Revenue card: show pool balance + 累计/已提现 (drop 待结算), debt when present
- Schema 2.0.0 -> 2.1.0: add commission_debt, drop freeze columns
2026-09-28 21:27:44 +08:00
kate522andClaude Fable 5 7761435a81 refactor(revenue): drop standalone QR block and align promotion card with reference
The 推广收益 detail card no longer renders the QR code as its own row. The
card becomes a fixed-label info list: 推广链接 [Url][复制链接][推广海报] /
佣金比例 / 累计佣金 / 返佣详解, mirroring the reference theme's 推广中心 card.

- profile-revenue.php: QR row removed; poster button moved into the link row and
  gated server-side on the poster switch; copy label now 复制链接; 推广人数 row
  dropped; 返佣详解 heading reads the existing pay_rebate_text_details_title;
  dead $vip_ratios, aksrt-revenue-page class and data-min-amount removed
- new affiliate-poster-modal.php: poster previews in a modal before download
  (reuses .uc-modal + single-render guard), since the QR now only exists inside
  the poster
- credits.js: renderAffiliateQr and its call deleted, along with the dead
  [data-affiliate-payers] lookup and the inline ch-width hack; initAffiliatePoster
  builds the poster into the modal stage and reveals 保存海报
- PaymentRuntime: expose affiliate details_title
- user-center.js: remove never-defined AKSRTRevenueCenterInit guards (2 sites)
- CSS: revenue-earnings.css pruned to live rules plus the new link-row grid and
  poster stage styles; routes/user-center/revenue.css pruned to its only
  definitions; dead leaves routes/revenue.css and routes/commerce.css deleted and
  dequeued from the user-center part list
- tests: referral-qr-contract test 2 rewritten for the QR-free card, link row and
  poster modal; post-visual-contract leaf list updated with regression guards

qrcode.min.js stays enqueued — buildPosterCanvas still draws the QR inside the
poster. Net -833 lines.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-09-27 21:42:57 +08:00
kate522 853114a9f9 fix: improve promotion tabs and referral layout 2026-08-16 21:28:02 +08:00
kate522andClaude Fable 5 7bb429bcb9 fix(user-center): make rebate details full width
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-06 13:03:30 +08:00
kate522andClaude Fable 5 487a63629c fix(user-center): refresh revenue withdrawal state
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-06 12:51:01 +08:00
kate522 39c92017d9 feat(user-center): merge promotion rewards into revenue 2026-08-05 23:43:16 +08:00
kate522 52ad9fbbd3 feat(user-center): redesign 推广中心 panel + extract promotion.css
Give the standalone promotion tab its own stylesheet and a task-priority
layout (成果概览 → 分享操作 → 奖励说明 → 邀请记录).

- assets/css/routes/user-center/promotion.css: new module owning all
  uc-promotion-* rules; flattens #panel-promotion chrome, adds focus-visible
  on the copy button + link input, and a ≤640px single-column layout with a
  full-width copy button (no horizontal overflow)
- user-center.css: import the new promotion.css
- user-center/revenue.css: drop the now-migrated uc-promotion-* rules (keep
  only the revenue-layout mobile rule)
- profile-invite.php: refresh doc header to describe the section priority
  order; copy button stays a focusable <button>, credits.js keeps text-based
  success/failure feedback via [data-invite-copy-feedback]
2026-08-05 17:26:56 +08:00
kate522 ac714a2839 fix(users): remove revenue panel nesting 2026-08-03 16:29:53 +08:00
kate522 21ea8eac43 feat(users): separate revenue center cards 2026-08-03 16:26:39 +08:00
kate522 49c12b761f feat(users): merge promotion into revenue center 2026-08-03 15:38:17 +08:00