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

"""
统一返回结果类 - 对齐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)
}