作者 lyh

Merge branch 'master' of http://47.244.231.31:8099/zhl/globalso-v6 into develop

@@ -7,7 +7,9 @@ use App\Exceptions\InquiryFilterException; @@ -7,7 +7,9 @@ use App\Exceptions\InquiryFilterException;
7 use App\Services\SyncSubmitTaskService; 7 use App\Services\SyncSubmitTaskService;
8 use Illuminate\Console\Command; 8 use Illuminate\Console\Command;
9 use App\Models\SyncSubmitTask\SyncSubmitTask as SyncSubmitTaskModel; 9 use App\Models\SyncSubmitTask\SyncSubmitTask as SyncSubmitTaskModel;
  10 +use Illuminate\Support\Facades\DB;
10 use Illuminate\Support\Facades\Redis; 11 use Illuminate\Support\Facades\Redis;
  12 +use Illuminate\Support\Facades\Schema;
11 use Illuminate\Support\Str; 13 use Illuminate\Support\Str;
12 14
13 /** 15 /**
@@ -25,9 +27,17 @@ class SyncSubmitTask extends Command @@ -25,9 +27,17 @@ class SyncSubmitTask extends Command
25 27
26 public function handle() 28 public function handle()
27 { 29 {
  30 + $backup = false;
28 while (true) { 31 while (true) {
29 $task_id = $this->getTaskId(); 32 $task_id = $this->getTaskId();
  33 + if ($task_id > 2000000) {
  34 + $backup = true;
  35 + }
30 if (empty($task_id)) { 36 if (empty($task_id)) {
  37 + if ($backup) {
  38 + $this->backup();
  39 + $backup = false;
  40 + }
31 sleep(5); 41 sleep(5);
32 continue; 42 continue;
33 } 43 }
@@ -43,7 +53,7 @@ class SyncSubmitTask extends Command @@ -43,7 +53,7 @@ class SyncSubmitTask extends Command
43 $task_info->save(); 53 $task_info->save();
44 54
45 $this->output('任务完成'); 55 $this->output('任务完成');
46 - } catch (InquiryFilterException $e){ 56 + } catch (InquiryFilterException $e) {
47 $task_info->status = 1; 57 $task_info->status = 1;
48 $task_info->is_filtered = 1; 58 $task_info->is_filtered = 1;
49 $task_info->remark = $e->getMessage(); 59 $task_info->remark = $e->getMessage();
@@ -65,11 +75,12 @@ class SyncSubmitTask extends Command @@ -65,11 +75,12 @@ class SyncSubmitTask extends Command
65 } 75 }
66 } 76 }
67 77
68 - public function getTaskId(){ 78 + public function getTaskId()
  79 + {
69 $task_id = Redis::rpop('sync_submit_task'); 80 $task_id = Redis::rpop('sync_submit_task');
70 if (empty($task_id)) { 81 if (empty($task_id)) {
71 - $ids = SyncSubmitTaskModel::where('status', 0)->pluck('id');  
72 - foreach($ids as $id){ 82 + $ids = SyncSubmitTaskModel::where('status', 0)->limit(100)->pluck('id');
  83 + foreach ($ids as $id) {
73 Redis::lpush('sync_submit_task', $id); 84 Redis::lpush('sync_submit_task', $id);
74 } 85 }
75 $task_id = Redis::rpop('sync_submit_task'); 86 $task_id = Redis::rpop('sync_submit_task');
@@ -86,4 +97,30 @@ class SyncSubmitTask extends Command @@ -86,4 +97,30 @@ class SyncSubmitTask extends Command
86 return true; 97 return true;
87 } 98 }
88 99
  100 + /**
  101 + * 备份数据
  102 + * @author zbj
  103 + * @date 2024/1/23
  104 + */
  105 + public function backup()
  106 + {
  107 + DB::beginTransaction();
  108 + try {
  109 + $table = (new SyncSubmitTaskModel())->getTable();
  110 + $new_table = $table . '_backup_' . date('Ymd');
  111 +
  112 + //重命名当前表
  113 + Schema::rename($table, $new_table);
  114 + //克隆表数据
  115 + DB::statement('CREATE TABLE ' . $table . ' LIKE ' . $new_table);
  116 +
  117 + DB::commit();
  118 +
  119 + $this->output('数据备份成功');
  120 + } catch (\Exception $e) {
  121 + $this->output('数据备份失败' . $e->getMessage());
  122 + DB::rollBack();
  123 + }
  124 + return true;
  125 + }
89 } 126 }