taibai_shopping/app/models/operation_log.py
2025-07-04 19:07:35 +08:00

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}>'