Sfoglia il codice sorgente

同步商品添加任务异常时间盘点

haozi 5 anni fa
parent
commit
eda9d0b3f0
2 ha cambiato i file con 43 aggiunte e 5 eliminazioni
  1. 40 2
      app/Console/Commands/SyncWmsCommoditiesInformation.php
  2. 3 3
      config/sync.php

+ 40 - 2
app/Console/Commands/SyncWmsCommoditiesInformation.php

@@ -4,11 +4,18 @@ namespace App\Console\Commands;
 
 
 use App\Services\CommodityService;
+use App\ValueStore;
 use Illuminate\Console\Command;
+use Illuminate\Support\Carbon;
+use Illuminate\Support\Facades\Cache;
 
 class SyncWmsCommoditiesInformation extends Command
 {
 
+    private $task_start_at;
+    private $task_end_at;
+    private $restart;
+    private $is_enabled;
     /**
      * The name and signature of the console command.
      *
@@ -33,14 +40,45 @@ class SyncWmsCommoditiesInformation extends Command
         parent::__construct();
     }
 
+    public function init()
+    {
+        $this->task_start_at = config('sync.commodity_sync.task_start_at');
+        $this->task_end_at = config('sync.commodity_sync.task_end_at');
+        $this->restart = config('sync.commodity_sync.restart');
+        $this->is_enabled= config('sync.commodity_sync.enabled');
+    }
     /**
      * Execute the console command.
-     *
-     * @return int
      */
     public function handle()
     {
+        $this->init();
+        if($this->is_enabled=='false')return;
+        sleep(rand(2,3));
+        $start_time =  Cache::remember($this->task_start_at,null,function (){
+            return ValueStore::query()->firstOrCreate(['name'=>$this->task_start_at])->first()->value;
+        });
+        $end_time =  Cache::remember($this->task_end_at,null,function (){
+            return  ValueStore::query()->firstOrCreate(['name'=>$this->task_end_at])->first()->value;
+        });
+
+        $start = Carbon::now();
+        // 判断上一次任务异常了
+        //1.第一次就异常了
+        if(isset($start_time) && empty($end_time) && $start->diffInMinutes(Carbon::parse($start_time)) < $this->restart)return;
+        //2.中间某次异常了
+        if(isset($start_time) && isset($end_time)
+            && Carbon::parse($end_time)->lt(Carbon::parse($start_time))
+            && $start->diffInMinutes(Carbon::parse($start_time)) < $this->restart)
+            return;
+
+        $start = (string)$start;
+        Cache::put($this->task_start_at,$start);
+        ValueStore::query()->where('name',$this->task_start_at)->update(['value'=>$start]);
         $this->SyncWmsCommoditiesInformation();
+        $end = (string)Carbon::now();
+        Cache::put($this->task_end_at,$end);
+        ValueStore::query()->where('name',$this->task_end_at)->update(['value'=>$end]);
     }
 
     public function SyncWmsCommoditiesInformation(){

+ 3 - 3
config/sync.php

@@ -19,9 +19,9 @@ return [
     'commodity_sync' => [
         'enabled' => true,
         'restart' => 10,  //重新启动时间 分钟为单位
-        'last_start_at' => 'last_commodity_sync_task_start_at',
-        'last_end_at' => 'last_commodity_sync_task_end_at',
-        'last_err_at' => 'last_commodity_sync_task_error_at',
+        'task_start_at' => 'last_commodity_sync_task_start_at',
+        'task_end_at' => 'last_commodity_sync_task_end_at',
+        'task_err_at' => 'last_commodity_sync_task_error_at',
         'created_at'=>'commodity_last_created_sync_at',
         'updated_at'=>'commodity_last_updated_sync_at',
         'cache_prefix'=>[