Parcourir la source

[智价云] 违规数据处理导出限制更新

tangyuanwang il y a 5 jours
Parent
commit
f81f322763

+ 149 - 1
app/Http/Controllers/Manager/Process/LowPriceGoods.php

@@ -218,7 +218,7 @@ class LowPriceGoods extends Controller
      * @version 1.0
      * @date 2025-06-17
      */
-    public function export_excel(Request $request,DownloadTaskModel $DownloadTaskModel)
+    public function export_excel(Request $request, LowPriceGoodsModel $LowPriceGoodsModel, DownloadTaskModel $DownloadTaskModel, LowPriceGoodsMemberModel $LowPriceGoodsMemberModel)
     {
         $request->scene('export_excel')->validate();
         $message_data['admin_company_id'] = request('admin_company_id', '0');
@@ -258,6 +258,154 @@ class LowPriceGoods extends Controller
         } else {
             $low_price_goods_where['company_id']  = $message_data['admin_company_id'];
         }
+
+        // 查询条件
+        $map  = [];
+        $job_page = isset($message_data['job_page']) ? $message_data['job_page'] : 1;
+        $limit = 1000; //每次处理1000条
+        $status    = $message_data['status'] ?? '';
+        $start_time = $message_data['start_time'] ?? '';
+        $end_time = $message_data['end_time'] ?? '';
+        $product_name = $message_data['product_name'] ?? '';
+        $product_names = $message_data['product_names'] ?? '';
+        $first_responsible_person = $message_data['first_responsible_person'] ?? '';
+        $responsible_person = $message_data['responsible_person'] ?? '';
+        $platform = $message_data['platform'] ?? '';
+        $company_name = $message_data['company_name'] ?? '';
+        $store_name = $message_data['store_name'] ?? '';
+        $store_names = $message_data['store_names'] ?? '';
+        $source_responsible_person = $message_data['source_responsible_person'] ?? '';
+        $processing_status = $message_data['processing_status'] ?? '';
+        $product_specs = $message_data['product_specs'] ?? '';
+        $online_posting_count = $message_data['online_posting_count'] ?? '';
+        $category_name = $message_data['category_name'] ?? '';
+        $province_ids = $message_data['province_ids'] ?? '';
+        $city_ids = $message_data['city_ids'] ?? '';
+        $shipment_province_ids = $message_data['shipment_province_ids'] ?? '';
+        $shipment_city_ids = $message_data['shipment_city_ids'] ?? '';
+        // 时间条件
+        if ($start_time) $map[] = ['insert_time', '>=', strtotime($start_time)];
+        if ($end_time) $map[]   = ['insert_time', '<=', strtotime($end_time)];
+        // 其他条件
+        if ($product_name) $map[] = ['product_name', 'like', "%$product_name%"];
+        if ($store_name) $map[]   = ['store_name', 'like', "%$store_name%"];
+        if ($category_name) $map[] = ['category_name', 'like', "%$category_name%"];
+
+
+        $admin_company_id = $message_data['admin_company_id'] ?? '0';
+        $company_id = $message_data['access_token']['company_id'] ?? '0';
+        $is_admin = $message_data['access_token']['is_admin'] ?? '0'; //是否管理员操作 0=是1=否
+        $is_admin = $message_data['access_token']['is_admin'] ?? '0'; //是否管理员操作 0=是1=否
+        $user_id = $message_data['access_token']['uid'] ?? 0;
+
+        $low_price_goods_where = [];
+        // 权限判断
+        if ($is_admin != 1 && $company_id != 0) {
+            $low_price_goods_where['company_id'] = $company_id;
+        } else {
+            $low_price_goods_where['company_id']  = $admin_company_id;
+        }
+        $LowPriceGoodsModel = $LowPriceGoodsModel->where($low_price_goods_where);
+        //多选平台查询
+        if ($platform && is_string($platform)) {
+            $platform = explode(',', $platform);
+            $LowPriceGoodsModel = $LowPriceGoodsModel->whereIn('platform', $platform);
+        }
+        //多选处理状态查询
+        if ($processing_status && is_string($processing_status)) {
+            $processing_status = explode(',', $processing_status);
+            $LowPriceGoodsModel = $LowPriceGoodsModel->whereIn('processing_status', $processing_status);
+        }
+        //多选状态查询
+        if ($status && is_string($status)) {
+            $status = explode(',', $status);
+            $LowPriceGoodsModel = $LowPriceGoodsModel->whereIn('status', $status);
+        }
+        //多选店铺名称查询
+        if ($store_names && is_string($store_names)) {
+            $store_names = explode(',', $store_names);
+            $LowPriceGoodsModel = $LowPriceGoodsModel->whereIn('store_name', $store_names);
+        }
+        //多选违规挂网次数查询
+        if ($online_posting_count && is_string($online_posting_count)) {
+            $online_posting_count = explode(',', $online_posting_count);
+            $LowPriceGoodsModel = $LowPriceGoodsModel->whereIn('online_posting_count', $online_posting_count);
+        }
+        //多选规格查询
+        if ($product_specs && is_string($product_specs)) {
+            $product_specs = explode(',', $product_specs);
+            $LowPriceGoodsModel = $LowPriceGoodsModel->whereIn('product_specs', $product_specs);
+        }
+        //多选商品查询
+        if ($product_names && is_string($product_names)) {
+            $product_names = explode(',', $product_names);
+            $LowPriceGoodsModel = $LowPriceGoodsModel->whereIn('product_name', $product_names);
+        }
+        //多选公司查询
+        if ($company_name && is_string($company_name)) {
+            $company_name = explode(',', $company_name);
+            $LowPriceGoodsModel = $LowPriceGoodsModel->whereIn('company_name', $company_name);
+        }
+        //多选第一责任人
+        if ($first_responsible_person && is_string($first_responsible_person)) {
+            $first_responsible_person = explode(',', $first_responsible_person);
+            $subQuery = $LowPriceGoodsMemberModel->whereIn('employee_id', $first_responsible_person)->distinct('lowprice_product_logid')->select('lowprice_product_logid');
+            $LowPriceGoodsModel = $LowPriceGoodsModel->whereIn('id', function ($query1) use ($subQuery) {
+                $query1->select('lowprice_product_logid')->fromSub($subQuery, 'sub1');
+            });
+        }
+        //多选责任人
+        if ($responsible_person && is_string($responsible_person)) {
+            $responsible_person = explode(',', $responsible_person);
+            $subQuery = $LowPriceGoodsMemberModel->whereIn('employee_id', $responsible_person)->distinct('lowprice_product_logid')->select('lowprice_product_logid');
+            $LowPriceGoodsModel = $LowPriceGoodsModel->whereIn('id', function ($query1) use ($subQuery) {
+                $query1->select('lowprice_product_logid')->fromSub($subQuery, 'sub1');
+            });
+        }
+        //多选溯源责任人
+        if ($source_responsible_person && is_string($source_responsible_person)) {
+            $source_responsible_person = explode(',', $source_responsible_person);
+            $subQuery = $LowPriceGoodsMemberModel->whereIn('employee_id', $source_responsible_person)->distinct('lowprice_product_logid')->select('lowprice_product_logid');
+            $LowPriceGoodsModel = $LowPriceGoodsModel->whereIn('id', function ($query1) use ($subQuery) {
+                $query1->select('lowprice_product_logid')->fromSub($subQuery, 'sub1');
+            });
+        }
+        //多选省份
+        if ($province_ids && is_string($province_ids)) {
+            $province_ids = explode(',', $province_ids);
+            $LowPriceGoodsModel = $LowPriceGoodsModel->whereIn('province_id', $province_ids);
+        }
+        //多选城市
+        if ($city_ids && is_string($city_ids)) {
+            $city_ids = explode(',', $city_ids);
+            $LowPriceGoodsModel = $LowPriceGoodsModel->whereIn('city_id', $city_ids);
+        }
+        //多选发货省份
+        if ($shipment_province_ids && is_string($shipment_province_ids)) {
+            $shipment_province_ids = explode(',', $shipment_province_ids);
+            $LowPriceGoodsModel = $LowPriceGoodsModel->whereIn('shipment_province_id', $shipment_province_ids);
+        }
+        //多选发货城市
+        if ($shipment_city_ids && is_string($shipment_city_ids)) {
+            $shipment_city_ids = explode(',', $shipment_city_ids);
+            $LowPriceGoodsModel = $LowPriceGoodsModel->whereIn('shipment_city_id', $shipment_city_ids);
+        }
+    $result_count = 0;
+    if ($is_admin != 1 && $company_id != 0) {
+            $result_count = $LowPriceGoodsModel->where(function ($q) use ($user_id) {
+                $q->where('first_responsible_person', 'like', "%,$user_id,%")
+                    ->orWhere('responsible_person', 'like', "%,$user_id,%")
+                    ->orWhere('source_responsible_person', 'like', "%,$user_id,%");
+            })
+                ->where($map)
+                ->count();
+        } else {
+            $result_count = $LowPriceGoodsModel->where($map)
+                ->count();
+        }
+        if ($result_count == 0) return json_send(['code' => 'fail', 'msg' => '没有查询到数据', 'data' => '']);
+        if ($result_count > 150000) return json_send(['code' => 'fail', 'msg' => '导出数据超过15万条,请缩小导出范围后再试', 'data' => '']);
+
         $key_name = 'ExportLowPriceGoodsJobs_' . $low_price_goods_where['company_id'];
         $export_data_info = Cache::get($key_name);
         if ($export_data_info) return json_send(['code' => 'fail', 'msg' => '导出任务正在执行中,请稍后再试', 'data' => '']);

+ 145 - 1
app/Http/Controllers/Manager/Process/ViolationProduct.php

@@ -218,7 +218,7 @@ class ViolationProduct extends Controller
      * @version 1.0
      * @date 2025-06-17
      */
-    public function export_excel(Request $request, DownloadTaskModel $DownloadTaskModel)
+    public function export_excel(Request $request, DownloadTaskModel $DownloadTaskModel,ViolationProductModel $ViolationProductModel, EmployeeModel $EmployeeModel, ViolationProductMemberModel $ViolationProductMemberModel)
     {
         $request->scene('export_excel')->validate();
         $message_data['admin_company_id'] = request('admin_company_id', '0');
@@ -263,6 +263,150 @@ class ViolationProduct extends Controller
         if ($export_data_info) return json_send(['code' => 'fail', 'msg' => '导出任务正在执行中,请稍后再试', 'data' => '']);
 
 
+         $admin_company_id = $message_data['admin_company_id'] ?? '0';
+        $company_id = $message_data['access_token']['company_id'] ?? '0';
+        $is_admin = $message_data['access_token']['is_admin'] ?? '0'; //是否管理员操作 0=是1=否
+        $user_id = $message_data['access_token']['uid'] ?? 0;
+        $file_id = $message_data['file_id'];
+        // 查询条件
+        $map  = [];
+        $status    = $message_data['status'] ?? '';
+        $start_time = $message_data['start_time'] ?? '';
+        $end_time = $message_data['end_time'] ?? '';
+        $product_name = $message_data['product_name'] ?? '';
+        $product_names = $message_data['product_names'] ?? '';
+        $first_responsible_person = $message_data['first_responsible_person'] ?? '';
+        $responsible_person = $message_data['responsible_person'] ?? '';
+        $platform = $message_data['platform'] ?? '';
+        $company_name = $message_data['company_name'] ?? '';
+        $store_name = $message_data['store_name'] ?? '';
+        $store_names = $message_data['store_names'] ?? '';
+        $source_responsible_person = $message_data['source_responsible_person'] ?? '';
+        $processing_status = $message_data['processing_status'] ?? '';
+        $product_specs = $message_data['product_specs'] ?? '';
+        $online_posting_count = $message_data['online_posting_count'] ?? '';
+        $category_name = $message_data['category_name'] ?? '';
+        $province_ids = $message_data['province_ids'] ?? '';
+        $city_ids = $message_data['city_ids'] ?? '';
+        $shipment_province_ids = $message_data['shipment_province_ids'] ?? '';
+        $shipment_city_ids = $message_data['shipment_city_ids'] ?? '';
+        // 时间条件
+        if ($start_time) $map[] = ['insert_time', '>=', strtotime($start_time)];
+        if ($end_time) $map[]   = ['insert_time', '<=', strtotime($end_time)];
+        // 其他条件
+        if ($product_name) $map[] = ['product_name', 'like', "%$product_name%"];
+        if ($store_name) $map[]   = ['store_name', 'like', "%$store_name%"];
+        if ($category_name) $map[] = ['category_name', 'like', "%$category_name%"];
+
+        $violation_product_where = [];
+        // 权限判断
+        if ($is_admin != 1 && $company_id != 0) {
+            $violation_product_where['company_id'] = $company_id;
+        } else {
+            $violation_product_where['company_id']  = $admin_company_id;
+        }
+        $ViolationProductModel = $ViolationProductModel->where($violation_product_where);
+        //多选平台查询
+        if ($platform && is_string($platform)) {
+            $platform = explode(',', $platform);
+            $ViolationProductModel = $ViolationProductModel->whereIn('platform', $platform);
+        }
+        //多选处理状态查询
+        if ($processing_status && is_string($processing_status)) {
+            $processing_status = explode(',', $processing_status);
+            $ViolationProductModel = $ViolationProductModel->whereIn('processing_status', $processing_status);
+        }
+        //多选状态查询
+        if ($status && is_string($status)) {
+            $status = explode(',', $status);
+            $ViolationProductModel = $ViolationProductModel->whereIn('status', $status);
+        }
+        //多选店铺名称查询
+        if ($store_names && is_string($store_names)) {
+            $store_names = explode(',', $store_names);
+            $ViolationProductModel = $ViolationProductModel->whereIn('store_name', $store_names);
+        }
+        //多选违规挂网次数查询
+        if ($online_posting_count && is_string($online_posting_count)) {
+            $online_posting_count = explode(',', $online_posting_count);
+            $ViolationProductModel = $ViolationProductModel->whereIn('online_posting_count', $online_posting_count);
+        }
+        //多选规格查询
+        if ($product_specs && is_string($product_specs)) {
+            $product_specs = explode(',', $product_specs);
+            $ViolationProductModel = $ViolationProductModel->whereIn('product_specs', $product_specs);
+        }
+        //多选商品查询
+        if ($product_names && is_string($product_names)) {
+            $product_names = explode(',', $product_names);
+            $ViolationProductModel = $ViolationProductModel->whereIn('product_name', $product_names);
+        }
+        //多选公司查询
+        if ($company_name && is_string($company_name)) {
+            $company_name = explode(',', $company_name);
+            $ViolationProductModel = $ViolationProductModel->whereIn('company_name', $company_name);
+        }
+        //多选第一责任人
+        if ($first_responsible_person && is_string($first_responsible_person)) {
+            $first_responsible_person = explode(',', $first_responsible_person);
+            $subQuery = $ViolationProductModel->whereIn('employee_id', $first_responsible_person)->distinct('lowprice_product_logid')->select('lowprice_product_logid');
+            $ViolationProductModel = $ViolationProductModel->whereIn('id', function ($query1) use ($subQuery) {
+                $query1->select('lowprice_product_logid')->fromSub($subQuery, 'sub1');
+            });
+        }
+        //多选责任人
+        if ($responsible_person && is_string($responsible_person)) {
+            $responsible_person = explode(',', $responsible_person);
+            $subQuery = $ViolationProductModel->whereIn('employee_id', $responsible_person)->distinct('lowprice_product_logid')->select('lowprice_product_logid');
+            $ViolationProductModel = $ViolationProductModel->whereIn('id', function ($query1) use ($subQuery) {
+                $query1->select('lowprice_product_logid')->fromSub($subQuery, 'sub1');
+            });
+        }
+        //多选溯源责任人
+        if ($source_responsible_person && is_string($source_responsible_person)) {
+            $source_responsible_person = explode(',', $source_responsible_person);
+            $subQuery = $ViolationProductModel->whereIn('employee_id', $source_responsible_person)->distinct('lowprice_product_logid')->select('lowprice_product_logid');
+            $ViolationProductModel = $ViolationProductModel->whereIn('id', function ($query1) use ($subQuery) {
+                $query1->select('lowprice_product_logid')->fromSub($subQuery, 'sub1');
+            });
+        }
+        //多选省份
+        if ($province_ids && is_string($province_ids)) {
+            $province_ids = explode(',', $province_ids);
+            $ViolationProductModel = $ViolationProductModel->whereIn('province_id', $province_ids);
+        }
+        //多选城市
+        if ($city_ids && is_string($city_ids)) {
+            $city_ids = explode(',', $city_ids);
+            $ViolationProductModel = $ViolationProductModel->whereIn('city_id', $city_ids);
+        }
+        //多选发货省份
+        if ($shipment_province_ids && is_string($shipment_province_ids)) {
+            $shipment_province_ids = explode(',', $shipment_province_ids);
+            $ViolationProductModel = $ViolationProductModel->whereIn('shipment_province_id', $shipment_province_ids);
+        }
+        //多选发货城市
+        if ($shipment_city_ids && is_string($shipment_city_ids)) {
+            $shipment_city_ids = explode(',', $shipment_city_ids);
+            $ViolationProductModel = $ViolationProductModel->whereIn('shipment_city_id', $shipment_city_ids);
+        }
+        $result_count = 0;
+        if ($is_admin != 1 && $company_id != 0) {
+            $result_count = $ViolationProductModel->where(function ($q) use ($user_id) {
+                $q->where('first_responsible_person', 'like', "%,$user_id,%")
+                    ->orWhere('responsible_person', 'like', "%,$user_id,%")
+                    ->orWhere('source_responsible_person', 'like', "%,$user_id,%");
+            })
+                ->where($map)
+                ->count();
+        } else {
+            $result_count = $ViolationProductModel
+                ->where($map)
+                ->count();
+        }
+        if ($result_count == 0) return json_send(['code' => 'fail', 'msg' => '没有查询到数据', 'data' => '']);
+        if ($result_count > 150000) return json_send(['code' => 'fail', 'msg' => '导出数据超过15万条,请缩小导出范围后再试', 'data' => '']);
+
         // 生成唯一文件ID
         $fileId                     = make_snow_flake();
         $message_data['file_id']    = $fileId;