Coverage for api/v1/endpoints/settings.py: 59.57%
47 statements
« prev ^ index » next coverage.py v7.10.7, created at 2025-10-13 18:58 +0000
« prev ^ index » next coverage.py v7.10.7, created at 2025-10-13 18:58 +0000
1"""
2系统设置API端点
3"""
5from fastapi import APIRouter, Depends, HTTPException, status
7from core.middleware.auth_middleware import get_current_user
8from core.models.settings import (AssetModeType, DataSourceConfig,
9 LongportConfig)
10from core.models.user import User
11from core.services.settings_service import SettingsService
13router = APIRouter()
14settings_service = SettingsService()
17@router.get("/settings/data-source", response_model=DataSourceConfig)
18async def get_data_source_config(current_user: User = Depends(get_current_user)):
19 """获取数据源配置"""
20 config = settings_service.get_data_source_config(current_user)
21 if not config:
22 # 返回默认配置
23 return DataSourceConfig(data_source="longport")
24 return config
27@router.put("/settings/data-source", response_model=DataSourceConfig)
28async def update_data_source_config(
29 data_source_config: DataSourceConfig, current_user: User = Depends(get_current_user)
30):
31 """更新数据源配置"""
32 success = settings_service.update_data_source_config(
33 current_user, data_source_config
34 )
35 if not success:
36 raise HTTPException(
37 status_code=status.HTTP_500_INTERNAL_SERVER_ERROR,
38 detail="更新数据源配置失败",
39 )
40 return data_source_config
43@router.get("/settings/longport", response_model=LongportConfig)
44async def get_longport_config(current_user: User = Depends(get_current_user)):
45 """获取长桥证券配置"""
46 config = settings_service.get_longport_config(current_user)
47 if not config:
48 # 返回默认配置(使用占位符值)
49 return LongportConfig(
50 app_key="请配置App Key",
51 app_secret="请配置App Secret",
52 access_token="请配置Access Token",
53 language="zh-CN",
54 enable_overnight=True,
55 )
56 return config
59@router.put("/settings/longport", response_model=LongportConfig)
60async def update_longport_config(
61 longport_config: LongportConfig, current_user: User = Depends(get_current_user)
62):
63 """更新长桥证券配置"""
64 success = settings_service.update_longport_config(current_user, longport_config)
65 if not success:
66 raise HTTPException(
67 status_code=status.HTTP_500_INTERNAL_SERVER_ERROR,
68 detail="更新长桥证券配置失败",
69 )
70 return longport_config
73@router.post("/settings/longport/refresh-token")
74async def refresh_longport_token(current_user: User = Depends(get_current_user)):
75 """刷新长桥访问令牌"""
76 result = settings_service.refresh_longport_token(current_user)
77 if result.get("success"):
78 return result
79 else:
80 raise HTTPException(
81 status_code=status.HTTP_400_BAD_REQUEST,
82 detail=result.get("message", "Token刷新失败"),
83 )
86@router.get("/settings/asset-mode", response_model=AssetModeType)
87async def get_asset_mode(current_user: User = Depends(get_current_user)):
88 """获取资产模式"""
89 return settings_service.get_asset_mode(current_user)
92@router.put("/settings/asset-mode", response_model=AssetModeType)
93async def update_asset_mode(
94 request: dict, current_user: User = Depends(get_current_user)
95):
96 """更新资产模式"""
97 asset_mode = AssetModeType(request.get("asset_mode"))
98 success = settings_service.update_asset_mode(current_user, asset_mode)
99 if not success:
100 raise HTTPException(
101 status_code=status.HTTP_500_INTERNAL_SERVER_ERROR, detail="更新资产模式失败"
102 )
103 return asset_mode