From 6109d7c5c489d5bd5591159b35ebe3b23d611706 Mon Sep 17 00:00:00 2001 From: TL Date: Tue, 27 Dec 2022 15:25:35 +0800 Subject: [PATCH] =?UTF-8?q?customer=E5=9B=9E=E6=94=B6=E7=AB=99=E5=8A=9F?= =?UTF-8?q?=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Http/Controllers/CustomerController.php | 32 ++- beike/Admin/Routes/admin.php | 4 + beike/Repositories/CustomerRepo.php | 12 + .../views/pages/customers/trashed.blade.php | 250 ++++++++++++++++++ 4 files changed, 297 insertions(+), 1 deletion(-) create mode 100644 resources/beike/admin/views/pages/customers/trashed.blade.php diff --git a/beike/Admin/Http/Controllers/CustomerController.php b/beike/Admin/Http/Controllers/CustomerController.php index 80f195f5..1f80fa33 100644 --- a/beike/Admin/Http/Controllers/CustomerController.php +++ b/beike/Admin/Http/Controllers/CustomerController.php @@ -16,7 +16,6 @@ use Beike\Admin\Http\Resources\AddressResource; use Beike\Admin\Http\Resources\CustomerGroupDetail; use Beike\Admin\Http\Resources\CustomerResource; use Beike\Admin\Services\CustomerService; -use Beike\Models\Customer; use Beike\Repositories\AddressRepo; use Beike\Repositories\CountryRepo; use Beike\Repositories\CustomerGroupRepo; @@ -42,6 +41,23 @@ class CustomerController extends Controller return view('admin::pages.customers.index', $data); } + public function trashed(Request $request) + { + $customers = CustomerRepo::list(array_merge($request->only(['name', 'email', 'status', 'from', 'customer_group_id']), ['only_trashed' => true])); + + $data = [ + 'customers' => $customers, + 'customers_format' => CustomerResource::collection($customers)->jsonSerialize(), + 'customer_groups' => CustomerGroupDetail::collection(CustomerGroupRepo::list())->jsonSerialize(), + ]; + + if ($request->expectsJson()) { + return json_success(trans('success'), $data); + } + + return view('admin::pages.customers.trashed', $data); + } + public function store(CustomerRequest $request) { $data = $request->only(['email', 'name', 'password', 'status', 'customer_group_id']); @@ -90,4 +106,18 @@ class CustomerController extends Controller return json_success(trans('common.restored_success')); } + + public function forceDelete(Request $request, int $customerId) + { + $customer = CustomerRepo::forceDelete($customerId); + + return json_success(trans('common.success')); + } + + public function forceDeleteAll(Request $request) + { + $customer = CustomerRepo::forceDeleteAll(); + + return json_success(trans('common.success')); + } } diff --git a/beike/Admin/Routes/admin.php b/beike/Admin/Routes/admin.php index 389ee779..5ac6ce03 100644 --- a/beike/Admin/Routes/admin.php +++ b/beike/Admin/Routes/admin.php @@ -56,11 +56,15 @@ Route::prefix($adminName) // 客户 + Route::middleware('can:customers_index')->get('customers/trashed', [Controllers\CustomerController::class, 'trashed'])->name('customers.trashed'); Route::middleware('can:customers_index')->get('customers', [Controllers\CustomerController::class, 'index'])->name('customers.index'); Route::middleware('can:customers_create')->post('customers', [Controllers\CustomerController::class, 'store'])->name('customers.store'); Route::middleware('can:customers_show')->get('customers/{id}/edit', [Controllers\CustomerController::class, 'edit'])->name('customers.edit'); Route::middleware('can:customers_update')->put('customers/{id}', [Controllers\CustomerController::class, 'update'])->name('customers.update'); + Route::middleware('can:customers_create')->delete('customers/{id}/restore', [Controllers\CustomerController::class, 'restore'])->name('customers.restore'); Route::middleware('can:customers_delete')->delete('customers/{id}', [Controllers\CustomerController::class, 'destroy'])->name('customers.destroy'); + Route::middleware('can:customers_delete')->delete('customers/{id}/force', [Controllers\CustomerController::class, 'forceDelete'])->name('customers.force_delete'); + Route::middleware('can:customers_delete')->post('customers/force_delete_all', [Controllers\CustomerController::class, 'forceDeleteAll'])->name('customers.force_delete_all'); // 客户地址 diff --git a/beike/Repositories/CustomerRepo.php b/beike/Repositories/CustomerRepo.php index a16877be..6ac805c7 100644 --- a/beike/Repositories/CustomerRepo.php +++ b/beike/Repositories/CustomerRepo.php @@ -110,6 +110,9 @@ class CustomerRepo if (isset($filters['customer_group_id'])) { $builder->where('customers.customer_group_id', $filters['customer_group_id']); } + if (isset($filters['only_trashed']) && $filters['only_trashed']) { + $builder->onlyTrashed(); + } $start = $filters['start'] ?? null; if ($start) { @@ -129,6 +132,15 @@ class CustomerRepo Customer::withTrashed()->find($id)->restore(); } + public static function forceDelete($id) + { + Customer::withTrashed()->find($id)->forceDelete(); + } + + public static function forceDeleteAll() { + Customer::withTrashed()->forceDelete(); + } + /** * @param $customer , Customer对象或id * @param $productId diff --git a/resources/beike/admin/views/pages/customers/trashed.blade.php b/resources/beike/admin/views/pages/customers/trashed.blade.php new file mode 100644 index 00000000..284f4534 --- /dev/null +++ b/resources/beike/admin/views/pages/customers/trashed.blade.php @@ -0,0 +1,250 @@ +@extends('admin::layouts.master') + +@section('title', __('admin/common.customer')) + +@section('content') +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+
+ +
+ +
+ + +
+
+
+ +
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
{{ __('common.id') }}{{ __('customer.email') }}{{ __('customer.name') }}{{ __('customer.from') }}{{ __('customer.customer_group') }}{{ __('common.status') }}{{ __('common.created_at') }}{{ __('common.action') }}
@{{ customer.id }}@{{ customer.email }} +
+ {{-- --}} +
@{{ customer.name }}
+
+
@{{ customer.from }}@{{ customer.customer_group_name }} + {{ __('common.enable') }} + {{ __('common.disable') }} + @{{ customer.created_at }} + {{ __('common.edit') }} + +
+
+ + +
+ + + + + + + + + + + + + + + + + + + + + + + {{ __('common.save') }} + {{ __('common.cancel') }} + + + +
+@endsection + +@push('footer') + +@endpush