CancelGroupOrderJob.php 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. <?php
  2. /**
  3. * @package merchant
  4. *
  5. * @author xaboy
  6. * @day 2020/6/9
  7. *
  8. *
  9. */
  10. namespace crmeb\jobs;
  11. use app\common\repositories\store\coupon\StoreCouponUserRepository;
  12. use app\common\repositories\store\order\StoreGroupOrderRepository;
  13. use app\common\repositories\store\product\ProductAttrValueRepository;
  14. use app\common\repositories\store\product\ProductRepository;
  15. use crmeb\interfaces\JobInterface;
  16. use think\facade\Db;
  17. use think\facade\Log;
  18. class CancelGroupOrderJob implements JobInterface
  19. {
  20. public function fire($job, $groupOrderId)
  21. {
  22. if (($attempts = $job->attempts()) == 1) {
  23. return $job->release(30);
  24. } else if ($attempts > 2) {
  25. return $job->delete();
  26. }
  27. $groupOrderRepository = app()->make(StoreGroupOrderRepository::class);
  28. $groupOrder = $groupOrderRepository->getCancelDetail($groupOrderId);
  29. if (!$groupOrder) return $job->delete();
  30. Db::transaction(function () use ($groupOrder) {
  31. $couponId = [];
  32. $productRepository = app()->make(ProductRepository::class);
  33. foreach ($groupOrder->orderList as $order) {
  34. if ($order->coupon_id)
  35. $couponId = array_merge($couponId, explode(',', $order->coupon_id));
  36. foreach ($order->orderProduct as $cart) {
  37. $productRepository->orderProductIncStock($cart);
  38. }
  39. }
  40. if (count($couponId)) {
  41. app()->make(StoreCouponUserRepository::class)->updates($couponId, ['status' => 0]);
  42. }
  43. });
  44. return $job->delete();
  45. }
  46. public function failed($data)
  47. {
  48. Log::info('取消订单执行失败:' . var_export($data, true));
  49. }
  50. }