12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273 |
- #!/usr/bin/env python3
- # -*- coding: utf-8 -*-
- from fastapi import APIRouter, Request, Depends, Query, HTTPException, status
- from common.security import valid_access_token
- from pydantic import BaseModel
- from database import get_db
- from sqlalchemy.orm import Session
- from typing import List
- from models import *
- from utils import *
- from utils.ry_system_util import *
- import json
- from sqlalchemy.sql import func
- from common.enc import mpfun, sys_dept_data
- from common.auth_user import *
- from common.db import db_czrz
- import traceback
- router = APIRouter()
- @router.get('/list')
- async def get_list(
- # request: Request,
- operIp: str = Query(None, max_length=100),
- operName:str = Query(None, max_length=100),
- title: str = Query(None, max_length=100),
- params: str = Query(None, max_length=100),
- dateRange: str = Query(None, max_length=100),
- pageNum: int = Query(1, gt=0, description="页码"),
- pageSize: int = Query(10, gt=0, le=100, description="每页大小"),
- db: Session = Depends(get_db),
- user_id = Depends(valid_access_token),
- ):
- print(params)
- query = db.query(CzrzEntity)
- if operIp:
- query = query.filter(CzrzEntity.ip.like(f'%{operIp}%'))
- if operName:
- query = query.filter(CzrzEntity.nick_name.like(f'%{operName}%'))
- if title:
- query = query.filter(CzrzEntity.action.like(f'%{title}%'))
- if dateRange:
- start_date, end_date = dateRange.split('-')
- # start_date = datetime.strptime(start_date, "%Y-%m-%d")
- # end_date = datetime.strptime(end_date, "%Y-%m-%d") + timedelta(days=1)
- query = query.filter(CzrzEntity.gxsj.between(start_date, end_date))
- total_count = query.count()
- offset = (pageNum - 1) * pageSize
- query = query.order_by(CzrzEntity.gxsj.desc()).offset(offset).limit(pageSize)
- czrz_list = query.all()
- # 将模型实例转换为字典
- czrz_list_dict = [{
- "operIp": item.ip,
- "operName": item.nick_name,
- "title": item.action,
- "czrz": item.czrz,
- "operTime": item.gxsj.strftime('%Y-%m-%d %H:%M:%S') if item.gxsj else '',
- } for item in czrz_list]
- return {
- "code": 200,
- "msg": "操作成功",
- "rows": czrz_list_dict,
- 'pages': (total_count + pageSize - 1) // pageSize,
- 'total': total_count,
- "currentPage": pageNum,
- "pageSize": pageSize,
- }
|