6
0
Fork 0
jiqu-library-server/database/seeders/AdminPermissionSeeder.php

285 lines
10 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

<?php
namespace Database\Seeders;
use Dcat\Admin\Models\Permission;
use Illuminate\Database\Seeder;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Log;
class AdminPermissionSeeder extends Seeder
{
/**
* Run the database seeds.
*
* @return void
*/
public function run()
{
//
$permissions = [
/** 示例 **/
// 'test'=> [
// 'name' => '测试权限',
// 'curd' => true, //true默认全部false为不需要, ['index']为仅需要的
// 'children' => [
// 'show' => [
// 'name' => '详情',
// ],
// ],
// ],
'management'=> [
'name' => '系统管理',
'curd' => false,
'children' => [
'administrators' => [
'name' => '管理员',
'curd' => true,
],
'roles' => [
'name' => '角色',
'curd' => true,
],
'permissions' => [
'name' => '权限',
'curd' => true,
],
'menus' => [
'name' => '菜单',
'curd' => true,
],
],
],
'api'=>[
'name'=>'后台接口',
'curd' => false,
'children' => [
'api.product_categories'=>['name'=>'商品分类'],
'api.product_group_details' =>['name'=>'商品分组'],
'api.product_skus'=>['name'=>'子商品列表'],
'api.coupons'=>['name'=>'优惠券'],
'api.coupone_send_tasks'=>['name'=>'优惠券发送任务'],
],
],
'ad_addresses'=>[
'name'=>'广告位',
'curd' => ['index', 'create', 'store', 'edit', 'update', 'destroy'],
],
'ads'=>[
'name'=>'广告内容',
'curd' => ['index', 'create', 'store', 'edit', 'update', 'destroy'],
],
'article_categories' =>[
'name'=>'文章分类',
'curd' => ['index', 'create', 'store', 'edit', 'update', 'destroy'],
],
'articles'=>[
'name'=>'文章',
'curd' => true,
],
'product_categories'=>[
'name' =>'商品分类',
'curd'=>['index', 'create', 'store', 'edit', 'update', 'destroy'],
],
'product_groups'=>[
'name' =>'商品分组',
'curd'=>['index', 'create', 'store', 'edit', 'update', 'destroy'],
],
'product_features'=>[
'name' =>'商品特点',
'curd' =>['index', 'create', 'store', 'edit', 'update', 'destroy'],
],
'product_buynotes'=>[
'name' =>'商品购买须知',
'curd'=>['index', 'create', 'store', 'edit', 'update', 'destroy'],
],
'product_spus'=>[
'name' =>'主商品',
'curd'=> true,
'children'=>[
'sku_list'=>['name'=>'子商品列表'],
'setting_specs'=>['name'=>'设置规格'],
'init_sku_by_specs'=>['name' =>'初始化SKU'],
'add_sku'=>['name' =>'添加子商品'],
],
],
'product_skus'=>[
'name' =>'子商品',
'curd' =>['index', 'edit', 'update', 'destroy'],
'children'=>[
'batch_release_up' => ['name'=>'批量上架申请'],
'batch_release_down'=>['name' =>'批量下架'],
'batch_release_cacel'=>['name' =>'批量取消申请'],
'batch_sku_sync_spu'=>['name' =>'批量同步主商品'],
'release_up'=> ['name'=>'上架申请'],
'release_down'=> ['name'=>'商品下架'],
'release_cacel'=> ['name'=>'取消申请'],
'sku_sync_spu'=>['name' =>'同步主商品'],
'sku_gift' =>['name' =>'赠品管理'],
],
],
'product_sku_verifies'=>[
'name' =>'商品审核',
'curd'=>['index', 'destroy'],
'children' => [
'verify'=>['name' =>'审核商品'],
'batch_verify'=>['name' =>'批量审核'],
],
],
'vips'=>[
'name' =>'会员等级',
'curd'=>['index', 'create', 'store', 'edit', 'update', 'destroy'],
],
'users'=>[
'name'=>'会员管理',
'curd'=>['index', 'create', 'store'],
'children'=>[
'disable' =>['name'=>'禁用'],
'enable'=>['name' =>'启用'],
],
],
'coupons'=>[
'name' =>'优惠券管理',
'curd' => true,
'children'=>[
'range_list' =>['name' =>'使用范围'],
],
],
'coupon_ranges'=>[
'name' =>'优惠使用范围管理',
'curd' => ['create', 'store', 'edit', 'update', 'destroy'],
],
'shipping_templates'=>[
'name' =>'运费模板管理',
'curd' => true,
'children'=>[
'rule_list' =>['name' =>'运费规则'],
],
],
'shipping_rules'=>[
'name' =>'运费规则管理',
'curd' => ['create', 'store', 'edit', 'update', 'destroy'],
],
'coupon_send_tasks'=>[
'name' =>'优惠券发放',
'curd' => true,
'children'=>[
'start' =>['name'=>'开始任务'],
],
],
'coupon_task_logs'=>[
'name' =>'优惠券发放日志',
'curd' => ['index'],
],
'after_sales'=>[
'name' =>'售后管理',
'curd' => ['index', 'show'],
'children' => [
'verify'=>['name' =>'审核'],
'shipping'=>['name' =>'确认收货'],
'finance'=>['name' =>'确认打款'],
],
],
'messages'=>[
'name' =>'公告消息',
'curd' => true,
],
'product_parts'=>[
'name' =>'商品分区',
'curd' => ['index', 'create', 'store', 'edit', 'update', 'destroy'],
],
'orders'=>[
'name' =>'订单管理',
'curd' => ['index', 'show'],
'children'=>[
'pay'=>['name' =>'支付订单'],
'reduce'=>['name' =>'订单改价'],
'remark'=>['name' =>'订单备注'],
'consignee'=>['name' =>'修改地址'],
'create_package'=>['name' =>'发货'],
],
],
'order_reduce_ranges'=>[
'name' =>'订单调价权限管理',
'curd' => ['index', 'create', 'store', 'edit', 'update', 'destroy'],
],
'order_packages'=>[
'name' =>'发货单',
'curd' =>['index', 'edit', 'update', 'destroy'],
'children' => [
'failed' => ['name' =>'作废'],
],
],
'app_versions'=>[
'name' =>'App版本管理',
'curd' => ['index', 'create', 'store', 'edit', 'update', 'destroy'],
],
];
try {
DB::begintransaction();
$this->createPermissionData($permissions);
DB::commit();
} catch (\Exception $e) {
Log::error('权限录入:'.$e->getMessage());
DB::rollBack();
}
}
/**
* 插入权限
*
* @param array $permissions
* @param string $key
* @param integer $pId
*/
public function createPermissionData(array $permissions, string $key = '', int $pId = 0)
{
$curdArr = [
'index'=>[
'name' => '列表',
],
'create'=>[
'name' => '新增',
],
'store' =>[
'name' => '保存',
],
'edit' =>[
'name' => '修改',
],
'update'=>[
'name' => '更新',
],
'destroy'=>[
'name' => '删除',
],
'show'=>[
'name' => '详情',
],
];
foreach ($permissions as $slug => $permission) {
//是否已存在该权限
$slugKey = 'dcat.admin.'.($key ? $key.'.'.$slug : $slug);
$pper = Permission::updateOrCreate(['slug'=>$slugKey], ['name' => $permission['name'], 'parent_id' => $pId]);
if (!isset($permission['children'])) {
$permission['children'] = [];
}
//判断是否默认插入curd权限
if (isset($permission['curd']) && $permission['curd']) {
if (is_array($permission['curd'])) {
foreach ($permission['curd'] as $value) {
$permission['children'][$value] = $curdArr[$value];
}
} else {
$permission['children'] = array_merge($curdArr, $permission['children']);
}
}
if (count($permission['children']) > 0) {
$_key = $permission['curd'] ? ($key ? $key.'.'.$slug : $slug) : $key;
$this->createPermissionData($permission['children'], $_key??$slug, $pper->id);
}
}
}
}