erp-backend/database/seeders/RolePermissionSeeder.php
2026-04-01 17:07:04 +08:00

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);
}
}
}
}