后台国家和省份管理

This commit is contained in:
TL 2022-08-29 18:04:07 +08:00
parent 3beeeffd02
commit c33480aac3
8 changed files with 166 additions and 6 deletions

View File

@ -0,0 +1,51 @@
<?php
/**
* CountryController.php
*
* @copyright 2022 opencart.cn - All Rights Reserved
* @link http://www.guangdawangluo.com
* @author TL <mengwb@opencart.cn>
* @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'));
}
}

View File

@ -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);

View File

@ -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);
}
/**
* 根据模块和路由返回权限列表
*

View File

@ -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');
// 客户组

View File

@ -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'],

View File

@ -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' => '省份',
];

View File

@ -0,0 +1,16 @@
<?php
/**
* country.php
*
* @copyright 2022 opencart.cn - All Rights Reserved
* @link http://www.guangdawangluo.com
* @author TL <mengwb@opencart.cn>
* @created 2022-08-29 17:21:38
* @modified 2022-08-29 17:21:38
*/
return [
'countries_index' => '国家列表',
'countries_create' => '创建国家',
'countries_update' => '更新国家',
'countries_delete' => '删除国家',
];

View File

@ -0,0 +1,16 @@
<?php
/**
* zone.php
*
* @copyright 2022 opencart.cn - All Rights Reserved
* @link http://www.guangdawangluo.com
* @author TL <mengwb@opencart.cn>
* @created 2022-08-29 17:21:38
* @modified 2022-08-29 17:21:38
*/
return [
'zones_index' => '省份列表',
'zones_create' => '创建省份',
'zones_update' => '更新省份',
'zones_delete' => '删除省份',
];