mirror of
https://github.com/fastapiadmin/FastapiAdmin.git
synced 2026-09-25 21:57:48 +00:00
本次提交包含多项优化和修复: 1. 修复CRUD初始化参数传递、搜索参数处理逻辑 2. 更新环境配置中的大模型相关参数 3. 重构部分服务方法命名,统一代码风格 4. 新增多个枚举类型,补充模型关联关系和加载选项 5. 优化查询参数类实现,完善字段校验逻辑 6. 调整Pydantic模型字段注释和类型定义 7. 简化并移除冗余的CRUD方法实现 8. 新增超级管理员权限装饰器 9. 修复邮件日志模型的租户关联和字段定义
61 lines
2.8 KiB
Python
61 lines
2.8 KiB
Python
from sqlalchemy import Integer, String, Text
|
|
from sqlalchemy.orm import Mapped, mapped_column
|
|
|
|
from app.config.setting import settings
|
|
from app.core.base_model import ModelMixin, TenantMixin, UserMixin
|
|
|
|
|
|
def get_log_text_column_type():
|
|
"""
|
|
根据数据库类型选择适合存储大文本的列类型。
|
|
"""
|
|
db_type = settings.DATABASE_TYPE
|
|
if db_type == "mysql":
|
|
from sqlalchemy.dialects.mysql import LONGTEXT
|
|
|
|
return LONGTEXT
|
|
elif db_type == "postgres":
|
|
from sqlalchemy.dialects.postgresql import TEXT
|
|
|
|
return TEXT
|
|
else:
|
|
return Text
|
|
|
|
|
|
class LoginLogModel(ModelMixin, TenantMixin, UserMixin):
|
|
"""
|
|
登录日志模型
|
|
"""
|
|
|
|
__tablename__: str = "sys_login_log"
|
|
__table_args__: dict[str, str] = {"comment": "登录日志表"}
|
|
__loader_options__: list[str] = ["created_by", "updated_by", "deleted_by", "tenant_by"]
|
|
|
|
status: Mapped[int] = mapped_column(Integer, default=1, comment="登录状态(1成功 2失败)", index=True)
|
|
description: Mapped[str | None] = mapped_column(Text, default=None, nullable=True, comment="备注")
|
|
username: Mapped[str] = mapped_column(String(64), nullable=False, comment="用户名")
|
|
login_location: Mapped[str | None] = mapped_column(String(255), nullable=True, comment="登录位置")
|
|
login_ip: Mapped[str | None] = mapped_column(String(50), nullable=True, comment="登录IP地址")
|
|
request_os: Mapped[str | None] = mapped_column(String(64), nullable=True, comment="操作系统")
|
|
request_browser: Mapped[str | None] = mapped_column(String(64), nullable=True, comment="浏览器")
|
|
msg: Mapped[str | None] = mapped_column(String(255), nullable=True, comment="提示消息")
|
|
|
|
|
|
class OperationLogModel(ModelMixin, TenantMixin, UserMixin):
|
|
"""
|
|
操作日志模型
|
|
"""
|
|
|
|
__tablename__: str = "sys_operation_log"
|
|
__table_args__: dict[str, str] = {"comment": "操作日志表"}
|
|
__loader_options__: list[str] = ["created_by", "updated_by", "deleted_by", "tenant_by"]
|
|
|
|
status: Mapped[int] = mapped_column(Integer, default=0, nullable=False, comment="状态(0:启动 1:停用)", index=True)
|
|
description: Mapped[str | None] = mapped_column(Text, default=None, nullable=True, comment="备注")
|
|
request_path: Mapped[str] = mapped_column(String(255), comment="请求路径")
|
|
request_method: Mapped[str] = mapped_column(String(10), comment="请求方式")
|
|
request_payload: Mapped[str | None] = mapped_column(get_log_text_column_type(), comment="请求体")
|
|
response_code: Mapped[int] = mapped_column(Integer, comment="响应状态码")
|
|
response_json: Mapped[str | None] = mapped_column(get_log_text_column_type(), nullable=True, comment="响应体")
|
|
process_time: Mapped[str | None] = mapped_column(String(20), nullable=True, comment="处理时间")
|