""" 常用参数API模块 提供获取各种常用参数数据的接口 """ from typing import Dict, Any, List, Optional from fastapi import APIRouter, HTTPException, Query from pydantic import BaseModel, Field from services.common_params_service import CommonParamsService from config.component_config import CommonParamsConfig, CommonParamType from api.models import ApiResponse # 创建路由器 router = APIRouter(prefix="/common-params", tags=["常用参数"]) # 创建服务实例 common_params_service = CommonParamsService() @router.get("/types", response_model=ApiResponse) async def get_param_types(): """获取所有常用参数类型""" try: param_types = CommonParamsConfig.get_param_types() return { "code": ApiResponseCode.SUCCESS, "message": "获取常用参数类型成功", "data": { "param_types": param_types } } except Exception as e: raise HTTPException( status_code=ApiResponseCode.SERVER_ERROR, detail=f"获取常用参数类型失败: {str(e)}" ) @router.get("/data/{param_type}", response_model=ApiResponse) async def get_param_data(param_type: str): """获取指定类型的常用参数数据""" try: # 检查参数类型是否有效 param_type_config = CommonParamsConfig.get_param_type_by_type(param_type) if not param_type_config: return { "code": ApiResponseCode.NOT_FOUND, "message": f"未找到参数类型: {param_type}", "data": {"param_data": []} } # 获取参数数据 param_data = common_params_service.get_param_data(param_type) return { "code": ApiResponseCode.SUCCESS, "message": f"获取{param_type_config['name']}数据成功", "data": { "param_type": param_type_config, "param_data": param_data } } except Exception as e: raise HTTPException( status_code=ApiResponseCode.SERVER_ERROR, detail=f"获取常用参数数据失败: {str(e)}" ) @router.get("/all", response_model=ApiResponse) async def get_all_param_data(): """获取所有常用参数数据""" try: # 获取所有参数类型 param_types = CommonParamsConfig.get_param_types() # 获取所有参数数据 all_param_data = {} for param_type_config in param_types: param_type = param_type_config["type"] param_data = common_params_service.get_param_data(param_type) all_param_data[param_type] = { "param_type": param_type_config, "param_data": param_data } return { "code": ApiResponseCode.SUCCESS, "message": "获取所有常用参数数据成功", "data": { "param_types": param_types, "all_param_data": all_param_data } } except Exception as e: raise HTTPException( status_code=ApiResponseCode.SERVER_ERROR, detail=f"获取所有常用参数数据失败: {str(e)}" )