PosOrderNoRiderTimeoutTask.java 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. package com.ruoyi.app.order;
  2. import com.ruoyi.system.domain.PosOrder;
  3. import org.slf4j.Logger;
  4. import org.slf4j.LoggerFactory;
  5. import org.springframework.stereotype.Component;
  6. import java.util.Date;
  7. /** 由若依 sys_job 每分钟调度,事务由逐单服务方法提供。 */
  8. @Component("posOrderNoRiderTimeoutTask")
  9. public class PosOrderNoRiderTimeoutTask {
  10. private static final Logger log = LoggerFactory.getLogger(PosOrderNoRiderTimeoutTask.class);
  11. private final PosOrderNoRiderTimeoutService service;
  12. public PosOrderNoRiderTimeoutTask(PosOrderNoRiderTimeoutService service) {
  13. this.service = service;
  14. }
  15. public void openScheduledOrders() {
  16. Date now = new Date();
  17. for (PosOrder order : service.scheduledToOpen(now, 200)) {
  18. try {
  19. service.openScheduled(order.getId(), new Date());
  20. } catch (RuntimeException error) {
  21. log.error("Open scheduled food order failed, id={}", order.getId(), error);
  22. }
  23. }
  24. }
  25. public void cancelExpiredOrders() {
  26. Date now = new Date();
  27. int minutes = service.timeoutMinutes();
  28. for (PosOrder order : service.expiredCandidates(now, minutes, 200)) {
  29. try {
  30. service.cancelExpired(order.getId(), new Date(), minutes);
  31. } catch (RuntimeException error) {
  32. log.error("Cancel no-rider food order failed, id={}", order.getId(), error);
  33. }
  34. }
  35. }
  36. }