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;
use App\Models\AdminUsers;
use App\Models\AdminVipList;
use Illuminate\Database\Eloquent\Collection;
use Maatwebsite\Excel\Concerns\FromCollection;
use Maatwebsite\Excel\Concerns\WithHeadings;
class AdminVipListExport implements FromCollection
class AdminVipListExport implements FromCollection, WithHeadings
{
/**
* @return 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;
use Maatwebsite\Excel\Concerns\FromCollection;
use Maatwebsite\Excel\Concerns\FromArray;
class AdminVipListImportTemplateExport implements FromCollection
class AdminVipListImportTemplateExport implements FromArray
{
/**
* @return array
*/
public function collection(): array
public function array(): array
{
return [
[__('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\Validation\ValidationException;
use Maatwebsite\Excel\Facades\Excel;
use Psr\SimpleCache\InvalidArgumentException;
use Symfony\Component\HttpFoundation\BinaryFileResponse;
class VipListController extends BaseController
{
/**
* @var ApiResponseService
*/
protected ApiResponseService $responseService;
/**
* @var AdminVipListService
*/
@ -39,7 +35,7 @@ class VipListController extends BaseController
ApiResponseService $responseService,
AdminVipListService $vipListService
) {
$this->responseService = $responseService;
parent::__construct($responseService);
$this->vipListService = $vipListService;
}
@ -66,6 +62,7 @@ class VipListController extends BaseController
$item['username'] = AdminUsers::getUsername(
$item['user_id']
);
unset($item['user_id']);
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
* @return JsonResponse
@ -173,7 +187,7 @@ class VipListController extends BaseController
$request->validate([
'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' => __('validation.admin_list_vip.file_empty'),
@ -201,7 +215,7 @@ class VipListController extends BaseController
// 5. (可选)导入完成后删除临时文件
Storage::delete($path);
return $this->responseService->systemError(
return $this->responseService->success(
__('controller.import.success')
);
} catch (ValidationException $e) {
@ -247,7 +261,7 @@ class VipListController extends BaseController
{
return Excel::download(
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(
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
{
return new AdminVipList([
'license' => $row['license'],
'user_id' => Auth::guard('sanctum')->user()['id'],
'created_at' => get_datetime()
]);
foreach ($row as $license) {
if (!AdminVipList::query()->where('license', $license)
->exists()
) {
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' => '车牌号码',
'import_template' => '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']);
// VIP名单
Route::apiResource('listVip', VipListController::class);
Route::post('list_vip/rule', [VipListController::class, 'rule']);
Route::post('list_vip/import', [VipListController::class, 'import']);
Route::get('list_vip/import_template', [VipListController::class, 'importTemplate']);
Route::get('list_vip/export', [VipListController::class, 'export']);
Route::apiResource('vipList', VipListController::class);
Route::get('vip_list/rule', [VipListController::class, 'rule']);
Route::post('vip_list/import', [VipListController::class, 'import']);
// 系统日志
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('/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