Commit Graph
15 Commits
Author SHA1 Message Date
kate522 d4946ee554 fix(user): close level parity gaps 2026-07-30 10:21:48 +08:00
kate522 815e83bac0 fix(user-center): complete certification and order flows
Fix modal scroll ownership and certification modal styling, store evidence as Media Library attachments, reconcile missed provider callbacks, validate currencies, and complete digital fulfillment only after durable entitlement delivery.
2026-07-29 10:29:59 +08:00
kate522 ad40d9a7ca fix(orders): wire detail progress timeline and two-step cancel
Order progress was stuck on "订单创建" because timeline only read sparse
timestamp columns and status transitions didn't always stamp them.
Drive timeline from current status + related records, backfill lifecycle
timestamps on update_status, and replace window.confirm cancel with a
关闭订单 → 确认取消 button step in the detail modal.
2026-07-27 15:15:35 +08:00
kate522andClaude Fable 5 089421cd3e fix(payment): unify and harden payment attempts
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-27 11:29:57 +08:00
kate522andClaude Fable 5 ed55d302e9 fix(payment): re-pay with fresh provider out_trade_no
WeChat/Alipay/Epay reject reusing the same merchant order number when
params change. Allocate attempt-suffixed out_trade_no on resume pay,
map callbacks back to the local order, and best-effort close prior trades.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-26 13:28:45 +08:00
kate522andClaude Fable 5 723dd180e4 feat(payment): tighten gateways and implement Epay
Keep only balance, Alipay, WeChat, PayPal, Stripe, Epay, and card-pass
channels; remove placeholder aggregators. Add dual-channel Epay gateway
with MD5 notify/return, register cashier methods, and gate card-pass
redeem behind the payment channel switch.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-26 12:59:28 +08:00
kate522 53ff99f343 fix(payment): harden payment and refund chains 2026-07-26 02:29:46 +08:00
kate522 3baa8573c9 feat(orders): full-chain My Orders for all product types
Unify front-end order center across shop, content, VIP, recharge,
points, and plate-follow with type filters, stats, and type-aware
cards; keep shop-only fulfillment actions; ensure 权益与消费 entry URL.
2026-07-25 13:33:43 +08:00
kate522 1337664ed3 feat(ux): after-sale multi-step, ban appeal, message types, coupon wallet
Orders center gains after-sale tickets (return ship/cancel/timeline),
coupon wallet list, ban-appeal page, and expanded message center tabs.
2026-07-18 22:48:08 +08:00
kate522 433b7cb3a6 feat(shop): category filter bar + sort/load-more 1:1 UX
Port zibll hierarchical cat tabs, multi-metric sort with price toggle,
skeleton/empty states, and REST archive payload (header/html/paginate)
while reusing product-card template for AJAX HTML.
2026-07-18 16:42:52 +08:00
kate522 e2587ca3a0 feat(ux): shared ajax-list/remote-modal + order review modal 1:1
Add zibll-parity AjaxList/RemoteModal engines and replace order-center
prompt() review flow with multi-dim star modal, multi-image upload,
auto-praise countdown, and REST review-modal endpoint.
2026-07-18 16:26:28 +08:00
kate522 02006945f2 fix(shop): use get_address_book facade on cart/store views
Call sites still invoked undefined Shop::get_user_address_book() after
address logic moved to AddressService; route through the existing
get_address_book() facade instead.
2026-07-18 14:20:44 +08:00
kate522 3a80f5fc75 fix(shop): delegate product checkout_hint to CheckoutService
get_product_detail_view() still called Shop::get_checkout_hint() after the
method moved into CheckoutService, which fatals on product detail pages.
2026-07-18 14:12:30 +08:00
kate522 68d2e78d77 fix(ns): class_exists() must use FQCN after PSR-4
Bare class_exists('Balance') looks up global Balance, always false
under AKSRT\* namespaces → REST 403 on balance exchange and friends.
Rewrite string checks to AKSRT\{Domain}\{Class}.
2026-07-17 15:40:20 +08:00
kate522 aaf458af1c refactor(autoload): migrate theme classes to Composer PSR-4
Move 288 types from global AKSRT_* + inc/classes manual requires into
namespace AKSRT\{Domain} under src/AKSRT/, wire composer.json psr-4,
and slim bootstrap to helpers/modules/hooks only. Split multi-class
widget/gateway files, update admin contract audit paths, and document
the layout in ADR/README.
2026-07-17 13:29:22 +08:00