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.
53 lines
1.6 KiB
53 lines
1.6 KiB
"""
|
|
统一返回结果类 - 对齐JAVA Result
|
|
|
|
@author: {{ author }}
|
|
@date: {{ date }}
|
|
"""
|
|
from typing import TypeVar, Generic, Optional, Any
|
|
from pydantic import BaseModel, Field
|
|
from datetime import datetime
|
|
import time
|
|
|
|
T = TypeVar('T')
|
|
|
|
class Result(BaseModel, Generic[T]):
|
|
"""接口返回数据格式 - 对齐JAVA Result<T>"""
|
|
success: bool = Field(True, description="成功标志")
|
|
message: str = Field("", description="返回处理消息")
|
|
code: int = Field(0, description="返回代码, 0=成功, 500=错误")
|
|
result: Optional[T] = Field(None, description="返回数据对象")
|
|
timestamp: int = Field(default_factory=lambda: int(time.time() * 1000), description="时间戳")
|
|
|
|
@staticmethod
|
|
def OK(data: Any = None, message: str = "") -> dict:
|
|
"""成功返回"""
|
|
return {
|
|
"success": True,
|
|
"message": message,
|
|
"code": 200,
|
|
"result": data,
|
|
"timestamp": int(time.time() * 1000)
|
|
}
|
|
|
|
@staticmethod
|
|
def error(message: str, code: int = 500) -> dict:
|
|
"""错误返回"""
|
|
return {
|
|
"success": False,
|
|
"message": message,
|
|
"code": code,
|
|
"result": None,
|
|
"timestamp": int(time.time() * 1000)
|
|
}
|
|
|
|
@staticmethod
|
|
def noauth(message: str = "无权限访问") -> dict:
|
|
"""无权限返回"""
|
|
return {
|
|
"success": False,
|
|
"message": message,
|
|
"code": 210,
|
|
"result": None,
|
|
"timestamp": int(time.time() * 1000)
|
|
}
|
|
|