Browse Source

特殊车位前缀更改

master
wanghongjun 6 days ago
parent
commit
4957a5b6d6
  1. 6
      app/Exports/ParkingVipListExport.php
  2. 2
      app/Exports/ParkingVipListImportTemplateExport.php
  3. 12
      app/Http/Controllers/Admin/VipAccessRecordController.php
  4. 32
      app/Http/Controllers/Admin/VipListController.php
  5. 14
      app/Imports/ParkingVipListImport.php
  6. 4
      app/Models/ParkingVipAccessRecord.php
  7. 4
      app/Models/ParkingVipList.php
  8. 14
      app/Services/ParkingVipListService.php
  9. 2
      database/migrations/2026_03_02_110943_create_parking_list_vip_table.php
  10. 2
      database/migrations/2026_03_04_160517_create_parking_vip_access_record_table.php

6
app/Exports/AdminVipListExport.php → app/Exports/ParkingVipListExport.php

@ -3,19 +3,19 @@
namespace App\Exports; namespace App\Exports;
use App\Models\AdminUsers; use App\Models\AdminUsers;
use App\Models\AdminVipList; use App\Models\ParkingVipList;
use Illuminate\Database\Eloquent\Collection; use Illuminate\Database\Eloquent\Collection;
use Maatwebsite\Excel\Concerns\FromCollection; use Maatwebsite\Excel\Concerns\FromCollection;
use Maatwebsite\Excel\Concerns\WithHeadings; use Maatwebsite\Excel\Concerns\WithHeadings;
class AdminVipListExport implements FromCollection, WithHeadings class ParkingVipListExport implements FromCollection, WithHeadings
{ {
/** /**
* @return Collection * @return Collection
*/ */
public function collection(): Collection public function collection(): Collection
{ {
return AdminVipList::all()->each(function ($item) { return ParkingVipList::all()->each(function ($item) {
$item['user_id'] = AdminUsers::getUsername( $item['user_id'] = AdminUsers::getUsername(
$item['user_id'] $item['user_id']
); );

2
app/Exports/AdminVipListImportTemplateExport.php → app/Exports/ParkingVipListImportTemplateExport.php

@ -4,7 +4,7 @@ namespace App\Exports;
use Maatwebsite\Excel\Concerns\FromArray; use Maatwebsite\Excel\Concerns\FromArray;
class AdminVipListImportTemplateExport implements FromArray class ParkingVipListImportTemplateExport implements FromArray
{ {
public function array(): array public function array(): array

12
app/Http/Controllers/Admin/VipAccessRecordController.php

@ -3,8 +3,8 @@
namespace App\Http\Controllers\Admin; namespace App\Http\Controllers\Admin;
use App\Http\Controllers\Controller; use App\Http\Controllers\Controller;
use App\Models\AdminVipAccessRecord; use App\Models\ParkingVipAccessRecord;
use App\Models\AdminVipList; use App\Models\ParkingVipList;
use App\Models\ParkingSpaceType; use App\Models\ParkingSpaceType;
use App\Services\ApiResponseService; use App\Services\ApiResponseService;
use Exception; use Exception;
@ -31,7 +31,7 @@ class VipAccessRecordController extends Controller
public function index(Request $request): JsonResponse public function index(Request $request): JsonResponse
{ {
try { try {
$query = AdminVipAccessRecord::query(); $query = ParkingVipAccessRecord::query();
if ($request->has('space_type')) { if ($request->has('space_type')) {
$space_type = $request->input('space_type'); $space_type = $request->input('space_type');
@ -54,7 +54,7 @@ class VipAccessRecordController extends Controller
if ($request->has('license')) { if ($request->has('license')) {
$license = $request->input('license'); $license = $request->input('license');
if (!empty($license)) { if (!empty($license)) {
$vipIds = AdminVipList::query()->where( $vipIds = ParkingVipList::query()->where(
'license', 'license',
'like', 'like',
"%{$license}%" "%{$license}%"
@ -125,7 +125,7 @@ class VipAccessRecordController extends Controller
protected function optionItem($item) protected function optionItem($item)
{ {
$item['license_number'] = AdminVipList::query()->where( $item['license_number'] = ParkingVipList::query()->where(
'id', 'id',
$item['vip_list_id'] $item['vip_list_id']
)->value('license'); )->value('license');
@ -146,7 +146,7 @@ class VipAccessRecordController extends Controller
public function show(string $id): JsonResponse public function show(string $id): JsonResponse
{ {
try { try {
$data = AdminVipAccessRecord::query()->find($id)->toArray(); $data = ParkingVipAccessRecord::query()->find($id)->toArray();
return $this->responseService->success($this->optionItem($data)); return $this->responseService->success($this->optionItem($data));
} catch (Exception $e) { } catch (Exception $e) {
return $this->responseService->systemError( return $this->responseService->systemError(

32
app/Http/Controllers/Admin/VipListController.php

@ -3,12 +3,12 @@
namespace App\Http\Controllers\Admin; namespace App\Http\Controllers\Admin;
use App\Exceptions\CustomException; use App\Exceptions\CustomException;
use App\Exports\AdminVipListExport; use App\Exports\ParkingVipListExport;
use App\Exports\AdminVipListImportTemplateExport; use App\Exports\ParkingVipListImportTemplateExport;
use App\Imports\AdminVipListImport; use App\Imports\ParkingVipListImport;
use App\Models\AdminUsers; use App\Models\AdminUsers;
use App\Models\AdminVipList; use App\Models\ParkingVipList;
use App\Services\AdminVipListService; use App\Services\ParkingVipListService;
use App\Services\ApiResponseService; use App\Services\ApiResponseService;
use Exception; use Exception;
use Illuminate\Http\JsonResponse; use Illuminate\Http\JsonResponse;
@ -23,17 +23,17 @@ use Symfony\Component\HttpFoundation\BinaryFileResponse;
class VipListController extends BaseController class VipListController extends BaseController
{ {
/** /**
* @var AdminVipListService * @var ParkingVipListService
*/ */
protected AdminVipListService $vipListService; protected ParkingVipListService $vipListService;
/** /**
* @param ApiResponseService $responseService * @param ApiResponseService $responseService
* @param AdminVipListService $vipListService * @param ParkingVipListService $vipListService
*/ */
public function __construct( public function __construct(
ApiResponseService $responseService, ApiResponseService $responseService,
AdminVipListService $vipListService ParkingVipListService $vipListService
) { ) {
parent::__construct($responseService); parent::__construct($responseService);
$this->vipListService = $vipListService; $this->vipListService = $vipListService;
@ -46,7 +46,7 @@ class VipListController extends BaseController
public function index(Request $request): JsonResponse public function index(Request $request): JsonResponse
{ {
try { try {
$query = AdminVipList::query(); $query = ParkingVipList::query();
if ($request->has('license')) { if ($request->has('license')) {
$license = $request->input('license'); $license = $request->input('license');
@ -124,7 +124,7 @@ class VipListController extends BaseController
'license.max' => __('validation.admin_list_vip.l_max') 'license.max' => __('validation.admin_list_vip.l_max')
]; ];
if ($id) { if ($id) {
$this->validateId($id, AdminVipList::class); $this->validateId($id, ParkingVipList::class);
} }
$validator = Validator::make($data, $rules, $messages); $validator = Validator::make($data, $rules, $messages);
@ -142,7 +142,7 @@ class VipListController extends BaseController
public function destroy(string $id): JsonResponse public function destroy(string $id): JsonResponse
{ {
try { try {
$this->validateId($id, AdminVipList::class); $this->validateId($id, ParkingVipList::class);
$this->vipListService->deleteModel($id); $this->vipListService->deleteModel($id);
return $this->responseService->success( return $this->responseService->success(
null, null,
@ -208,7 +208,7 @@ class VipListController extends BaseController
// 4. 执行导入(使用存储后的绝对路径) // 4. 执行导入(使用存储后的绝对路径)
// storage_path('app') 获取 storage/app 的绝对路径 // storage_path('app') 获取 storage/app 的绝对路径
Excel::import( Excel::import(
new AdminVipListImport(), new ParkingVipListImport(),
storage_path('app/' . $path) storage_path('app/' . $path)
); );
@ -260,7 +260,7 @@ class VipListController extends BaseController
public function importTemplate(): BinaryFileResponse public function importTemplate(): BinaryFileResponse
{ {
return Excel::download( return Excel::download(
new AdminVipListImportTemplateExport(), new ParkingVipListImportTemplateExport(),
__('exports.vip_list.import_template') . time() .'.xlsx' __('exports.vip_list.import_template') . time() .'.xlsx'
); );
} }
@ -271,7 +271,7 @@ class VipListController extends BaseController
public function export(): BinaryFileResponse public function export(): BinaryFileResponse
{ {
return Excel::download( return Excel::download(
new AdminVipListExport(), new ParkingVipListExport(),
__('exports.vip_list.list') . time() . '.xlsx' __('exports.vip_list.list') . time() . '.xlsx'
); );
} }

14
app/Imports/AdminVipListImport.php → app/Imports/ParkingVipListImport.php

@ -2,24 +2,24 @@
namespace App\Imports; namespace App\Imports;
use App\Models\AdminVipList; use App\Models\ParkingVipList;
use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\Auth;
use Maatwebsite\Excel\Concerns\ToModel; use Maatwebsite\Excel\Concerns\ToModel;
use Maatwebsite\Excel\Concerns\WithHeadingRow; use Maatwebsite\Excel\Concerns\WithHeadingRow;
class AdminVipListImport implements ToModel, WithHeadingRow class ParkingVipListImport implements ToModel, WithHeadingRow
{ {
/** /**
* @param array $row * @param array $row
* @return AdminVipList * @return ParkingVipList
*/ */
public function model(array $row): AdminVipList public function model(array $row): ParkingVipList
{ {
foreach ($row as $license) { foreach ($row as $license) {
if (!AdminVipList::query()->where('license', $license) if (!ParkingVipList::query()->where('license', $license)
->exists() ->exists()
) { ) {
return new AdminVipList([ return new ParkingVipList([
'license' => $license, 'license' => $license,
'user_id' => Auth::guard('sanctum')->user()['id'], 'user_id' => Auth::guard('sanctum')->user()['id'],
'created_at' => get_datetime() 'created_at' => get_datetime()
@ -27,6 +27,6 @@ class AdminVipListImport implements ToModel, WithHeadingRow
} }
break; break;
} }
return new AdminVipList(); return new ParkingVipList();
} }
} }

4
app/Models/AdminVipAccessRecord.php → app/Models/ParkingVipAccessRecord.php

@ -5,11 +5,11 @@ namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Model;
class AdminVipAccessRecord extends Model class ParkingVipAccessRecord extends Model
{ {
use HasFactory; use HasFactory;
protected $table = 'admin_vip_access_record'; protected $table = 'parking_vip_access_record';
protected $fillable = [ protected $fillable = [
'license' 'license'

4
app/Models/AdminVipList.php → app/Models/ParkingVipList.php

@ -6,11 +6,11 @@ use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes; use Illuminate\Database\Eloquent\SoftDeletes;
class AdminVipList extends Model class ParkingVipList extends Model
{ {
use HasFactory, SoftDeletes; use HasFactory, SoftDeletes;
protected $table = 'admin_vip_list'; protected $table = 'parking_vip_list';
protected $fillable = [ protected $fillable = [
'license', 'license',

14
app/Services/AdminVipListService.php → app/Services/ParkingVipListService.php

@ -2,14 +2,14 @@
namespace App\Services; namespace App\Services;
use App\Models\AdminVipList; use App\Models\ParkingVipList;
use Exception; use Exception;
use Illuminate\Database\Eloquent\Builder; use Illuminate\Database\Eloquent\Builder;
use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Model;
use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\DB;
class AdminVipListService class ParkingVipListService
{ {
@ -38,7 +38,7 @@ class AdminVipListService
try { try {
DB::beginTransaction(); DB::beginTransaction();
if (AdminVipList::query()->where('license', $data['license']) if (ParkingVipList::query()->where('license', $data['license'])
->exists() ->exists()
) { ) {
throw new Exception( throw new Exception(
@ -46,7 +46,7 @@ class AdminVipListService
); );
} }
$model = AdminVipList::query()->create([ $model = ParkingVipList::query()->create([
'license' => $data['license'], 'license' => $data['license'],
'user_id' => Auth::guard('sanctum')->user()['id'], 'user_id' => Auth::guard('sanctum')->user()['id'],
'created_at' => get_datetime() 'created_at' => get_datetime()
@ -80,12 +80,12 @@ class AdminVipListService
['license', '=', $data['license']], ['license', '=', $data['license']],
['id', '<>', $id] ['id', '<>', $id]
]; ];
if (AdminVipList::query()->where($existsWhere)->exists()) { if (ParkingVipList::query()->where($existsWhere)->exists()) {
throw new Exception(__('service.admin_vip_list.license_exists')); throw new Exception(__('service.admin_vip_list.license_exists'));
} }
// 更新 // 更新
$model = AdminVipList::query()->findOrFail($id); $model = ParkingVipList::query()->findOrFail($id);
$oldValues = $model->toArray(); $oldValues = $model->toArray();
$model->update([ $model->update([
@ -114,7 +114,7 @@ class AdminVipListService
try { try {
DB::beginTransaction(); DB::beginTransaction();
$model = AdminVipList::query()->findOrFail($id); $model = ParkingVipList::query()->findOrFail($id);
$this->logService->logDeleted($model, '删除VIP名单'); $this->logService->logDeleted($model, '删除VIP名单');

2
database/migrations/2026_03_02_110943_create_admin_list_vip_table.php → database/migrations/2026_03_02_110943_create_parking_list_vip_table.php

@ -11,7 +11,7 @@ return new class extends Migration
*/ */
public function up(): void public function up(): void
{ {
Schema::create('admin_list_vip', function (Blueprint $table) { Schema::create('parking_list_vip', function (Blueprint $table) {
$table->id(); $table->id();
$table->string('license', 20)->comment('车牌号码'); $table->string('license', 20)->comment('车牌号码');
$table->integer('user_id')->comment('管理员id'); $table->integer('user_id')->comment('管理员id');

2
database/migrations/2026_03_04_160517_create_admin_vip_access_record_table.php → database/migrations/2026_03_04_160517_create_parking_vip_access_record_table.php

@ -11,7 +11,7 @@ return new class extends Migration
*/ */
public function up(): void public function up(): void
{ {
Schema::create('admin_vip_access_record', function (Blueprint $table) { Schema::create('parking_vip_access_record', function (Blueprint $table) {
$table->id(); $table->id();
$table->integer('parking_space_id')->index('parking_space_id')->comment('车位类型'); $table->integer('parking_space_id')->index('parking_space_id')->comment('车位类型');
$table->integer('parking_number_id')->comment('车位编号'); $table->integer('parking_number_id')->comment('车位编号');
Loading…
Cancel
Save