CreatedStbzOrderTranJob.php 6.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152
  1. <?php
  2. /**
  3. * 重庆赤晓店信息科技有限公司
  4. * https://www.chixiaodian.com
  5. * Copyright (c) 2023 赤店商城 All rights reserved.
  6. */
  7. namespace app\jobs;
  8. use app\constants\OptionSetting;
  9. use app\models\Order;
  10. use app\models\OrderDetail;
  11. use app\modules\admin\models\MerchantForm;
  12. use yii\base\BaseObject;
  13. use yii\queue\JobInterface;
  14. /**
  15. * 创建胜天半子订单
  16. */
  17. class CreatedStbzOrderTranJob extends BaseObject implements JobInterface
  18. {
  19. public $data;
  20. public function execute($queue)
  21. {
  22. try {
  23. $post_data = $this->data;
  24. $supplier_id = $post_data['supplier_id'];
  25. if (isset($post_data['pifa']) && $post_data['pifa']) {
  26. $address = json_decode($post_data['address_data'], true);
  27. $spu = [];
  28. foreach ($post_data['goods_list'] as $goods) {
  29. if (!is_array($goods['attr'])) {
  30. $goods['attr'] = json_decode($goods['attr'], true);
  31. }
  32. if ((int)$goods['stbz_goods_id'] !== 0) {
  33. $spu[] = [
  34. 'number' => $goods['num'],
  35. 'sku' => $goods['attr']['no'],
  36. ];
  37. }
  38. }
  39. $params = [
  40. 'spu' => $spu,
  41. 'address' => [
  42. 'consignee' => $post_data['name'],
  43. 'phone' => $post_data['mobile'],
  44. 'province' => $address['province'],
  45. 'city' => $address['city'],
  46. 'area' => $address['district'],
  47. 'street' => '',
  48. 'description' => $address['address'],
  49. ]
  50. ];
  51. } else {
  52. $address_data = [];
  53. $orderTransit = \app\models\OrderTransit::findOne(['cloud_order_id' => $post_data['id']]);
  54. if ($orderTransit) {
  55. $order = \app\models\Order::findOne($orderTransit->order_id);
  56. if ($order) {
  57. if ($order->is_offline && $order->md_id) {
  58. $province_name = '';
  59. $city_name = '';
  60. $district_name = '';
  61. $address = '';
  62. $md = \app\models\Md::findOne($order->md_id);
  63. if ($md) {
  64. $province_name = \app\models\District::findOne($md->province)->name;
  65. $city_name = \app\models\District::findOne($md->city)->name;
  66. $district_name = \app\models\District::findOne($md->district)->name;
  67. $address = $md->address;
  68. }
  69. } else {
  70. $province_name = \app\models\District::findOne($order->province_id)->name;
  71. $city_name = \app\models\District::findOne($order->city_id)->name;
  72. $district_name = \app\models\District::findOne($order->district_id)->name;
  73. $address = $order->address;
  74. }
  75. $address_data = [
  76. 'province' => $province_name,
  77. 'city' => $city_name ?? '',
  78. 'district' => $district_name ?? '',
  79. 'address' => $address ?? ''
  80. ];
  81. }
  82. }
  83. $spu = [];
  84. foreach ($post_data['goods_list'] as $goods) {
  85. if ((int)$goods['stbz_goods_id'] !== 0) {
  86. $spu[] = [
  87. 'number' => $goods['num'],
  88. 'sku' => $goods['attr']['no'],
  89. ];
  90. }
  91. }
  92. $params = [
  93. 'spu' => $spu,
  94. 'address' => [
  95. 'consignee' => $post_data['name'],
  96. 'phone' => $post_data['mobile'],
  97. 'province' => $post_data['province'] ?: ($address_data['province'] ?? ''),
  98. 'city' => $post_data['city'] ?: ($address_data['city'] ?? ''),
  99. 'area' => $post_data['district'] ?: ($address_data['district'] ?? ''),
  100. 'street' => '',
  101. 'description' => $post_data['address'] ?: ($address_data['address'] ?? ''),
  102. ]
  103. ];
  104. }
  105. debug_log('胜天半子商品信息' . json_encode($params));
  106. $checkData = \stbz_client()->getApiResponse('post', '/v2/order/beforeCheck', $params);
  107. $checkData = \json_decode($checkData, true);
  108. debug_log('胜天半子下单检测' . json_encode($checkData));
  109. if ($checkData['code'] != 1) {
  110. throw new \Exception($checkData['msg']);
  111. }
  112. $params['orderSn'] = $post_data['order_no'];
  113. $data = \stbz_client()->getApiResponse('post', '/v2/order', $params);
  114. $data = \json_decode($data, true);
  115. debug_log('胜天半子下单检测' . json_encode($data));
  116. if ($data['code'] != 1) {
  117. throw new \Exception($data['msg']);
  118. }
  119. //获取订单信息
  120. $order_url = "/cloud/supplier/supplierSetStbzOrderStatus";
  121. $order_data['order_id'] = $post_data['id'];
  122. $order_data['status'] = 1;
  123. $order_data['access_token'] = get_supplier_token($supplier_id);
  124. $orderNoHead = substr($post_data['order_no'], 0, 2);
  125. if ($orderNoHead === 'PO') {
  126. $order_data['order_type'] = 1;
  127. } elseif ($orderNoHead === 'OR') {
  128. $order_data['order_type'] = 2;
  129. }
  130. $order_data['status'] = 1;
  131. $domain = (new OptionSetting)->getCloudDomainName();
  132. $orderInfo = cloud_post($domain. $order_url,
  133. $order_data);
  134. debug_log('胜天半子更改订单状态' . json_encode($orderInfo));
  135. } catch (\Exception $e) {
  136. debug_log('胜天半子自动转单----'. json_encode($e->getFile() . $e->getMessage() . $e->getLine()));
  137. }
  138. }
  139. }