mirror of
https://github.com/QuantumNous/new-api.git
synced 2026-05-06 07:59:36 +00:00
✨ feat: Add topup billing history with admin manual completion
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
This commit is contained in:
@@ -1285,7 +1285,6 @@
|
||||
"可视化倍率设置": "Visual model ratio settings",
|
||||
"确定重置模型倍率吗?": "Confirm to reset model ratio?",
|
||||
"模型固定价格": "Model price per call",
|
||||
"模型补全倍率(仅对自定义模型有效)": "Model completion ratio (only effective for custom models)",
|
||||
"保存模型倍率设置": "Save model ratio settings",
|
||||
"重置模型倍率": "Reset model ratio",
|
||||
"一次调用消耗多少刀,优先级大于模型倍率": "How much USD one call costs, priority over model ratio",
|
||||
@@ -2177,7 +2176,6 @@
|
||||
"最后使用时间": "Last used time",
|
||||
"备份支持": "Backup support",
|
||||
"支持备份": "Supported",
|
||||
"不支持": "Not supported",
|
||||
"备份状态": "Backup state",
|
||||
"已备份": "Backed up",
|
||||
"未备份": "Not backed up",
|
||||
@@ -2248,5 +2246,18 @@
|
||||
"轮询模式必须搭配Redis和内存缓存功能使用,否则性能将大幅降低,并且无法实现轮询功能": "Polling mode must be used with Redis and memory cache functions, otherwise the performance will be significantly reduced and the polling function will not be implemented",
|
||||
"common": {
|
||||
"changeLanguage": "Change Language"
|
||||
}
|
||||
},
|
||||
"充值账单": "Recharge Bills",
|
||||
"订单号": "Order No.",
|
||||
"支付金额": "Payment Amount",
|
||||
"待支付": "Pending",
|
||||
"加载失败": "Load failed",
|
||||
"加载账单失败": "Failed to load bills",
|
||||
"暂无充值记录": "No recharge records",
|
||||
"账单": "Bills",
|
||||
"补单": "Complete Order",
|
||||
"补单成功": "Order completed successfully",
|
||||
"补单失败": "Failed to complete order",
|
||||
"确认补单": "Confirm Order Completion",
|
||||
"是否将该订单标记为成功并为用户入账?": "Mark this order as successful and credit the user?"
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user