Переглянути джерело

[智价云] 清洗功能补充

tangyuanwang 5 днів тому
батько
коміт
bdc9fd3744

+ 18 - 0
app/Http/Controllers/Manager/Process/ControlGoods.php

@@ -206,4 +206,22 @@ class ControlGoods extends Controller
         // 告知结果
         return             json_send(['code' => 'success', 'msg' => '删除成功']);
     }
+
+    /**
+     * 执行数据清洗
+     * @author    唐远望
+     * @version   1.0
+     * @date      2025-12-11
+     * 
+     */
+    public function data_cleaning(Request $request)
+    {
+         // 验证参数
+        $request->scene('data_cleaning')->validate();
+        $access_token = request('access_token', '');
+        $admin_id=$access_token['uid'];
+        $message_data =['page'=>'1','limit'=>50,'admin_id'=>$admin_id];
+        // 告知结果
+        return             json_send(['code' => 'success', 'msg' => '执行成功']);
+    }
 }

+ 21 - 0
app/Http/Controllers/Manager/Process/LowPriceGoods.php

@@ -5,6 +5,7 @@ namespace App\Http\Controllers\Manager\Process;
 use App\Http\Controllers\Controller;
 use App\Http\Requests\Manager\Process\LowPriceGoods as Request;
 use App\Models\Manager\Process\LowPriceGoods as LowPriceGoodsModel;
+use App\Jobs\Manager\Process\LowPriceGoodsJobs;
 
 /**
  * 违规处理-低价商品
@@ -208,4 +209,24 @@ class LowPriceGoods extends Controller
         // 告知结果
         return             json_send(['code' => 'success', 'msg' => '删除成功']);
     }
+
+    /**
+     * 执行数据清洗
+     * @author    唐远望
+     * @version   1.0
+     * @date      2025-12-11
+     * 
+     */
+    public function data_cleaning(Request $request)
+    {
+         // 验证参数
+        $request->scene('data_cleaning')->validate();
+        $access_token = request('access_token', '');
+        $admin_id=$access_token['uid'];
+        $message_data =['page'=>'1','limit'=>50,'admin_id'=>$admin_id];
+        LowPriceGoodsJobs::dispatch($message_data);
+        // LowPriceGoodsJobs::dispatchSync($message_data);
+        // 告知结果
+        return             json_send(['code' => 'success', 'msg' => '执行成功']);
+    }
 }

+ 21 - 0
app/Http/Controllers/Manager/Process/ViolationProduct.php

@@ -5,6 +5,7 @@ namespace App\Http\Controllers\Manager\Process;
 use App\Http\Controllers\Controller;
 use App\Http\Requests\Manager\Process\ViolationProduct as Request;
 use App\Models\Manager\Process\ViolationProduct as ViolationProductModel;
+use App\Jobs\Manager\Process\ViolationProductJobs;
 
 /**
  * 违规处理-违规商品
@@ -207,4 +208,24 @@ class ViolationProduct extends Controller
         // 告知结果
         return             json_send(['code' => 'success', 'msg' => '删除成功']);
     }
+
+    /**
+     * 执行数据清洗
+     * @author    唐远望
+     * @version   1.0
+     * @date      2025-12-11
+     * 
+     */
+    public function data_cleaning(Request $request)
+    {
+         // 验证参数
+        $request->scene('data_cleaning')->validate();
+        $access_token = request('access_token', '');
+        $admin_id=$access_token['uid'];
+        $message_data =['page'=>'1','limit'=>50,'admin_id'=>$admin_id];
+        ViolationProductJobs::dispatch($message_data);
+        // ViolationProductJobs::dispatchSync($message_data);
+        // 告知结果
+        return             json_send(['code' => 'success', 'msg' => '执行成功']);
+    }
 }

+ 21 - 1
app/Http/Controllers/Manager/Process/ViolationStore.php

@@ -5,7 +5,7 @@ namespace App\Http\Controllers\Manager\Process;
 use App\Http\Controllers\Controller;
 use App\Http\Requests\Manager\Process\ViolationStore as Request;
 use App\Models\Manager\Process\ViolationStore as ViolationStoreModel;
-
+use App\Jobs\Manager\Process\ViolationStoreJobs;
 
 /**
  * 违规处理-违规店铺
@@ -206,4 +206,24 @@ class ViolationStore extends Controller
         // 告知结果
         return             json_send(['code' => 'success', 'msg' => '删除成功']);
     }
+
+    /**
+     * 执行数据清洗
+     * @author    唐远望
+     * @version   1.0
+     * @date      2025-12-11
+     * 
+     */
+    public function data_cleaning(Request $request)
+    {
+         // 验证参数
+        $request->scene('data_cleaning')->validate();
+        $access_token = request('access_token', '');
+        $admin_id=$access_token['uid'];
+        $message_data =['page'=>'1','limit'=>50,'admin_id'=>$admin_id];
+        ViolationStoreJobs::dispatch($message_data);
+        // ViolationStoreJobs::dispatchSync($message_data);
+        // 告知结果
+        return             json_send(['code' => 'success', 'msg' => '执行成功']);
+    }
 }

+ 1 - 0
app/Http/Requests/Manager/Process/ControlGoods.php

@@ -79,6 +79,7 @@ class ControlGoods extends BaseRequest
         'set_status'              => ['id', 'status'],
         'set_processing_status'   => ['id', 'processing_status'],
         'delete'                  => ['id'],
+        'data_cleaning'           => [''],
     ];
 
     /**

+ 1 - 0
app/Http/Requests/Manager/Process/LowPriceGoods.php

@@ -79,6 +79,7 @@ class LowPriceGoods extends BaseRequest
         'set_status'              => ['id', 'status'],
         'set_processing_status'   => ['id', 'processing_status'],
         'delete'                  => ['id'],
+        'data_cleaning'           => [''],
     ];
 
     /**

+ 1 - 0
app/Http/Requests/Manager/Process/ViolationProduct.php

@@ -75,6 +75,7 @@ class ViolationProduct extends BaseRequest
         'set_status'              => ['id', 'status'],
         'set_processing_status'   => ['id', 'processing_status'],
         'delete'                  => ['id'],
+        'data_cleaning'           => [''],
     ];
 
     /**

+ 1 - 0
app/Http/Requests/Manager/Process/ViolationStore.php

@@ -71,6 +71,7 @@ class ViolationStore extends BaseRequest
         'set_status'              => ['id', 'status'],
         'set_processing_status'   => ['id', 'processing_status'],
         'delete'                  => ['id'],
+        'data_cleaning'           => [''],
     ];
 
     /**

+ 36 - 26
app/Jobs/Manager/Process/LowPriceGoodsDataJobs.php

@@ -60,50 +60,60 @@ class LowPriceGoodsDataJobs implements ShouldQueue
         $EmployeeModel = new EmployeeModel();
         $LowPriceGoodsModel = new LowPriceGoodsModel();
         $ScrapeDataModel = new ScrapeDataModel();
-        $platform = $message_data['platform'];//多个平台配置
-        $product_name = $message_data['product_name'];//商品名称
-        $product_specs = $message_data['product_specs'];//商品规格
-        $suggested_price = $message_data['suggested_price'];//指导价格
-        $store_scope = $message_data['store_scope'];//店铺范围(为空时全部)
+        $platform = $message_data['platform']; //多个平台配置
+        $product_name = $message_data['product_name']; //商品名称
+        $product_specs = $message_data['product_specs']; //商品规格
+        $suggested_price = $message_data['suggested_price']; //指导价格
+        $store_scope = $message_data['store_scope']; //店铺范围1=全部店铺2=指定店铺
+        $company_scope = $message_data['company_scope']; //公司范围1=全部公司2=指定公司
+        $social_credit_code = $message_data['social_credit_code']; //社会信用代码
         $executeLog_id = $message_data['executeLog_id'];
         $limit = isset($message_data['limit']) ? $message_data['limit'] : 50;
         $page = isset($message_data['page']) ? $message_data['page'] : 1;
-        
-        $where=[];
-        $where[] = ['platform', 'in', $platform];
-        $where[] = ['product_name', 'like', '%'. $product_name. '%'];
-        $where[] = ['product_specs', 'like', '%'. $product_specs. '%'];
-        $where[] = ['suggested_price', '<', $suggested_price];
-        if($store_scope){
-            $where[] = ['store_name', 'like', '%'. $store_scope. '%'];
+       
+        $where = [];
+        if ($platform != 'all') {
+            $platform = explode(',', $platform);
+            $ScrapeDataModel=$ScrapeDataModel->whereIn('platform', $platform);
         }
-        $product_datas = $ScrapeDataModel->where($where)->get()->toarray(); //商品数据
+        $where[] = ['product_name', 'like', '%' . $product_name . '%'];
+        $where[] = ['product_specs', 'like', '%' . $product_specs . '%'];
+        $where[] = ['one_box_price', '<', $suggested_price];
+        if ($company_scope == 2) {
+            $ScrapeDataModel->whereIn('qualification_number', $social_credit_code);
+        }
+        $product_data_info = $ScrapeDataModel->where($where)->paginate($limit, ['*'], 'page', $page)->toarray();
+        $product_datas = $product_data_info['data'];
         if (empty($product_datas)) {
-            (new ExecuteLogModel())->where('id', $executeLog_id)->update(['status' => 0]);
-            return false;
+            if($executeLog_id){
+                (new ExecuteLogModel())->where('id', $executeLog_id)->update(['status' => 0]);
+            }
+            return true;
         }
         foreach ($product_datas as $product_data) {
             $insert_product_data = [
-                'platform'    => $product_data['platform'],
+                'source_id'=> $product_data['id'],
+                'platform'    => $product_data['platform_id'],
                 'company_name'    => $product_data['company_name'],
-                'product_name'    => $product_data['product_name'],
-                'product_specs'    => $product_data['product_specs'],
-                'suggested_price'    => $product_data['suggested_price'],
-                'online_posting_price'    => $product_data['online_posting_price'],
+                'social_credit_code' => $product_data['qualification_number'],
+                'product_name'    => $product_name,
+                'product_specs'    => $product_specs,
+                'suggested_price'    => $suggested_price,
+                'online_posting_price'    => $product_data['one_box_price'],
                 'online_posting_cunt'    => $product_data['online_posting_cunt'],
                 'link_url'    => $product_data['link_url'],
                 'store_name'    => $product_data['store_name'],
             ];
             //查询配置的第一责任人
             $where_query1[] = ['city_ids', 'like', '%,' . $product_data['city_id'] . ',%'];
-            $where_query1[] = ['status', '=', 1];
-            $where_query1[] = ['duty_type', 'in', 1]; //责任类型1=第一责任人,2=责任人
+            $where_query1[] = ['status', '=', 0];
+            $where_query1[] = ['duty_type', '=', 1]; //责任类型1=第一责任人,2=责任人
             $first_responsible_person = $EmployeeModel->where($where_query1)->pluck('id')->implode(',');
             $insert_product_data['first_responsible_person'] = $first_responsible_person;
             //查询配置的责任人
             $where_query2[] = ['city_ids', 'like', '%,' . $product_data['city_id'] . ',%'];
-            $where_query2[] = ['status', '=', 1];
-            $where_query2[] = ['duty_type', 'in', 2]; //责任类型1=第一责任人,2=责任人
+            $where_query2[] = ['status', '=', 0];
+            $where_query2[] = ['duty_type', '=', 2]; //责任类型1=第一责任人,2=责任人
             $responsible_person = $EmployeeModel->where($where_query2)->pluck('id')->implode(',');
             $insert_product_data['responsible_person'] = $responsible_person;
             //溯源责任人
@@ -118,7 +128,7 @@ class LowPriceGoodsDataJobs implements ShouldQueue
         //继续执行下一页
         $message_data['page'] = $page + 1;
         $message_data['limit'] = $limit;
-        LowPriceGoodsDataJobs::dispatch($message_data);
+        $this->dispatch($message_data);
     }
 
 

+ 19 - 6
app/Jobs/Manager/Process/LowPriceGoodsJobs.php

@@ -12,6 +12,8 @@ use App\Facades\Servers\Logs\Log;
 use App\Models\Manager\WashConfig\LowPriceGoods as ConfigLowPriceGoodsModel;
 use App\Models\Api\Process\ExecuteLog as ExecuteLogModel;
 use App\Jobs\Manager\Process\LowPriceGoodsDataJobs;
+use App\Models\Manager\WashConfig\ViolationStore as ViolationStoreModel;
+use App\Models\Manager\WashConfig\LowPriceGoodsCompany as LowPriceGoodsCompanyModel;
 
 /**
  * 数据清洗-低价挂网商品配置队列
@@ -42,35 +44,46 @@ class LowPriceGoodsJobs implements ShouldQueue
     {
         try {
             $ConfigLowPriceGoodsModel = new ConfigLowPriceGoodsModel();
+            $LowPriceGoodsCompanyModel = new LowPriceGoodsCompanyModel();
             $limit = isset($this->message_data['limit']) ? $this->message_data['limit'] : 50;
             $page = isset($this->message_data['page']) ? $this->message_data['page'] : 1;
             $executeLog_id = isset($this->message_data['executeLog_id']) ? $this->message_data['executeLog_id'] : 0;
-            if($page == 1){
+            $admin_id = isset($this->message_data['admin_id']) ? $this->message_data['admin_id'] : 0;
+            if ($page == 1) {
                 $ExecuteLogModel = new ExecuteLogModel();
-                $insert_data =['name' =>'低价挂网商品', 'code' => 'LowPriceGoodsJobs'];
-                $executeLog_id=$ExecuteLogModel->addExecuteLog_content($insert_data);
+                $insert_data = ['name' => '低价挂网商品', 'code' => 'LowPriceGoodsJobs', 'admin_id' => $admin_id];
+                $executeLog_id = $ExecuteLogModel->addExecuteLog_content($insert_data);
             }
-            $list_data = $ConfigLowPriceGoodsModel->where('status', 1)->paginate($limit, ['*'], 'page', $page)->get()->toarray();
-            if (empty($list_data)) {
+            $list_config_data = $ConfigLowPriceGoodsModel->where('status', 0)->paginate($limit, ['*'], 'page', $page)->toarray();
+            if (!$list_config_data || empty($list_config_data['data'])) {
                 return true;
             }
+            $list_data = $list_config_data['data'];
             foreach ($list_data as $key => $value) {
+                $company_data = $LowPriceGoodsCompanyModel->where('lowprice_product_logid', $value['id'])
+                    ->join('washconfig_violation_store', 'washconfig_violation_store.id', '=', 'washconfig_lowprice_product_company.company_id')
+                    ->select(['washconfig_violation_store.id', 'washconfig_violation_store.social_credit_code', 'washconfig_lowprice_product_company.company_id'])->get()->toArray();
+                $social_credit_code = !empty($company_data) ? array_column($company_data, 'social_credit_code') : '';
                 $message_data = [
+                    'id' => $value['id'],
                     'platform' => $value['platform'],
                     'product_name' => $value['product_name'],
                     'product_specs' => $value['product_specs'],
                     'suggested_price' => $value['suggested_price'],
                     'store_scope' => $value['store_scope'],
+                    'company_scope' => $value['company_scope'],
+                    'social_credit_code' => $social_credit_code,
                     'executeLog_id' => $executeLog_id,
                 ];
                 LowPriceGoodsDataJobs::dispatch($message_data);
+                // LowPriceGoodsDataJobs::dispatchSync($message_data);
             }
             $now_message_data = [
                 'limit' => $limit,
                 'page' => $page + 1,
                 'executeLog_id' => $executeLog_id,
             ];
-            LowPriceGoodsJobs::dispatch($now_message_data);
+            $this->dispatchSync($now_message_data);
         } catch (\Exception $e) {
             Log::info('job_error', '数据清洗-低价挂网商品配置队列失败', ['data' => $this->message_data, 'error' => $e->getMessage()]);
         }

+ 29 - 13
app/Jobs/Manager/Process/ViolationProductDataJobs.php

@@ -12,6 +12,7 @@ use App\Facades\Servers\Logs\Log;
 use App\Models\Manager\Process\ViolationProduct as ViolationProductModel;
 use App\Models\Manager\Personnel\Employee as EmployeeModel;
 use App\Models\Api\Process\ExecuteLog as ExecuteLogModel;
+use App\Models\Manager\Process\ScrapeData as ScrapeDataModel;
 
 /**
  * 数据清洗-违规挂网商品数据队列
@@ -58,41 +59,56 @@ class ViolationProductDataJobs implements ShouldQueue
     {
         $EmployeeModel = new EmployeeModel();
         $ViolationProductModel = new ViolationProductModel();
+        $ScrapeDataModel = new ScrapeDataModel();
         $platform = $message_data['platform'];//多个平台配置
         $product_name = $message_data['product_name'];//商品名称
         $product_specs = $message_data['product_specs'];//商品规格
-        $store_scope = $message_data['store_scope'];//店铺范围(为空时全部)
+        $store_scope = $message_data['store_scope']; //店铺范围1=全部店铺2=指定店铺
+        $company_scope = $message_data['company_scope']; //公司范围1=全部公司2=指定公司
+        $social_credit_code = $message_data['social_credit_code']; //社会信用代码
         $executeLog_id = $message_data['executeLog_id'];
         $limit = isset($message_data['limit']) ? $message_data['limit'] : 50;
         $page = isset($message_data['page']) ? $message_data['page'] : 1;
 
-        $product_datas = []; //商品数据
+        $where = [];
+        if ($platform != 'all') {
+            $platform = explode(',', $platform);
+            $ScrapeDataModel=$ScrapeDataModel->whereIn('platform', $platform);
+        }
+        $where[] = ['product_name', 'like', '%' . $product_name . '%'];
+        $where[] = ['product_specs', 'like', '%' . $product_specs . '%'];
+        if ($company_scope == 2) {
+            $ScrapeDataModel->whereIn('qualification_number', $social_credit_code);
+        }
+        $product_data_info = $ScrapeDataModel->where($where)->paginate($limit, ['*'], 'page', $page)->toarray();
+        $product_datas = $product_data_info['data'];
         if (empty($product_datas)) {
-            (new ExecuteLogModel())->where('id', $executeLog_id)->update(['status' => 0]);
-            return false;
+            if($executeLog_id){
+                (new ExecuteLogModel())->where('id', $executeLog_id)->update(['status' => 0]);
+            }
+            return true;
         }
         foreach ($product_datas as $product_data) {
             $insert_product_data = [
-                'platform'    => $product_data['platform'],
+                'source_id'=> $product_data['id'],
+                'platform'    => $product_data['platform_id'],
                 'company_name'    => $product_data['company_name'],
-                'product_name'    => $product_data['product_name'],
-                'product_specs'    => $product_data['product_specs'],
-                'suggested_price'    => $product_data['suggested_price'],
-                'online_posting_price'    => $product_data['online_posting_price'],
+                'product_name'    => $product_name,
+                'product_specs'    => $product_specs,
                 'online_posting_cunt'    => $product_data['online_posting_cunt'],
                 'link_url'    => $product_data['link_url'],
                 'store_name'    => $product_data['store_name'],
             ];
             //查询配置的第一责任人
             $where_query1[] = ['city_ids', 'like', '%,' . $product_data['city_id'] . ',%'];
-            $where_query1[] = ['status', '=', 1];
-            $where_query1[] = ['duty_type', 'in', 1]; //责任类型1=第一责任人,2=责任人
+            $where_query1[] = ['status', '=', 0];
+            $where_query1[] = ['duty_type', '=', 1]; //责任类型1=第一责任人,2=责任人
             $first_responsible_person = $EmployeeModel->where($where_query1)->pluck('id')->implode(',');
             $insert_product_data['first_responsible_person'] = $first_responsible_person;
             //查询配置的责任人
             $where_query2[] = ['city_ids', 'like', '%,' . $product_data['city_id'] . ',%'];
-            $where_query2[] = ['status', '=', 1];
-            $where_query2[] = ['duty_type', 'in', 2]; //责任类型1=第一责任人,2=责任人
+            $where_query2[] = ['status', '=', 0];
+            $where_query2[] = ['duty_type', '=', 2]; //责任类型1=第一责任人,2=责任人
             $responsible_person = $EmployeeModel->where($where_query2)->pluck('id')->implode(',');
             $insert_product_data['responsible_person'] = $responsible_person;
             //溯源责任人

+ 15 - 3
app/Jobs/Manager/Process/ViolationProductJobs.php

@@ -12,6 +12,7 @@ use App\Facades\Servers\Logs\Log;
 use App\Models\Manager\WashConfig\ViolationProduct as ConfigViolationProductModel;
 use App\Models\Api\Process\ExecuteLog as ExecuteLogModel;
 use App\Jobs\Manager\Process\ViolationProductDataJobs;
+use App\Models\Manager\WashConfig\ViolationProductCompany as ViolationProductCompanyModel;
 
 /**
  * 数据清洗-违规挂网商品队列
@@ -42,27 +43,38 @@ class ViolationProductJobs implements ShouldQueue
     {
         try {
             $ConfigViolationProductModel = new ConfigViolationProductModel();
+            $ViolationProductCompanyModel = new ViolationProductCompanyModel();
             $limit = isset($this->message_data['limit']) ? $this->message_data['limit'] : 50;
             $page = isset($this->message_data['page']) ? $this->message_data['page'] : 1;
             $executeLog_id = isset($this->message_data['executeLog_id']) ? $this->message_data['executeLog_id'] : 0;
+            $admin_id = isset($this->message_data['admin_id']) ? $this->message_data['admin_id'] : 0;
             if($page == 1){
                 $ExecuteLogModel = new ExecuteLogModel();
-                $insert_data =['name' =>'违规挂网商品', 'code' => 'ViolationProductJobs'];
+                $insert_data =['name' =>'违规挂网商品', 'code' => 'ViolationProductJobs', 'admin_id' => $admin_id];
                 $executeLog_id=$ExecuteLogModel->addExecuteLog_content($insert_data);
             }
-            $list_data = $ConfigViolationProductModel->where('status', 1)->paginate($limit, ['*'], 'page', $page)->get()->toarray();
-            if (empty($list_data)) {
+            $list_config_data = $ConfigViolationProductModel->where('status', 0)->paginate($limit, ['*'], 'page', $page)->toarray();
+            if (!$list_config_data || empty($list_config_data['data'])) {
                 return true;
             }
+            $list_data = $list_config_data['data'];
             foreach ($list_data as $key => $value) {
+                $company_data = $ViolationProductCompanyModel->where('violation_product_logid', $value['id'])
+                    ->join('washconfig_violation_store', 'washconfig_violation_store.id', '=', 'washconfig_violation_product_company.company_id')
+                    ->select(['washconfig_violation_store.id', 'washconfig_violation_store.social_credit_code', 'washconfig_violation_product_company.company_id'])->get()->toArray();
+                $social_credit_code = !empty($company_data) ? array_column($company_data, 'social_credit_code') : '';
                 $message_data = [
+                    'id' => $value['id'],
                     'platform' => $value['platform'],
                     'product_name' => $value['product_name'],
                     'product_specs' => $value['product_specs'],
                     'store_scope' => $value['store_scope'],
+                    'company_scope' => $value['company_scope'],
+                    'social_credit_code' => $social_credit_code,
                     'executeLog_id' => $executeLog_id,
                 ];
                 ViolationProductDataJobs::dispatch($message_data);
+                // ViolationProductDataJobs::dispatchSync($message_data);
             }
             $now_message_data = [
                 'limit' => $limit,

+ 24 - 13
app/Jobs/Manager/Process/ViolationStoreDataJobs.php

@@ -12,6 +12,7 @@ use App\Facades\Servers\Logs\Log;
 use App\Models\Manager\Process\ViolationStore as ViolationStoreModel;
 use App\Models\Manager\Personnel\Employee as EmployeeModel;
 use App\Models\Api\Process\ExecuteLog as ExecuteLogModel;
+use App\Models\Manager\Process\ScrapeData as ScrapeDataModel;
 
 /**
  * 数据清洗-违规店铺清洗数据队列
@@ -58,39 +59,49 @@ class ViolationStoreDataJobs implements ShouldQueue
     {
         $EmployeeModel = new EmployeeModel();
         $ViolationStoreModel = new ViolationStoreModel();
-        $platform = $message_data['platform']; ////多个平台配置
+        $ScrapeDataModel = new ScrapeDataModel();
+        $platform = $message_data['platform']; //多个平台配置
         $store_name = $message_data['store_name']; //店铺名称
         $company_name = $message_data['company_name']; //公司名称
-        $social_credit_code = $message_data['social_credit_code']; //信用代码
-        $store_type = $message_data['store_type']; //店铺类型:1=黑名单2=白名单
+        $social_credit_code = $message_data['social_credit_code']; //社会信用代码
+        $store_type = $message_data['store_type']; //公司类型:1=黑名单2=白名单
         $executeLog_id = $message_data['executeLog_id'];
         $limit = isset($message_data['limit']) ? $message_data['limit'] : 50;
         $page = isset($message_data['page']) ? $message_data['page'] : 1;
 
-        $product_datas = []; //商品数据
+        if ($platform != 'all') {
+            $platform = explode(',', $platform);
+            $ScrapeDataModel=$ScrapeDataModel->whereIn('platform', $platform);
+        }
+        $ScrapeDataModel->where('qualification_number', $social_credit_code);
+        $product_data_info = $ScrapeDataModel->paginate($limit, ['*'], 'page', $page)->toarray();
+        $product_datas = $product_data_info['data'];
         if (empty($product_datas)) {
-            (new ExecuteLogModel())->where('id', $executeLog_id)->update(['status' => 0]);
-            return false;
+            if($executeLog_id){
+                (new ExecuteLogModel())->where('id', $executeLog_id)->update(['status' => 0]);
+            }
+            return true;
         }
         foreach ($product_datas as $product_data) {
             $insert_product_data = [
-                'platform'    => $product_data['platform'],
+                'source_id'=> $product_data['id'],
+                'platform'    => $product_data['platform_id'],
                 'company_name'    => $product_data['company_name'],
-                'social_credit_code'    => $product_data['social_credit_code'],
-                'store_name'    => $product_data['store_name'],
+                'online_posting_cunt'    => $product_data['online_posting_cunt'],
                 'link_url'    => $product_data['link_url'],
                 'store_name'    => $product_data['store_name'],
+                'social_credit_code'=> $social_credit_code,
             ];
             //查询配置的第一责任人
             $where_query1[] = ['city_ids', 'like', '%,' . $product_data['city_id'] . ',%'];
-            $where_query1[] = ['status', '=', 1];
-            $where_query1[] = ['duty_type', 'in', 1]; //责任类型1=第一责任人,2=责任人
+            $where_query1[] = ['status', '=', 0];
+            $where_query1[] = ['duty_type', '=', 1]; //责任类型1=第一责任人,2=责任人
             $first_responsible_person = $EmployeeModel->where($where_query1)->pluck('id')->implode(',');
             $insert_product_data['first_responsible_person'] = $first_responsible_person;
             //查询配置的责任人
             $where_query2[] = ['city_ids', 'like', '%,' . $product_data['city_id'] . ',%'];
-            $where_query2[] = ['status', '=', 1];
-            $where_query2[] = ['duty_type', 'in', 2]; //责任类型1=第一责任人,2=责任人
+            $where_query2[] = ['status', '=', 0];
+            $where_query2[] = ['duty_type', '=', 2]; //责任类型1=第一责任人,2=责任人
             $responsible_person = $EmployeeModel->where($where_query2)->pluck('id')->implode(',');
             $insert_product_data['responsible_person'] = $responsible_person;
             //溯源责任人

+ 9 - 5
app/Jobs/Manager/Process/ViolationStoreJobs.php

@@ -45,25 +45,29 @@ class ViolationStoreJobs implements ShouldQueue
             $limit = isset($this->message_data['limit']) ? $this->message_data['limit'] : 50;
             $page = isset($this->message_data['page']) ? $this->message_data['page'] : 1;
             $executeLog_id = isset($this->message_data['executeLog_id']) ? $this->message_data['executeLog_id'] : 0;
+            $admin_id = isset($this->message_data['admin_id']) ? $this->message_data['admin_id'] : 0;
             if($page == 1){
                 $ExecuteLogModel = new ExecuteLogModel();
-                $insert_data =['name' =>'违规挂网店铺', 'code' => 'ViolationStoreJobs'];
+                $insert_data =['name' =>'违规挂网店铺', 'code' => 'ViolationStoreJobs', 'admin_id' => $admin_id];
                 $executeLog_id=$ExecuteLogModel->addExecuteLog_content($insert_data);
             }
-            $list_data = $ViolationStoreModel->where('status', 1)->paginate($limit, ['*'], 'page', $page)->get()->toarray();
-            if (empty($list_data)) {
+            $list_config_data = $ViolationStoreModel->where('status', 0)->paginate($limit, ['*'], 'page', $page)->toarray();
+            if (!$list_config_data || empty($list_config_data['data'])) {
                 return true;
             }
+            $list_data = $list_config_data['data'];
             foreach ($list_data as $key => $value) {
                 $message_data = [
+                    'id' => $value['id'],
                     'platform' => $value['platform'],
-                    'store_name' => $value['store_name'],
+                    'store_name'=> $value['store_name'],
+                    'store_type' => $value['store_type'],
                     'company_name' => $value['company_name'],
                     'social_credit_code' => $value['social_credit_code'],
-                    'store_type' => $value['store_type'],
                     'executeLog_id' => $executeLog_id,
                 ];
                 ViolationStoreDataJobs::dispatch($message_data);
+                // ViolationStoreDataJobs::dispatchSync($message_data);
             }
             $now_message_data = [
                 'limit' => $limit,

+ 0 - 4
app/Models/Api/Process/ExecuteLog.php

@@ -35,8 +35,6 @@ class ExecuteLog extends Model
         $insert_data = [
             'name' => $data['name'],
             'code' => $data['code'],
-            'start_logid'    => $data['start_logid'],
-            'end_logid'    => $data['end_logid'],
             'admin_id'    => $data['admin_id'],
             'insert_time' => time(),
         ];
@@ -85,8 +83,6 @@ class ExecuteLog extends Model
         }
         $ExecuteLog->name = $data['name'];
         $ExecuteLog->code = $data['responsible_person'];
-        $ExecuteLog->start_logid = $data['platform'];
-        $ExecuteLog->end_logid = $data['company_name'];
         $ExecuteLog->admin_id = $data['product_name'];
         $ExecuteLog->update_time = time();
         $ExecuteLog->save();

+ 20 - 6
app/Models/Manager/Process/LowPriceGoods.php

@@ -6,6 +6,7 @@ use Illuminate\Database\Eloquent\Factories\HasFactory;
 use Illuminate\Database\Eloquent\Model;
 use Illuminate\Support\Facades\DB;
 use App\Models\Manager\Process\LowPriceGoodsMember as LowPriceGoodsMemberModel;
+use App\Facades\Servers\Logs\Log;
 
 /**
  * 违规处理-低价商品模型
@@ -64,10 +65,21 @@ class LowPriceGoods extends Model
      */
     public function addLowPriceGoods($data)
     {
+        $source_where[] = ['source_id', '=', $data['source_id']];
+        $source_where[] = ['product_name', '=', $data['product_name']];
+        $source_where[] = ['product_specs', '=', $data['product_specs']];
+        $source_where[] = ['suggested_price', '=', $data['suggested_price']];
+        $source_id_log = $this->where($source_where)->count();
+        if ($source_id_log > 0) {
+            return true;
+        }
         DB::beginTransaction();
         try {
             $LowPriceGoodsMemberModel = new LowPriceGoodsMemberModel();
             $insert_data = [
+                'source_id' => $data['source_id'],
+                'first_responsible_person' => $data['first_responsible_person'],
+                'responsible_person' => $data['responsible_person'],
                 'platform'    => $data['platform'],
                 'company_name'    => $data['company_name'],
                 'product_name'    => $data['product_name'],
@@ -77,11 +89,12 @@ class LowPriceGoods extends Model
                 'online_posting_cunt'    => $data['online_posting_cunt'],
                 'link_url'    => $data['link_url'],
                 'store_name'    => $data['store_name'],
+                'source_responsible_person'    => $data['source_responsible_person'],
                 'processing_status' => '1',
                 'insert_time' => time(),
             ];
             $LowPriceGoods_id = $this->insertGetId($insert_data);
-            $first_responsible_persons = explode(',', $data['first_responsible_person']);
+            $first_responsible_persons =$data['first_responsible_person'] !=''? explode(',', $data['first_responsible_person']):[];
             $first_responsible_person_data=[];
             if (count($first_responsible_persons) > 0) {
                 foreach ($first_responsible_persons as $key => $employee_id) {
@@ -92,8 +105,8 @@ class LowPriceGoods extends Model
                     ];
                 }
             }
-            $LowPriceGoodsMemberModel->inser($first_responsible_person_data);
-            $responsible_persons = explode(',', $data['responsible_person']);
+            $LowPriceGoodsMemberModel->insert($first_responsible_person_data);
+            $responsible_persons = $data['responsible_person'] !='' ? explode(',', $data['responsible_person']):[];
             $responsible_person_data=[];
             if (count($responsible_persons) > 0) {
                 foreach ($responsible_persons as $key => $employee_id) {
@@ -104,8 +117,8 @@ class LowPriceGoods extends Model
                     ];
                 }
             }
-            $LowPriceGoodsMemberModel->inser($responsible_person_data);
-            $source_responsible_persons = explode(',', $data['source_responsible_person']);
+            $LowPriceGoodsMemberModel->insert($responsible_person_data);
+            $source_responsible_persons = $data['source_responsible_person'] !='' ? explode(',', $data['source_responsible_person']):[];
             $source_responsible_person_data=[];
             if (count($source_responsible_persons) > 0) {
                 foreach ($source_responsible_persons as $key => $employee_id) {
@@ -116,12 +129,13 @@ class LowPriceGoods extends Model
                     ];
                 }
             }
-            $LowPriceGoodsMemberModel->inser($source_responsible_person_data);
+            $LowPriceGoodsMemberModel->insert($source_responsible_person_data);
             DB::commit();
             return true;
             // 成功处理...
         } catch (\Exception $e) {
             DB::rollBack();
+            Log::info('job_error', '数据清洗-新增低价商品处理记录失败', ['data'=>$data,'error' => $e->getMessage()]);
             // 错误处理...
             return false;
         }

+ 16 - 6
app/Models/Manager/Process/ViolationProduct.php

@@ -6,6 +6,7 @@ use Illuminate\Database\Eloquent\Factories\HasFactory;
 use Illuminate\Database\Eloquent\Model;
 use Illuminate\Support\Facades\DB;
 use App\Models\Manager\Process\ViolationProductMember as ViolationProductMemberModel;
+use App\Facades\Servers\Logs\Log;
 
 /**
  * 违规处理-违规商品模型
@@ -62,10 +63,18 @@ class ViolationProduct extends Model
      */
     public function addViolationProduct($data)
     {
+        $source_where[] = ['source_id', '=', $data['source_id']];
+        $source_where[] = ['product_name', '=', $data['product_name']];
+        $source_where[] = ['product_specs', '=', $data['product_specs']];
+        $source_id_log = $this->where($source_where)->count();
+        if ($source_id_log > 0) {
+            return true;
+        }
         DB::beginTransaction();
         try {
             $ViolationProductMemberModel = new ViolationProductMemberModel();
             $insert_data = [
+                'source_id' => $data['source_id'],
                 'first_responsible_person' => $data['first_responsible_person'],
                 'responsible_person' => $data['responsible_person'],
                 'platform'    => $data['platform'],
@@ -80,7 +89,7 @@ class ViolationProduct extends Model
                 'insert_time' => time(),
             ];
             $ViolationProduct_id = $this->insertGetId($insert_data);
-            $first_responsible_persons = explode(',', $data['first_responsible_person']);
+            $first_responsible_persons = $data['first_responsible_person'] !=''? explode(',', $data['first_responsible_person']):[];
             $first_responsible_person_data = [];
             if (count($first_responsible_persons) > 0) {
                 foreach ($first_responsible_persons as $key => $employee_id) {
@@ -91,8 +100,8 @@ class ViolationProduct extends Model
                     ];
                 }
             }
-            $ViolationProductMemberModel->inser($first_responsible_person_data);
-            $responsible_persons = explode(',', $data['responsible_person']);
+            $ViolationProductMemberModel->insert($first_responsible_person_data);
+            $responsible_persons = $data['responsible_person'] !='' ? explode(',', $data['responsible_person']):[];
             $responsible_person_data = [];
             if (count($responsible_persons) > 0) {
                 foreach ($responsible_persons as $key => $employee_id) {
@@ -103,8 +112,8 @@ class ViolationProduct extends Model
                     ];
                 }
             }
-            $ViolationProductMemberModel->inser($responsible_person_data);
-            $source_responsible_persons = explode(',', $data['source_responsible_person']);
+            $ViolationProductMemberModel->insert($responsible_person_data);
+            $source_responsible_persons = $data['source_responsible_person'] !='' ? explode(',', $data['source_responsible_person']):[];
             $source_responsible_person_data = [];
             if (count($source_responsible_persons) > 0) {
                 foreach ($source_responsible_persons as $key => $employee_id) {
@@ -115,13 +124,14 @@ class ViolationProduct extends Model
                     ];
                 }
             }
-            $ViolationProductMemberModel->inser($source_responsible_person_data);
+            $ViolationProductMemberModel->insert($source_responsible_person_data);
             DB::commit();
             return true;
             // 成功处理...
         } catch (\Exception $e) {
             DB::rollBack();
             // 错误处理...
+            Log::info('job_error', '数据清洗-新增违规商品处理记录失败', ['data'=>$data,'error' => $e->getMessage()]);
             return false;
         }
     }

+ 1 - 1
app/Models/Manager/Process/ViolationProductMember.php

@@ -16,7 +16,7 @@ class ViolationProductMember extends Model
 {
     use HasFactory;
     // 与模型关联的表名
-    protected $table = 'process_control_product_member';
+    protected $table = 'process_violation_product_member';
     // 是否主动维护时间戳
     public $timestamps = false;
     // 定义时间戳字段名

+ 15 - 6
app/Models/Manager/Process/ViolationStore.php

@@ -6,6 +6,7 @@ use Illuminate\Database\Eloquent\Factories\HasFactory;
 use Illuminate\Database\Eloquent\Model;
 use Illuminate\Support\Facades\DB;
 use App\Models\Manager\Process\ViolationStoreMember as ViolationStoreMemberModel;
+use App\Facades\Servers\Logs\Log;
 
 /**
  * 违规处理-违规店铺模型
@@ -61,10 +62,17 @@ class ViolationStore extends Model
      */
     public function addViolationStore($data)
     {
+        $source_where[] = ['store_name', '=', $data['store_name']];
+        $source_where[] = ['social_credit_code', '=', $data['social_credit_code']];
+        $source_id_log = $this->where($source_where)->count();
+        if ($source_id_log > 0) {
+            return true;
+        }
         DB::beginTransaction();
         try {
             $ViolationStoreMemberModel = new ViolationStoreMemberModel();
             $insert_data = [
+                'source_id' => $data['source_id'],
                 'first_responsible_person' => $data['first_responsible_person'],
                 'responsible_person' => $data['responsible_person'],
                 'platform'    => $data['platform'],
@@ -77,7 +85,7 @@ class ViolationStore extends Model
                 'insert_time' => time(),
             ];
             $ViolationStore_id = $this->insertGetId($insert_data);
-            $first_responsible_persons = explode(',', $data['first_responsible_person']);
+            $first_responsible_persons = $data['first_responsible_person'] !=''? explode(',', $data['first_responsible_person']):[];
             $first_responsible_person_data = [];
             if (count($first_responsible_persons) > 0) {
                 foreach ($first_responsible_persons as $key => $employee_id) {
@@ -88,8 +96,8 @@ class ViolationStore extends Model
                     ];
                 }
             }
-            $ViolationStoreMemberModel->inser($first_responsible_person_data);
-            $responsible_persons = explode(',', $data['responsible_person']);
+            $ViolationStoreMemberModel->insert($first_responsible_person_data);
+            $responsible_persons = $data['responsible_person'] !='' ? explode(',', $data['responsible_person']):[];
             $responsible_person_data = [];
             if (count($responsible_persons) > 0) {
                 foreach ($responsible_persons as $key => $employee_id) {
@@ -100,8 +108,8 @@ class ViolationStore extends Model
                     ];
                 }
             }
-            $ViolationStoreMemberModel->inser($responsible_person_data);
-            $source_responsible_persons = explode(',', $data['source_responsible_person']);
+            $ViolationStoreMemberModel->insert($responsible_person_data);
+            $source_responsible_persons = $data['source_responsible_person'] !='' ? explode(',', $data['source_responsible_person']):[];
             $source_responsible_person_data = [];
             if (count($source_responsible_persons) > 0) {
                 foreach ($source_responsible_persons as $key => $employee_id) {
@@ -112,12 +120,13 @@ class ViolationStore extends Model
                     ];
                 }
             }
-            $ViolationStoreMemberModel->inser($source_responsible_person_data);
+            $ViolationStoreMemberModel->insert($source_responsible_person_data);
             DB::commit();
             return true;
             // 成功处理...
         } catch (\Exception $e) {
             DB::rollBack();
+            Log::info('job_error', '数据清洗-新增违规店铺处理记录失败', ['data'=>$data,'error' => $e->getMessage()]);
             // 错误处理...
             return false;
         }

+ 1 - 1
app/Models/Manager/Process/ViolationStoreMember.php

@@ -16,7 +16,7 @@ class ViolationStoreMember extends Model
 {
     use HasFactory;
     // 与模型关联的表名
-    protected $table = 'process_control_product_member';
+    protected $table = 'process_violation_store_member';
     // 是否主动维护时间戳
     public $timestamps = false;
     // 定义时间戳字段名

+ 7 - 1
routes/manager.php

@@ -158,6 +158,8 @@ Route::any('process/low_price_goods/set_status', [App\Http\Controllers\Manager\P
 Route::any('process/low_price_goods/set_processing_status', [App\Http\Controllers\Manager\Process\LowPriceGoods::class, 'set_processing_status']);
 // 低价挂网商品违规处理-删除
 Route::any('process/low_price_goods/delete', [App\Http\Controllers\Manager\Process\LowPriceGoods::class, 'delete']);
+// 低价挂网商品违规处理-执行数据清洗
+Route::any('process/low_price_goods/data_cleaning', [App\Http\Controllers\Manager\Process\LowPriceGoods::class, 'data_cleaning']);
 
 // 违规挂网商品违规处理-列表
 Route::any('process/violation_goods/list', [App\Http\Controllers\Manager\Process\ViolationProduct::class, 'list']);
@@ -171,6 +173,8 @@ Route::any('process/violation_goods/set_status', [App\Http\Controllers\Manager\P
 Route::any('process/violation_goods/set_processing_status', [App\Http\Controllers\Manager\Process\ViolationProduct::class, 'set_processing_status']);
 // 违规挂网商品违规处理-删除
 Route::any('process/violation_goods/delete', [App\Http\Controllers\Manager\Process\ViolationProduct::class, 'delete']);
+// 违规挂网商品违规处理-执行数据清洗
+Route::any('process/violation_goods/data_cleaning', [App\Http\Controllers\Manager\Process\ViolationProduct::class, 'data_cleaning']);
 
 // 违规店铺违规处理-列表
 Route::any('process/violation_store/list', [App\Http\Controllers\Manager\Process\ViolationStore::class, 'list']);
@@ -183,4 +187,6 @@ Route::any('process/violation_store/set_status', [App\Http\Controllers\Manager\P
 // 违规店铺违规处理-状态(处理)
 Route::any('process/violation_store/set_processing_status', [App\Http\Controllers\Manager\Process\ViolationStore::class, 'set_processing_status']);
 // 违规店铺违规处理-删除
-Route::any('process/violation_store/delete', [App\Http\Controllers\Manager\Process\ViolationStore::class, 'delete']);
+Route::any('process/violation_store/delete', [App\Http\Controllers\Manager\Process\ViolationStore::class, 'delete']);
+// 违规店铺违规处理-执行数据清洗
+Route::any('process/violation_store/data_cleaning', [App\Http\Controllers\Manager\Process\ViolationStore::class, 'data_cleaning']);