diff --git a/app/Http/Controllers/Admin/ParkingLicensePlateController.php b/app/Http/Controllers/Admin/ParkingLicensePlateController.php index 2650b1b..b1cd9fe 100644 --- a/app/Http/Controllers/Admin/ParkingLicensePlateController.php +++ b/app/Http/Controllers/Admin/ParkingLicensePlateController.php @@ -225,20 +225,41 @@ class ParkingLicensePlateController extends BaseController { try { // 1. 验证上传的文件 + $params = $request->all(); $request->validate([ 'file' => 'required|mimes:xlsx,xls,csv|max:2048' // 限制文件类型和大小 ]); - $validator = Validator::make($request->all(), [ - 'file' => 'required|mimes:xlsx,xls,csv|max:2048' + $validator = Validator::make($params, [ + 'file' => 'required|mimes:xlsx,xls,csv|max:2048', + 'parking_space_type' => 'required|numeric' ], [ - 'file.required' => __('validation.admin_list_vip.file_empty'), - 'file.mimes' => __('validation.admin_list_vip.file_mimes'), - 'file.max' => __('validation.admin_list_vip.file_max'), + 'file.required' => __( + 'validation.admin_list_vip.file_empty' + ), + 'file.mimes' => __( + 'validation.admin_list_vip.file_mimes' + ), + 'file.max' => __( + 'validation.admin_list_vip.file_max' + ), + 'parking_space_type.required' => __( + 'validation.parking_space.type_id_empty' + ), + 'parking_space_type.numeric' => __( + 'validation.parking_space.type_id_numeric' + ) ]); if ($validator->fails()) { throw new ValidationException($validator); } - + $parking_space_type = $params['parking_space_type']; + if (!ParkingSpaceType::query()->where('id', $parking_space_type) + ->exists() + ) { + return (new ApiResponseService())->businessError( + __('exception.exception_handler.resource') + ); + } // 2. 获取上传的文件 $file = $request->file('file'); @@ -249,7 +270,7 @@ class ParkingLicensePlateController extends BaseController // 4. 执行导入(使用存储后的绝对路径) // storage_path('app') 获取 storage/app 的绝对路径 Excel::import( - new ParkingLicensePlateImport(), + new ParkingLicensePlateImport($parking_space_type), storage_path('app/' . $path) ); diff --git a/app/Imports/ParkingLicensePlateImport.php b/app/Imports/ParkingLicensePlateImport.php index c0843e3..4777118 100644 --- a/app/Imports/ParkingLicensePlateImport.php +++ b/app/Imports/ParkingLicensePlateImport.php @@ -3,62 +3,46 @@ namespace App\Imports; use App\Models\ParkingLicensePlate; -use App\Models\ParkingSpaceType; -use App\Services\ApiResponseService; use App\Services\OperationLogService; -use Illuminate\Http\JsonResponse; -use Illuminate\Http\Request; use Maatwebsite\Excel\Concerns\ToModel; use Maatwebsite\Excel\Concerns\WithHeadingRow; class ParkingLicensePlateImport implements ToModel, WithHeadingRow { + protected string $parkingSpaceType; /** * @var OperationLogService */ private OperationLogService $logService; - public function __construct() + public function __construct($parking_space_type) { $this->logService = new OperationLogService(); $this->logService->menuTitle = 'cat_attr'; + $this->parkingSpaceType = $parking_space_type; } /** * @param array $row - * @return ParkingLicensePlate|JsonResponse + * @return ParkingLicensePlate */ public function model(array $row) { - $request = new Request(); - $parking_space_type = $request->post('parking_space_type', ''); - if (empty($parking_space_type)) { - return (new ApiResponseService())->businessError( - __('validation.parking_space.type_id_empty') - ); - } - if (!ParkingSpaceType::query()->where('id', $parking_space_type) - ->exists() - ) { - return (new ApiResponseService())->businessError( - __('exception.exception_handler.resource') - ); - } $data = []; foreach ($row as $value) { $data[] = $value; } $where = [ 'number' => $data[0], - 'space_type_id' => $parking_space_type + 'space_type_id' => $this->parkingSpaceType ]; if (!ParkingLicensePlate::query()->where($where) ->exists() ) { $model = new ParkingLicensePlate([ 'number' => $data[0], - 'space_type_id' => $data[1], + 'space_type_id' => $this->parkingSpaceType, 'created_at' => get_datetime() ]); $this->logService->logCreated($model, 'license_plate.create');