From c33480aac3c6c59e31e4b9e296ec0c0b6f032306 Mon Sep 17 00:00:00 2001 From: TL Date: Mon, 29 Aug 2022 18:04:07 +0800 Subject: [PATCH] =?UTF-8?q?=E5=90=8E=E5=8F=B0=E5=9B=BD=E5=AE=B6=E5=92=8C?= =?UTF-8?q?=E7=9C=81=E4=BB=BD=E7=AE=A1=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Http/Controllers/CountryController.php | 51 +++++++++++++++++++ .../Admin/Http/Controllers/ZoneController.php | 39 ++++++++++++-- beike/Admin/Repositories/PermissionRepo.php | 28 ++++++++++ beike/Admin/Routes/admin.php | 16 +++++- beike/Admin/View/Components/Sidebar.php | 2 + resources/lang/zh_cn/admin/common.php | 4 ++ resources/lang/zh_cn/admin/country.php | 16 ++++++ resources/lang/zh_cn/admin/zone.php | 16 ++++++ 8 files changed, 166 insertions(+), 6 deletions(-) create mode 100644 beike/Admin/Http/Controllers/CountryController.php create mode 100644 resources/lang/zh_cn/admin/country.php create mode 100644 resources/lang/zh_cn/admin/zone.php diff --git a/beike/Admin/Http/Controllers/CountryController.php b/beike/Admin/Http/Controllers/CountryController.php new file mode 100644 index 00000000..48965ce0 --- /dev/null +++ b/beike/Admin/Http/Controllers/CountryController.php @@ -0,0 +1,51 @@ + + * @created 2022-08-29 16:17:04 + * @modified 2022-08-29 16:17:04 + */ + +namespace Beike\Admin\Http\Controllers; + +use Beike\Repositories\CountryRepo; +use Illuminate\Http\Request; + +class CountryController extends Controller +{ + public function index(Request $request) + { + $countries = CountryRepo::list($request->only('name', 'code', 'status')); + + $data = [ + 'zones' => $countries, + ]; + + return view('admin::pages.zones.index', $data); + } + + public function store(Request $request) + { + $Country = CountryRepo::create($request->only('name', 'code', 'sort_order', 'status')); + + return json_success(trans('common.created_success'), $Country); + } + + public function update(Request $request, int $id) + { + $Country = CountryRepo::update($id, $request->only('name', 'code', 'sort_order', 'status')); + + return json_success(trans('common.updated_success'), $Country); + } + + public function destroy(int $id) + { + CountryRepo::delete($id); + + return json_success(trans('common.deleted_success')); + } + +} diff --git a/beike/Admin/Http/Controllers/ZoneController.php b/beike/Admin/Http/Controllers/ZoneController.php index 1e3c500a..582b8543 100644 --- a/beike/Admin/Http/Controllers/ZoneController.php +++ b/beike/Admin/Http/Controllers/ZoneController.php @@ -11,17 +11,46 @@ namespace Beike\Admin\Http\Controllers; -use Beike\Admin\Http\Resources\CustomerResource; -use Beike\Models\Customer; use Beike\Repositories\CountryRepo; -use Beike\Repositories\CustomerGroupRepo; -use Beike\Repositories\CustomerRepo; use Beike\Repositories\ZoneRepo; use Illuminate\Http\Request; class ZoneController extends Controller { - public function index(Request $request, int $countryId) + public function index(Request $request) + { + $zones = ZoneRepo::list($request->only('name', 'code', 'status')); + + $data = [ + 'zones' => $zones, + 'countries' => CountryRepo::all() + ]; + + return view('admin::pages.zones.index', $data); + } + + public function store(Request $request) + { + $zone = ZoneRepo::create($request->only('country_id', 'name', 'code', 'sort_order', 'status')); + + return json_success(trans('common.created_success'), $zone); + } + + public function update(Request $request, int $id) + { + $zone = ZoneRepo::update($id, $request->only('country_id', 'name', 'code', 'sort_order', 'status')); + + return json_success(trans('common.updated_success'), $zone); + } + + public function destroy(int $id) + { + ZoneRepo::delete($id); + + return json_success(trans('common.deleted_success')); + } + + public function listByCountry(Request $request, int $countryId) { ZoneRepo::listByCountry($countryId); diff --git a/beike/Admin/Repositories/PermissionRepo.php b/beike/Admin/Repositories/PermissionRepo.php index 0ca0d2e9..73dfa0c2 100644 --- a/beike/Admin/Repositories/PermissionRepo.php +++ b/beike/Admin/Repositories/PermissionRepo.php @@ -60,6 +60,8 @@ class PermissionRepo ['title' => trans('admin/common.currency'), 'permissions' => $this->getCurrencyPermissions()], ['title' => trans('admin/common.language'), 'permissions' => $this->getLanguagePermissions()], ['title' => trans('admin/common.file_manager'), 'permissions' => $this->getFileManagerPermissions()], + ['title' => trans('admin/common.zone'), 'permissions' => $this->getZonePermissions()], + ['title' => trans('admin/common.country'), 'permissions' => $this->getCountryPermissions()], ]; return hook_filter('role.all_permissions', $permissions); } @@ -311,6 +313,32 @@ class PermissionRepo } + /** + * 获取省份权限列表 + * + * @return array[] + */ + private function getZonePermissions(): array + { + $routes = ['zones_create', 'zones_index', 'zones_update', 'zones_delete']; + $items = $this->getPermissionList('zone', $routes); + return hook_filter('role.zone_permissions', $items); + } + + + /** + * 获取国家权限列表 + * + * @return array[] + */ + private function getCountryPermissions(): array + { + $routes = ['countries_create', 'countries_index', 'countries_update', 'countries_delete']; + $items = $this->getPermissionList('country', $routes); + return hook_filter('role.country_permissions', $items); + } + + /** * 根据模块和路由返回权限列表 * diff --git a/beike/Admin/Routes/admin.php b/beike/Admin/Routes/admin.php index 23ea4324..fff457c3 100644 --- a/beike/Admin/Routes/admin.php +++ b/beike/Admin/Routes/admin.php @@ -41,6 +41,20 @@ Route::prefix($adminName) Route::middleware('can:categories_delete')->delete('categories/{category}', [Controllers\CategoryController::class, 'destroy'])->name('categories.destroy'); + // 国家 + Route::middleware('can:countries_index')->get('countries', [Controllers\CountryController::class, 'index'])->name('countries.index'); + Route::middleware('can:countries_create')->post('countries', [Controllers\CountryController::class, 'store'])->name('countries.store'); + Route::middleware('can:countries_update')->put('countries/{id}', [Controllers\CountryController::class, 'update'])->name('countries.update'); + Route::middleware('can:countries_delete')->delete('countries/{id}', [Controllers\CountryController::class, 'destroy'])->name('countries.destroy'); + + + // 省份 + Route::middleware('can:zones_index')->get('zones', [Controllers\ZoneController::class, 'index'])->name('zones.index'); + Route::middleware('can:zones_create')->post('zones', [Controllers\ZoneController::class, 'store'])->name('zones.store'); + Route::middleware('can:zones_update')->put('zones/{id}', [Controllers\ZoneController::class, 'update'])->name('zones.update'); + Route::middleware('can:zones_delete')->delete('zones/{id}', [Controllers\ZoneController::class, 'destroy'])->name('zones.destroy'); + + // 客户 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'); @@ -55,7 +69,7 @@ Route::prefix($adminName) Route::middleware('can:customers_update')->put('customers/{customer_id}/addresses/{id}', [Controllers\AddressController::class, 'update'])->name('customers.addresses.update'); Route::middleware('can:customers_update')->delete('customers/{customer_id}/addresses/{id}', [Controllers\AddressController::class, 'destroy'])->name('customers.addresses.destroy'); - Route::get('countries/{country_id}/zones', [Controllers\ZoneController::class, 'index'])->name('countries.zones.index'); + Route::get('countries/{country_id}/zones', [Controllers\ZoneController::class, 'listByCountry'])->name('countries.zones.index'); // 客户组 diff --git a/beike/Admin/View/Components/Sidebar.php b/beike/Admin/View/Components/Sidebar.php index dfb40c03..598e8cf2 100644 --- a/beike/Admin/View/Components/Sidebar.php +++ b/beike/Admin/View/Components/Sidebar.php @@ -183,6 +183,8 @@ class Sidebar extends Component ['route' => 'tax_classes.index', 'icon' => 'fa fa-tachometer-alt'], ['route' => 'currencies.index', 'icon' => 'fa fa-tachometer-alt'], ['route' => 'languages.index', 'icon' => 'fa fa-tachometer-alt'], + ['route' => 'countries.index', 'icon' => 'fa fa-tachometer-alt'], + ['route' => 'zones.index', 'icon' => 'fa fa-tachometer-alt'], ['route' => 'design.index', 'icon' => 'fa fa-tachometer-alt', 'blank' => true], ['route' => 'design_footer.index', 'icon' => 'fa fa-tachometer-alt', 'blank' => true], ['route' => 'design_menu.index', 'icon' => 'fa fa-tachometer-alt'], diff --git a/resources/lang/zh_cn/admin/common.php b/resources/lang/zh_cn/admin/common.php index 8e09d77f..729fd73b 100644 --- a/resources/lang/zh_cn/admin/common.php +++ b/resources/lang/zh_cn/admin/common.php @@ -37,6 +37,8 @@ return [ 'tax_class' => '税类管理', 'currency' => '货币管理', 'language' => '语言管理', + 'zone' => '省份管理', + 'country' => '国家管理', 'file_manager' => '文件管理器', 'access_frontend' => '访问前台', @@ -61,4 +63,6 @@ return [ 'rmas_index' => '售后管理', 'customers_index' => '客户列表', 'customer_groups_index' => '客户组', + 'countries_index' => '国家', + 'zones_index' => '省份', ]; diff --git a/resources/lang/zh_cn/admin/country.php b/resources/lang/zh_cn/admin/country.php new file mode 100644 index 00000000..9234b15a --- /dev/null +++ b/resources/lang/zh_cn/admin/country.php @@ -0,0 +1,16 @@ + + * @created 2022-08-29 17:21:38 + * @modified 2022-08-29 17:21:38 + */ +return [ + 'countries_index' => '国家列表', + 'countries_create' => '创建国家', + 'countries_update' => '更新国家', + 'countries_delete' => '删除国家', +]; diff --git a/resources/lang/zh_cn/admin/zone.php b/resources/lang/zh_cn/admin/zone.php new file mode 100644 index 00000000..9bcba1d6 --- /dev/null +++ b/resources/lang/zh_cn/admin/zone.php @@ -0,0 +1,16 @@ + + * @created 2022-08-29 17:21:38 + * @modified 2022-08-29 17:21:38 + */ +return [ + 'zones_index' => '省份列表', + 'zones_create' => '创建省份', + 'zones_update' => '更新省份', + 'zones_delete' => '删除省份', +];