You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
88 lines
3.7 KiB
88 lines
3.7 KiB
1 year ago
|
from fastapi import APIRouter, Request
|
||
|
from fastapi import Depends, File, Form, Query
|
||
|
from sqlalchemy.orm import Session
|
||
|
from config.env import CachePathConfig
|
||
|
from config.get_db import get_db
|
||
|
from module_admin.service.login_service import LoginService
|
||
|
from module_admin.service.common_service import *
|
||
|
from module_admin.service.config_service import ConfigService
|
||
|
from utils.response_util import *
|
||
|
from utils.log_util import *
|
||
|
from module_admin.aspect.interface_auth import CheckUserInterfaceAuth
|
||
|
from typing import Optional
|
||
|
|
||
|
|
||
|
commonController = APIRouter(prefix='/common')
|
||
|
|
||
|
|
||
|
@commonController.post("/upload", dependencies=[Depends(LoginService.get_current_user), Depends(CheckUserInterfaceAuth('common'))])
|
||
|
async def common_upload(request: Request, taskPath: str = Form(), uploadId: str = Form(), file: UploadFile = File(...)):
|
||
|
try:
|
||
|
try:
|
||
|
os.makedirs(os.path.join(CachePathConfig.PATH, taskPath, uploadId))
|
||
|
except FileExistsError:
|
||
|
pass
|
||
|
CommonService.upload_service(CachePathConfig.PATH, taskPath, uploadId, file)
|
||
|
logger.info('上传成功')
|
||
|
return response_200(data={'filename': file.filename, 'path': f'/common/{CachePathConfig.PATHSTR}?taskPath={taskPath}&taskId={uploadId}&filename={file.filename}'}, message="上传成功")
|
||
|
except Exception as e:
|
||
|
logger.exception(e)
|
||
|
return response_500(data="", message=str(e))
|
||
|
|
||
|
|
||
|
@commonController.post("/uploadForEditor", dependencies=[Depends(LoginService.get_current_user), Depends(CheckUserInterfaceAuth('common'))])
|
||
|
async def editor_upload(request: Request, baseUrl: str = Form(), uploadId: str = Form(), taskPath: str = Form(), file: UploadFile = File(...)):
|
||
|
try:
|
||
|
try:
|
||
|
os.makedirs(os.path.join(CachePathConfig.PATH, taskPath, uploadId))
|
||
|
except FileExistsError:
|
||
|
pass
|
||
|
CommonService.upload_service(CachePathConfig.PATH, taskPath, uploadId, file)
|
||
|
logger.info('上传成功')
|
||
|
return JSONResponse(
|
||
|
status_code=status.HTTP_200_OK,
|
||
|
content=jsonable_encoder(
|
||
|
{
|
||
|
'errno': 0,
|
||
|
'data': {
|
||
|
'url': f'{baseUrl}/common/{CachePathConfig.PATHSTR}?taskPath={taskPath}&taskId={uploadId}&filename={file.filename}'
|
||
|
},
|
||
|
}
|
||
|
)
|
||
|
)
|
||
|
except Exception as e:
|
||
|
logger.exception(e)
|
||
|
return JSONResponse(
|
||
|
status_code=status.HTTP_500_INTERNAL_SERVER_ERROR,
|
||
|
content=jsonable_encoder(
|
||
|
{
|
||
|
'errno': 1,
|
||
|
'message': str(e),
|
||
|
}
|
||
|
)
|
||
|
)
|
||
|
|
||
|
|
||
|
@commonController.get(f"/{CachePathConfig.PATHSTR}")
|
||
|
async def common_download(request: Request, task_path: str = Query(alias='taskPath'), task_id: str = Query(alias='taskId'), filename: str = Query()):
|
||
|
try:
|
||
|
def generate_file():
|
||
|
with open(os.path.join(CachePathConfig.PATH, task_path, task_id, filename), 'rb') as response_file:
|
||
|
yield from response_file
|
||
|
return streaming_response_200(data=generate_file())
|
||
|
except Exception as e:
|
||
|
logger.exception(e)
|
||
|
return response_500(data="", message=str(e))
|
||
|
|
||
|
|
||
|
@commonController.get("/config/query/{config_key}")
|
||
|
async def query_system_config(request: Request, config_key: str):
|
||
|
try:
|
||
|
# 获取全量数据
|
||
|
config_query_result = await ConfigService.query_config_list_from_cache_services(request.app.state.redis, config_key)
|
||
|
logger.info('获取成功')
|
||
|
return response_200(data=config_query_result, message="获取成功")
|
||
|
except Exception as e:
|
||
|
logger.exception(e)
|
||
|
return response_500(data="", message=str(e))
|