|
|
@@ -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' => '']);
|