| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051 |
- """操作日志 CRUD"""
- import uuid
- from typing import List, Optional, Tuple
- from sqlalchemy.orm import Session
- from app.models.system import OperLog
- def create_oper_log(
- db: Session,
- *,
- module: str,
- action: str,
- user_id: Optional[str] = None,
- username: Optional[str] = None,
- detail: Optional[str] = None,
- ip: Optional[str] = None,
- ) -> OperLog:
- row = OperLog(
- id=str(uuid.uuid4()),
- user_id=user_id,
- username=username,
- module=module,
- action=action,
- detail=detail,
- ip=ip,
- )
- db.add(row)
- db.commit()
- db.refresh(row)
- return row
- def list_oper_logs(
- db: Session,
- *,
- username: Optional[str] = None,
- keyword: Optional[str] = None,
- page: int = 1,
- page_size: int = 10,
- ) -> Tuple[List[OperLog], int]:
- q = db.query(OperLog)
- if username:
- q = q.filter(OperLog.username.like(f"%{username}%"))
- if keyword:
- q = q.filter(OperLog.detail.like(f"%{keyword}%"))
- q = q.order_by(OperLog.create_time.desc())
- total = q.count()
- items = q.offset((page - 1) * page_size).limit(page_size).all()
- return items, total
|