| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118 |
- """
- 客户端API统一格式规范
- """
- from typing import Dict, Any, Optional
- from pydantic import BaseModel, Field
- from datetime import datetime
- class ClientApiRequest(BaseModel):
- """客户端API请求基础格式"""
- action: str = Field(..., description="API操作类型")
- params: Dict[str, Any] = Field(default_factory=dict, description="请求参数")
- timestamp: int = Field(..., description="请求时间戳(秒级)")
- version: str = Field(default="1.0", description="API版本")
- session_id: Optional[str] = Field(None, description="会话ID(登录后提供)")
- class ClientApiResponse(BaseModel):
- """客户端API响应基础格式"""
- code: int = Field(..., description="响应码:200-成功,400-参数错误,401-未授权,500-服务器错误")
- msg: str = Field(..., description="响应消息")
- data: Optional[Dict[str, Any]] = Field(None, description="响应数据")
- timestamp: int = Field(..., description="响应时间戳")
- version: str = Field(default="1.0", description="API版本")
- class EncryptedRequest(BaseModel):
- """加密请求格式"""
- encrypted: str = Field(..., description="RSA+AES加密后的数据")
- key_version: int = Field(..., description="使用的密钥版本")
- class EncryptedResponse(BaseModel):
- """加密响应格式"""
- encrypted: str = Field(..., description="RSA+AES加密后的数据")
- key_version: int = Field(..., description="使用的密钥版本")
- new_public_key: Optional[str] = Field(None, description="新的公钥(密钥轮换时提供)")
- # 具体业务请求格式
- class LoginRequest(BaseModel):
- """登录请求"""
- username: str = Field(..., description="用户名")
- password: str = Field(..., description="密码")
- machine_code: str = Field(..., description="机器码")
- class RegisterRequest(BaseModel):
- """注册请求"""
- username: str = Field(..., description="用户名")
- password: str = Field(..., description="密码")
- email: str = Field(..., description="邮箱")
- card_code: str = Field(..., description="卡密")
- machine_code: Optional[str] = Field(None, description="机器码(可选,第一次登录时绑定)")
- class HeartbeatRequest(BaseModel):
- """心跳请求"""
- user_id: int = Field(..., description="用户ID")
- session_id: str = Field(..., description="会话ID")
- machine_code: str = Field(..., description="机器码")
- class ActivateCardRequest(BaseModel):
- """激活卡密请求"""
- user_id: int = Field(..., description="用户ID")
- card_code: str = Field(..., description="卡密")
- software_code: str = Field(..., description="软件特征码")
- class LogoutRequest(BaseModel):
- """登出请求"""
- user_id: int = Field(..., description="用户ID")
- session_id: str = Field(..., description="会话ID")
- class UnbindRequest(BaseModel):
- """解绑请求"""
- username: str = Field(..., description="用户名")
- password: str = Field(..., description="密码")
- # 响应数据格式
- class LoginResponseData(BaseModel):
- """登录响应数据"""
- user_id: int = Field(..., description="用户ID")
- username: str = Field(..., description="用户名")
- session_id: str = Field(..., description="会话ID")
- expire_time: str = Field(..., description="到期时间")
- machine_code: str = Field(..., description="机器码")
- class RegisterResponseData(BaseModel):
- """注册响应数据"""
- user_id: int = Field(..., description="用户ID")
- class HeartbeatResponseData(BaseModel):
- """心跳响应数据"""
- expire_time: str = Field(..., description="到期时间")
- new_public_key: Optional[str] = Field(None, description="新公钥")
- class ValidateSessionRequest(BaseModel):
- """验证会话请求"""
- session_id: str = Field(..., description="会话ID")
- class ValidateSessionResponseData(BaseModel):
- """验证会话响应数据"""
- user_id: int = Field(..., description="用户ID")
- username: str = Field(..., description="用户名")
- expire_time: str = Field(..., description="到期时间")
- is_active: bool = Field(..., description="用户是否激活")
- machine_code: str = Field(..., description="机器码")
- class ActivateCardResponseData(BaseModel):
- """激活卡密响应数据"""
- expire_time: str = Field(..., description="新到期时间")
- days: int = Field(..., description="激活天数")
- # API操作类型常量
- class ApiActions:
- """API操作类型常量"""
- LOGIN = "login"
- REGISTER = "register"
- LOGOUT = "logout"
- HEARTBEAT = "heartbeat"
- VALIDATE_SESSION = "validate_session"
- ACTIVATE_CARD = "activate_card"
- UNBIND = "unbind"
- GET_ANNOUNCEMENTS = "get_announcements"
- GET_RECHARGE_RECORDS = "get_recharge_records"
|