diff --git a/app/Http/Controllers/Admin/IndexController.php b/app/Http/Controllers/Admin/IndexController.php index cbaadc4..929ab2b 100644 --- a/app/Http/Controllers/Admin/IndexController.php +++ b/app/Http/Controllers/Admin/IndexController.php @@ -11,19 +11,13 @@ use Illuminate\Support\Facades\Auth; class IndexController extends BaseController { - /** - * @var ApiResponseService - */ - protected ApiResponseService $responseService; - /** * 构造函数 * @param ApiResponseService $responseService */ - public function __construct( - ApiResponseService $responseService, - ) { - $this->responseService = $responseService; + public function __construct(ApiResponseService $responseService) + { + parent::__construct($responseService); } // diff --git a/app/Http/Controllers/Admin/RolesController.php b/app/Http/Controllers/Admin/RolesController.php index b408afc..c1f6e96 100644 --- a/app/Http/Controllers/Admin/RolesController.php +++ b/app/Http/Controllers/Admin/RolesController.php @@ -17,11 +17,6 @@ use Psr\SimpleCache\InvalidArgumentException; class RolesController extends BaseController { - /** - * @var ApiResponseService - */ - protected ApiResponseService $responseService; - /** * @var AdminRolesService */ @@ -36,7 +31,7 @@ class RolesController extends BaseController ApiResponseService $responseService, AdminRolesService $AdminRolesService, ) { - $this->responseService = $responseService; + parent::__construct($responseService); $this->AdminRolesService = $AdminRolesService; } diff --git a/app/Models/AdminMenu.php b/app/Models/AdminMenu.php index 92bb64a..64299f9 100644 --- a/app/Models/AdminMenu.php +++ b/app/Models/AdminMenu.php @@ -24,6 +24,15 @@ class AdminMenu extends Model 'deleted_at', ]; + /** + * @param $value + * @return string + */ + public function getCreatedAtAttribute($value): string + { + return get_datetime('datetime', strtotime($value)); + } + /** * A Menu belongs to many roles. * @return BelongsToMany diff --git a/app/Services/AdminMenuService.php b/app/Services/AdminMenuService.php index 523864b..bc72a77 100644 --- a/app/Services/AdminMenuService.php +++ b/app/Services/AdminMenuService.php @@ -66,6 +66,10 @@ final class AdminMenuService ->orderBy('id') ->select() ->get() + ->each(function ($item) { + $item['title'] = __('menu.' . $item['title']); + return $item; + }) ->toArray(); return generate_tree($list, 0, $this->adminRoleMenus); } diff --git a/database/seeders/AdminMenuSeeder.php b/database/seeders/AdminMenuSeeder.php index 8e280ff..6d3b0b9 100644 --- a/database/seeders/AdminMenuSeeder.php +++ b/database/seeders/AdminMenuSeeder.php @@ -6,6 +6,8 @@ use Illuminate\Database\Console\Seeds\WithoutModelEvents; use Illuminate\Database\Seeder; use Illuminate\Support\Facades\DB; +use function Illuminate\Events\queueable; + class AdminMenuSeeder extends Seeder { /** @@ -19,158 +21,313 @@ class AdminMenuSeeder extends Seeder 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 [ - [ - 'id' => 1, - 'parent_id' => 0, - 'order' => 0, - 'title' => '模式管理', - 'icon' => '', - 'uri' => '', - 'show' => 1, - 'created_at' => $not_datetime - ], - [ - 'id' => 2, - 'parent_id' => 0, - 'order' => 0, - 'title' => '车位状态', - 'icon' => '', - 'uri' => '', - 'show' => 1, - 'created_at' => $not_datetime - ], - [ - 'id' => 3, - 'parent_id' => 0, - 'order' => 0, - 'title' => '特别车位管理', - 'icon' => '', - 'uri' => '', - 'show' => 1, - 'created_at' => $not_datetime + 'model_manage' => [ + 'event_calendar' => [ + 'uri' => '', + 'child' => [ + 'read_only' => '', + 'add' => '', + 'edit' => '', + 'import' => '', + 'export' => '', + 'delete' => '', + 'batch_delete' => '', + 'download_template' => '', + 'end' => '' + ] + ], + 'model_manage' => [ + 'uri' => '', + 'child' => [ + 'read_only' => '', + 'add' => '', + 'edit' => '', + 'batch_import' => '', + 'view_details' => '', + 'download_template' => '', + 'reserved_parking' => '', + 'departure_reminder' => '', + 'add_parking_space' => '', + 'edit_parking_space' => '', + 'delete_parking_space' => '' + ] + ] ], - [ - 'id' => 4, - 'parent_id' => 0, - 'order' => 0, - 'title' => '信息中心', - 'icon' => '', - 'uri' => '', - 'show' => 1, - 'created_at' => $not_datetime + 'cat_status' => [ + 'cat_map' => [ + 'uri' => '', + 'child' => [ + 'read_only' => '', + 'view' => '' + ] + ], + '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' => '' + ] + ] ], - [ - 'id' => 5, - 'parent_id' => 0, - 'order' => 0, - 'title' => '统计报表', - 'icon' => '', - 'uri' => '', - 'show' => 1, - 'created_at' => $not_datetime + 'special_car_manage' => [ + 'vip_list' => [ + 'uri' => 'vipList', + 'child' => [ + 'read_only' => 'vipList.index', + 'add' => 'vipList.store', + 'edit' => 'vipList.update', + 'delete' => 'vipList.destroy', + 'import' => 'vipList.import', + 'export' => 'vipList.export', + 'download_template' => 'vipList.importTemplate' + ] + ], + 'vip_access_record' => [ + 'uri' => 'vipAccessRecord', + 'child' => [ + 'read_only' => 'vipAccessRecord.index', + 'view_details' => 'vipAccessRecord.show' + ] + ] ], - [ - 'id' => 6, - 'parent_id' => 0, - 'order' => 0, - 'title' => '设备管理', - 'icon' => '', - 'uri' => '', - 'show' => 1, - 'created_at' => $not_datetime + 'information_center' => [ + 'alarm_notice' => [ + 'uri' => '', + 'child' => [ + 'read_only' => '', + 'view_details' => '', + 'export' => '', + 'alarm_settings' => '' + ] + ] ], - [ - 'id' => 7, - 'parent_id' => 0, - 'order' => 0, - 'title' => '系统管理', - 'icon' => '', - 'uri' => '', - 'show' => 1, - 'created_at' => $not_datetime + 'gate_management' => [ + 'stop_on_duty' => [ + 'uri' => '', + 'child' => [ + 'read_only' => '' + ] + ], + 'lane_video' => [ + 'uri' => '', + 'child' => [ + 'read_only' => '' + ] + ] ], - [ - 'id' => 8, - 'parent_id' => 0, - 'order' => 0, - 'title' => '用户管理', - 'icon' => '', - 'uri' => '', - 'show' => 1, - 'created_at' => $not_datetime + 'statistics_report' => [ + 'recognition_rate' => [ + 'uri' => '', + 'child' => [ + 'read_only' => '', + 'export' => '' + ] + ], + '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' => '' + ] + ] ], - [ - 'id' => 9, - 'parent_id' => 8, - 'order' => 0, - 'title' => '用户列表', - 'icon' => '', - 'uri' => '', - 'show' => 1, - 'created_at' => $not_datetime + 'system_log' => [ + 'system_log' => [ + 'uri' => 'operationLog', + 'child' => [ + 'read_only' => 'operationLog.index', + 'export' => 'operationLog.export' + ] + ] ], - [ - 'id' => 10, - 'parent_id' => 8, - 'order' => 0, - 'title' => '角色管理', - 'icon' => '', - 'uri' => '', - 'show' => 1, - 'created_at' => $not_datetime + 'device_manage' => [ + 'camera_management' => [ + 'uri' => '', + 'child' => [ + 'read_only' => '', + 'add' => '', + 'edit' => '', + 'delete' => '', + 'import' => '', + 'export' => '', + 'debug' => '', + 'download_template' => '' + ] + ] ], - [ - 'id' => 11, - 'parent_id' => 9, - 'order' => 0, - 'title' => '只读', - 'icon' => '', - 'uri' => 'users.index', - 'show' => 0, - 'created_at' => $not_datetime - ], - [ - 'id' => 12, - 'parent_id' => 9, - 'order' => 0, - 'title' => '查看', - 'icon' => '', - 'uri' => 'users.show', - 'show' => 0, - 'created_at' => $not_datetime - ], - [ - 'id' => 13, - 'parent_id' => 9, - 'order' => 0, - '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 + 'system_manage' => [ + 'total_configuration' => [ + 'uri' => 'config', + 'child' => [ + 'read_only' => 'config.index', + 'edit' => 'config.update' + ] + ], + 'floor_plan' => [ + 'uri' => 'floors', + 'child' => [ + 'read_only' => 'floors.index', + 'add_floor' => 'floors.store', + 'edit_floor' => 'floors.update', + 'delete' => 'floors.destroy' + ] + ], + 'translation' => [ + 'uri' => 'translations', + 'child' => [ + 'read_only' => 'translations.index', + 'add' => 'translations.store', + 'edit' => 'translations.update', + 'delete' => 'translations.destroy' + ] + ] ], + '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()) ]; } } diff --git a/resources/lang/zh-CN/menu.php b/resources/lang/zh-CN/menu.php index d02816c..6d12c00 100644 --- a/resources/lang/zh-CN/menu.php +++ b/resources/lang/zh-CN/menu.php @@ -1,13 +1,70 @@ '模式管理', - 'cat_status' => '车位状态', - 'special_car_manage' => '特别车位管理', - 'information_center' => '信息中心', - 'statistics_report' => '统计报表', - 'device_manage' => '设备管理', - 'system_manage' => '系统管理', - 'user_manage' => '用户管理', - 'role_manage' => '角色管理', + 'homepage' => '主页', + 'model_manage' => '模式管理', + 'event_calendar' => '活动行事历', + 'cat_status' => '车位状态', + 'cat_map' => '车位地图', + 'cat_list' => '车位列表', + 'cat_type' => '车位类型管理', + 'cat_attr' => '车位属性管理', + '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' => '车道视频' ];