106 lines
2.6 KiB
Python
106 lines
2.6 KiB
Python
# ===========================================
|
|
# 班级操行分管理系统 - 后端服务
|
|
#
|
|
# 开发者: Canglan
|
|
# 联系方式: admin@sea-studio.top
|
|
# 版权归属: Sea Network Technology Studio
|
|
# 许可证: MIT License
|
|
#
|
|
# 版权所有 © Sea Network Technology Studio
|
|
# ===========================================
|
|
|
|
from typing import Any, Optional, Dict, List
|
|
from fastapi.responses import JSONResponse
|
|
|
|
|
|
class ResponseCode:
|
|
"""响应状态码"""
|
|
SUCCESS = 200
|
|
CREATED = 201
|
|
BAD_REQUEST = 400
|
|
UNAUTHORIZED = 401
|
|
FORBIDDEN = 403
|
|
NOT_FOUND = 404
|
|
CONFLICT = 409
|
|
UNPROCESSABLE = 422
|
|
INTERNAL_ERROR = 500
|
|
|
|
|
|
def success_response(data: Any = None, message: str = "操作成功") -> JSONResponse:
|
|
"""成功响应"""
|
|
return JSONResponse(
|
|
status_code=ResponseCode.SUCCESS,
|
|
content={
|
|
"success": True,
|
|
"code": ResponseCode.SUCCESS,
|
|
"message": message,
|
|
"data": data
|
|
}
|
|
)
|
|
|
|
|
|
def error_response(
|
|
message: str = "操作失败",
|
|
code: int = ResponseCode.BAD_REQUEST,
|
|
data: Any = None
|
|
) -> JSONResponse:
|
|
"""错误响应"""
|
|
return JSONResponse(
|
|
status_code=code,
|
|
content={
|
|
"success": False,
|
|
"code": code,
|
|
"message": message,
|
|
"data": data
|
|
}
|
|
)
|
|
|
|
|
|
def unauthorized_response(message: str = "未授权,请重新登录") -> JSONResponse:
|
|
"""未授权响应"""
|
|
return JSONResponse(
|
|
status_code=ResponseCode.UNAUTHORIZED,
|
|
content={
|
|
"success": False,
|
|
"code": ResponseCode.UNAUTHORIZED,
|
|
"message": message,
|
|
"data": None
|
|
}
|
|
)
|
|
|
|
|
|
def forbidden_response(message: str = "权限不足") -> JSONResponse:
|
|
"""禁止访问响应"""
|
|
return JSONResponse(
|
|
status_code=ResponseCode.FORBIDDEN,
|
|
content={
|
|
"success": False,
|
|
"code": ResponseCode.FORBIDDEN,
|
|
"message": message,
|
|
"data": None
|
|
}
|
|
)
|
|
|
|
|
|
def not_found_response(message: str = "资源不存在") -> JSONResponse:
|
|
"""资源不存在响应"""
|
|
return JSONResponse(
|
|
status_code=ResponseCode.NOT_FOUND,
|
|
content={
|
|
"success": False,
|
|
"code": ResponseCode.NOT_FOUND,
|
|
"message": message,
|
|
"data": None
|
|
}
|
|
)
|
|
|
|
|
|
def paginated_response(items: List[Any], total: int, page: int, page_size: int) -> Dict:
|
|
"""分页响应数据"""
|
|
return {
|
|
"items": items,
|
|
"total": total,
|
|
"page": page,
|
|
"page_size": page_size,
|
|
"total_pages": (total + page_size - 1) // page_size
|
|
} |