feat(wallet): 钱包系统替代配额系统,新增支付与退款机制

- 新增钱包余额管理、充值、扣费、退款完整流程
- 新增支付网关抽象层(支持手动/支付宝/微信)
- 用量计费从配额系统迁移到钱包余额扣费
- 新增管理员钱包管理与支付订单管理页面
- 新增用户钱包中心页面
- 移除独立 Key 锁定机制,统一由钱包余额控制
- 新增相关 API 路由、序列化器与数据库迁移
- 新增钱包、支付、退款相关测试
This commit is contained in:
LewisPen
2026-03-08 00:05:48 +08:00
committed by fawney19
parent 9cdcce1b5f
commit 783f654953
108 changed files with 13152 additions and 3372 deletions

View File

@@ -2,7 +2,7 @@
数据库模块
"""
from ..models.database import ApiKey, Base, Usage, User, UserQuota
from ..models.database import ApiKey, Base, Usage, User
from .database import create_session, get_db, get_db_context, get_db_url, init_db, log_pool_status
__all__ = [
@@ -10,7 +10,6 @@ __all__ = [
"User",
"ApiKey",
"Usage",
"UserQuota",
"get_db",
"get_db_context",
"init_db",

View File

@@ -406,12 +406,21 @@ def init_admin_user(db: Session) -> None:
role=UserRole.ADMIN,
is_active=True,
)
admin.quota_usd = cast(Any, 1000.0)
admin.set_password(config.admin_password)
db.add(admin)
db.flush() # 分配ID但不提交事务由外层 init_db 统一 commit
from src.services.wallet import WalletService
WalletService.initialize_user_wallet(
db,
user=admin,
initial_gift_usd=0,
unlimited=True,
description="系统管理员初始化钱包",
)
logger.info(f"创建管理员账户成功: {admin.email} ({admin.username})")
except Exception as e:
logger.error(f"创建管理员账户失败: {e}")
@@ -429,9 +438,12 @@ def init_default_models(db: Session) -> None:
def init_system_configs(db: Session) -> None:
"""初始化系统配置"""
configs: list[dict[str, Any]] = [
{"key": "default_user_quota_usd", "value": 10.0, "description": "新用户默认美元配额"},
{
"key": "default_user_initial_gift_usd",
"value": 10.0,
"description": "新用户默认初始赠款(美元)",
},
{"key": "rate_limit_per_minute", "value": 60, "description": "每分钟请求限制"},
{"key": "enable_registration", "value": False, "description": "是否开放用户注册"},
{"key": "require_email_verification", "value": False, "description": "是否需要邮箱验证"},