Browse Source

车位资讯保存

master
wanghongjun 1 month ago
parent
commit
f82f9bcc54
  1. 45
      app/Http/Controllers/Admin/ParkingSpaceController.php
  2. 47
      app/Services/ParkingSpaceService.php
  3. 3
      resources/lang/en/validation.php
  4. 3
      resources/lang/zh-CN/validation.php
  5. 3
      resources/lang/zh-TW/validation.php
  6. 1
      routes/admin/api.php

45
app/Http/Controllers/Admin/ParkingSpaceController.php

@ -19,12 +19,8 @@ use Illuminate\Validation\ValidationException;
use Maatwebsite\Excel\Facades\Excel;
use Symfony\Component\HttpFoundation\BinaryFileResponse;
class ParkingSpaceController extends Controller
class ParkingSpaceController extends BaseController
{
/**
* @var ApiResponseService
*/
protected ApiResponseService $responseService;
/**
* @var ParkingSpaceService
@ -32,6 +28,7 @@ class ParkingSpaceController extends Controller
protected ParkingSpaceService $service;
/**
* 构造函数
* @param ApiResponseService $responseService
* @param ParkingSpaceService $service
*/
@ -39,7 +36,7 @@ class ParkingSpaceController extends Controller
ApiResponseService $responseService,
ParkingSpaceService $service
) {
$this->responseService = $responseService;
parent::__construct($responseService);
$this->service = $service;
}
@ -295,4 +292,40 @@ class ParkingSpaceController extends Controller
);
}
}
public function updateStatus(Request $request): JsonResponse
{
try {
$data = $request->all();
$statusArr = $this->service->getStatusArrKey();
$statusStr = implode(',', $statusArr);
$rules = [
'status' => 'required|numeric|in:'.$statusStr
];
$messages = [
'status.required' => __(
'validation.parking_space.status_empty'
),
'status.numeric' => __(
'validation.parking_space.status_numeric'
),
'status.in' => __('validation.parking_space.status_in')
];
$validator = Validator::make($data, $rules, $messages);
if ($validator->fails()) {
throw new ValidationException($validator);
}
$parking_space_id = $data['parking_space_id'];
$status = $data['status'];
$number = $data['license_plate'];
$this->validateId($parking_space_id, ParkingSpace::class);
$this->service->updateStatus($parking_space_id, $status, $number);
return $this->responseService->success('', __('admin.save_succeeded'));
} catch (Exception $e) {
$m_prefix = __('exception.exception_handler.resource');
return $this->responseService->systemError(
$m_prefix . ':' . $e->getMessage()
);
}
}
}

47
app/Services/ParkingSpaceService.php

@ -73,6 +73,11 @@ class ParkingSpaceService extends BaseService
return $arr;
}
public function getStatusArrKey(): array
{
return array_keys($this->statusArr);
}
public function optionItems($item)
{
$item['floor'] = AdminFloor::getName($item['floor_id']);
@ -215,4 +220,46 @@ class ParkingSpaceService extends BaseService
$columns
)->get()->toArray();
}
// 更新状态和车牌
public function updateStatus($id, $status, $license_plate)
{
try {
DB::beginTransaction();
$model = ParkingSpace::query()->findOrFail($id);
$oldValues = $model->toArray();
$update = [
'status' => $status,
'updated_at' => get_datetime()
];
if (!empty($license_plate) && $status == 1) {
$number_id = ParkingLicensePlate::getValueId($license_plate);
if (!$number_id) {
$licensePlateService = new ParkingLicensePlateService($this->logService);
$create = [
'number' => $license_plate,
'space_type_id' => $oldValues['space_type_id']
];
$licensePlateService->createData($create);
$number_id = ParkingLicensePlate::getNumber($license_plate);
}
if ($number_id) {
$update['license_plate_id'] = $number_id;
$update['berthing_time'] = get_datetime();
$update['recognition'] = 'high';
}
}
$model->update($update);
$this->logService->logUpdated(
$model,
$oldValues,
'space_attributes.update'
);
DB::commit();
return $model;
} catch (Exception $e) {
DB::rollBack();
throw $e;
}
}
}

3
resources/lang/en/validation.php

@ -76,6 +76,9 @@ return [
'attr_id_numeric' => 'Parking space attribute data must be numeric',
'ids_empty' => 'Parking data cannot be empty',
'ids_array' => 'Parking data must be an array',
'status_empty' => 'The parking space status cannot be empty',
'status_numeric' => 'The parking space status must be a number',
'status_in' => 'The parking status can only be 0 or 1'
],
'map' => [
'f_empty' => 'The floor number cannot be empty',

3
resources/lang/zh-CN/validation.php

@ -76,6 +76,9 @@ return [
'attr_id_numeric' => '车位属性数据必须是数字',
'ids_empty' => '车位数据不能为空',
'ids_array' => '车位数据必须是数组',
'status_empty' => '车位状态不能为空',
'status_numeric' => '车位状态必须是数字',
'status_in' => '车位状态只能是0或1'
],
'map' => [
'f_empty' => '楼层编号不能为空',

3
resources/lang/zh-TW/validation.php

@ -76,6 +76,9 @@ return [
'attr_id_numeric' => '車位内容數據必須是數位',
'ids_empty' => '車位數據不能為空',
'ids_array' => '車位數據必須是數組',
'status_empty' => '車位狀態不能為空',
'status_numeric' => '車位狀態必須是數位',
'status_in' => '車位狀態只能是0或1'
],
'map' => [
'f_empty' => '樓層編號不能為空',

1
routes/admin/api.php

@ -88,6 +88,7 @@ Route::group(['prefix' => 'admin'], function () {
Route::post('parkingSpace/updateType', [ParkingSpaceController::class, 'updateType']);
Route::post('parkingSpace/updateAttr', [ParkingSpaceController::class, 'updateAttr']);
Route::post('parkingSpace/information', [ParkingSpaceController::class, 'information']);
Route::post('parkingSpace/updateStatus', [ParkingSpaceController::class, 'updateStatus']);
//车位类型管理
Route::get('/spaceType', [ParkingSpaceTypeController::class, 'index']);
Route::get('/spaceType/create', [ParkingSpaceTypeController::class, 'create']);

Loading…
Cancel
Save