Browse Source

删除数据库创建,唯一索引

master
wanghongjun 3 days ago
parent
commit
3a0bda0376
  1. 22
      app/Exports/AdminVipListExport.php
  2. 11
      app/Exports/AdminVipListImportTemplateExport.php
  3. 34
      app/Http/Controllers/Admin/VipListController.php
  4. 18
      app/Imports/AdminVipListImport.php
  5. 4
      resources/lang/zh-CN/exports.php
  6. 11
      routes/admin/api.php

22
app/Exports/AdminVipListExport.php

@ -2,17 +2,35 @@
namespace App\Exports; namespace App\Exports;
use App\Models\AdminUsers;
use App\Models\AdminVipList; use App\Models\AdminVipList;
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;
class AdminVipListExport implements FromCollection class AdminVipListExport implements FromCollection, WithHeadings
{ {
/** /**
* @return Collection * @return Collection
*/ */
public function collection(): Collection public function collection(): Collection
{ {
return AdminVipList::all(); return AdminVipList::all()->each(function ($item) {
$item['user_id'] = AdminUsers::getUsername(
$item['user_id']
);
});
}
/**
* @return array
*/
public function headings(): array
{
return [
__('exports.global.index'),
__('exports.vip_list.license'),
__('exports.global.admin')
];
} }
} }

11
app/Exports/AdminVipListImportTemplateExport.php

@ -2,19 +2,16 @@
namespace App\Exports; namespace App\Exports;
use Maatwebsite\Excel\Concerns\FromCollection; use Maatwebsite\Excel\Concerns\FromArray;
class AdminVipListImportTemplateExport implements FromCollection class AdminVipListImportTemplateExport implements FromArray
{ {
/** public function array(): array
* @return array
*/
public function collection(): array
{ {
return [ return [
[__('exports.vip_list.license')], [__('exports.vip_list.license')],
['粤B88888'] ['测A88888']
]; ];
} }
} }

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

@ -17,15 +17,11 @@ use Illuminate\Support\Facades\Storage;
use Illuminate\Support\Facades\Validator; use Illuminate\Support\Facades\Validator;
use Illuminate\Validation\ValidationException; use Illuminate\Validation\ValidationException;
use Maatwebsite\Excel\Facades\Excel; use Maatwebsite\Excel\Facades\Excel;
use Psr\SimpleCache\InvalidArgumentException;
use Symfony\Component\HttpFoundation\BinaryFileResponse; use Symfony\Component\HttpFoundation\BinaryFileResponse;
class VipListController extends BaseController class VipListController extends BaseController
{ {
/**
* @var ApiResponseService
*/
protected ApiResponseService $responseService;
/** /**
* @var AdminVipListService * @var AdminVipListService
*/ */
@ -39,7 +35,7 @@ class VipListController extends BaseController
ApiResponseService $responseService, ApiResponseService $responseService,
AdminVipListService $vipListService AdminVipListService $vipListService
) { ) {
$this->responseService = $responseService; parent::__construct($responseService);
$this->vipListService = $vipListService; $this->vipListService = $vipListService;
} }
@ -66,6 +62,7 @@ class VipListController extends BaseController
$item['username'] = AdminUsers::getUsername( $item['username'] = AdminUsers::getUsername(
$item['user_id'] $item['user_id']
); );
unset($item['user_id']);
return $item; return $item;
} }
); );
@ -161,6 +158,23 @@ class VipListController extends BaseController
} }
} }
/**
* @return JsonResponse
* @throws InvalidArgumentException
*/
public function rule(): JsonResponse
{
try {
return $this->responseService->success(
$this->methodShow('list_vip')
);
} catch (Exception $e) {
return $this->responseService->systemError(
__('exception.get_data_failed') . ':' . $e->getMessage()
);
}
}
/** /**
* @param Request $request * @param Request $request
* @return JsonResponse * @return JsonResponse
@ -173,7 +187,7 @@ class VipListController extends BaseController
$request->validate([ $request->validate([
'file' => 'required|mimes:xlsx,xls,csv|max:2048' // 限制文件类型和大小 'file' => 'required|mimes:xlsx,xls,csv|max:2048' // 限制文件类型和大小
]); ]);
$validator = Validator::make($request->file('file'), [ $validator = Validator::make($request->all(), [
'file' => 'required|mimes:xlsx,xls,csv|max:2048' 'file' => 'required|mimes:xlsx,xls,csv|max:2048'
], [ ], [
'file.required' => __('validation.admin_list_vip.file_empty'), 'file.required' => __('validation.admin_list_vip.file_empty'),
@ -201,7 +215,7 @@ class VipListController extends BaseController
// 5. (可选)导入完成后删除临时文件 // 5. (可选)导入完成后删除临时文件
Storage::delete($path); Storage::delete($path);
return $this->responseService->systemError( return $this->responseService->success(
__('controller.import.success') __('controller.import.success')
); );
} catch (ValidationException $e) { } catch (ValidationException $e) {
@ -247,7 +261,7 @@ class VipListController extends BaseController
{ {
return Excel::download( return Excel::download(
new AdminVipListImportTemplateExport(), new AdminVipListImportTemplateExport(),
__('exports.vip_list.import_template') . '.xlsx' __('exports.vip_list.import_template') . time() .'.xlsx'
); );
} }
@ -258,7 +272,7 @@ class VipListController extends BaseController
{ {
return Excel::download( return Excel::download(
new AdminVipListExport(), new AdminVipListExport(),
__('exports.vip_list.list') . '.xlsx' __('exports.vip_list.list') . time() . '.xlsx'
); );
} }
} }

18
app/Imports/AdminVipListImport.php

@ -15,10 +15,18 @@ class AdminVipListImport implements ToModel, WithHeadingRow
*/ */
public function model(array $row): AdminVipList public function model(array $row): AdminVipList
{ {
return new AdminVipList([ foreach ($row as $license) {
'license' => $row['license'], if (!AdminVipList::query()->where('license', $license)
'user_id' => Auth::guard('sanctum')->user()['id'], ->exists()
'created_at' => get_datetime() ) {
]); return new AdminVipList([
'license' => $license,
'user_id' => Auth::guard('sanctum')->user()['id'],
'created_at' => get_datetime()
]);
}
break;
}
return new AdminVipList();
} }
} }

4
resources/lang/zh-CN/exports.php

@ -4,5 +4,9 @@ return [
'license' => '车牌号码', 'license' => '车牌号码',
'import_template' => 'VIP名单导入模板', 'import_template' => 'VIP名单导入模板',
'list' => 'VIP名单' 'list' => 'VIP名单'
],
'global' => [
'index' => '序号',
'admin' => '操作员'
] ]
]; ];

11
routes/admin/api.php

@ -41,11 +41,9 @@ Route::group(['prefix' => 'admin'], function () {
Route::get('/space_attr/rule', [ParkingSpaceAttributesController::class, 'rule']); Route::get('/space_attr/rule', [ParkingSpaceAttributesController::class, 'rule']);
// VIP名单 // VIP名单
Route::apiResource('listVip', VipListController::class); Route::apiResource('vipList', VipListController::class);
Route::post('list_vip/rule', [VipListController::class, 'rule']); Route::get('vip_list/rule', [VipListController::class, 'rule']);
Route::post('list_vip/import', [VipListController::class, 'import']); Route::post('vip_list/import', [VipListController::class, 'import']);
Route::get('list_vip/import_template', [VipListController::class, 'importTemplate']);
Route::get('list_vip/export', [VipListController::class, 'export']);
// 系统日志 // 系统日志
Route::get('/operationLog/index', [OperationLogController::class, 'index']); Route::get('/operationLog/index', [OperationLogController::class, 'index']);
@ -72,4 +70,7 @@ Route::group(['prefix' => 'admin'], function () {
Route::get('/users/edit/{id}', [UserController::class, 'edit']); Route::get('/users/edit/{id}', [UserController::class, 'edit']);
Route::get('/user/rule', [UserController::class, 'rule']); Route::get('/user/rule', [UserController::class, 'rule']);
}); });
// 导出
Route::get('vip_list/import_template', [VipListController::class, 'importTemplate']);
Route::get('vip_list/export', [VipListController::class, 'export']);
}); });

Loading…
Cancel
Save