feat: 用户创建和注册时使用系统配置的默认配额

- 新增 /api/admin/users/defaults/quota 接口获取默认配额
- 用户注册时从系统配置读取默认配额
- 管理员创建用户时自动获取并使用系统默认配额
This commit is contained in:
fawney19
2026-01-15 17:41:04 +08:00
parent 026f4b9c0e
commit d9645fa062
4 changed files with 52 additions and 6 deletions

View File

@@ -15,6 +15,7 @@ from src.database import get_db
from src.models.admin_requests import UpdateUserRequest
from src.models.api import CreateApiKeyRequest, CreateUserRequest
from src.models.database import ApiKey, User, UserRole
from src.services.system.config import SystemConfigService
from src.services.user.apikey import ApiKeyService
from src.services.user.service import UserService
@@ -197,6 +198,20 @@ async def delete_user_api_key(
return await pipeline.run(adapter=adapter, http_request=request, db=db, mode=adapter.mode)
@router.get("/defaults/quota")
async def get_default_quota(request: Request, db: Session = Depends(get_db)):
"""
获取默认用户配额
获取系统配置的默认用户配额值,用于创建用户时的默认值。
**返回字段**:
- `default_quota_usd`: 默认配额USD
"""
adapter = AdminGetDefaultQuotaAdapter()
return await pipeline.run(adapter=adapter, http_request=request, db=db, mode=adapter.mode)
# ============== 管理员适配器实现 ==============
@@ -586,3 +601,15 @@ class AdminDeleteUserKeyAdapter(AdminApiAdapter):
)
return {"message": "API Key已删除"}
class AdminGetDefaultQuotaAdapter(AdminApiAdapter):
"""获取系统默认用户配额"""
async def handle(self, context): # type: ignore[override]
db = context.db
default_quota = SystemConfigService.get_config(db, "default_user_quota_usd", default=10.0)
return {
"default_quota_usd": float(default_quota),
}

View File

@@ -470,12 +470,16 @@ class AuthRegisterAdapter(AuthPublicAdapter):
)
try:
# 读取系统配置的默认配额
default_quota = SystemConfigService.get_config(db, "default_user_quota_usd", default=10.0)
user = UserService.create_user(
db=db,
email=register_request.email,
username=register_request.username,
password=register_request.password,
role=UserRole.USER,
quota_usd=default_quota,
)
AuditService.log_event(
db=db,