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

1""" 

2系统设置API端点 

3""" 

4 

5from fastapi import APIRouter, Depends, HTTPException, status 

6 

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 

12 

13router = APIRouter() 

14settings_service = SettingsService() 

15 

16 

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 

25 

26 

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 

41 

42 

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 

57 

58 

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 

71 

72 

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 ) 

84 

85 

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) 

90 

91 

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