mirror of
https://github.com/fastapiadmin/FastapiAdmin.git
synced 2026-09-20 20:39:55 +00:00
fix: 修复reids缓存配置过期导致接口无法正常获取系统配置问题
This commit is contained in:
@@ -5,13 +5,15 @@ from fastapi.responses import JSONResponse
|
||||
from aioredis import Redis
|
||||
|
||||
from app.common.response import SuccessResponse
|
||||
from app.core.dependencies import AuthPermission, redis_getter
|
||||
from app.core.dependencies import AuthPermission, redis_getter, db_getter
|
||||
from app.core.router_class import OperationLogRoute
|
||||
from app.core.logger import logger
|
||||
from app.api.v1.schemas.system.auth_schema import AuthSchema
|
||||
from app.api.v1.schemas.system.config_schema import ConfigUpdateSchema
|
||||
from app.api.v1.services.system.config_service import ConfigService
|
||||
|
||||
from sqlalchemy.ext.asyncio import AsyncSession
|
||||
|
||||
|
||||
router = APIRouter(route_class=OperationLogRoute)
|
||||
|
||||
@@ -48,8 +50,9 @@ async def upload_file_controller(
|
||||
|
||||
@router.get("/init", summary="获取初始化配置", description="获取初始化配置")
|
||||
async def get_init_config_controller(
|
||||
redis: Redis = Depends(redis_getter)
|
||||
redis: Redis = Depends(redis_getter),
|
||||
db: AsyncSession = Depends(db_getter)
|
||||
) -> JSONResponse:
|
||||
result_dict = await ConfigService.get_init_config_service(redis=redis)
|
||||
result_dict = await ConfigService.get_init_config_service(redis=redis, db=db)
|
||||
logger.info(f"获取初始化配置成功 {result_dict}")
|
||||
return SuccessResponse(data=result_dict, msg="获取初始化配置成功")
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
import json
|
||||
from typing import Dict
|
||||
from typing import Dict, Union
|
||||
|
||||
from aioredis import Redis
|
||||
from fastapi import UploadFile
|
||||
@@ -66,7 +66,7 @@ class ConfigService:
|
||||
).model_dump()
|
||||
|
||||
@classmethod
|
||||
async def init_config_service(cls, redis: Redis, db: AsyncSession)-> None:
|
||||
async def init_config_service(cls, redis: Redis, db: AsyncSession) -> Union[str, None]:
|
||||
auth = AuthSchema(db=db)
|
||||
config_obj = await ConfigCRUD(auth).get_crud(id=1)
|
||||
config_obj_dict = ConfigOutSchema.model_validate(config_obj).model_dump()
|
||||
@@ -80,16 +80,20 @@ class ConfigService:
|
||||
value=value,
|
||||
expire=settings.ACCESS_TOKEN_EXPIRE_MINUTES * 60
|
||||
)
|
||||
return value
|
||||
except Exception as e:
|
||||
logger.error(f"初始化系统配置失败: {e}")
|
||||
raise CustomException(msg="初始化系统配置失败")
|
||||
|
||||
@classmethod
|
||||
async def get_init_config_service(cls, redis: Redis) -> Dict:
|
||||
async def get_init_config_service(cls, redis: Redis, db: AsyncSession) -> Dict:
|
||||
"""获取系统配置"""
|
||||
redis_key = f"{RedisInitKeyConfig.System_Config.key}:{'init_system_config'}"
|
||||
config_obj_list_dict = await RedisCURD(redis).get(redis_key)
|
||||
if not config_obj_list_dict:
|
||||
raise CustomException(msg="系统配置不存在")
|
||||
return json.loads(config_obj_list_dict)
|
||||
config_obj_str = await RedisCURD(redis).get(redis_key)
|
||||
if not config_obj_str:
|
||||
# 如果Redis中没有数据,则从数据库中获取
|
||||
config_obj_str = await cls.init_config_service(redis=redis, db=db)
|
||||
if not config_obj_str:
|
||||
raise CustomException(msg="系统配置不存在")
|
||||
return json.loads(config_obj_str)
|
||||
|
||||
Reference in New Issue
Block a user