浏览代码

[智价云] 违规商品规格统计排行

tangyuanwang 5 小时之前
父节点
当前提交
535771abd8

+ 128 - 0
app/Http/Controllers/Manager/Statistics/BasicPanel.php

@@ -1415,4 +1415,132 @@ class BasicPanel extends Controller
             return json_send(['code' => 'error', 'msg' => '获取失败:' . $e->getMessage()]);
         }
     }
+
+
+    /*
+     * 低价挂网商品规格数统计排行
+     * @author 唐远望
+     * @version   1.0
+     * @date      2026-03-24
+     * 
+     */
+    public function get_low_price_product_spec_count(request $request, LowPriceGoodsModel $LowPriceGoodsModel)
+    {
+        $request->scene('get_low_price_product_spec_count')->validate();
+        $admin_company_id = request('admin_company_id', '0');
+        $company_id = request('access_token.company_id', '0');
+        $is_admin = request('access_token.is_admin', '0'); //是否管理员操作 0=是1=否
+        //终端类型B端、C端、OTO
+        $terminal_type = request('terminal_type', '');
+        $limit = request('limit', config('page_num', 10));
+        $product_name = request('product_name', ''); //商品名称
+        $yesterdayStart = Carbon::yesterday()->startOfDay()->getTimestamp(); // 昨天开始时间 00:00:00
+        $yesterdayEnd = Carbon::yesterday()->endOfDay()->getTimestamp(); // 昨天结束时间 23:59:59
+        $start_time_string = request('start_time', '');
+        $end_time_string = request('end_time', '');
+        $start_time = $start_time_string ? strtotime($start_time_string . ' 00:00:00') : $yesterdayStart;
+        $end_time = $end_time_string ? strtotime($end_time_string . ' 23:59:59') : $yesterdayEnd;
+        $todayStart = Carbon::today()->startOfDay()->getTimestamp(); // 今天开始时间 00:00:00
+        // if ($start_time > $todayStart || $end_time > $todayStart) return  json_send(['code' => 'error', 'msg' => '不支持查询今天或以后时间', 'data' => '']);
+        // 时间条件
+        $map  = [];
+        if ($start_time) $map[] = ['insert_time', '>=', $start_time];
+        if ($end_time) $map[]   = ['insert_time', '<=', $end_time];
+        // 权限判断
+        if ($is_admin != 1 && $company_id != 0) {
+            $map[] = ['company_id', '=', $company_id];
+        } else {
+            $map[] = ['company_id', '=', $admin_company_id];
+        }
+        if ($product_name) $map[] = ['product_name', 'like', '%' . $product_name . '%'];
+        $LowPriceGoodsModel = $LowPriceGoodsModel->query();
+        if ($terminal_type) {
+            $platform = [];
+            switch ($terminal_type) {
+                case '1': //B端:药师帮、1药城、药久久、药易购、药帮忙、熊猫药药
+                    $platform = ['0', '5', '6', '7', '8', '9', '10']; //平台0=全部,1=淘宝,2=京东,3=拼多多,4=美团,5=药师帮,6=1药城,7=药久久,8=药易购,9=药帮忙,10=熊猫药药
+                    break;
+                case '2': //C端:美团、拼多多、天猫、京东
+                    $platform = ['0', '1', '2', '3', '4']; //平台0=全部,1=淘宝,2=京东,3=拼多多,4=美团,5=药师帮,6=1药城,7=药久久,8=药易购,9=药帮忙,10=熊猫药药
+                    break;
+                case '3': //OTO:美团买药、淘宝闪送、京东秒送
+                    $platform = ['0'];
+                    break;
+                default:
+                    # code...
+                    break;
+            }
+            $LowPriceGoodsModel = $LowPriceGoodsModel->whereIn('platform', $platform);
+        }
+        $result = $LowPriceGoodsModel->where($map)->where('status', 0)
+            ->select(['product_name', 'product_specs', DB::raw('count(DISTINCT product_name, product_specs) as count')])
+            ->groupby('product_name', 'product_specs')
+            ->orderby('count', 'desc')
+            ->paginate($limit);
+        return  json_send(['code' => 'success', 'msg' => '获取成功', 'data' => $result]);
+    }
+
+    /**
+     * 禁止挂网商品规格数统计排行
+     * @author 唐远望
+     * @version   1.0
+     * @date      2026-03-24
+     * 
+     */
+    public function get_violation_product_spec_count(request $request, ViolationProductModel $violationProductModel)
+    {
+        $request->scene('get_violation_product_spec_count')->validate();
+        $admin_company_id = request('admin_company_id', '0');
+        $company_id = request('access_token.company_id', '0');
+
+        //终端类型B端、C端、OTO
+        $terminal_type = request('terminal_type', '');
+        $product_name = request('product_name', ''); //商品名称
+        $is_admin = request('access_token.is_admin', '0'); //是否管理员操作 0=是1=否
+        $limit = request('limit', config('page_num', 10));
+        $yesterdayStart = Carbon::yesterday()->startOfDay()->getTimestamp(); // 昨天开始时间 00:00:00
+        $yesterdayEnd = Carbon::yesterday()->endOfDay()->getTimestamp(); // 昨天结束时间 23:59:59
+        $start_time_string = request('start_time', '');
+        $end_time_string = request('end_time', '');
+        $start_time = $start_time_string ? strtotime($start_time_string . ' 00:00:00') : $yesterdayStart;
+        $end_time = $end_time_string ? strtotime($end_time_string . ' 23:59:59') : $yesterdayEnd;
+        $todayStart = Carbon::today()->startOfDay()->getTimestamp(); // 今天开始时间 00:00:00
+        // if ($start_time > $todayStart || $end_time > $todayStart) return  json_send(['code' => 'error', 'msg' => '不支持查询今天或以后时间', 'data' => '']);
+        // 时间条件
+        $map  = [];
+        if ($start_time) $map[] = ['insert_time', '>=', $start_time];
+        if ($end_time) $map[]   = ['insert_time', '<=', $end_time];
+        // 权限判断
+        if ($is_admin != 1 && $company_id != 0) {
+            $map[] = ['company_id', '=', $company_id];
+        } else {
+            $map[] = ['company_id', '=', $admin_company_id];
+        }
+        if ($product_name) $map[] = ['product_name', 'like', '%' . $product_name . '%'];
+        $violationProductModel = $violationProductModel->query();
+        if ($terminal_type) {
+            $platform = [];
+            switch ($terminal_type) {
+                case '1': //B端:药师帮、1药城、药久久、药易购、药帮忙、熊猫药药
+                    $platform = ['0', '5', '6', '7', '8', '9', '10']; //平台0=全部,1=淘宝,2=京东,3=拼多多,4=美团,5=药师帮,6=1药城,7=药久久,8=药易购,9=药帮忙,10=熊猫药药
+                    break;
+                case '2': //C端:美团、拼多多、天猫、京东
+                    $platform = ['0', '1', '2', '3', '4']; //平台0=全部,1=淘宝,2=京东,3=拼多多,4=美团,5=药师帮,6=1药城,7=药久久,8=药易购,9=药帮忙,10=熊猫药药
+                    break;
+                case '3': //OTO:美团买药、淘宝闪送、京东秒送
+                    $platform = ['0'];
+                    break;
+                default:
+                    # code...
+                    break;
+            }
+            $violationProductModel = $violationProductModel->whereIn('platform', $platform);
+        }
+        $result = $violationProductModel->where($map)->where('status', 0)
+            ->select(['product_name', 'product_specs', DB::raw('count(DISTINCT product_name, product_specs) as count')])
+            ->groupby('product_name', 'product_specs')
+            ->orderby('count', 'desc')
+            ->paginate($limit);
+        return  json_send(['code' => 'success', 'msg' => '获取成功', 'data' => $result]);
+    }
 }

+ 3 - 1
app/Http/Requests/Manager/Statistics/BasicPanel.php

@@ -61,7 +61,9 @@ class BasicPanel extends BaseRequest
         'get_violation_store_platform_proportion' =>[],
         'get_violation_store_province_count'  =>[],
         'get_violation_store_province_proportion' =>[],
-        'get_violation_store_city_proportion' =>[]
+        'get_violation_store_city_proportion' =>[],
+        'get_low_price_product_spec_count' =>[],
+        'get_violation_product_spec_count' =>[],
     ];
 
     /**

+ 4 - 0
routes/manager.php

@@ -382,6 +382,10 @@ Route::any('statistics/basic_panel/get_violation_store_province_count', [App\Htt
 Route::any('statistics/basic_panel/get_violation_store_province_proportion', [App\Http\Controllers\Manager\Statistics\BasicPanel::class, 'get_violation_store_province_proportion']);
 //数据概况-违规店铺城市统计占比
 Route::any('statistics/basic_panel/get_violation_store_city_proportion', [App\Http\Controllers\Manager\Statistics\BasicPanel::class, 'get_violation_store_city_proportion']);
+//数据概况-低价挂网商品规格数统计排行
+Route::any('statistics/basic_panel/get_low_price_product_spec_count', [App\Http\Controllers\Manager\Statistics\BasicPanel::class, 'get_low_price_product_spec_count']);
+//数据概况-禁止挂网商品规格数统计排行
+Route::any('statistics/basic_panel/get_violation_product_spec_count', [App\Http\Controllers\Manager\Statistics\BasicPanel::class, 'get_violation_product_spec_count']);
 
 // 潜在客户留言-列表
 Route::any('website/lead_message/list', [App\Http\Controllers\Manager\Website\LeadMessage::class, 'list']);