| 12345678910111213141516171819202122232425262728293031323334353637383940 |
- from fastapi import Query
- from pydantic import BaseModel, ConfigDict, Field
- from app.common.enums import QueueEnum
- from app.core.validator import DateTimeStr
- class OnlineOutSchema(BaseModel):
- """
- 在线用户对应pydantic模型
- """
- model_config = ConfigDict(from_attributes=True)
- name: str = Field(..., description="用户名称")
- session_id: str = Field(..., description="会话编号")
- user_id: int = Field(..., description="用户ID")
- user_name: str = Field(..., description="用户名")
- ipaddr: str | None = Field(default=None, description="登陆IP地址")
- login_location: str | None = Field(default=None, description="登录所属地")
- os: str | None = Field(default=None, description="操作系统")
- browser: str | None = Field(default=None, description="浏览器")
- login_time: DateTimeStr | None = Field(default=None, description="登录时间")
- login_type: str | None = Field(default=None, description="登录类型 PC端 | 移动端")
- class OnlineQueryParam:
- """在线用户查询参数"""
- def __init__(
- self,
- name: str | None = Query(None, description="登录名称"),
- ipaddr: str | None = Query(None, description="登陆IP地址"),
- login_location: str | None = Query(None, description="登录所属地"),
- ) -> None:
- # 模糊查询字段
- self.name = (QueueEnum.like.value, f"%{name}%") if name else None
- self.login_location = (QueueEnum.like.value, f"%{login_location}%") if login_location else None
- self.ipaddr = (QueueEnum.like.value, f"%{ipaddr}%") if ipaddr else None
|