| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071 |
- <?php
- namespace App\Jobs;
- use App\OrderPackage;
- use App\Services\LogisticYDService;
- use App\Services\LogService;
- use App\Services\OrderPackageReceivedSyncService;
- use Illuminate\Bus\Queueable;
- use Illuminate\Contracts\Queue\ShouldQueue;
- use Illuminate\Foundation\Bus\Dispatchable;
- use Illuminate\Queue\InteractsWithQueue;
- use Illuminate\Queue\SerializesModels;
- use Illuminate\Support\Facades\Cache;
- class LogisticYDSync implements ShouldQueue
- {
- const TAG = 'LOGISTIC_YD_SYNC';
- public $tries = 2;
- public $timeout = 10;
- use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
- /** @var $logistic_number string */
- protected $logistic_number;
- /** @var $logisticYDService LogisticYDService */
- protected $logisticYDService;
- /** @var $orderPackageReceivedSyncService OrderPackageReceivedSyncService */
- protected $orderPackageReceivedSyncService;
- /**
- * LogisticYDSync constructor.
- * @param $logistic_number
- */
- public function __construct($logistic_number)
- {
- $this->logistic_number = $logistic_number;
- }
- /**
- * Execute the job.
- *
- * @return void
- */
- public function handle()
- {
- LogService::log(LogisticYDSync::class, "JOB-YD", $this->logistic_number);
- //标记上有同步的操作
- OrderPackage::query()->where('logistic_number', $this->logistic_number)->update(['sync_routes_flag' => true]);
- $this->logisticYDService = app('LogisticYDService');
- //先订阅订单
- $hasRegistered = Cache::tags([self::TAG])->get($this->logistic_number, false);
- if (!$hasRegistered) {
- $registerResult = $this->logisticYDService->registerApi([$this->logistic_number]);
- if ($registerResult->code === '0000') {
- Cache::tags([self::TAG])->put($this->logistic_number, true, 60 * 60 * 24 * 3);
- }
- }
- //查询订单路由信息
- $nativeResponse = $this->logisticYDService->query($this->logistic_number);
- //格式化信息
- $formattedData = $this->logisticYDService->format($nativeResponse, $this->logistic_number);
- $this->orderPackageReceivedSyncService = app('OrderPackageReceivedSyncService');
- //更新数据
- $this->orderPackageReceivedSyncService->update([$formattedData]);
- }
- }
|