Forráskód Böngészése

[智价云] 连续挂网统计更新

tangyuanwang 1 napja
szülő
commit
0e35227b7a

+ 33 - 1
app/Models/Manager/Process/LowPriceGoods.php

@@ -245,6 +245,32 @@ class LowPriceGoods extends Model
     }
 
 
+
+    function getLastSamplingInfo($currentWeek, $samplingCycle)
+    {
+        // 获取所有小于当前星期的配置
+        $previousWeeks = array_filter($samplingCycle, function ($week) use ($currentWeek) {
+            return $week < $currentWeek;
+        });
+
+        if (!empty($previousWeeks)) {
+            // 存在小于当前星期的配置,取最大值
+            $lastWeek = max($previousWeeks);
+            $daysToSubtract = $currentWeek - $lastWeek;
+        } else {
+            // 不存在(当前是最小的),取最大的配置星期(跨周)
+            $lastWeek = max($samplingCycle);
+            $daysToSubtract = $currentWeek + (7 - $lastWeek);
+        }
+
+        return [
+            'last_week' => $lastWeek,
+            'days_to_subtract' => $daysToSubtract
+        ];
+    }
+
+
+
     /**
      * 处理连续挂网&累计挂网数据统计
      * @author  唐远望
@@ -276,8 +302,14 @@ class LowPriceGoods extends Model
             if (!in_array($now_week, $sampling_cycle)) {
                 return $product_data_info;
             }
+            //排序$sampling_cycle从小到大
+            sort($sampling_cycle);
+            // 使用
+            $result = $this->getLastSamplingInfo($now_week, $sampling_cycle);
+            $days_to_subtract = isset($result['days_to_subtract']) ? $result['days_to_subtract'] : 0;
+            // echo "往前推 {$result['days_to_subtract']} 天";
             //查询当前商品是否在上一个周期采集中过
-            $up_scrape_date_time = $collection_time - 7 * 24 * 3600; //查询上周这个时间点
+            $up_scrape_date_time = $collection_time -  $days_to_subtract * 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

+ 30 - 1
app/Models/Manager/Process/ViolationProduct.php

@@ -229,6 +229,30 @@ class ViolationProduct extends Model
     }
 
 
+        function getLastSamplingInfo($currentWeek, $samplingCycle)
+    {
+        // 获取所有小于当前星期的配置
+        $previousWeeks = array_filter($samplingCycle, function ($week) use ($currentWeek) {
+            return $week < $currentWeek;
+        });
+
+        if (!empty($previousWeeks)) {
+            // 存在小于当前星期的配置,取最大值
+            $lastWeek = max($previousWeeks);
+            $daysToSubtract = $currentWeek - $lastWeek;
+        } else {
+            // 不存在(当前是最小的),取最大的配置星期(跨周)
+            $lastWeek = max($samplingCycle);
+            $daysToSubtract = $currentWeek + (7 - $lastWeek);
+        }
+
+        return [
+            'last_week' => $lastWeek,
+            'days_to_subtract' => $daysToSubtract
+        ];
+    }
+
+
 
     /**
      * 处理连续挂网&累计挂网数据统计
@@ -261,8 +285,13 @@ class ViolationProduct extends Model
             if (!in_array($now_week, $sampling_cycle)) {
                 return $product_data_info;
             }
+            //排序$sampling_cycle从小到大
+            sort($sampling_cycle);
+            // 使用
+            $result = $this->getLastSamplingInfo($now_week, $sampling_cycle);
+            $days_to_subtract = isset($result['days_to_subtract']) ? $result['days_to_subtract'] : 0;
             //查询当前商品是否在上一个周期采集中过
-            $up_scrape_date_time = $collection_time - 7 * 24 * 3600; //查询上周这个时间点
+            $up_scrape_date_time = $collection_time - $days_to_subtract * 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