feat: 初始化仓库

This commit is contained in:
2025-02-12 02:38:29 +08:00
commit 46e9e79670
67 changed files with 8960 additions and 0 deletions

345
models/log.py Normal file
View File

@@ -0,0 +1,345 @@
# _*_ coding : UTF-8 _*_
# @Time : 2025/01/19 00:03
# @UpdateTime : 2025/01/19 00:03
# @Author : sonder
# @File : log.py
# @Software : PyCharm
# @Comment : 本程序
from tortoise import fields
from models.common import BaseModel
class LoginLog(BaseModel):
"""
系统访问记录表模型。
"""
user = fields.ForeignKeyField(
"models.User",
related_name="login_logs",
description="用户ID",
source_field="user_id" # 映射到数据库字段 user_id
)
"""
用户ID。
- 外键关联到 User 表。
- 映射到数据库字段 user_id。
"""
login_ip = fields.CharField(
max_length=50,
description="登录IP地址",
source_field="login_ip" # 映射到数据库字段 login_ip
)
"""
登录IP地址。
- 最大长度为 50 个字符。
- 映射到数据库字段 login_ip。
"""
login_location = fields.CharField(
max_length=255,
null=True,
description="登录地点",
source_field="login_location" # 映射到数据库字段 login_location
)
"""
登录地点。
- 根据 IP 地址解析的地理位置信息。
- 最大长度为 255 个字符。
- 允许为空。
- 映射到数据库字段 login_location。
"""
browser = fields.CharField(
max_length=255,
null=True,
description="浏览器类型",
source_field="browser" # 映射到数据库字段 browser
)
"""
浏览器类型。
- 记录用户登录时使用的浏览器类型。
- 最大长度为 255 个字符。
- 允许为空。
- 映射到数据库字段 browser。
"""
os = fields.CharField(
max_length=255,
null=True,
description="操作系统",
source_field="os" # 映射到数据库字段 os
)
"""
操作系统。
- 记录用户登录时使用的操作系统。
- 最大长度为 255 个字符。
- 允许为空。
- 映射到数据库字段 os。
"""
status = fields.SmallIntField(
default=1,
description="登录状态1成功0失败",
source_field="status" # 映射到数据库字段 status
)
"""
登录状态。
- 1成功
- 0失败
- 默认为 1。
- 映射到数据库字段 status。
"""
login_time = fields.DatetimeField(
auto_now_add=True,
description="登录时间",
source_field="login_time" # 映射到数据库字段 login_time
)
"""
登录时间。
- 自动设置为当前时间。
- 映射到数据库字段 login_time。
"""
session_id = fields.CharField(
max_length=36,
null=True,
description="会话ID",
source_field="session_id"
)
"""
会话ID。
- 记录用户登录时的会话ID。
- 允许为空。
- 映射到数据库字段 session_id。
"""
class Meta:
table = "login_log" # 数据库表名
table_description = "系统访问记录表" # 表描述
ordering = ["-login_time"] # 默认按登录时间倒序排序
class OperationLog(BaseModel):
"""
操作日志表模型。
"""
operation_name = fields.CharField(
max_length=255,
description="操作名称",
source_field="operation_name" # 映射到数据库字段 operation_name
)
"""
操作名称。
- 最大长度为 255 个字符。
- 映射到数据库字段 operation_name。
"""
operation_type = fields.SmallIntField(
description="操作类型(增删改查)",
source_field="operation_type" # 映射到数据库字段 operation_type
)
"""
操作类型。
- 增、删、改、查等操作类型。
- 最大长度为 50 个字符。
- 映射到数据库字段 operation_type。
"""
request_path = fields.TextField(
description="请求路径",
source_field="request_path" # 映射到数据库字段 request_path
)
"""
请求路径。
- 记录用户请求的 API 路径。
- 最大长度为 255 个字符。
- 映射到数据库字段 request_path。
"""
request_method = fields.CharField(
max_length=10,
description="请求方法",
source_field="request_method" # 映射到数据库字段 request_method
)
"""
请求方法。
- 记录用户请求的 HTTP 方法(如 GET、POST、PUT、DELETE
- 最大长度为 10 个字符。
- 映射到数据库字段 request_method。
"""
operator = fields.ForeignKeyField(
"models.User",
related_name="operation_logs",
null=True, # 允许操作人员为空
description="操作人员",
source_field="operator_id" # 映射到数据库字段 operator_id
)
"""
操作人员。
- 外键关联到 User 表。
- 允许为空。
- 映射到数据库字段 operator_id。
"""
department = fields.ForeignKeyField(
"models.Department",
related_name="operation_logs",
null=True, # 允许操作人员为空
description="操作人员所属部门",
source_field="department_id" # 映射到数据库字段 department_id
)
"""
操作人员所属部门。
- 外键关联到 Department 表。
- 允许为空。
- 映射到数据库字段 department_id。
"""
department_name = fields.CharField(
max_length=255,
description="部门名称",
source_field="department_name" # 映射到数据库字段 department_name
)
"""
部门名称。
- 记录操作人员所属的部门名称。
- 最大长度为 255 个字符。
- 映射到数据库字段 department_name。
"""
host = fields.CharField(
max_length=50,
description="主机地址",
source_field="host" # 映射到数据库字段 host
)
"""
主机地址。
- 记录用户请求的 IP 地址。
- 最大长度为 50 个字符。
- 映射到数据库字段 host。
"""
location = fields.CharField(
max_length=255,
null=True,
description="操作地点",
source_field="location" # 映射到数据库字段 location
)
"""
操作地点。
- 根据 IP 地址解析的地理位置信息。
- 最大长度为 255 个字符。
- 允许为空。
- 映射到数据库字段 location。
"""
user_agent = fields.TextField(
null=True,
description="用户请求头",
source_field="user_agent" # 映射到数据库字段 user_agent
)
"""
用户请求头。
- 记录用户请求的 User-Agent 信息。
- 允许为空。
- 映射到数据库字段 user_agent。
"""
browser = fields.CharField(
max_length=255,
null=True,
description="浏览器类型",
source_field="browser" # 映射到数据库字段 browser
)
"""
浏览器类型。
- 记录用户登录时使用的浏览器类型。
- 最大长度为 255 个字符。
- 允许为空。
- 映射到数据库字段 browser。
"""
os = fields.CharField(
max_length=255,
null=True,
description="操作系统",
source_field="os" # 映射到数据库字段 os
)
"""
操作系统。
- 记录用户登录时使用的操作系统。
- 最大长度为 255 个字符。
- 允许为空。
- 映射到数据库字段 os。
"""
request_params = fields.TextField(
null=True,
description="请求参数",
source_field="request_params" # 映射到数据库字段 request_params
)
"""
请求参数。
- 记录用户请求的参数任意格式如字符串、JSON、XML 等)。
- 允许为空。
- 映射到数据库字段 request_params。
"""
response_result = fields.TextField(
null=True,
description="返回结果",
source_field="response_result" # 映射到数据库字段 response_result
)
"""
返回结果。
- 记录操作的返回结果任意格式如字符串、JSON、XML 等)。
- 允许为空。
- 映射到数据库字段 response_result。
"""
status = fields.SmallIntField(
default=1,
description="操作状态1成功0失败",
source_field="status" # 映射到数据库字段 status
)
"""
操作状态。
- 1成功
- 0失败
- 默认为 1。
- 映射到数据库字段 status。
"""
operation_time = fields.DatetimeField(
auto_now_add=True,
description="操作时间",
source_field="operation_time" # 映射到数据库字段 operation_time
)
"""
操作时间。
- 自动设置为当前时间。
- 映射到数据库字段 operation_time。
"""
cost_time = fields.FloatField(
default=0,
description="消耗时间(毫秒)",
source_field="cost_time" # 映射到数据库字段 cost_time
)
"""
消耗时间。
- 记录操作消耗的时间(单位:毫秒)。
- 默认为 0。
- 映射到数据库字段 cost_time。
"""
class Meta:
table = "operation_log" # 数据库表名
table_description = "操作日志表" # 表描述
ordering = ["-operation_time"] # 默认按操作时间倒序排序