149 lines
6.0 KiB
PHP
149 lines
6.0 KiB
PHP
<?php
|
|
|
|
namespace Database\Seeders;
|
|
|
|
use App\Models\Permission;
|
|
use App\Models\Role;
|
|
use Illuminate\Database\Seeder;
|
|
|
|
class RolePermissionSeeder extends Seeder
|
|
{
|
|
public function run(): void
|
|
{
|
|
// 创建权限
|
|
$permissions = [
|
|
// 订单管理
|
|
['name' => '查看订单', 'slug' => 'order.view', 'group' => '订单管理'],
|
|
['name' => '编辑订单', 'slug' => 'order.edit', 'group' => '订单管理'],
|
|
['name' => '审核订单', 'slug' => 'order.audit', 'group' => '订单管理'],
|
|
['name' => '驳回订单', 'slug' => 'order.reject', 'group' => '订单管理'],
|
|
['name' => '导出订单', 'slug' => 'order.export', 'group' => '订单管理'],
|
|
|
|
// 商品管理
|
|
['name' => '查看商品', 'slug' => 'goods.view', 'group' => '商品管理'],
|
|
['name' => '编辑商品', 'slug' => 'goods.edit', 'group' => '商品管理'],
|
|
['name' => '推送商品', 'slug' => 'goods.push', 'group' => '商品管理'],
|
|
|
|
// 仓库管理
|
|
['name' => '查看仓库', 'slug' => 'warehouse.view', 'group' => '仓库管理'],
|
|
['name' => '编辑仓库', 'slug' => 'warehouse.edit', 'group' => '仓库管理'],
|
|
['name' => '采购管理', 'slug' => 'warehouse.purchase', 'group' => '仓库管理'],
|
|
['name' => '收货管理', 'slug' => 'warehouse.receiving', 'group' => '仓库管理'],
|
|
['name' => '库存管理', 'slug' => 'warehouse.stock', 'group' => '仓库管理'],
|
|
|
|
// 打印管理
|
|
['name' => '查看打印', 'slug' => 'print.view', 'group' => '打印管理'],
|
|
['name' => '批量打印', 'slug' => 'print.batch', 'group' => '打印管理'],
|
|
['name' => '模板设计', 'slug' => 'print.design', 'group' => '打印管理'],
|
|
|
|
// 平台管理
|
|
['name' => '店铺管理', 'slug' => 'platform.shop', 'group' => '平台管理'],
|
|
['name' => '运单账号', 'slug' => 'platform.waybill', 'group' => '平台管理'],
|
|
|
|
// 系统设置
|
|
['name' => '品牌管理', 'slug' => 'settings.brand', 'group' => '系统设置'],
|
|
['name' => '供应商管理', 'slug' => 'settings.supplier', 'group' => '系统设置'],
|
|
['name' => '用户管理', 'slug' => 'settings.user', 'group' => '系统设置'],
|
|
['name' => '角色权限', 'slug' => 'settings.role', 'group' => '系统设置'],
|
|
['name' => '操作日志', 'slug' => 'settings.log', 'group' => '系统设置'],
|
|
['name' => '第三方配置', 'slug' => 'settings.config', 'group' => '系统设置'],
|
|
];
|
|
|
|
foreach ($permissions as $index => $perm) {
|
|
Permission::updateOrCreate(
|
|
['slug' => $perm['slug']],
|
|
[
|
|
'name' => $perm['name'],
|
|
'group_name' => $perm['group'],
|
|
'sort' => $index,
|
|
]
|
|
);
|
|
}
|
|
|
|
// 创建角色
|
|
$roles = [
|
|
[
|
|
'name' => '超管',
|
|
'slug' => 'super_admin',
|
|
'level' => 100,
|
|
'description' => '系统超级管理员,拥有所有权限',
|
|
'permissions' => ['*'], // * 表示所有权限
|
|
],
|
|
[
|
|
'name' => '管理员',
|
|
'slug' => 'admin',
|
|
'level' => 80,
|
|
'description' => '系统管理员,可管理大部分功能',
|
|
'permissions' => [
|
|
'order.*', 'goods.*', 'warehouse.*', 'print.*', 'platform.*',
|
|
'settings.brand', 'settings.supplier', 'settings.user', 'settings.role', 'settings.log',
|
|
],
|
|
],
|
|
[
|
|
'name' => '运营',
|
|
'slug' => 'operation',
|
|
'level' => 60,
|
|
'description' => '运营人员,负责订单和商品管理',
|
|
'permissions' => [
|
|
'order.*', 'goods.*', 'warehouse.view', 'print.*',
|
|
],
|
|
],
|
|
[
|
|
'name' => '仓库管理',
|
|
'slug' => 'warehouse_manager',
|
|
'level' => 50,
|
|
'description' => '仓库管理员,负责仓库和库存管理',
|
|
'permissions' => [
|
|
'warehouse.*', 'print.*',
|
|
],
|
|
],
|
|
[
|
|
'name' => '财务',
|
|
'slug' => 'finance',
|
|
'level' => 50,
|
|
'description' => '财务人员,仅查看数据',
|
|
'permissions' => [
|
|
'order.view', 'warehouse.view', 'goods.view',
|
|
],
|
|
],
|
|
[
|
|
'name' => '库管',
|
|
'slug' => 'stock_manager',
|
|
'level' => 40,
|
|
'description' => '库管人员,负责库存操作',
|
|
'permissions' => [
|
|
'warehouse.view', 'warehouse.stock', 'print.view',
|
|
],
|
|
],
|
|
[
|
|
'name' => '订单员',
|
|
'slug' => 'order_operator',
|
|
'level' => 30,
|
|
'description' => '订单操作人员',
|
|
'permissions' => [
|
|
'order.view', 'order.edit', 'print.view', 'print.batch',
|
|
],
|
|
],
|
|
];
|
|
|
|
foreach ($roles as $roleData) {
|
|
$permissions = $roleData['permissions'];
|
|
unset($roleData['permissions']);
|
|
|
|
$role = Role::updateOrCreate(
|
|
['slug' => $roleData['slug']],
|
|
$roleData
|
|
);
|
|
|
|
// 分配权限
|
|
if ($permissions === ['*']) {
|
|
// 超管拥有所有权限
|
|
$role->permissions()->sync(Permission::pluck('id'));
|
|
} else {
|
|
$permIds = Permission::whereIn('slug', $permissions)->pluck('id');
|
|
$role->permissions()->sync($permIds);
|
|
}
|
|
}
|
|
}
|
|
}
|