getItem($item); } public function getItem($item) { $item['license_plate'] = ParkingLicensePlate::getNumber( $item['license_plate_id'] ); $item['parking'] = Parking::getName($item['parking_id']); $channel_list = ParkingChannel::getChannelData( $item['channel_ids'] ); $item['channel_str'] = ''; if ($channel_list) { $channel_arr = array_column((array)$channel_list, 'name'); $item['channel_str'] = implode(',', $channel_arr); } $item['member_type_str'] = ParkingSpaceType::getName($item['member_type']); $item['admin_username'] = AdminUsers::getUsername( $item['admin_user_id'] ); unset( $item['license_plate_id'], $item['parking_id'], $item['channel_ids'], $item['member_type'], $item['admin_user_id'], $item['status'] ); return $item; } /** * @param array $data * @throws Exception */ public function createModel(array $data) { try { DB::beginTransaction(); $license_plate = $data['license_plate']; $LicensePlate = new ParkingLicensePlateService($this->logService); $license_plate_id = $LicensePlate->saveNumber($license_plate); $existsWhere = [ ['license_plate_id', '=', $license_plate_id] ]; if (ParkingWhitelist::query()->where($existsWhere)->exists()) { throw new Exception( __service($this->menuTitle . '.number_exists') ); } $channel_ids = implode(',', $data['channel_ids']); $model = ParkingWhitelist::query()->create([ 'license_plate_id' => $license_plate_id, 'parking_id' => $data['parking_id'], 'member_type' => $data['member_type'] ?? 0, 'admin_user_id' => $data['admin_user_id'], 'channel_ids' => $channel_ids ?? '', 'reason' => $data['reason'], 'created_at' => get_datetime() ]); $this->logService->logCreated( $model, $this->menuTitle . '.create' ); DB::commit(); return $model; } catch (Exception $e) { DB::rollBack(); throw $e; } } /** * @param array $data * @param int $id * @throws Exception */ public function updateModel(array $data, int $id) { try { DB::beginTransaction(); $license_plate = $data['license_plate']; $LicensePlate = new ParkingLicensePlateService($this->logService); $license_plate_id = $LicensePlate->saveNumber($license_plate); // 验证 $existsWhere = [ ['license_plate_id', '=', $license_plate_id], ['id', '<>', $id] ]; if (ParkingWhitelist::query()->where($existsWhere)->exists()) { throw new Exception( __service($this->menuTitle . '.number_exists') ); } // 更新 $model = ParkingWhitelist::query()->findOrFail($id); $oldValues = $model->toArray(); $channel_ids = implode(',', $data['channel_ids']); $model->update([ 'license_plate_id' => $license_plate_id, 'parking_id' => $data['parking_id'], 'member_type' => $data['member_type'] ?? 0, 'admin_user_id' => $data['admin_user_id'], 'channel_ids' => $channel_ids ?? '', 'reason' => $data['reason'], 'updated_at' => get_datetime() ]); $this->logService->logUpdated( $model, $oldValues, $this->menuTitle . '.update' ); DB::commit(); return $model; } catch (Exception $e) { DB::rollBack(); throw $e; } } /** * @param $id * @return bool * @throws Exception */ public function deleteModel($id): bool { try { DB::beginTransaction(); $model = ParkingWhitelist::query()->findOrFail($id); $this->logService->logDeleted($model, $this->menuTitle . '.delete'); $model->delete(); DB::commit(); return true; } catch (Exception $e) { DB::rollBack(); throw $e; } } }