mirror of
https://github.com/fawney19/Aether.git
synced 2026-09-03 01:40:21 +08:00
feat(wallet): 钱包系统替代配额系统,新增支付与退款机制
- 新增钱包余额管理、充值、扣费、退款完整流程 - 新增支付网关抽象层(支持手动/支付宝/微信) - 用量计费从配额系统迁移到钱包余额扣费 - 新增管理员钱包管理与支付订单管理页面 - 新增用户钱包中心页面 - 移除独立 Key 锁定机制,统一由钱包余额控制 - 新增相关 API 路由、序列化器与数据库迁移 - 新增钱包、支付、退款相关测试
This commit is contained in:
@@ -39,6 +39,7 @@ from src.services.auth.service import AuthService
|
||||
from src.services.gemini_files_mapping import delete_file_key_mapping, store_file_key_mapping
|
||||
from src.services.provider.transport import redact_url_for_log
|
||||
from src.services.scheduling.aware_scheduler import CacheAwareScheduler, ProviderCandidate
|
||||
from src.services.usage.service import UsageService
|
||||
|
||||
|
||||
@dataclass
|
||||
@@ -111,6 +112,22 @@ def _build_upstream_headers(
|
||||
return headers
|
||||
|
||||
|
||||
def _ensure_balance_access(db: Session, user: User, api_key: ApiKey) -> None:
|
||||
access_ok, message = UsageService.check_request_balance(db, user, api_key=api_key)
|
||||
if access_ok:
|
||||
return
|
||||
raise HTTPException(
|
||||
status_code=429,
|
||||
detail={
|
||||
"error": {
|
||||
"code": 429,
|
||||
"message": message or "Insufficient balance",
|
||||
"status": "RESOURCE_EXHAUSTED",
|
||||
}
|
||||
},
|
||||
)
|
||||
|
||||
|
||||
def _build_upstream_url(
|
||||
base_url: str,
|
||||
path: str,
|
||||
@@ -276,6 +293,7 @@ async def _resolve_upstream_context(
|
||||
)
|
||||
|
||||
user, user_api_key = auth_result
|
||||
_ensure_balance_access(db, user, user_api_key)
|
||||
model_name = _resolve_files_model_name(db, user_api_key, user)
|
||||
if not model_name:
|
||||
raise HTTPException(
|
||||
@@ -728,6 +746,7 @@ async def download_file(
|
||||
)
|
||||
|
||||
user, _user_api_key = auth_result
|
||||
_ensure_balance_access(db, user, _user_api_key)
|
||||
|
||||
# 根据前缀判断处理方式
|
||||
if file_id.startswith("aev_"):
|
||||
|
||||
Reference in New Issue
Block a user