OrderCreateAfterJob.php 4.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. <?php
  2. // +----------------------------------------------------------------------
  3. // | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
  4. // +----------------------------------------------------------------------
  5. // | Copyright (c) 2016~2026 https://www.crmeb.com All rights reserved.
  6. // +----------------------------------------------------------------------
  7. // | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
  8. // +----------------------------------------------------------------------
  9. // | Author: CRMEB Team <admin@crmeb.com>
  10. // +----------------------------------------------------------------------
  11. namespace app\jobs;
  12. use app\services\activity\combination\StoreCombinationServices;
  13. use app\services\order\StoreOrderCartInfoServices;
  14. use app\services\order\StoreOrderCreateServices;
  15. use app\services\order\StoreOrderComputedServices;
  16. use app\services\user\UserServices;
  17. use crmeb\basic\BaseJobs;
  18. use crmeb\traits\QueueTrait;
  19. use think\facade\Log;
  20. class OrderCreateAfterJob extends BaseJobs
  21. {
  22. use QueueTrait;
  23. /**
  24. * 订单后置处理
  25. * @param $orderId
  26. * @param $cartInfo
  27. * @param $priceData
  28. * @param $order
  29. * @param $data
  30. * @return bool
  31. */
  32. public function doJob($orderInfo, $data, $activity)
  33. {
  34. $uid = (int)$orderInfo['uid'];
  35. $orderId = (int)$orderInfo['id'];
  36. try {
  37. $cartInfo = $data['cartInfo'] ?? [];
  38. $priceData = $data['priceData'] ?? [];
  39. $addressId = $data['addressId'] ?? 0;
  40. $spread_ids = [];
  41. /** @var StoreOrderCreateServices $createService */
  42. $createService = app()->make(StoreOrderCreateServices::class);
  43. if ($cartInfo && $priceData) {
  44. /** @var StoreOrderCartInfoServices $cartServices */
  45. $cartServices = app()->make(StoreOrderCartInfoServices::class);
  46. [$cartInfo, $spread_ids] = $createService->computeOrderProductTruePrice($cartInfo, $priceData, $addressId, $uid, $orderInfo);
  47. $cartServices->updateCartInfo($orderId, $cartInfo);
  48. }
  49. $orderData = [];
  50. $spread_uid = $spread_two_uid = 0;
  51. /** @var UserServices $userServices */
  52. $userServices = app()->make(UserServices::class);
  53. if ($spread_ids) {
  54. [$spread_uid, $spread_two_uid] = $spread_ids;
  55. $orderData['spread_uid'] = $spread_uid;
  56. $orderData['spread_two_uid'] = $spread_two_uid;
  57. } else {
  58. $spread_uid = $userServices->getSpreadUid($uid);
  59. $orderData = ['spread_uid' => 0, 'spread_two_uid' => 0];
  60. if ($spread_uid) {
  61. $orderData['spread_uid'] = $spread_uid;
  62. }
  63. if ($spread_uid > 0 && sys_config('brokerage_level') == 2) {
  64. $spread_two_uid = $userServices->getSpreadUid($spread_uid, [], false);
  65. if ($spread_two_uid) {
  66. $orderData['spread_two_uid'] = $spread_two_uid;
  67. }
  68. }
  69. }
  70. $isCommission = 0;
  71. if ($orderInfo['combination_id']) {
  72. //检测拼团是否参与返佣
  73. /** @var StoreCombinationServices $combinationServices */
  74. $combinationServices = app()->make(StoreCombinationServices::class);
  75. $isCommission = $combinationServices->value(['id' => $orderInfo['combination_id']], 'is_commission');
  76. }
  77. if ($cartInfo && (!$activity || $isCommission)) {
  78. /** @var StoreOrderComputedServices $orderComputed */
  79. $orderComputed = app()->make(StoreOrderComputedServices::class);
  80. if ($userServices->checkUserPromoter($spread_uid)) $orderData['one_brokerage'] = $orderComputed->getOrderSumPrice($cartInfo, 'one_brokerage', false);
  81. if ($userServices->checkUserPromoter($spread_two_uid)) $orderData['two_brokerage'] = $orderComputed->getOrderSumPrice($cartInfo, 'two_brokerage', false);
  82. $orderData['staff_brokerage'] = $orderComputed->getOrderSumPrice($cartInfo, 'staff_brokerage', false);
  83. $orderData['agent_brokerage'] = $orderComputed->getOrderSumPrice($cartInfo, 'agent_brokerage', false);
  84. $orderData['division_brokerage'] = $orderComputed->getOrderSumPrice($cartInfo, 'division_brokerage', false);
  85. }
  86. $createService->update(['id' => $orderId], $orderData);
  87. } catch (\Throwable $e) {
  88. Log::error('计算订单实际优惠、积分、邮费、佣金失败,原因:' . $e->getMessage());
  89. }
  90. return true;
  91. }
  92. }