OrderRepo.java 3.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. package com.izouma.nineth.repo;
  2. import com.izouma.nineth.domain.Order;
  3. import com.izouma.nineth.enums.CollectionSource;
  4. import com.izouma.nineth.enums.OrderStatus;
  5. import com.izouma.nineth.enums.PayMethod;
  6. import org.springframework.data.jpa.repository.JpaRepository;
  7. import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
  8. import org.springframework.data.jpa.repository.Modifying;
  9. import org.springframework.data.jpa.repository.Query;
  10. import javax.transaction.Transactional;
  11. import java.time.LocalDateTime;
  12. import java.util.Collection;
  13. import java.util.List;
  14. import java.util.Optional;
  15. public interface OrderRepo extends JpaRepository<Order, Long>, JpaSpecificationExecutor<Order> {
  16. @Query("update Order t set t.del = true where t.id = ?1")
  17. @Modifying
  18. @Transactional
  19. void softDelete(Long id);
  20. Optional<Order> findByIdAndDelFalse(Long id);
  21. List<Order> findByStatusAndCreatedAtBeforeAndDelFalse(OrderStatus status, LocalDateTime time);
  22. List<Order> findByCollectionId(Long collectionId);
  23. int countByUserIdAndCollectionIdAndStatusIn(Long userId, Long collectionId, Iterable<OrderStatus> orderStatuses);
  24. int countByUserIdAndCountIdAndStatusIn(Long userId, String countId, Iterable<OrderStatus> orderStatuses);
  25. List<Order> findByStatus(OrderStatus orderStatus);
  26. @Query("select count(o) from Order o join Collection c on o.collectionId = c.id " +
  27. "where c.minterId = ?1 and c.source = 'OFFICIAL' and o.status <> 'NOT_PAID' and o.status <> 'CANCELLED'")
  28. long countSales(Long userId);
  29. Order findByTransactionId(String txId);
  30. long countAllByPayTimeAfter(LocalDateTime payTime);
  31. @Query("select id from Order where userId = ?1 and opened = false")
  32. List<Long> findAllByUserIdAndOpenedFalse(Long userId);
  33. int countByUserIdAndCollectionIdAndVipTrueAndStatusIn(Long userId, Long collectionId, Collection<OrderStatus> status);
  34. List<Order> findAllByStatus(OrderStatus status);
  35. List<Order> findAllByStatusAndMinterId(OrderStatus status, Long minterId);
  36. List<Order> findAllByCreatedAtIsAfterAndStatusIn(LocalDateTime payTime, List<OrderStatus> status);
  37. List<Order> findAllByCreatedAtIsAfterAndMinterIdAndStatusIn(LocalDateTime payTime, Long minterId, List<OrderStatus> status);
  38. @Query(nativeQuery = true, value = "select user_id, sum(price) total from raex.order_info " +
  39. "where (status = 'FINISH' or status = 'PROCESSING') " +
  40. "group by user_id order by sum(price) desc limit 50")
  41. List<Object[]> sumPrice();
  42. List<Order> findByCreatedAtBetweenAndSourceAndStatusIn(LocalDateTime start, LocalDateTime end, CollectionSource source, Collection<OrderStatus> statuses);
  43. @Query(nativeQuery = true, value = "select o.user_id from order_info o " +
  44. " WHERE o.created_at < ?2 and o.created_at > ?1 and o.status = 'CANCELLED' " +
  45. "GROUP BY o.user_id " +
  46. "HAVING count(*) > 20")
  47. List<Long> checkBlackList(LocalDateTime start, LocalDateTime end);
  48. @Query("update Order o set o.status = com.izouma.nineth.enums.OrderStatus.FINISH where o.id = ?1")
  49. @Transactional
  50. @Modifying
  51. int finishOrder(Long id);
  52. @Query("update Order o set o.status = com.izouma.nineth.enums.OrderStatus.PROCESSING, " +
  53. "o.payTime = ?2, o.payMethod = ?3, o.transactionId = ?4 where o.id = ?1")
  54. @Transactional
  55. @Modifying
  56. int processingOrder(Long id, LocalDateTime payTime, PayMethod payMethod, String transactionId);
  57. }