Browse Source

权限菜单数据全返回

master
wanghongjun 6 days ago
parent
commit
495fec5a91
  1. 12
      app/Http/Controllers/Admin/IndexController.php
  2. 7
      app/Http/Controllers/Admin/RolesController.php
  3. 9
      app/Models/AdminMenu.php
  4. 4
      app/Services/AdminMenuService.php
  5. 441
      database/seeders/AdminMenuSeeder.php
  6. 75
      resources/lang/zh-CN/menu.php

12
app/Http/Controllers/Admin/IndexController.php

@ -11,19 +11,13 @@ use Illuminate\Support\Facades\Auth;
class IndexController extends BaseController class IndexController extends BaseController
{ {
/**
* @var ApiResponseService
*/
protected ApiResponseService $responseService;
/** /**
* 构造函数 * 构造函数
* @param ApiResponseService $responseService * @param ApiResponseService $responseService
*/ */
public function __construct( public function __construct(ApiResponseService $responseService)
ApiResponseService $responseService, {
) { parent::__construct($responseService);
$this->responseService = $responseService;
} }
// //

7
app/Http/Controllers/Admin/RolesController.php

@ -17,11 +17,6 @@ use Psr\SimpleCache\InvalidArgumentException;
class RolesController extends BaseController class RolesController extends BaseController
{ {
/**
* @var ApiResponseService
*/
protected ApiResponseService $responseService;
/** /**
* @var AdminRolesService * @var AdminRolesService
*/ */
@ -36,7 +31,7 @@ class RolesController extends BaseController
ApiResponseService $responseService, ApiResponseService $responseService,
AdminRolesService $AdminRolesService, AdminRolesService $AdminRolesService,
) { ) {
$this->responseService = $responseService; parent::__construct($responseService);
$this->AdminRolesService = $AdminRolesService; $this->AdminRolesService = $AdminRolesService;
} }

9
app/Models/AdminMenu.php

@ -24,6 +24,15 @@ class AdminMenu extends Model
'deleted_at', 'deleted_at',
]; ];
/**
* @param $value
* @return string
*/
public function getCreatedAtAttribute($value): string
{
return get_datetime('datetime', strtotime($value));
}
/** /**
* A Menu belongs to many roles. * A Menu belongs to many roles.
* @return BelongsToMany * @return BelongsToMany

4
app/Services/AdminMenuService.php

@ -66,6 +66,10 @@ final class AdminMenuService
->orderBy('id') ->orderBy('id')
->select() ->select()
->get() ->get()
->each(function ($item) {
$item['title'] = __('menu.' . $item['title']);
return $item;
})
->toArray(); ->toArray();
return generate_tree($list, 0, $this->adminRoleMenus); return generate_tree($list, 0, $this->adminRoleMenus);
} }

441
database/seeders/AdminMenuSeeder.php

@ -6,6 +6,8 @@ use Illuminate\Database\Console\Seeds\WithoutModelEvents;
use Illuminate\Database\Seeder; use Illuminate\Database\Seeder;
use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\DB;
use function Illuminate\Events\queueable;
class AdminMenuSeeder extends Seeder class AdminMenuSeeder extends Seeder
{ {
/** /**
@ -19,158 +21,313 @@ class AdminMenuSeeder extends Seeder
private function data(): array private function data(): array
{ {
$not_datetime = date("Y-m-d H:i:s", time()); $data = [];
$array = $this->returnArray();
$id = 0;
foreach ($array as $key => $value) {
$id += 1;
$data[] = $this->insertData($id, $key, 1);
if (is_array($value)) {
foreach ($value as $k => $v) {
$parent_id = $id;
$id += 1;
$data[] = $this->insertData($id, $k, 1, $parent_id, $v['uri']);
$order = 0;
foreach ($v['child'] as $title => $uri) {
$parent_id = $id;
$id += 1;
$data[] = $this->insertData($id, $title, 0, $parent_id, $uri, $order);
$order += 1;
}
}
}
}
return $data;
}
private function returnArray():array
{
return [ return [
[ 'model_manage' => [
'id' => 1, 'event_calendar' => [
'parent_id' => 0, 'uri' => '',
'order' => 0, 'child' => [
'title' => '模式管理', 'read_only' => '',
'icon' => '', 'add' => '',
'uri' => '', 'edit' => '',
'show' => 1, 'import' => '',
'created_at' => $not_datetime 'export' => '',
], 'delete' => '',
[ 'batch_delete' => '',
'id' => 2, 'download_template' => '',
'parent_id' => 0, 'end' => ''
'order' => 0, ]
'title' => '车位状态', ],
'icon' => '', 'model_manage' => [
'uri' => '', 'uri' => '',
'show' => 1, 'child' => [
'created_at' => $not_datetime 'read_only' => '',
], 'add' => '',
[ 'edit' => '',
'id' => 3, 'batch_import' => '',
'parent_id' => 0, 'view_details' => '',
'order' => 0, 'download_template' => '',
'title' => '特别车位管理', 'reserved_parking' => '',
'icon' => '', 'departure_reminder' => '',
'uri' => '', 'add_parking_space' => '',
'show' => 1, 'edit_parking_space' => '',
'created_at' => $not_datetime 'delete_parking_space' => ''
]
]
], ],
[ 'cat_status' => [
'id' => 4, 'cat_map' => [
'parent_id' => 0, 'uri' => '',
'order' => 0, 'child' => [
'title' => '信息中心', 'read_only' => '',
'icon' => '', 'view' => ''
'uri' => '', ]
'show' => 1, ],
'created_at' => $not_datetime 'cat_list' => [
'uri' => '',
'child' => [
'read_only' => '',
'add_new_energy' => '',
'delete_new_energy' => ''
]
],
'cat_type' => [
'uri' => 'spaceType',
'child' => [
'read_only' => 'spaceType.index',
'add' => 'spaceType.store',
'delete' => 'spaceType.delete',
'view_details' => 'spaceType.show',
'edit' => 'spaceType.update',
'download_template' => '',
'license_plate_management' => 'licensePlate.index',
'batch_import' => '',
'add_license_plate' => 'licensePlate.store',
'delete_license_plate' => 'licensePlate.destroy',
'edit_license_plate' => 'licensePlate.update',
'clear_license_plate' => ''
]
],
'cat_attr' => [
'uri' => 'spaceAttr',
'child' => [
'read_only' => 'spaceAttr.index',
'add' => 'spaceAttr.store',
'edit' => 'spaceAttr.update',
'delete' => 'spaceAttr.destroy'
]
],
'draw_map' => [
'uri' => '',
'child' => [
'read_only' => ''
]
],
'parking_information' => [
'uri' => '',
'child' => [
'read_only' => '',
'add' => '',
'clear' => '',
'delete' => ''
]
]
], ],
[ 'special_car_manage' => [
'id' => 5, 'vip_list' => [
'parent_id' => 0, 'uri' => 'vipList',
'order' => 0, 'child' => [
'title' => '统计报表', 'read_only' => 'vipList.index',
'icon' => '', 'add' => 'vipList.store',
'uri' => '', 'edit' => 'vipList.update',
'show' => 1, 'delete' => 'vipList.destroy',
'created_at' => $not_datetime 'import' => 'vipList.import',
'export' => 'vipList.export',
'download_template' => 'vipList.importTemplate'
]
],
'vip_access_record' => [
'uri' => 'vipAccessRecord',
'child' => [
'read_only' => 'vipAccessRecord.index',
'view_details' => 'vipAccessRecord.show'
]
]
], ],
[ 'information_center' => [
'id' => 6, 'alarm_notice' => [
'parent_id' => 0, 'uri' => '',
'order' => 0, 'child' => [
'title' => '设备管理', 'read_only' => '',
'icon' => '', 'view_details' => '',
'uri' => '', 'export' => '',
'show' => 1, 'alarm_settings' => ''
'created_at' => $not_datetime ]
]
], ],
[ 'gate_management' => [
'id' => 7, 'stop_on_duty' => [
'parent_id' => 0, 'uri' => '',
'order' => 0, 'child' => [
'title' => '系统管理', 'read_only' => ''
'icon' => '', ]
'uri' => '', ],
'show' => 1, 'lane_video' => [
'created_at' => $not_datetime 'uri' => '',
'child' => [
'read_only' => ''
]
]
], ],
[ 'statistics_report' => [
'id' => 8, 'recognition_rate' => [
'parent_id' => 0, 'uri' => '',
'order' => 0, 'child' => [
'title' => '用户管理', 'read_only' => '',
'icon' => '', 'export' => ''
'uri' => '', ]
'show' => 1, ],
'created_at' => $not_datetime 'parking_behavior' => [
'uri' => '',
'child' => [
'read_only' => '',
'export' => '',
'view_details' => ''
]
],
'utilization_rate' => [
'uri' => '',
'child' => [
'read_only' => '',
'export' => ''
]
],
'occupancy_rate' => [
'uri' => '',
'child' => [
'read_only' => '',
'export' => ''
]
],
'manual_correction' => [
'uri' => '',
'child' => [
'read_only' => '',
'view_details' => '',
'export' => ''
]
]
], ],
[ 'system_log' => [
'id' => 9, 'system_log' => [
'parent_id' => 8, 'uri' => 'operationLog',
'order' => 0, 'child' => [
'title' => '用户列表', 'read_only' => 'operationLog.index',
'icon' => '', 'export' => 'operationLog.export'
'uri' => '', ]
'show' => 1, ]
'created_at' => $not_datetime
], ],
[ 'device_manage' => [
'id' => 10, 'camera_management' => [
'parent_id' => 8, 'uri' => '',
'order' => 0, 'child' => [
'title' => '角色管理', 'read_only' => '',
'icon' => '', 'add' => '',
'uri' => '', 'edit' => '',
'show' => 1, 'delete' => '',
'created_at' => $not_datetime 'import' => '',
'export' => '',
'debug' => '',
'download_template' => ''
]
]
], ],
[ 'system_manage' => [
'id' => 11, 'total_configuration' => [
'parent_id' => 9, 'uri' => 'config',
'order' => 0, 'child' => [
'title' => '只读', 'read_only' => 'config.index',
'icon' => '', 'edit' => 'config.update'
'uri' => 'users.index', ]
'show' => 0, ],
'created_at' => $not_datetime 'floor_plan' => [
], 'uri' => 'floors',
[ 'child' => [
'id' => 12, 'read_only' => 'floors.index',
'parent_id' => 9, 'add_floor' => 'floors.store',
'order' => 0, 'edit_floor' => 'floors.update',
'title' => '查看', 'delete' => 'floors.destroy'
'icon' => '', ]
'uri' => 'users.show', ],
'show' => 0, 'translation' => [
'created_at' => $not_datetime 'uri' => 'translations',
], 'child' => [
[ 'read_only' => 'translations.index',
'id' => 13, 'add' => 'translations.store',
'parent_id' => 9, 'edit' => 'translations.update',
'order' => 0, 'delete' => 'translations.destroy'
'title' => '添加', ]
'icon' => '', ]
'uri' => 'users.store',
'show' => 0,
'created_at' => $not_datetime
],
[
'id' => 14,
'parent_id' => 9,
'order' => 0,
'title' => '编辑',
'icon' => '',
'uri' => 'users.update',
'show' => 0,
'created_at' => $not_datetime
],
[
'id' => 15,
'parent_id' => 9,
'order' => 0,
'title' => '删除',
'icon' => '',
'uri' => 'users.destroy',
'show' => 0,
'created_at' => $not_datetime
], ],
'user_manage' => [
'user_list' => [
'uri' => 'users',
'child' => [
'read_only' => 'users.index',
'add' => 'users.store',
'edit' => 'users.update',
'delete' => 'users.destroy'
]
],
'role_manage' => [
'uri' => 'roles',
'child' => [
'read_only' => 'roles.index',
'add' => 'roles.store',
'view' => 'roles.show',
'edit' => 'roles.update',
'delete' => 'roles.destroy'
]
]
]
];
}
/**
* @param int $id
* @param string $title
* @param int $show
* @param int $parent_id
* @param string $uri
* @param int $order
* @return array
*/
private function insertData(
int $id,
string $title,
int $show = 0,
int $parent_id = 0,
string $uri = '#',
int $order = 0
): array {
return [
'id' => $id,
'parent_id' => $parent_id,
'order' => $order,
'title' => $title,
'icon' => '',
'uri' => $uri,
'show' => $show,
'created_at' => date("Y-m-d H:i:s", time())
]; ];
} }
} }

75
resources/lang/zh-CN/menu.php

@ -1,13 +1,70 @@
<?php <?php
return [ return [
'model_manage' => '模式管理', 'homepage' => '主页',
'cat_status' => '车位状态', 'model_manage' => '模式管理',
'special_car_manage' => '特别车位管理', 'event_calendar' => '活动行事历',
'information_center' => '信息中心', 'cat_status' => '车位状态',
'statistics_report' => '统计报表', 'cat_map' => '车位地图',
'device_manage' => '设备管理', 'cat_list' => '车位列表',
'system_manage' => '系统管理', 'cat_type' => '车位类型管理',
'user_manage' => '用户管理', 'cat_attr' => '车位属性管理',
'role_manage' => '角色管理', 'draw_map' => '绘制电子地图',
'parking_information' => '车位停车资讯',
'special_car_manage' => '特别车位管理',
'vip_list' => 'VIP名单',
'vip_access_record' => 'VIP进出记录',
'information_center' => '信息中心',
'alarm_notice' => '警报 & 通知',
'statistics_report' => '统计报表',
'recognition_rate' => '车牌识别率',
'parking_behavior' => '停车行为',
'utilization_rate' => '车位使用率',
'occupancy_rate' => '车位占用率',
'manual_correction' => '车牌手动修正记录',
'system_log' => '系统日志',
'device_manage' => '设备管理',
'camera_management' => '车位相机管理',
'system_manage' => '系统管理',
'total_configuration' => '系统总配置',
'floor_plan' => '楼层配置',
'translation' => '翻译',
'user_manage' => '用户管理',
'user_list' => '用户列表',
'role_manage' => '角色管理',
'read_only' => '只读',
'view' => '查看',
'add' => '新增',
'edit' => '编辑',
'delete' => '删除',
'import' => '导入',
'export' => '导出',
'batch_delete' => '批量删除',
'download_template' => '下载模板',
'end' => '结束',
'batch_import' => '批量导入',
'view_details' => '查看详情',
'reserved_parking' => '释放优越卡预留车位',
'departure_reminder' => '离场提示',
'add_parking_space' => '车位添加',
'edit_parking_space' => '车位编辑',
'delete_parking_space' => '车位删除',
'add_new_energy' => '设置新能源车位',
'delete_new_energy' => '取消新能源车位',
'license_plate_management' => '车牌管理',
'add_license_plate' => '添加车牌',
'edit_license_plate' => '编辑车牌',
'delete_license_plate' => '删除车牌',
'clear_license_plate' => '清除车牌',
'clear' => '清除',
'alarm_settings' => '告警设置',
'debug' => '调试',
'related_parking_spaces' => '关联车位',
'add_floor' => '添加楼层',
'edit_floor' => '编辑楼层',
'add_partition' => '添加分区',
'edit_partition' => '编辑分区',
'gate_management' => '闸道管理',
'stop_on_duty' => '车场岗亭',
'lane_video' => '车道视频'
]; ];

Loading…
Cancel
Save