Procházet zdrojové kódy

[智价云] 连续挂网&低价挂网统计

tangyuanwang před 10 hodinami
rodič
revize
913510a705

+ 2 - 2
app/Jobs/Manager/Process/LowPriceGoodsDataJobs.php

@@ -128,7 +128,7 @@ class LowPriceGoodsDataJobs implements ShouldQueue
         if ($company_scope == 2 && $social_credit_code != '') {
             $ScrapeDataModel->whereIn('qualification_number', $social_credit_code);
         }
-        $product_data_info = $ScrapeDataModel->select('*', DB::raw('ROUND(min_price / NULLIF(number, 0), 2) as unit_price'))->where($where)->paginate($limit, ['*'], 'page', $page)->toarray();
+        $product_data_info = $ScrapeDataModel->select('*', DB::raw('ROUND(min_price / NULLIF(number, 0), 2) as unit_price'))->where($where)->orderbyDesc('id')->paginate($limit, ['*'], 'page', $page)->toarray();
         $product_datas = $product_data_info['data'];
 
         if (empty($product_datas)) {
@@ -363,6 +363,7 @@ class LowPriceGoodsDataJobs implements ShouldQueue
                 'shipment_province_name' => $product_data['shipment_province_name'],
                 'shipment_city_id' => $product_data['shipment_city_id'],
                 'shipment_city_name' => $product_data['shipment_city_name'],
+                'collect_config_info' => $product_data['collect_config_info'],
             ];
             //获取公司绑定责任人信息
             $company_data = $ViolationCompanyModel->leftjoin('washconfig_company_category', 'washconfig_company_category.id', '=', 'washconfig_violation_company.category_id')
@@ -527,7 +528,6 @@ class LowPriceGoodsDataJobs implements ShouldQueue
                 }
                 $insert_product_data['source_responsible_person'] = $source_responsible_person;
             }
-
             //插入数据
             $LowPriceGoodsModel->addLowPriceGoods($insert_product_data);
         }

+ 2 - 1
app/Jobs/Manager/Process/ViolationProductDataJobs.php

@@ -124,7 +124,7 @@ class ViolationProductDataJobs implements ShouldQueue
         if ($company_scope == 2) {
             $ScrapeDataModel->whereIn('qualification_number', $social_credit_code);
         }
-        $product_data_info = $ScrapeDataModel->where($where)->paginate($limit, ['*'], 'page', $page)->toarray();
+        $product_data_info = $ScrapeDataModel->where($where)->orderbyDesc('id')->paginate($limit, ['*'], 'page', $page)->toarray();
         $product_datas = $product_data_info['data'];
         if (empty($product_datas)) {
             if ($executeLog_id && $item_now_page >= $item_totle_page) {
@@ -356,6 +356,7 @@ class ViolationProductDataJobs implements ShouldQueue
                 'shipment_province_name' => $product_data['shipment_province_name'],
                 'shipment_city_id' => $product_data['shipment_city_id'],
                 'shipment_city_name' => $product_data['shipment_city_name'],
+                'collect_config_info' => $product_data['collect_config_info'],
             ];
             //获取公司绑定责任人信息
             $company_data = $ViolationCompanyModel->leftjoin('washconfig_company_category', 'washconfig_company_category.id', '=', 'washconfig_violation_company.category_id')

+ 87 - 0
app/Models/Manager/Process/LowPriceGoods.php

@@ -129,8 +129,12 @@ class LowPriceGoods extends Model
                 return true;
             }
         }
+
         DB::beginTransaction();
         try {
+            //执行挂网数据统计
+            $data = $this->handleCountData($data);
+            
             $LowPriceGoodsMemberModel = new LowPriceGoodsMemberModel();
             $insert_data = [
                 'company_id' => $data['company_id'],
@@ -225,6 +229,89 @@ class LowPriceGoods extends Model
     }
 
 
+    /**
+     * 处理连续挂网&累计挂网数据统计
+     * @author  唐远望
+     * @version 1.0
+     * @date    2026-05-07
+     * 
+     */
+    public function handleCountData($product_data_info)
+    {
+        $collect_config_info = $product_data_info['collect_config_info'];
+        if (trim($collect_config_info) == '') return $product_data_info;
+        $collect_config_info = json_decode($collect_config_info, true); //{"sampling_cycle": "", "sampling_start_time": "", "sampling_end_time": ""}
+        //采集周期
+        $sampling_cycle = isset($collect_config_info['sampling_cycle']) ? $collect_config_info['sampling_cycle'] : '';
+        //采集开始时间
+        $sampling_start_time = isset($collect_config_info['sampling_start_time']) ? $collect_config_info['sampling_start_time'] : '';
+        //采集结束时间
+        $sampling_end_time = isset($collect_config_info['sampling_end_time']) ? $collect_config_info['sampling_end_time'] : '';
+        if (!is_numeric($sampling_cycle)) return $product_data_info;
+        $current_time = time();
+        //如果当前时间在采集开始时间结束时间范围内,则进行连续挂网和累计挂网统计
+        if ($sampling_start_time != '' && $sampling_end_time != '' && $current_time >= $sampling_start_time && $current_time <= $sampling_end_time) {
+            //查询当前商品是否在上一个周期采集中过
+            $up_scrape_date_time = $current_time - $sampling_cycle * 24 * 3600;
+            $up_scrape_date = date('Y-m-d', $up_scrape_date_time);
+            $source_last_week_where[] = ['company_id', '=', $product_data_info['company_id']]; //品牌方公司ID
+            $source_last_week_where[] = ['platform', '=', $product_data_info['platform']]; //挂网平台ID
+            $source_last_week_where[] = ['company_name', '=', $product_data_info['company_name']]; //店铺公司名称
+            $source_last_week_where[] = ['store_name', '=', $product_data_info['store_name']]; //店铺名称
+            $source_last_week_where[] = ['product_brand', '=', $product_data_info['product_brand']]; //品牌名称
+            $source_last_week_where[] = ['product_name', '=', $product_data_info['product_name']]; //商品名称
+            $source_last_week_where[] = ['product_specs', '=', $product_data_info['product_specs']]; //规格
+            $source_last_week_where[] = ['scrape_date', '=', $up_scrape_date]; //上个周期采集日期
+            $source_last_week_log = $this->where($source_last_week_where)->count();
+            if ($source_last_week_log > 0) {
+                $product_data_info['continuous_listing_count'] = $product_data_info['continuous_listing_count'] + 1; //连续挂网次数+1
+            }
+            //查询当前商品上次连续挂网次数
+            $source_last_time_where[] = ['company_id', '=', $product_data_info['company_id']]; //品牌方公司ID
+            $source_last_time_where[] = ['platform', '=', $product_data_info['platform']]; //挂网平台ID
+            $source_last_time_where[] = ['company_name', '=', $product_data_info['company_name']]; //店铺公司名称
+            $source_last_time_where[] = ['store_name', '=', $product_data_info['store_name']]; //店铺名称
+            $source_last_time_where[] = ['product_brand', '=', $product_data_info['product_brand']]; //品牌名称
+            $source_last_time_where[] = ['product_name', '=', $product_data_info['product_name']]; //商品名称
+            $source_last_time_where[] = ['product_specs', '=', $product_data_info['product_specs']]; //规格
+            $source_last_time_log = $this->where($source_last_time_where)->orderbyDesc('scrape_date')->first();
+            if (!empty($source_last_time_log)) {
+                $product_data_info['online_posting_count'] = $source_last_time_log->online_posting_count + 1; //累计挂网次数+1
+            }
+        } else if ($sampling_start_time != '' && $sampling_end_time == '' && $current_time >= $sampling_start_time) {
+            //如果当前时间在采集开始时间结束时间未设置,则进行连续挂网和累计挂网统计
+            //查询当前商品上次采集记录
+            $up_scrape_date_time = $current_time - $sampling_cycle * 24 * 3600;
+            $up_scrape_date = date('Y-m-d', $up_scrape_date_time);
+            $source_last_week_where[] = ['company_id', '=', $product_data_info['company_id']]; //品牌方公司ID
+            $source_last_week_where[] = ['platform', '=', $product_data_info['platform']]; //挂网平台ID
+            $source_last_week_where[] = ['company_name', '=', $product_data_info['company_name']]; //店铺公司名称
+            $source_last_week_where[] = ['store_name', '=', $product_data_info['store_name']]; //店铺名称
+            $source_last_week_where[] = ['product_brand', '=', $product_data_info['product_brand']]; //品牌名称
+            $source_last_week_where[] = ['product_name', '=', $product_data_info['product_name']]; //商品名称
+            $source_last_week_where[] = ['product_specs', '=', $product_data_info['product_specs']]; //规格
+            $source_last_week_where[] = ['scrape_date', '=', $up_scrape_date]; //上个周期采集日期
+            $source_last_week_log = $this->where($source_last_week_where)->count();
+            if ($source_last_week_log > 0) {
+                $product_data_info['continuous_listing_count'] = $product_data_info['continuous_listing_count'] + 1; //连续挂网次数+1
+            }
+            //查询当前商品上次连续挂网次数
+            $source_last_time_where[] = ['company_id', '=', $product_data_info['company_id']]; //品牌方公司ID
+            $source_last_time_where[] = ['platform', '=', $product_data_info['platform']]; //挂网平台ID
+            $source_last_time_where[] = ['company_name', '=', $product_data_info['company_name']]; //店铺公司名称
+            $source_last_time_where[] = ['store_name', '=', $product_data_info['store_name']]; //店铺名称
+            $source_last_time_where[] = ['product_brand', '=', $product_data_info['product_brand']]; //品牌名称
+            $source_last_time_where[] = ['product_name', '=', $product_data_info['product_name']]; //商品名称
+            $source_last_time_where[] = ['product_specs', '=', $product_data_info['product_specs']]; //规格
+            $source_last_time_log = $this->where($source_last_time_where)->orderbyDesc('scrape_date')->first();
+            if (!empty($source_last_time_log)) {
+                $product_data_info['online_posting_count'] = $source_last_time_log->online_posting_count + 1; //累计挂网次数+1
+            }
+        }
+        return $product_data_info;
+    }
+
+
     /**
      * 处理通知消息
      * @author 唐远望

+ 87 - 0
app/Models/Manager/Process/ViolationProduct.php

@@ -124,6 +124,9 @@ class ViolationProduct extends Model
         }
         DB::beginTransaction();
         try {
+            //执行挂网数据统计
+            $data = $this->handleCountData($data);
+
             $ViolationProductMemberModel = new ViolationProductMemberModel();
             $insert_data = [
                 'company_id' => $data['company_id'],
@@ -215,6 +218,90 @@ class ViolationProduct extends Model
     }
 
 
+
+    /**
+     * 处理连续挂网&累计挂网数据统计
+     * @author  唐远望
+     * @version 1.0
+     * @date    2026-05-07
+     * 
+     */
+    public function handleCountData($product_data_info)
+    {
+        $collect_config_info = $product_data_info['collect_config_info'];
+        if (trim($collect_config_info) == '') return $product_data_info;
+        $collect_config_info = json_decode($collect_config_info, true); //{"sampling_cycle": "", "sampling_start_time": "", "sampling_end_time": ""}
+        //采集周期
+        $sampling_cycle = isset($collect_config_info['sampling_cycle']) ? $collect_config_info['sampling_cycle'] : '';
+        //采集开始时间
+        $sampling_start_time = isset($collect_config_info['sampling_start_time']) ? $collect_config_info['sampling_start_time'] : '';
+        //采集结束时间
+        $sampling_end_time = isset($collect_config_info['sampling_end_time']) ? $collect_config_info['sampling_end_time'] : '';
+        if (!is_numeric($sampling_cycle)) return $product_data_info;
+        $current_time = time();
+        //如果当前时间在采集开始时间结束时间范围内,则进行连续挂网和累计挂网统计
+        if ($sampling_start_time != '' && $sampling_end_time != '' && $current_time >= $sampling_start_time && $current_time <= $sampling_end_time) {
+            //查询当前商品是否在上一个周期采集中过
+            $up_scrape_date_time = $current_time - $sampling_cycle * 24 * 3600;
+            $up_scrape_date = date('Y-m-d', $up_scrape_date_time);
+            $source_last_week_where[] = ['company_id', '=', $product_data_info['company_id']]; //品牌方公司ID
+            $source_last_week_where[] = ['platform', '=', $product_data_info['platform']]; //挂网平台ID
+            $source_last_week_where[] = ['company_name', '=', $product_data_info['company_name']]; //店铺公司名称
+            $source_last_week_where[] = ['store_name', '=', $product_data_info['store_name']]; //店铺名称
+            $source_last_week_where[] = ['product_brand', '=', $product_data_info['product_brand']]; //品牌名称
+            $source_last_week_where[] = ['product_name', '=', $product_data_info['product_name']]; //商品名称
+            $source_last_week_where[] = ['product_specs', '=', $product_data_info['product_specs']]; //规格
+            $source_last_week_where[] = ['scrape_date', '=', $up_scrape_date]; //上个周期采集日期
+            $source_last_week_log = $this->where($source_last_week_where)->count();
+            if ($source_last_week_log > 0) {
+                $product_data_info['continuous_listing_count'] = $product_data_info['continuous_listing_count'] + 1; //连续挂网次数+1
+            }
+            //查询当前商品上次连续挂网次数
+            $source_last_time_where[] = ['company_id', '=', $product_data_info['company_id']]; //品牌方公司ID
+            $source_last_time_where[] = ['platform', '=', $product_data_info['platform']]; //挂网平台ID
+            $source_last_time_where[] = ['company_name', '=', $product_data_info['company_name']]; //店铺公司名称
+            $source_last_time_where[] = ['store_name', '=', $product_data_info['store_name']]; //店铺名称
+            $source_last_time_where[] = ['product_brand', '=', $product_data_info['product_brand']]; //品牌名称
+            $source_last_time_where[] = ['product_name', '=', $product_data_info['product_name']]; //商品名称
+            $source_last_time_where[] = ['product_specs', '=', $product_data_info['product_specs']]; //规格
+            $source_last_time_log = $this->where($source_last_time_where)->orderbyDesc('scrape_date')->first();
+            if (!empty($source_last_time_log)) {
+                $product_data_info['online_posting_count'] = $source_last_time_log->online_posting_count + 1; //累计挂网次数+1
+            }
+        } else if ($sampling_start_time != '' && $sampling_end_time == '' && $current_time >= $sampling_start_time) {
+            //如果当前时间在采集开始时间结束时间未设置,则进行连续挂网和累计挂网统计
+            //查询当前商品上次采集记录
+            $up_scrape_date_time = $current_time - $sampling_cycle * 24 * 3600;
+            $up_scrape_date = date('Y-m-d', $up_scrape_date_time);
+            $source_last_week_where[] = ['company_id', '=', $product_data_info['company_id']]; //品牌方公司ID
+            $source_last_week_where[] = ['platform', '=', $product_data_info['platform']]; //挂网平台ID
+            $source_last_week_where[] = ['company_name', '=', $product_data_info['company_name']]; //店铺公司名称
+            $source_last_week_where[] = ['store_name', '=', $product_data_info['store_name']]; //店铺名称
+            $source_last_week_where[] = ['product_brand', '=', $product_data_info['product_brand']]; //品牌名称
+            $source_last_week_where[] = ['product_name', '=', $product_data_info['product_name']]; //商品名称
+            $source_last_week_where[] = ['product_specs', '=', $product_data_info['product_specs']]; //规格
+            $source_last_week_where[] = ['scrape_date', '=', $up_scrape_date]; //上个周期采集日期
+            $source_last_week_log = $this->where($source_last_week_where)->count();
+            if ($source_last_week_log > 0) {
+                $product_data_info['continuous_listing_count'] = $product_data_info['continuous_listing_count'] + 1; //连续挂网次数+1
+            }
+            //查询当前商品上次连续挂网次数
+            $source_last_time_where[] = ['company_id', '=', $product_data_info['company_id']]; //品牌方公司ID
+            $source_last_time_where[] = ['platform', '=', $product_data_info['platform']]; //挂网平台ID
+            $source_last_time_where[] = ['company_name', '=', $product_data_info['company_name']]; //店铺公司名称
+            $source_last_time_where[] = ['store_name', '=', $product_data_info['store_name']]; //店铺名称
+            $source_last_time_where[] = ['product_brand', '=', $product_data_info['product_brand']]; //品牌名称
+            $source_last_time_where[] = ['product_name', '=', $product_data_info['product_name']]; //商品名称
+            $source_last_time_where[] = ['product_specs', '=', $product_data_info['product_specs']]; //规格
+            $source_last_time_log = $this->where($source_last_time_where)->orderbyDesc('scrape_date')->first();
+            if (!empty($source_last_time_log)) {
+                $product_data_info['online_posting_count'] = $source_last_time_log->online_posting_count + 1; //累计挂网次数+1
+            }
+        }
+        return $product_data_info;
+    }
+
+
     /**
      * 处理通知消息
      * @author 唐远望