127 lines
7.6 KiB
PHP
127 lines
7.6 KiB
PHP
<?php
|
|
|
|
require __DIR__ . '/vendor/autoload.php';
|
|
|
|
use Illuminate\Database\Capsule\Manager as Capsule;
|
|
use app\common\model\AdminUser;
|
|
use app\common\model\Role;
|
|
use app\common\model\Permission;
|
|
|
|
if (class_exists('Dotenv\Dotenv') && file_exists(__DIR__ . '/.env')) {
|
|
if (method_exists('Dotenv\Dotenv', 'createUnsafeImmutable')) {
|
|
Dotenv\Dotenv::createUnsafeImmutable(__DIR__)->load();
|
|
} else {
|
|
Dotenv\Dotenv::createMutable(__DIR__)->load();
|
|
}
|
|
}
|
|
|
|
$capsule = new Capsule();
|
|
$capsule->addConnection([
|
|
'driver' => 'mysql',
|
|
'host' => getenv('DB_HOST') ?: '127.0.0.1',
|
|
'port' => getenv('DB_PORT') ?: '3306',
|
|
'database' => getenv('DB_DATABASE') ?: '',
|
|
'username' => getenv('DB_USERNAME') ?: '',
|
|
'password' => getenv('DB_PASSWORD') ?: '',
|
|
'charset' => 'utf8mb4',
|
|
'collation' => 'utf8mb4_unicode_ci',
|
|
'prefix' => '',
|
|
]);
|
|
$capsule->setAsGlobal();
|
|
$capsule->bootEloquent();
|
|
|
|
$permissionNodes = [
|
|
['code' => 'admin.menu.dashboard', 'name' => '工作台', 'parent_code' => null, 'type' => 1, 'sort' => 10],
|
|
['code' => 'admin.dashboard.stat', 'name' => '工作台统计', 'parent_code' => 'admin.menu.dashboard', 'type' => 1, 'sort' => 10],
|
|
|
|
['code' => 'admin.menu.order', 'name' => '订单管理', 'parent_code' => null, 'type' => 1, 'sort' => 20],
|
|
['code' => 'admin.order.list', 'name' => '订单列表', 'parent_code' => 'admin.menu.order', 'type' => 1, 'sort' => 10],
|
|
['code' => 'admin.order.detail', 'name' => '订单详情', 'parent_code' => 'admin.order.list', 'type' => 2, 'sort' => 20],
|
|
['code' => 'admin.order.receive', 'name' => '确认收件', 'parent_code' => 'admin.order.list', 'type' => 2, 'sort' => 30],
|
|
['code' => 'admin.order.return_ship', 'name' => '回寄物流填写', 'parent_code' => 'admin.order.list', 'type' => 2, 'sort' => 40],
|
|
|
|
['code' => 'admin.menu.report', 'name' => '报告管理', 'parent_code' => null, 'type' => 1, 'sort' => 30],
|
|
['code' => 'admin.report.list', 'name' => '报告列表', 'parent_code' => 'admin.menu.report', 'type' => 1, 'sort' => 10],
|
|
['code' => 'admin.report.detail', 'name' => '报告详情', 'parent_code' => 'admin.report.list', 'type' => 2, 'sort' => 20],
|
|
['code' => 'admin.report.create', 'name' => '出具报告', 'parent_code' => 'admin.report.list', 'type' => 2, 'sort' => 30],
|
|
|
|
['code' => 'admin.menu.user', 'name' => '用户管理', 'parent_code' => null, 'type' => 1, 'sort' => 40],
|
|
['code' => 'admin.user.list', 'name' => 'C端用户列表', 'parent_code' => 'admin.menu.user', 'type' => 1, 'sort' => 10],
|
|
['code' => 'admin.user.update_status', 'name' => '用户状态修改', 'parent_code' => 'admin.user.list', 'type' => 2, 'sort' => 20],
|
|
|
|
['code' => 'admin.menu.system', 'name' => '系统设置', 'parent_code' => null, 'type' => 1, 'sort' => 50],
|
|
|
|
['code' => 'admin.admin_user.list', 'name' => '管理员管理', 'parent_code' => 'admin.menu.system', 'type' => 1, 'sort' => 10],
|
|
['code' => 'admin.admin_user.create', 'name' => '管理员创建', 'parent_code' => 'admin.admin_user.list', 'type' => 2, 'sort' => 20],
|
|
['code' => 'admin.admin_user.update', 'name' => '管理员更新', 'parent_code' => 'admin.admin_user.list', 'type' => 2, 'sort' => 30],
|
|
['code' => 'admin.admin_user.delete', 'name' => '管理员删除', 'parent_code' => 'admin.admin_user.list', 'type' => 2, 'sort' => 40],
|
|
|
|
['code' => 'admin.role.list', 'name' => '角色管理', 'parent_code' => 'admin.menu.system', 'type' => 1, 'sort' => 20],
|
|
['code' => 'admin.role.all', 'name' => '角色全部列表', 'parent_code' => 'admin.role.list', 'type' => 2, 'sort' => 30],
|
|
['code' => 'admin.role.create', 'name' => '角色创建', 'parent_code' => 'admin.role.list', 'type' => 2, 'sort' => 40],
|
|
['code' => 'admin.role.update', 'name' => '角色更新', 'parent_code' => 'admin.role.list', 'type' => 2, 'sort' => 50],
|
|
['code' => 'admin.role.delete', 'name' => '角色删除', 'parent_code' => 'admin.role.list', 'type' => 2, 'sort' => 60],
|
|
|
|
['code' => 'admin.permission.list', 'name' => '权限管理', 'parent_code' => 'admin.menu.system', 'type' => 1, 'sort' => 30],
|
|
['code' => 'admin.permission.create', 'name' => '权限创建', 'parent_code' => 'admin.permission.list', 'type' => 2, 'sort' => 40],
|
|
['code' => 'admin.permission.update', 'name' => '权限更新', 'parent_code' => 'admin.permission.list', 'type' => 2, 'sort' => 50],
|
|
['code' => 'admin.permission.delete', 'name' => '权限删除', 'parent_code' => 'admin.permission.list', 'type' => 2, 'sort' => 60],
|
|
|
|
['code' => 'admin.wechat_merchant.list', 'name' => '微信商户号', 'parent_code' => 'admin.menu.system', 'type' => 1, 'sort' => 40],
|
|
['code' => 'admin.wechat_merchant.create', 'name' => '微信商户号创建', 'parent_code' => 'admin.wechat_merchant.list', 'type' => 2, 'sort' => 20],
|
|
['code' => 'admin.wechat_merchant.update', 'name' => '微信商户号更新', 'parent_code' => 'admin.wechat_merchant.list', 'type' => 2, 'sort' => 30],
|
|
['code' => 'admin.wechat_merchant.delete', 'name' => '微信商户号删除', 'parent_code' => 'admin.wechat_merchant.list', 'type' => 2, 'sort' => 40],
|
|
['code' => 'admin.wechat_merchant.upload_apiclient_cert', 'name' => '商户证书上传', 'parent_code' => 'admin.wechat_merchant.list', 'type' => 2, 'sort' => 50],
|
|
['code' => 'admin.wechat_merchant.upload_apiclient_key', 'name' => '商户私钥上传', 'parent_code' => 'admin.wechat_merchant.list', 'type' => 2, 'sort' => 60],
|
|
['code' => 'admin.wechat_merchant.upload_api_v3_key', 'name' => 'APIv3密钥上传', 'parent_code' => 'admin.wechat_merchant.list', 'type' => 2, 'sort' => 70],
|
|
|
|
['code' => 'admin.wechat_app.list', 'name' => '微信应用', 'parent_code' => 'admin.menu.system', 'type' => 1, 'sort' => 35],
|
|
['code' => 'admin.wechat_app.create', 'name' => '微信应用创建', 'parent_code' => 'admin.wechat_app.list', 'type' => 2, 'sort' => 20],
|
|
['code' => 'admin.wechat_app.update', 'name' => '微信应用更新', 'parent_code' => 'admin.wechat_app.list', 'type' => 2, 'sort' => 30],
|
|
['code' => 'admin.wechat_app.delete', 'name' => '微信应用删除', 'parent_code' => 'admin.wechat_app.list', 'type' => 2, 'sort' => 40],
|
|
];
|
|
|
|
$codeToId = [];
|
|
foreach ($permissionNodes as $node) {
|
|
$permission = Permission::updateOrCreate(['code' => $node['code']], [
|
|
'name' => $node['name'],
|
|
'parent_id' => 0,
|
|
'type' => $node['type'],
|
|
'sort' => $node['sort'],
|
|
]);
|
|
$codeToId[$node['code']] = $permission->id;
|
|
}
|
|
|
|
foreach ($permissionNodes as $node) {
|
|
$parentCode = $node['parent_code'];
|
|
$parentId = $parentCode && isset($codeToId[$parentCode]) ? $codeToId[$parentCode] : 0;
|
|
Permission::where('code', $node['code'])->update(['parent_id' => $parentId]);
|
|
}
|
|
|
|
$role = Role::firstOrCreate(['code' => 'super_admin'], ['name' => '超级管理员']);
|
|
$permissionCodes = array_map(function ($n) { return $n['code']; }, $permissionNodes);
|
|
$permissionIds = Permission::whereIn('code', $permissionCodes)->pluck('id')->toArray();
|
|
$role->permissions()->syncWithoutDetaching($permissionIds);
|
|
|
|
$username = getenv('ADMIN_INIT_USERNAME') ?: 'admin';
|
|
$password = getenv('ADMIN_INIT_PASSWORD') ?: '';
|
|
if ($password === '') {
|
|
echo "ADMIN_INIT_PASSWORD 为空,请先在 .env 中设置\n";
|
|
exit(1);
|
|
}
|
|
|
|
$admin = AdminUser::where('username', $username)->first();
|
|
if (!$admin) {
|
|
$admin = AdminUser::create([
|
|
'username' => $username,
|
|
'password_hash' => password_hash($password, PASSWORD_BCRYPT),
|
|
'nickname' => '管理员',
|
|
'is_super' => 1,
|
|
'status' => 1,
|
|
]);
|
|
}
|
|
|
|
$admin->roles()->syncWithoutDetaching([$role->id]);
|
|
|
|
echo "seed ok\n";
|