2026-05-30 07:23:33 +08:00
|
|
|
|
"""
|
|
|
|
|
|
系统配置管理路由模块
|
|
|
|
|
|
|
|
|
|
|
|
提供系统配置项的读取和更新接口:
|
|
|
|
|
|
- 按配置键名获取配置值
|
|
|
|
|
|
- 按配置键名更新配置值
|
|
|
|
|
|
|
|
|
|
|
|
URL 前缀:/api/configs
|
2026-06-19 23:03:14 +08:00
|
|
|
|
权限要求:读取需要登录,更新需要管理员/经理角色
|
2026-05-30 07:23:33 +08:00
|
|
|
|
"""
|
|
|
|
|
|
|
2026-05-15 11:24:15 +08:00
|
|
|
|
from fastapi import APIRouter, Depends
|
|
|
|
|
|
from sqlalchemy.orm import Session
|
2026-05-14 13:51:06 +08:00
|
|
|
|
|
2026-06-19 23:03:14 +08:00
|
|
|
|
from backend.app.api.deps import get_current_user, require_roles
|
2026-05-15 11:24:15 +08:00
|
|
|
|
from backend.app.db import get_db_session
|
2026-05-14 13:51:06 +08:00
|
|
|
|
from backend.app.schemas.common import success_payload
|
2026-05-15 11:24:15 +08:00
|
|
|
|
from backend.app.schemas.configs import UpdateConfigRequest
|
2026-05-14 13:51:06 +08:00
|
|
|
|
from backend.app.services.config_service import config_service
|
|
|
|
|
|
|
|
|
|
|
|
router = APIRouter(prefix="/api/configs", tags=["configs"])
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@router.get("/{config_key}")
|
2026-05-15 11:24:15 +08:00
|
|
|
|
def get_config(
|
2026-05-30 07:23:33 +08:00
|
|
|
|
config_key: str, # 配置项的唯一键名
|
|
|
|
|
|
session: Session = Depends(get_db_session), # 数据库会话
|
2026-06-19 23:03:14 +08:00
|
|
|
|
_user: dict = Depends(get_current_user), # 需要登录
|
2026-05-15 11:24:15 +08:00
|
|
|
|
) -> dict:
|
2026-05-30 07:23:33 +08:00
|
|
|
|
"""
|
|
|
|
|
|
获取指定配置项
|
|
|
|
|
|
|
|
|
|
|
|
根据配置键名查询对应的配置值。
|
|
|
|
|
|
|
|
|
|
|
|
请求参数:
|
|
|
|
|
|
config_key: 路径参数,配置项的唯一键名
|
|
|
|
|
|
|
|
|
|
|
|
返回值:
|
|
|
|
|
|
配置项的详细信息,包含键名、值、描述等
|
|
|
|
|
|
|
2026-06-19 23:03:14 +08:00
|
|
|
|
权限要求:需要登录
|
2026-05-30 07:23:33 +08:00
|
|
|
|
"""
|
2026-05-15 11:24:15 +08:00
|
|
|
|
return success_payload(config_service.get_config(config_key, session))
|
2026-05-14 13:51:06 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@router.put("/{config_key}")
|
2026-05-15 11:24:15 +08:00
|
|
|
|
def update_config(
|
2026-05-30 07:23:33 +08:00
|
|
|
|
config_key: str, # 配置项的唯一键名
|
|
|
|
|
|
payload: UpdateConfigRequest, # 更新配置请求体,包含新的配置值
|
|
|
|
|
|
session: Session = Depends(get_db_session), # 数据库会话
|
2026-06-19 23:03:14 +08:00
|
|
|
|
_user: dict = Depends(require_roles("admin", "manager")), # 仅管理员和经理可更新
|
2026-05-15 11:24:15 +08:00
|
|
|
|
) -> dict:
|
2026-05-30 07:23:33 +08:00
|
|
|
|
"""
|
|
|
|
|
|
更新指定配置项
|
|
|
|
|
|
|
|
|
|
|
|
根据配置键名更新对应的配置值。如果配置项不存在则返回错误。
|
|
|
|
|
|
|
|
|
|
|
|
请求参数:
|
|
|
|
|
|
config_key: 路径参数,配置项的唯一键名
|
|
|
|
|
|
payload: UpdateConfigRequest 请求体,包含要更新的配置值
|
|
|
|
|
|
|
|
|
|
|
|
返回值:
|
|
|
|
|
|
更新后的配置项信息
|
|
|
|
|
|
|
2026-06-19 23:03:14 +08:00
|
|
|
|
权限要求:管理员或经理角色
|
2026-05-30 07:23:33 +08:00
|
|
|
|
"""
|
2026-05-15 11:24:15 +08:00
|
|
|
|
return success_payload(config_service.update_config(config_key, payload.model_dump(), session))
|