后台国家和省份管理
This commit is contained in:
parent
3beeeffd02
commit
c33480aac3
|
|
@ -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'));
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -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);
|
||||
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 根据模块和路由返回权限列表
|
||||
*
|
||||
|
|
|
|||
|
|
@ -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');
|
||||
|
||||
|
||||
// 客户组
|
||||
|
|
|
|||
|
|
@ -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'],
|
||||
|
|
|
|||
|
|
@ -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' => '省份',
|
||||
];
|
||||
|
|
|
|||
|
|
@ -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' => '删除国家',
|
||||
];
|
||||
|
|
@ -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' => '删除省份',
|
||||
];
|
||||
Loading…
Reference in New Issue