用户生成资源容量管控
This commit is contained in:
@@ -49,6 +49,7 @@ from app.services.auth import hash_password, verify_password
|
||||
from app.services.operation_log import log_operation
|
||||
from app.services.resource_signed_url_service import build_resource_signed_url
|
||||
from app.services.payment import sync_pending_orders, process_refund
|
||||
from app.services.resource_capacity_service import batch_get_user_resource_capacity_usage, get_user_resource_capacity_usage
|
||||
|
||||
from app.services.generation_billing_service import (
|
||||
OWNER_GENERATION_RECORD,
|
||||
@@ -107,7 +108,16 @@ async def list_users(
|
||||
total = (await db.execute(count_query)).scalar() or 0
|
||||
result = await db.execute(query.offset((page - 1) * page_size).limit(page_size))
|
||||
items = result.scalars().all()
|
||||
return {"items": [AdminUserOut.model_validate(u) for u in items], "total": total}
|
||||
capacity_map = await batch_get_user_resource_capacity_usage(db, [u.id for u in items])
|
||||
return {
|
||||
"items": [
|
||||
AdminUserOut.model_validate(u)
|
||||
.model_copy(update={"resource_capacity": capacity_map.get(u.id)})
|
||||
.model_dump(mode="json")
|
||||
for u in items
|
||||
],
|
||||
"total": total,
|
||||
}
|
||||
|
||||
|
||||
@router.post("/users", response_model=AdminUserOut)
|
||||
@@ -183,7 +193,10 @@ async def get_user(
|
||||
if not user:
|
||||
raise HTTPException(status_code=404, detail="用户不存在")
|
||||
user.credits = round(user.credits, 2)
|
||||
return user
|
||||
resource_capacity = await get_user_resource_capacity_usage(db, user.id)
|
||||
return AdminUserOut.model_validate(user).model_copy(
|
||||
update={"resource_capacity": resource_capacity}
|
||||
)
|
||||
|
||||
|
||||
@router.post("/users/{user_id}/credits")
|
||||
|
||||
Reference in New Issue
Block a user