log.py 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637
  1. from datetime import datetime,timedelta
  2. from core.dtos import LogDto
  3. from stores import LogStore
  4. class LogService:
  5. def __init__(self):
  6. self.log_store = LogStore()
  7. pass
  8. def get_logs_paginated(self, page:int, page_size:int, username:str, operation_type:str, operation_module:str, operation_result:int, start_time:str, end_time:str):
  9. # 处理开始时间和结束时间
  10. start_datetime = None
  11. end_datetime = None
  12. try:
  13. if start_time:
  14. start_datetime = datetime.strptime(start_time, '%Y-%m-%d').replace(hour=0, minute=0, second=0)
  15. if end_time:
  16. end_datetime = datetime.strptime(end_time, '%Y-%m-%d').replace(hour=0, minute=0, second=0)
  17. # 使用timedelta来处理结束时间加一天
  18. end_datetime = end_datetime + timedelta(days=1)
  19. except ValueError as e:
  20. raise ValueError(f"日期格式错误,请使用YYYY-MM-DD格式: {str(e)}")
  21. data = self.log_store.query_logs(page,page_size,username,operation_type,operation_module,operation_result,start_datetime,end_datetime)
  22. return [LogDto.from_model(item).to_dict() for item in data.get('data',[])], data.get('total',0)
  23. def add_operation_log(self,
  24. username:str,
  25. operation_type:str,
  26. operation_module:str,
  27. operation_desc:str,
  28. operation_result:int,
  29. operation_data:str = None,
  30. data_changes:str = None,
  31. operation_ip:str = None,
  32. ):
  33. self.log_store.insert_log(username,operation_type,operation_desc,operation_result,operation_module,operation_data,data_changes,operation_ip)