CancelGroupOrderJob.php 1.5 KB

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