1. 10 Oct, 2025 8 commits
  2. 09 Oct, 2025 12 commits
  3. 08 Oct, 2025 6 commits
  4. 07 Oct, 2025 3 commits
  5. 06 Oct, 2025 5 commits
    • 🔎 feat(topup): add order number search for billing history (admin and user) · c7ab5c9a
      Enable searching topup records by trade_no across both admin-wide and user-only views.
      
      Frontend
      - TopupHistoryModal.jsx:
        - Add search input with prefix icon (IconSearch) to filter by order number
        - Send `keyword` query param to backend; works with both endpoints:
          - Admin: GET /api/user/topup?p=1&page_size=10&keyword=...
          - User:  GET /api/user/topup/self?p=1&page_size=10&keyword=...
        - Keep endpoint auto-switching based on role (isAdmin)
        - Minor UI polish: outlined admin action button; keep Coins icon for amount
      
      Backend
      - model/topup.go:
        - Add SearchUserTopUps(userId, keyword, pageInfo)
        - Add SearchAllTopUps(keyword, pageInfo)
        - Both support pagination and `trade_no LIKE %keyword%` filtering (ordered by id desc)
      - controller/topup.go:
        - GetUserTopUps / GetAllTopUps accept optional `keyword` and route to search functions when present
      
      Routes
      - No new endpoints; search is enabled via `keyword` on existing:
        - GET /api/user/topup
        - GET /api/user/topup/self
      
      Affected files
      - model/topup.go
      - controller/topup.go
      - web/src/components/topup/modals/TopupHistoryModal.jsx
      Apple\Apple committed
    • feat(topup): Admin-wide topup listing and route reorganization · 01d18dcb
      Allow administrators to view all platform topup orders and streamline admin-only routes.
      
      Frontend
      - TopupHistoryModal: dynamically switch endpoint by role
        - Admin → GET /api/user/topup (all orders)
        - Non-admin → GET /api/user/topup/self (own orders)
      - Use shared utils `isAdmin()`; keep logic centralized and DRY
      - Minor UI: set admin action button theme to outline for clarity
      
      Backend
      - model/topup.go: add GetAllTopUps(pageInfo) with pagination (ordered by id desc)
      - controller/topup.go: add GetAllTopUps handler returning PageInfo response
      - router/api-router.go:
        - Add admin route GET /api/user/topup (AdminAuth)
        - Move POST /api/user/topup/complete to adminRoute (keeps path stable, consolidates admin endpoints)
      
      Security/Behavior
      - Admin-only endpoints now reside under the admin route group with AdminAuth
      - No behavior change for regular users; no schema changes
      
      Affected files
      - model/topup.go
      - controller/topup.go
      - router/api-router.go
      - web/src/components/topup/modals/TopupHistoryModal.jsx
      Apple\Apple committed
    • feat: Add topup billing history with admin manual completion · dec3a323
      Implement comprehensive topup billing system with user history viewing and admin management capabilities.
      
      ## Features Added
      
      ### Frontend
      - Add topup history modal with paginated billing records
      - Display order details: trade number, payment method, amount, money, status, create time
      - Implement empty state with proper illustrations
      - Add payment method column with localized display (Stripe, Alipay, WeChat)
      - Add admin manual completion feature for pending orders
      - Add Coins icon for recharge amount display
      - Integrate "Bills" button in RechargeCard header
      - Optimize code quality by using shared utility functions (isAdmin)
      - Extract constants for status and payment method mappings
      - Use React.useMemo for performance optimization
      
      ### Backend
      - Create GET `/api/user/topup/self` endpoint for user topup history with pagination
      - Create POST `/api/user/topup/complete` endpoint for admin manual order completion
      - Add `payment_method` field to TopUp model for tracking payment types
      - Implement `GetUserTopUps` method with proper pagination and ordering
      - Implement `ManualCompleteTopUp` with transaction safety and row-level locking
      - Add application-level mutex locks to prevent concurrent order processing
      - Record payment method in Epay and Stripe payment flows
      - Ensure idempotency and data consistency with proper error handling
      
      ### Internationalization
      - Add i18n keys for Chinese (zh), English (en), and French (fr)
      - Support for billing-related UI text and status messages
      
      ## Technical Improvements
      - Use database transactions with FOR UPDATE row-level locking
      - Implement sync.Map-based mutex for order-level concurrency control
      - Proper error handling and user-friendly toast notifications
      - Follow existing codebase patterns for empty states and modals
      - Maintain code quality with extracted render functions and constants
      
      ## Files Changed
      - Backend: controller/topup.go, controller/topup_stripe.go, model/topup.go, router/api-router.go
      - Frontend: web/src/components/topup/modals/TopupHistoryModal.jsx (new), web/src/components/topup/RechargeCard.jsx, web/src/components/topup/index.jsx
      - i18n: web/src/i18n/locales/{zh,en,fr}.json
      Apple\Apple committed
    • Merge pull request #1974 from RedwindA/fix/Visibility · 5640cfa4
      fix: improve text visibility in warning box for dark mode in SettingsLog
      Seefs committed
    • CI · f56d1ff2
      CaIon committed
  6. 05 Oct, 2025 6 commits