__init__.py 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. #!/usr/bin/env python3
  2. # -*- coding: utf-8 -*-
  3. from fastapi import APIRouter, Request, Depends, Query, HTTPException, status
  4. from common.security import valid_access_token
  5. from pydantic import BaseModel
  6. from database import get_db
  7. from sqlalchemy.orm import Session
  8. from typing import List
  9. from models import *
  10. from utils import *
  11. from utils.ry_system_util import *
  12. import json
  13. from sqlalchemy.sql import func
  14. from common.enc import mpfun, sys_dept_data
  15. from common.auth_user import *
  16. from common.db import db_czrz
  17. import traceback
  18. router = APIRouter()
  19. @router.get('/list')
  20. async def get_list(
  21. # request: Request,
  22. operIp: str = Query(None, max_length=100),
  23. operName:str = Query(None, max_length=100),
  24. title: str = Query(None, max_length=100),
  25. params: str = Query(None, max_length=100),
  26. dateRange: str = Query(None, max_length=100),
  27. pageNum: int = Query(1, gt=0, description="页码"),
  28. pageSize: int = Query(10, gt=0, le=100, description="每页大小"),
  29. db: Session = Depends(get_db),
  30. user_id = Depends(valid_access_token),
  31. ):
  32. print(params)
  33. query = db.query(CzrzEntity)
  34. if operIp:
  35. query = query.filter(CzrzEntity.ip.like(f'%{operIp}%'))
  36. if operName:
  37. query = query.filter(CzrzEntity.nick_name.like(f'%{operName}%'))
  38. if title:
  39. query = query.filter(CzrzEntity.action.like(f'%{title}%'))
  40. if dateRange:
  41. start_date, end_date = dateRange.split('-')
  42. # start_date = datetime.strptime(start_date, "%Y-%m-%d")
  43. # end_date = datetime.strptime(end_date, "%Y-%m-%d") + timedelta(days=1)
  44. query = query.filter(CzrzEntity.gxsj.between(start_date, end_date))
  45. total_count = query.count()
  46. offset = (pageNum - 1) * pageSize
  47. query = query.order_by(CzrzEntity.gxsj.desc()).offset(offset).limit(pageSize)
  48. czrz_list = query.all()
  49. # 将模型实例转换为字典
  50. czrz_list_dict = [{
  51. "operIp": item.ip,
  52. "operName": item.nick_name,
  53. "title": item.action,
  54. "czrz": item.czrz,
  55. "operTime": item.gxsj.strftime('%Y-%m-%d %H:%M:%S') if item.gxsj else '',
  56. } for item in czrz_list]
  57. return {
  58. "code": 200,
  59. "msg": "操作成功",
  60. "rows": czrz_list_dict,
  61. 'pages': (total_count + pageSize - 1) // pageSize,
  62. 'total': total_count,
  63. "currentPage": pageNum,
  64. "pageSize": pageSize,
  65. }