generated from liutk/owl-admin-base
492 lines
20 KiB
PHP
492 lines
20 KiB
PHP
<?php
|
|
|
|
namespace Database\Seeders;
|
|
|
|
use Illuminate\Database\Seeder;
|
|
use Slowlyo\OwlAdmin\Models\AdminMenu;
|
|
use Slowlyo\OwlAdmin\Models\AdminPermission;
|
|
|
|
class AdminPermissionSeeder extends Seeder
|
|
{
|
|
/**
|
|
* Run the database seeds.
|
|
*
|
|
* @return void
|
|
*/
|
|
public function run()
|
|
{
|
|
// AdminMenu::truncate();
|
|
// AdminPermission::truncate();
|
|
$data = [
|
|
/*
|
|
|--------------------------------------------------------------------------
|
|
| 主页
|
|
|--------------------------------------------------------------------------
|
|
*/
|
|
'home' => [
|
|
'name' => '主页',
|
|
'icon' => 'line-md:home-twotone-alt',
|
|
'uri' => '/dashboard',
|
|
'is_home' => 1,
|
|
'children' => [],
|
|
'order' => 1,
|
|
],
|
|
|
|
/*
|
|
|--------------------------------------------------------------------------
|
|
| 门店管理
|
|
|--------------------------------------------------------------------------
|
|
*/
|
|
'store' => [
|
|
'name' => '门店管理',
|
|
'icon' => 'material-symbols:store-outline',
|
|
'uri' => '/store',
|
|
'order' =>2,
|
|
'children' => [
|
|
'stores' => [
|
|
'name' => '门店列表',
|
|
'icon' => 'ic:outline-storefront',
|
|
'uri' => '/store/stores',
|
|
'resource' => true,
|
|
'order' => 1,
|
|
],
|
|
'employees' => [
|
|
'name' => '店员管理',
|
|
'icon' => 'ic:baseline-people-outline',
|
|
'uri' => '/store/employees',
|
|
'resource' => ['list', 'create', 'delete'],
|
|
'order' => 2,
|
|
],
|
|
'categories' => [
|
|
'name' => '门店分类',
|
|
'icon' => 'tabler:category',
|
|
'uri' => '/store/categories?parent_key=store_category',
|
|
'resource' => true,
|
|
'order' => 3,
|
|
],
|
|
'levels' => [
|
|
'name' => '门店等级',
|
|
'icon' => 'carbon:skill-level',
|
|
'uri' => '/store/levels?parent_key=store_level',
|
|
'resource' => true,
|
|
'order' => 4,
|
|
|
|
],
|
|
'business' => [
|
|
'name' => '经营类别',
|
|
'icon' => 'mingcute:certificate-line',
|
|
'uri' => '/store/business?parent_key=store_business',
|
|
'resource' => true,
|
|
'order' => 5,
|
|
],
|
|
'devices' => [
|
|
'name' => '彩票机管理',
|
|
'icon' => 'streamline:money-cashier-shop-shopping-pay-payment-cashier-store-cash-register-machine',
|
|
'uri' => '/store/devices',
|
|
'resource' => true,
|
|
'order' => 6,
|
|
],
|
|
'lottery-types' => [
|
|
'name' => '彩种类型',
|
|
'icon' => 'mingcute:sunflower-line',
|
|
'uri' => '/store/lottery-types?parent_key=lottery_type',
|
|
'resource' => true,
|
|
'order' => 7,
|
|
],
|
|
],
|
|
],
|
|
|
|
/*
|
|
|--------------------------------------------------------------------------
|
|
| 人事管理
|
|
|--------------------------------------------------------------------------
|
|
*/
|
|
'hr' => [
|
|
'name' => '人事管理',
|
|
'icon' => 'material-symbols:deployed-code-account-outline',
|
|
'uri' => '/hr',
|
|
'order' => 3,
|
|
'children' => [
|
|
'employees' => [
|
|
'name' => '员工管理',
|
|
'icon' => 'material-symbols:user-attributes-outline',
|
|
'uri' => '/hr/employees',
|
|
'resource' => true,
|
|
'children' => [
|
|
'leave' => '离职',
|
|
],
|
|
'order' => 1,
|
|
],
|
|
'jobs' => [
|
|
'name' => '职位管理',
|
|
'icon' => 'material-symbols:frame-person-outline-sharp',
|
|
'uri' => '/hr/jobs?parent_key=job',
|
|
'resource' => true,
|
|
'order' => 2,
|
|
],
|
|
'rests' => [
|
|
'name' => '休息日管理',
|
|
'icon' => 'material-symbols-light:timelapse-outline-rounded',
|
|
'uri' => '/hr/rests',
|
|
'resource' => ['list', 'create', 'delete'],
|
|
'order' => 3,
|
|
],
|
|
'signs' => [
|
|
'name' => '考勤打卡',
|
|
'icon' => 'material-symbols:calendar-clock-outline',
|
|
'uri' => '/hr/signs',
|
|
'resource' => ['list', 'view'. 'delete'],
|
|
'order' => 4,
|
|
],
|
|
'repairs' => [
|
|
'name' => '补卡申请',
|
|
'icon' => 'mdi:table-clock',
|
|
'uri' => '/hr/repairs',
|
|
'resource' => true,
|
|
'order' => 5,
|
|
],
|
|
'holiday' => [
|
|
'name' => '请假申请',
|
|
'icon' => 'ic:outline-more-time',
|
|
'uri' => '/hr/holiday',
|
|
'resource' => true,
|
|
'order' => 6,
|
|
],
|
|
'overtime' => [
|
|
'name' => '加班申请',
|
|
'icon' => 'ic:round-add-alarm',
|
|
'uri' => '/hr/overtime',
|
|
'resource' => true,
|
|
'order' => 7,
|
|
],
|
|
'business' => [
|
|
'name' => '出差报备',
|
|
'icon' => 'material-symbols:car-tag-outline',
|
|
'uri' => '/hr/business',
|
|
'resource' => true,
|
|
'order' => 8,
|
|
],
|
|
'promotion' => [
|
|
'name' => '升职申请',
|
|
'icon' => 'fluent:people-star-32-regular',
|
|
'uri' => '/hr/promotion',
|
|
'resource' => true,
|
|
'order' => 9,
|
|
],
|
|
],
|
|
],
|
|
|
|
/*
|
|
|--------------------------------------------------------------------------
|
|
| 计划任务
|
|
|--------------------------------------------------------------------------
|
|
*/
|
|
'plan' => [
|
|
'name' => '任务计划',
|
|
'icon' => 'mingcute:send-plane-line',
|
|
'uri' => '/plan',
|
|
'order' => 4,
|
|
'children' => [
|
|
'plans' => [
|
|
'name' => '任务计划',
|
|
'icon' => 'tdesign:task',
|
|
'uri' => '/plan/plans',
|
|
'resource' => true,
|
|
'children' => [
|
|
'publish' => '发布',
|
|
'task_create' => '创建任务',
|
|
'task_view' => '查看任务',
|
|
'task_update' => '编辑任务',
|
|
'task_delete' => '删除任务',
|
|
],
|
|
],
|
|
],
|
|
],
|
|
|
|
/*
|
|
|--------------------------------------------------------------------------
|
|
| 投诉意见
|
|
|--------------------------------------------------------------------------
|
|
*/
|
|
'complaint' => [
|
|
'name' => '投诉意见',
|
|
'icon' => 'mdi:star-four-points-box-outline',
|
|
'uri' => '/complaint',
|
|
'order' => 5,
|
|
'children' => [
|
|
'complaints' => [
|
|
'name' => '举报投诉',
|
|
'icon' => 'pixelarticons:list-box',
|
|
'uri' => '/complaint/complaints',
|
|
'resource' => ['list', 'view'],
|
|
'children' => [
|
|
'start' => '开始',
|
|
'complete' => '完成',
|
|
],
|
|
],
|
|
'feedback' => [
|
|
'name' => '意见箱',
|
|
'icon' => 'tabler:box',
|
|
'uri' => '/complaint/feedback',
|
|
'resource' => ['list', 'delete'],
|
|
'children' => [],
|
|
],
|
|
],
|
|
],
|
|
|
|
/*
|
|
|--------------------------------------------------------------------------
|
|
| 财务报表
|
|
|--------------------------------------------------------------------------
|
|
*/
|
|
'finance' => [
|
|
'name' => '财务报表',
|
|
'icon' => 'material-symbols:finance-mode',
|
|
'uri' => '/finance',
|
|
'order' => 6,
|
|
'children' => [
|
|
'ledgers' => [
|
|
'name' => '上报数据',
|
|
'icon' => 'mdi:database',
|
|
'uri' => '/finance/ledgers',
|
|
'resource' => ['list', 'update', 'view'],
|
|
'children' => [
|
|
'update_ledger_amount' => '编辑总账金额',
|
|
],
|
|
],
|
|
'commission_incomes' => [
|
|
'name' => '佣金收入',
|
|
'icon' => 'ri:money-cny-circle-line',
|
|
'uri' => '/finance/commission-incomes',
|
|
'resource' => false,
|
|
'children' => [
|
|
'index' => '佣金收入',
|
|
],
|
|
],
|
|
'reimbursements' => [
|
|
'name' => '收支报销',
|
|
'icon' => 'ri:money-cny-circle-fill',
|
|
'uri' => '/finance/reimbursements',
|
|
'resource' => ['list', 'view'],
|
|
'children' => [],
|
|
],
|
|
'sales_statistics' => [
|
|
'name' => '销售统计',
|
|
'icon' => 'ri:bar-chart-2-line',
|
|
'uri' => '/finance/sales-statistics',
|
|
'resource' => false,
|
|
'children' => [
|
|
'index' => '销售统计',
|
|
],
|
|
],
|
|
'store_statistics' => [
|
|
'name' => '门店统计',
|
|
'icon' => 'material-symbols:store-rounded',
|
|
'uri' => '/finance/store-statistics',
|
|
'resource' => false,
|
|
'children' => [
|
|
'index' => '门店统计',
|
|
],
|
|
],
|
|
'store_master_commissions' => [
|
|
'name' => '店长提成',
|
|
'icon' => 'icon-park-outline:paper-money',
|
|
'uri' => '/finance/store-master-commissions',
|
|
'resource' => true,
|
|
'children' => [],
|
|
],
|
|
],
|
|
],
|
|
|
|
'train' => [
|
|
'name' => '培训管理',
|
|
'icon' => 'solar:people-nearby-broken',
|
|
'uri' => '/train',
|
|
'order' => 7,
|
|
'children' => [
|
|
'books' => [
|
|
'name' => '课件管理',
|
|
'icon' => 'material-symbols:library-books-outline-rounded',
|
|
'uri' => '/train/books',
|
|
'resource' => true,
|
|
],
|
|
'questions' => [
|
|
'name' => '题库管理',
|
|
'icon' => 'ph:books-duotone',
|
|
'uri' => '/train/questions',
|
|
'resource' => true,
|
|
],
|
|
'examinations' => [
|
|
'name' => '考试管理',
|
|
'icon' => 'material-symbols:checkbook-outline',
|
|
'uri' => '/train/examinations',
|
|
'resource' => true,
|
|
'children' => [
|
|
'publish' => '生成考卷',
|
|
'cancel' => '取消考试',
|
|
]
|
|
],
|
|
'papers' => [
|
|
'name' => '考试结果',
|
|
'icon' => 'material-symbols:checkbook-outline',
|
|
'uri' => '/train/papers',
|
|
'resource' => ['list', 'view']
|
|
],
|
|
]
|
|
],
|
|
'agreement' => [
|
|
'name' => '合同管理',
|
|
'icon' => 'flowbite:inbox-full-outline',
|
|
'uri' => '/agreement',
|
|
'resource' => true,
|
|
'children' => [
|
|
'download' => '打包下载',
|
|
]
|
|
],
|
|
|
|
/*
|
|
|--------------------------------------------------------------------------
|
|
| 系统管理
|
|
|--------------------------------------------------------------------------
|
|
*/
|
|
'system' => [
|
|
'name' => '系统管理',
|
|
'icon' => 'material-symbols:settings-outline',
|
|
'uri' => '/system',
|
|
'children' => [
|
|
'admin_users' => [
|
|
'name' => '账号管理',
|
|
'icon' => 'ph:user-gear',
|
|
'uri' => '/system/admin_users',
|
|
'resource' => ['list', 'create', 'update', 'delete'],
|
|
'children' => ['change_password' => '修改密码'],
|
|
],
|
|
'admin_roles' => [
|
|
'name' => '角色管理',
|
|
'icon' => 'carbon:user-role',
|
|
'uri' => '/system/admin_roles',
|
|
'resource' => ['list', 'create', 'update', 'delete'],
|
|
'children' => [
|
|
'set_menus' => '设置菜单',
|
|
'set_permissions' => '设置权限',
|
|
],
|
|
],
|
|
'admin_permissions' => [
|
|
'name' => '权限管理',
|
|
'icon' => 'fluent-mdl2:permissions',
|
|
'uri' => '/system/admin_permissions',
|
|
'resource' => ['list', 'create', 'update', 'delete'],
|
|
'children' => [],
|
|
],
|
|
'admin_menus' => [
|
|
'name' => '菜单管理',
|
|
'icon' => 'ant-design:menu-unfold-outlined',
|
|
'uri' => '/system/admin_menus',
|
|
'resource' => ['list', 'create', 'update', 'delete'],
|
|
'children' => [],
|
|
],
|
|
'settings' => [
|
|
'name' => '系统设置',
|
|
'icon' => 'akar-icons:settings-horizontal',
|
|
'uri' => '/system/settings',
|
|
'resource' => true,
|
|
'children' => [],
|
|
],
|
|
'keywords' => [
|
|
'name' => '数据字典',
|
|
'icon' => 'ph:codesandbox-logo-light',
|
|
'uri' => '/system/keywords',
|
|
'resource' => ['list', 'create', 'update', 'delete'],
|
|
'children' => [],
|
|
],
|
|
'workflows' => [
|
|
'name' => '审核流程',
|
|
'icon' => 'carbon:flow-data',
|
|
'uri' => '/system/workflows',
|
|
'resource' => true,
|
|
],
|
|
],
|
|
],
|
|
];
|
|
|
|
$this->handleAdminMenus($data);
|
|
$this->handleAdminPermissions($data);
|
|
}
|
|
|
|
public function handleAdminMenus(array $data, ?AdminMenu $parent = null): void
|
|
{
|
|
$sort = 0;
|
|
foreach ($data as $slug => $node) {
|
|
if (! is_array($node) || ! array_key_exists('uri', $node)) {
|
|
continue;
|
|
}
|
|
$sort++;
|
|
/** @var \Slowlyo\OwlAdmin\Models\AdminMenu */
|
|
$menu = AdminMenu::updateOrCreate([
|
|
'slug' => ($parent->slug ?? 'admin').'.'.$slug,
|
|
], [
|
|
'parent_id' => $parent->id ?? 0,
|
|
'order' => $sort,
|
|
'title' => $node['name'],
|
|
'icon' => $node['icon'],
|
|
'url' => $node['uri'],
|
|
'url_type' => $node['uri_type'] ?? 1,
|
|
'visible' => $node['visible'] ?? 1,
|
|
'is_home' => $node['is_home'] ?? 0,
|
|
'is_full' => $node['is_full'] ?? 0,
|
|
]);
|
|
|
|
$this->handleAdminMenus($node['children'] ?? [], $menu);
|
|
}
|
|
}
|
|
|
|
protected function handleAdminPermissions(array $data, ?AdminPermission $parent = null)
|
|
{
|
|
foreach ($data as $slug => $node) {
|
|
$permission = AdminPermission::updateOrCreate([
|
|
'slug' => ($parent->slug ?? 'admin').'.'.$slug,
|
|
], [
|
|
'parent_id' => $parent->id ?? 0,
|
|
'name' => is_array($node) ? $node['name'] : $node,
|
|
]);
|
|
|
|
if (! is_array($node)) {
|
|
continue;
|
|
}
|
|
|
|
// 资源路由权限
|
|
if (array_key_exists('resource', $node)) {
|
|
$resourceAbilities = [];
|
|
|
|
if (is_array($node['resource'])) {
|
|
$resourceAbilities = $node['resource'];
|
|
} elseif ($node['resource'] === true) {
|
|
$resourceAbilities = array_keys($this->resourceAbilityMap());
|
|
}
|
|
|
|
foreach ($resourceAbilities as $resourceAbility) {
|
|
AdminPermission::updateOrCreate([
|
|
'slug' => $permission->slug.'.'.$resourceAbility,
|
|
], [
|
|
'parent_id' => $permission->id,
|
|
'name' => $this->resourceAbilityMap()[$resourceAbility],
|
|
]);
|
|
}
|
|
}
|
|
|
|
$this->handleAdminPermissions($node['children'] ?? [], $permission);
|
|
}
|
|
}
|
|
|
|
protected function resourceAbilityMap(): array
|
|
{
|
|
return [
|
|
'list' => '列表',
|
|
'create' => '新增',
|
|
'update' => '编辑',
|
|
'delete' => '删除',
|
|
'view' => '查看',
|
|
];
|
|
}
|
|
}
|