58 lines
1.8 KiB
Python
58 lines
1.8 KiB
Python
"""
|
|
操作日志模型
|
|
"""
|
|
from datetime import datetime
|
|
from config.database import db
|
|
import json
|
|
|
|
|
|
class OperationLog(db.Model):
|
|
__tablename__ = 'operation_logs'
|
|
|
|
id = db.Column(db.Integer, primary_key=True)
|
|
user_id = db.Column(db.Integer)
|
|
user_type = db.Column(db.Integer) # 1-普通用户 2-管理员
|
|
action = db.Column(db.String(100), nullable=False)
|
|
resource_type = db.Column(db.String(50))
|
|
resource_id = db.Column(db.Integer)
|
|
ip_address = db.Column(db.String(45))
|
|
user_agent = db.Column(db.Text)
|
|
request_data = db.Column(db.JSON)
|
|
created_at = db.Column(db.DateTime, default=datetime.utcnow)
|
|
|
|
@classmethod
|
|
def create_log(cls, user_id=None, user_type=1, action='', resource_type=None,
|
|
resource_id=None, ip_address=None, user_agent=None, request_data=None):
|
|
"""创建操作日志"""
|
|
log = cls(
|
|
user_id=user_id,
|
|
user_type=user_type,
|
|
action=action,
|
|
resource_type=resource_type,
|
|
resource_id=resource_id,
|
|
ip_address=ip_address,
|
|
user_agent=user_agent,
|
|
request_data=request_data
|
|
)
|
|
db.session.add(log)
|
|
db.session.commit()
|
|
return log
|
|
|
|
def to_dict(self):
|
|
"""转换为字典"""
|
|
return {
|
|
'id': self.id,
|
|
'user_id': self.user_id,
|
|
'user_type': self.user_type,
|
|
'action': self.action,
|
|
'resource_type': self.resource_type,
|
|
'resource_id': self.resource_id,
|
|
'ip_address': self.ip_address,
|
|
'user_agent': self.user_agent,
|
|
'request_data': self.request_data,
|
|
'created_at': self.created_at.isoformat() if self.created_at else None
|
|
}
|
|
|
|
def __repr__(self):
|
|
return f'<OperationLog {self.action}>'
|