# _*_ 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"] # 默认按操作时间倒序排序