63 lines
1.9 KiB
Python
63 lines
1.9 KiB
Python
"""企业信息(单租户)"""
|
|
from typing import Optional
|
|
|
|
import asyncpg
|
|
|
|
from core.config import settings
|
|
|
|
|
|
class EnterpriseService:
|
|
@staticmethod
|
|
async def get_by_id(conn: asyncpg.Connection, enterprise_id: int) -> Optional[dict]:
|
|
row = await conn.fetchrow(
|
|
"""
|
|
SELECT id, name, code, ai_display_name, created_at, updated_at
|
|
FROM enterprise
|
|
WHERE id = $1
|
|
""",
|
|
enterprise_id,
|
|
)
|
|
return dict(row) if row else None
|
|
|
|
@staticmethod
|
|
async def resolve_ai_display_name(enterprise_id: Optional[int]) -> str:
|
|
"""终端用户会话用的展示名:按企业配置,否则用全局默认。"""
|
|
from core.database import get_db_pool
|
|
|
|
fallback = settings.ai_display_name_default
|
|
if enterprise_id is None:
|
|
return fallback
|
|
pool = await get_db_pool()
|
|
async with pool.acquire() as conn:
|
|
row = await conn.fetchrow(
|
|
"SELECT ai_display_name FROM enterprise WHERE id = $1",
|
|
enterprise_id,
|
|
)
|
|
if not row or row["ai_display_name"] is None:
|
|
return fallback
|
|
name = str(row["ai_display_name"]).strip()
|
|
return name if name else fallback
|
|
|
|
@staticmethod
|
|
async def update_profile(
|
|
conn: asyncpg.Connection,
|
|
enterprise_id: int,
|
|
*,
|
|
name: str,
|
|
ai_display_name: str,
|
|
) -> Optional[dict]:
|
|
row = await conn.fetchrow(
|
|
"""
|
|
UPDATE enterprise
|
|
SET name = $2,
|
|
ai_display_name = $3,
|
|
updated_at = CURRENT_TIMESTAMP
|
|
WHERE id = $1
|
|
RETURNING id, name, code, ai_display_name, created_at, updated_at
|
|
""",
|
|
enterprise_id,
|
|
name,
|
|
ai_display_name.strip(),
|
|
)
|
|
return dict(row) if row else None
|