|
|
@@ -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 唐远望
|