初始提交
This commit is contained in:
@@ -0,0 +1,77 @@
|
||||
from typing import Annotated
|
||||
|
||||
from fastapi import BackgroundTasks, File, Query, Request, Response, UploadFile
|
||||
from fastapi.responses import StreamingResponse
|
||||
|
||||
from common.annotation.rate_limit_annotation import ApiRateLimit, ApiRateLimitPreset
|
||||
from common.aspect.pre_auth import PreAuthDependency
|
||||
from common.constant import ApiNamespace
|
||||
from common.router import APIRouterPro
|
||||
from common.vo import DynamicResponseModel
|
||||
from module_admin.entity.vo.common_vo import UploadResponseModel
|
||||
from module_admin.service.common_service import CommonService
|
||||
from utils.log_util import logger
|
||||
from utils.response_util import ResponseUtil
|
||||
|
||||
common_controller = APIRouterPro(prefix='/common', order_num=16, tags=['通用模块'], dependencies=[PreAuthDependency()])
|
||||
|
||||
|
||||
@common_controller.post(
|
||||
'/upload',
|
||||
summary='通用文件上传接口',
|
||||
description='用于上传文件',
|
||||
response_model=DynamicResponseModel[UploadResponseModel],
|
||||
)
|
||||
@ApiRateLimit(namespace=ApiNamespace.COMMON_UPLOAD, preset=ApiRateLimitPreset.COMMON_UPLOAD)
|
||||
async def common_upload(request: Request, file: Annotated[UploadFile, File(...)]) -> Response:
|
||||
upload_result = await CommonService.upload_service(request, file)
|
||||
logger.info('上传成功')
|
||||
|
||||
return ResponseUtil.success(model_content=upload_result.result)
|
||||
|
||||
|
||||
@common_controller.get(
|
||||
'/download',
|
||||
summary='通用文件下载接口',
|
||||
description='用于下载下载目录中的文件',
|
||||
response_class=StreamingResponse,
|
||||
responses={
|
||||
200: {
|
||||
'description': '流式返回文件',
|
||||
'content': {
|
||||
'application/octet-stream': {},
|
||||
},
|
||||
}
|
||||
},
|
||||
)
|
||||
async def common_download(
|
||||
request: Request,
|
||||
background_tasks: BackgroundTasks,
|
||||
file_name: Annotated[str, Query(alias='fileName')],
|
||||
delete: Annotated[bool, Query()],
|
||||
) -> Response:
|
||||
download_result = await CommonService.download_services(background_tasks, file_name, delete)
|
||||
logger.info(download_result.message)
|
||||
|
||||
return ResponseUtil.streaming(data=download_result.result)
|
||||
|
||||
|
||||
@common_controller.get(
|
||||
'/download/resource',
|
||||
summary='通用资源文件下载接口',
|
||||
description='用于下载上传目录中的资源文件',
|
||||
response_class=StreamingResponse,
|
||||
responses={
|
||||
200: {
|
||||
'description': '流式返回文件',
|
||||
'content': {
|
||||
'application/octet-stream': {},
|
||||
},
|
||||
}
|
||||
},
|
||||
)
|
||||
async def common_download_resource(request: Request, resource: Annotated[str, Query()]) -> Response:
|
||||
download_resource_result = await CommonService.download_resource_services(resource)
|
||||
logger.info(download_resource_result.message)
|
||||
|
||||
return ResponseUtil.streaming(data=download_resource_result.result)
|
||||
Reference in New Issue
Block a user