# =========================================== # 班级操行分管理系统 - 后端服务 # # 开发者: 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 }