|
|
from enum import Enum
|
|
|
from typing import Any, Dict, List, Union
|
|
|
|
|
|
|
|
|
#状态码,响应前端发送的某次请求,观察此次请求的结果,成功与否
|
|
|
class StateCode(Enum):
|
|
|
SUCCESS = 0
|
|
|
NOT_AUTHORIZED = 1002
|
|
|
PARAMS_ERROR = 1003
|
|
|
|
|
|
USER_NOT_FOUND = 2001
|
|
|
USER_ALREADY_EXISTS = 2002
|
|
|
PASSWORD_INCORRECT = 2003
|
|
|
MOBILE_CODE_ERROR = 2004
|
|
|
ID_CARD_ERROR = 2005
|
|
|
BANK_CARD_ERROR = 2006
|
|
|
MOBILE_ERROR = 2007
|
|
|
|
|
|
ORDER_PAY_ERROR = 3001
|
|
|
|
|
|
#状态信息,响应给前端作出相应提示
|
|
|
STATE_MESSAGES = {
|
|
|
StateCode.SUCCESS: "OK",
|
|
|
StateCode.PARAMS_ERROR: "缺少参数",
|
|
|
StateCode.USER_NOT_FOUND: "用户不存在,操作错误",
|
|
|
StateCode.NOT_AUTHORIZED: "未登录",
|
|
|
StateCode.USER_ALREADY_EXISTS: "用户已存在",
|
|
|
StateCode.PASSWORD_INCORRECT: "用户名或密码错误",
|
|
|
StateCode.MOBILE_CODE_ERROR: "验证码错误",
|
|
|
StateCode.ID_CARD_ERROR: "身份证号验证失败",
|
|
|
StateCode.MOBILE_ERROR: "手机号格式有误",
|
|
|
StateCode.BANK_CARD_ERROR: "银行卡验证错误",
|
|
|
StateCode.ORDER_PAY_ERROR: "支付失败"
|
|
|
}
|
|
|
|
|
|
#返回一个json格式的数据,主要是为了和前端统一数据格式,包含三个部分,上面的状态码,响应信息,返回的数据
|
|
|
def create_response(
|
|
|
code: StateCode,
|
|
|
message: str = None,
|
|
|
data: Union[Dict[str, Any], List[Dict[str, Any]], Any] = None
|
|
|
) -> Dict[str, Any]:
|
|
|
"""
|
|
|
创建统一的返回格式。
|
|
|
:param code: ErrorCode 错误码
|
|
|
:param message: 错误信息,可选。如果不传递则使用默认的错误信息
|
|
|
:param data: 包含单个或多个 Presenter 转换后的数据。单个使用 dict,多个使用 list
|
|
|
:return: 返回统一格式的字典
|
|
|
"""
|
|
|
return {
|
|
|
"code": code.value,
|
|
|
"msg": message or STATE_MESSAGES.get(code, "Unknown error"),
|
|
|
"data": data
|
|
|
}
|