| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596 |
- from datetime import datetime
- from fastapi import Query
- from typing import Generic, TypeVar, Optional
- from pydantic import BaseModel, Field
- from app.api.v1.module_system.auth.schema import AuthSchema
- T = TypeVar("T")
- class TenantApiKeyCreate(BaseModel):
- """创建API Key的请求模型"""
- tenant_id: Optional[int] = Field(None, description="租户ID,默认使用当前用户的租户ID")
- description: Optional[str] = Field(None, description="备注")
- expired_days: Optional[int] = Field(365, description="过期天数,默认365天")
- return_url: Optional[str] = Field(default=None, description="同步返回地址")
- class TenantApiKeyResponse(BaseModel):
- """API Key的响应模型"""
- id: int
- api_key: str
- api_secret: str
- status: str
- expired_at: Optional[datetime]
- created_time: datetime
- return_url: Optional[str]
- class Config:
- from_attributes = True
- class TenantApiKeyListResponse(BaseModel):
- """API Key列表的响应模型"""
- id: int
- api_key: str
- status: str
- expired_at: Optional[datetime]
- last_used_at: Optional[datetime]
- created_time: datetime
- description: Optional[str]
- return_url: Optional[str]
- class Config:
- from_attributes = True
- class TenantApiKeyUpdate(BaseModel):
- """更新API Key的请求模型"""
- status: str = Field(..., description="状态:0-正常,1-禁用")
- class TenantApiLogCreate(BaseModel):
- """创建API调用日志的请求模型"""
- api_key_id: Optional[int] = Field(None, description="API Key ID")
- tenant_id: int = Field(..., description="租户ID")
- endpoint: str = Field(..., description="调用的接口")
- method: str = Field(..., description="请求方法")
- request_ip: str = Field(..., description="请求IP")
- request_data: Optional[str] = Field(None, description="请求数据")
- response_code: int = Field(..., description="响应码")
- response_time: float = Field(..., description="响应时间(毫秒)")
- class TenantApiLogResponse(BaseModel):
- """API调用日志的响应模型"""
- id: int
- endpoint: str
- method: str
- request_ip: str
- response_code: int
- response_time: float
- created_time: datetime
- class Config:
- from_attributes = True
- class ApiKeyQueryParam:
- """API Key管理查询参数"""
- def __init__(
- self,
- # tenant_id: int | None = Query(None, description="租户ID,默认使用当前用户的租户ID"),
- status: str | None = Query(None, description="状态:0-正常,1-禁用"),
- ) -> None:
- # self.tenant_id = tenant_id
- self.status = status
- class ApiKeyPayload(BaseModel, Generic[T]):
- api_key: str = Field(description="API Key")
- api_secret: str = Field(description="API Secret")
- tenant_id: int = Field(description="租户ID")
- auth: AuthSchema = Field(description="认证")
- data: Optional[T] = Field(default=None, description="业务数据载荷")
|