QuickAskAuditLogRepository.java 1.4 KB

12345678910111213141516171819202122232425262728293031323334
  1. package com.pharmacopoeia.repository;
  2. import com.pharmacopoeia.entity.QuickAskAuditLog;
  3. import org.springframework.data.domain.Page;
  4. import org.springframework.data.domain.Pageable;
  5. import org.springframework.data.jpa.repository.JpaRepository;
  6. import org.springframework.data.jpa.repository.Query;
  7. import org.springframework.data.repository.query.Param;
  8. import org.springframework.stereotype.Repository;
  9. import java.time.Instant;
  10. @Repository
  11. public interface QuickAskAuditLogRepository extends JpaRepository<QuickAskAuditLog, Long> {
  12. Page<QuickAskAuditLog> findAllByOrderByCreatedAtDesc(Pageable pageable);
  13. /**
  14. * 按操作类型筛选审计日志(action = CREATE / UPDATE / DELETE)
  15. * 前端 auditLog 接口可传 action 参数,后端自动使用此方法查询
  16. */
  17. Page<QuickAskAuditLog> findByActionOrderByCreatedAtDesc(String action, Pageable pageable);
  18. @Query("SELECT a FROM QuickAskAuditLog a WHERE "
  19. + "(:action IS NULL OR a.action = :action) AND "
  20. + "(:startTime IS NULL OR a.createdAt >= :startTime) AND "
  21. + "(:endTime IS NULL OR a.createdAt < :endTime) "
  22. + "ORDER BY a.createdAt DESC")
  23. Page<QuickAskAuditLog> findByFilters(
  24. @Param("action") String action,
  25. @Param("startTime") Instant startTime,
  26. @Param("endTime") Instant endTime,
  27. Pageable pageable);
  28. }