AutoCancelGroupOrderListen.php 1021 B

12345678910111213141516171819202122232425262728293031
  1. <?php
  2. namespace ln\listens;
  3. use app\common\repositories\store\order\StoreGroupOrderRepository;
  4. use crmeb\interfaces\ListenerInterface;
  5. use crmeb\services\TimerService;
  6. use think\facade\Log;
  7. class AutoCancelGroupOrderListen extends TimerService implements ListenerInterface
  8. {
  9. public function handle($event): void
  10. {
  11. $this->tick(60000, function () {
  12. $storeGroupOrderRepository = app()->make(StoreGroupOrderRepository::class);
  13. request()->clearCache();
  14. $timer = ((int)systemConfig('auto_close_order_timer')) ?: 15;
  15. $time = date('Y-m-d H:i:s', strtotime("- $timer minutes"));
  16. $groupOrderIds = $storeGroupOrderRepository->getTimeOutIds($time);
  17. foreach ($groupOrderIds as $id) {
  18. try {
  19. $storeGroupOrderRepository->cancel($id);
  20. } catch (\Exception $e) {
  21. Log::info('自动关闭订单失败' . var_export($id, 1));
  22. }
  23. }
  24. });
  25. }
  26. }