OrderCreateAfterJob.php 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. <?php
  2. namespace app\jobs;
  3. use app\services\order\StoreOrderCartInfoServices;
  4. use app\services\order\StoreOrderCreateServices;
  5. use app\services\order\StoreOrderComputedServices;
  6. use app\services\user\UserServices;
  7. use crmeb\basic\BaseJobs;
  8. use crmeb\traits\QueueTrait;
  9. use think\facade\Log;
  10. class OrderCreateAfterJob extends BaseJobs
  11. {
  12. use QueueTrait;
  13. /**
  14. * 订单后置处理
  15. * @param $orderId
  16. * @param $cartInfo
  17. * @param $priceData
  18. * @param $order
  19. * @param $data
  20. * @return bool
  21. */
  22. public function doJob($orderInfo, $data, $activity)
  23. {
  24. $uid = (int)$orderInfo['uid'];
  25. $orderId = (int)$orderInfo['id'];
  26. try {
  27. $cartInfo = $data['cartInfo'] ?? [];
  28. $priceData = $data['priceData'] ?? [];
  29. $addressId = $data['addressId'] ?? 0;
  30. $spread_ids = [];
  31. /** @var StoreOrderCreateServices $createService */
  32. $createService = app()->make(StoreOrderCreateServices::class);
  33. if ($cartInfo && $priceData) {
  34. /** @var StoreOrderCartInfoServices $cartServices */
  35. $cartServices = app()->make(StoreOrderCartInfoServices::class);
  36. [$cartInfo, $spread_ids] = $createService->computeOrderProductTruePrice($cartInfo, $priceData, $addressId, $uid, $orderInfo);
  37. $cartServices->updateCartInfo($orderId, $cartInfo);
  38. }
  39. $orderData = [];
  40. $spread_uid = $spread_two_uid = 0;
  41. /** @var UserServices $userServices */
  42. $userServices = app()->make(UserServices::class);
  43. if ($spread_ids) {
  44. [$spread_uid, $spread_two_uid] = $spread_ids;
  45. $orderData['spread_uid'] = $spread_uid;
  46. $orderData['spread_two_uid'] = $spread_two_uid;
  47. } else {
  48. $spread_uid = $userServices->getSpreadUid($uid);
  49. $orderData = ['spread_uid' => 0, 'spread_two_uid' => 0];
  50. if ($spread_uid) {
  51. $orderData['spread_uid'] = $spread_uid;
  52. }
  53. if ($spread_uid > 0) {
  54. $spread_two_uid = $userServices->getSpreadUid($spread_uid, [], false);
  55. if ($spread_two_uid) {
  56. $orderData['spread_two_uid'] = $spread_two_uid;
  57. }
  58. }
  59. }
  60. if ($cartInfo && !$activity) {
  61. /** @var StoreOrderComputedServices $orderComputed */
  62. $orderComputed = app()->make(StoreOrderComputedServices::class);
  63. if ($userServices->checkUserPromoter($spread_uid)) $orderData['one_brokerage'] = $orderComputed->getOrderSumPrice($cartInfo, 'one_brokerage', false);
  64. if ($userServices->checkUserPromoter($spread_two_uid)) $orderData['two_brokerage'] = $orderComputed->getOrderSumPrice($cartInfo, 'two_brokerage', false);
  65. $orderData['staff_brokerage'] = $orderComputed->getOrderSumPrice($cartInfo, 'staff_brokerage', false);
  66. $orderData['agent_brokerage'] = $orderComputed->getOrderSumPrice($cartInfo, 'agent_brokerage', false);
  67. $orderData['division_brokerage'] = $orderComputed->getOrderSumPrice($cartInfo, 'division_brokerage', false);
  68. }
  69. $createService->update(['id' => $orderId], $orderData);
  70. } catch (\Throwable $e) {
  71. Log::error('计算订单实际优惠、积分、邮费、佣金失败,原因:' . $e->getMessage());
  72. }
  73. return true;
  74. }
  75. }