first commit

This commit is contained in:
2025-09-12 15:23:08 +08:00
commit a80c237bbb
117 changed files with 15628 additions and 0 deletions

View File

@@ -0,0 +1,473 @@
<?php
declare(strict_types=1);
use App\Model\AdminMenu;
use App\Model\Meta\AdminUserMeta;
use Hyperf\Database\Seeders\Seeder;
use Hyperf\DbConnection\Db;
use function Hyperf\Support\env;
class AdminMenuSeeder extends Seeder
{
public const array BASE_DATA = [
'name' => '',
'path' => '',
'component' => '',
'redirect' => '',
'created_by' => 0,
'updated_by' => 0,
'remark' => '',
];
/**
* Run the database seeds.
*
* @return void
*/
public function run(): void
{
AdminMenu::truncate();
if (env('DB_DRIVER') === 'odbc-sql-server') {
Db::unprepared('SET IDENTITY_INSERT [' . AdminMenu::getModel()->getTable() . '] ON;');
}
$this->create($this->data());
if (env('DB_DRIVER') === 'odbc-sql-server') {
Db::unprepared('SET IDENTITY_INSERT [' . AdminMenu::getModel()->getTable() . '] OFF;');
}
}
/**
* @param array $data
* @param int $parentId
* @return void
*/
private function create(array $data, int $parentId = 0): void
{
foreach ($data as $item) {
$_item = $item;
if (isset($item['children'])) unset($_item['children']);
$_item['parent_id'] = $parentId;
$insert = AdminMenu::create(array_merge(self::BASE_DATA, $_item));
if (isset($item['children']) && count($item['children'])) $this->create($item['children'], $insert->id);
}
}
private function data(): array
{
return [
[
'name' => 'permission',
'path' => '/permission',
'meta' => new AdminUserMeta([
'title' => '权限管理',
'i18n' => 'baseMenu.permission.index',
'icon' => 'ri:git-repository-private-line',
'type' => 'M',
'hidden' => 0,
'componentPath' => 'modules/',
'componentSuffix' => '.vue',
'breadcrumbEnable' => 1,
'copyright' => 1,
'cache' => 1,
'affix' => 0,
]),
'children' => [
[
'name' => 'permission:user',
'path' => '/permission/user',
'component' => 'base/views/permission/user/index',
'meta' => new AdminUserMeta([
'type' => 'M',
'title' => '用户管理',
'i18n' => 'baseMenu.permission.user',
'icon' => 'material-symbols:manage-accounts-outline',
'hidden' => 0,
'componentPath' => 'modules/',
'componentSuffix' => '.vue',
'breadcrumbEnable' => 1,
'copyright' => 1,
'cache' => 1,
'affix' => 0,
]),
'children' => [
[
'name' => 'permission:user:index',
'meta' => new AdminUserMeta([
'title' => '用户列表',
'type' => 'B',
'i18n' => 'baseMenu.permission.userList',
]),
],
[
'name' => 'permission:user:save',
'meta' => new AdminUserMeta([
'title' => '用户保存',
'type' => 'B',
'i18n' => 'baseMenu.permission.userSave',
]),
],
[
'name' => 'permission:user:update',
'meta' => new AdminUserMeta([
'title' => '用户更新',
'type' => 'B',
'i18n' => 'baseMenu.permission.userUpdate',
]),
],
[
'name' => 'permission:user:delete',
'meta' => new AdminUserMeta([
'title' => '用户删除',
'type' => 'B',
'i18n' => 'baseMenu.permission.userDelete',
]),
],
[
'name' => 'permission:user:password',
'meta' => new AdminUserMeta([
'title' => '用户初始化密码',
'type' => 'B',
'i18n' => 'baseMenu.permission.userPassword',
]),
],
[
'name' => 'user:get:roles',
'meta' => new AdminUserMeta([
'title' => '获取用户角色',
'type' => 'B',
'i18n' => 'baseMenu.permission.getUserRole',
]),
],
[
'name' => 'user:set:roles',
'meta' => new AdminUserMeta([
'title' => '用户角色赋予',
'type' => 'B',
'i18n' => 'baseMenu.permission.setUserRole',
]),
],
],
],
[
'name' => 'permission:menu',
'path' => '/permission/menu',
'component' => 'base/views/permission/menu/index',
'meta' => new AdminUserMeta([
'title' => '菜单管理',
'i18n' => 'baseMenu.permission.menu',
'icon' => 'ph:list-bold',
'hidden' => 0,
'type' => 'M',
'componentPath' => 'modules/',
'componentSuffix' => '.vue',
'breadcrumbEnable' => 1,
'copyright' => 1,
'cache' => 1,
'affix' => 0,
]),
'children' => [
[
'name' => 'permission:menu:index',
'meta' => new AdminUserMeta([
'title' => '菜单列表',
'type' => 'B',
'i18n' => 'baseMenu.permission.menuList',
]),
],
[
'name' => 'permission:menu:create',
'meta' => new AdminUserMeta([
'title' => '菜单保存',
'type' => 'B',
'i18n' => 'baseMenu.permission.menuSave',
]),
],
[
'name' => 'permission:menu:save',
'meta' => new AdminUserMeta([
'title' => '菜单更新',
'type' => 'B',
'i18n' => 'baseMenu.permission.menuUpdate',
]),
],
[
'name' => 'permission:menu:delete',
'meta' => new AdminUserMeta([
'title' => '菜单删除',
'type' => 'B',
'i18n' => 'baseMenu.permission.menuDelete',
]),
],
],
],
[
'name' => 'permission:role',
'path' => '/permission/role',
'component' => 'base/views/permission/role/index',
'meta' => new AdminUserMeta([
'title' => '角色管理',
'i18n' => 'baseMenu.permission.role',
'icon' => 'material-symbols:supervisor-account-outline-rounded',
'hidden' => 0,
'type' => 'M',
'componentPath' => 'modules/',
'componentSuffix' => '.vue',
'breadcrumbEnable' => 1,
'copyright' => 1,
'cache' => 1,
'affix' => 0,
]),
'children' => [
[
'name' => 'permission:role:index',
'meta' => new AdminUserMeta([
'title' => '角色列表',
'type' => 'B',
'i18n' => 'baseMenu.permission.roleList',
]),
],
[
'name' => 'permission:role:save',
'meta' => new AdminUserMeta([
'title' => '角色保存',
'type' => 'B',
'i18n' => 'baseMenu.permission.roleSave',
]),
],
[
'name' => 'permission:role:update',
'meta' => new AdminUserMeta([
'title' => '角色更新',
'type' => 'B',
'i18n' => 'baseMenu.permission.roleUpdate',
]),
],
[
'name' => 'permission:role:delete',
'meta' => new AdminUserMeta([
'title' => '角色删除',
'type' => 'B',
'i18n' => 'baseMenu.permission.roleDelete',
]),
],
[
'name' => 'permission:get:role',
'meta' => new AdminUserMeta([
'title' => '获取角色权限',
'type' => 'B',
'i18n' => 'baseMenu.permission.getRolePermission',
]),
],
[
'name' => 'permission:set:role',
'meta' => new AdminUserMeta([
'title' => '赋予角色权限',
'type' => 'B',
'i18n' => 'baseMenu.permission.setRolePermission',
]),
],
],
],
],
],
[
'name' => 'log',
'path' => '/log',
'meta' => new AdminUserMeta([
'title' => '日志管理',
'i18n' => 'baseMenu.log.index',
'icon' => 'ph:instagram-logo',
'type' => 'M',
'hidden' => 0,
'componentPath' => 'modules/',
'componentSuffix' => '.vue',
'breadcrumbEnable' => 1,
'copyright' => 1,
'cache' => 1,
'affix' => 0,
]),
'children' => [
[
'name' => 'log:userLogin',
'path' => '/log/userLoginLog',
'component' => 'base/views/log/userLogin',
'meta' => new AdminUserMeta([
'title' => '用户登录日志管理',
'type' => 'M',
'hidden' => 0,
'icon' => 'ph:user-list',
'i18n' => 'baseMenu.log.userLoginLog',
'componentPath' => 'modules/',
'componentSuffix' => '.vue',
'breadcrumbEnable' => 1,
'copyright' => 1,
'cache' => 1,
'affix' => 0,
]),
'children' => [
[
'name' => 'log:userLogin:list',
'path' => '/log/userLoginLog',
'meta' => new AdminUserMeta([
'title' => '用户登录日志列表',
'i18n' => 'baseMenu.log.userLoginLogList',
'type' => 'B',
]),
],
[
'name' => 'log:userLogin:delete',
'meta' => new AdminUserMeta([
'title' => '删除用户登录日志',
'i18n' => 'baseMenu.log.userLoginLogDelete',
'type' => 'B',
]),
],
],
],
[
'name' => 'log:userOperation',
'path' => '/log/operationLog',
'component' => 'base/views/log/userOperation',
'meta' => new AdminUserMeta([
'title' => '操作日志管理',
'type' => 'M',
'hidden' => 0,
'icon' => 'ph:list-magnifying-glass',
'i18n' => 'baseMenu.log.operationLog',
'componentPath' => 'modules/',
'componentSuffix' => '.vue',
'breadcrumbEnable' => 1,
'copyright' => 1,
'cache' => 1,
'affix' => 0,
]),
'children' => [
[
'name' => 'log:userOperation:list',
'meta' => new AdminUserMeta([
'title' => '用户操作日志列表',
'i18n' => 'baseMenu.log.userOperationLog',
'type' => 'B',
]),
],
[
'name' => 'log:userOperation:delete',
'meta' => new AdminUserMeta([
'title' => '删除用户操作日志',
'i18n' => 'baseMenu.log.userOperationLogDelete',
'type' => 'B',
]),
],
],
],
],
],
/* [
'name' => '工具',
'code' => 'devTools',
'icon' => 'ma-icon-tool',
'path' => 'devTools',
'hidden' => '2',
'type' => 'M',
'children' => [
[
'name' => '代码生成器',
'code' => 'setting:code',
'icon' => 'ma-icon-code',
'path' => 'code',
'component' => 'setting/code/index',
'hidden' => '2',
'type' => 'M',
'children' => [
[
'name' => '预览代码',
'code' => 'setting:code:preview',
'type' => 'B',
],
[
'name' => '装载数据表',
'code' => 'setting:code:loadTable',
'type' => 'B',
],
[
'name' => '删除业务表',
'code' => 'setting:code:delete',
'type' => 'B',
],
[
'name' => '同步业务表',
'code' => 'setting:code:sync',
'type' => 'B',
],
[
'name' => '生成代码',
'code' => 'setting:code:generate',
'type' => 'B',
],
],
],
[
'name' => '数据源管理',
'code' => 'setting:datasource',
'icon' => 'icon-storage',
'path' => 'setting/datasource',
'component' => 'setting/datasource/index',
'hidden' => '2',
'type' => 'M',
'children' => [
[
'name' => '数据源管理列表',
'code' => 'setting:datasource:index',
'type' => 'B',
],
[
'name' => '数据源管理保存',
'code' => 'setting:datasource:save',
'type' => 'B',
],
[
'name' => '数据源管理更新',
'code' => 'setting:datasource:update',
'type' => 'B',
],
[
'name' => '数据源管理读取',
'code' => 'setting:datasource:read',
'type' => 'B',
],
[
'name' => '数据源管理删除',
'code' => 'setting:datasource:delete',
'type' => 'B',
],
[
'name' => '数据源管理导入',
'code' => 'setting:datasource:import',
'type' => 'B',
],
[
'name' => '数据源管理导出',
'code' => 'setting:datasource:export',
'type' => 'B',
],
],
],
[
'name' => '系统接口',
'code' => 'systemInterface',
'icon' => 'icon-compass',
'path' => 'systemInterface',
'component' => 'setting/systemInterface/index',
'hidden' => '2',
'type' => 'M',
],
],
],*/
];
}
}

View File

@@ -0,0 +1,125 @@
<?php
declare(strict_types=1);
use Hyperf\Database\Seeders\Seeder;
class AdminMenuUpdate01 extends Seeder
{
public const array BASE_DATA = [
'name' => '',
'path' => '',
'component' => '',
'redirect' => '',
'created_by' => 0,
'updated_by' => 0,
'remark' => '',
];
/**
* Run the database seeds.
*
* @return void
*/
public function run(): void
{
// AdminMenu::truncate();
// if (env('DB_DRIVER') === 'odbc-sql-server') {
// Db::unprepared('SET IDENTITY_INSERT [' . AdminMenu::getModel()->getTable() . '] ON;');
// }
// $this->create($this->data());
// if (env('DB_DRIVER') === 'odbc-sql-server') {
// Db::unprepared('SET IDENTITY_INSERT [' . AdminMenu::getModel()->getTable() . '] OFF;');
// }
}
//
// /**
// * @param array $data
// * @param int $parentId
// * @return void
// */
// private function create(array $data, int $parentId = 0): void
// {
// foreach ($data as $item) {
// $_item = $item;
//
// if (isset($v['children'])) unset($_item['children']);
//
// $_item['parent_id'] = $parentId;
//
// $insert = AdminMenu::create(array_merge(self::BASE_DATA, $_item));
//
// if (isset($item['children']) && count($item['children'])) $this->create($item['children'], $insert->id);
// }
// }
//
// private function data(): array
// {
// return [
// [
// 'name' => 'dataCenter',
// 'path' => '/dataCenter',
// 'meta' => new AdminUserMeta([
// 'title' => '数据中心',
// 'i18n' => 'baseMenu.dataCenter.index',
// 'icon' => 'ri:database-line',
// 'type' => 'M',
// 'hidden' => 0,
// 'componentPath' => 'modules/',
// 'componentSuffix' => '.vue',
// 'breadcrumbEnable' => 1,
// 'copyright' => 1,
// 'cache' => 1,
// 'affix' => 0,
// ]),
// 'children' => [
// [
// 'name' => 'dataCenter:attachment',
// 'path' => '/dataCenter/attachment',
// 'component' => 'base/views/dataCenter/attachment/index',
// 'meta' => new AdminUserMeta([
// 'title' => '附件管理',
// 'type' => 'M',
// 'hidden' => 0,
// 'icon' => 'ri:attachment-line',
// 'i18n' => 'baseMenu.dataCenter.attachment',
// 'componentPath' => 'modules/',
// 'componentSuffix' => '.vue',
// 'breadcrumbEnable' => 1,
// 'copyright' => 1,
// 'cache' => 1,
// 'affix' => 0,
// ]),
// 'children' => [
// [
// 'name' => 'dataCenter:attachment:list',
// 'meta' => new Meta([
// 'title' => '附件列表',
// 'i18n' => 'baseMenu.dataCenter.attachmentList',
// 'type' => 'B',
// ]),
// ],
// [
// 'name' => 'dataCenter:attachment:upload',
// 'meta' => new Meta([
// 'title' => '上传附件',
// 'i18n' => 'baseMenu.dataCenter.attachmentUpload',
// 'type' => 'B',
// ]),
// ],
// [
// 'name' => 'dataCenter:attachment:delete',
// 'meta' => new Meta([
// 'title' => '删除附件',
// 'i18n' => 'baseMenu.dataCenter.attachmentDelete',
// 'type' => 'B',
// ]),
// ],
// ],
// ],
// ],
// ],
// ];
// }
}

View File

@@ -0,0 +1,61 @@
<?php
declare(strict_types=1);
use App\Model\AdminMenu;
use Hyperf\Database\Seeders\Seeder;
use Hyperf\DbConnection\Db;
use function Hyperf\Support\env;
class AdminMenuUpdate02 extends Seeder
{
public const array BASE_DATA = [
'name' => '',
'path' => '',
'component' => '',
'redirect' => '',
'created_by' => 0,
'updated_by' => 0,
'remark' => '',
];
/**
* Run the database seeds.
*
* @return void
*/
public function run(): void
{
if (env('DB_DRIVER') === 'odbc-sql-server') {
Db::unprepared('SET IDENTITY_INSERT [' . AdminMenu::getModel()->getTable() . '] ON;');
}
$this->create($this->data());
if (env('DB_DRIVER') === 'odbc-sql-server') {
Db::unprepared('SET IDENTITY_INSERT [' . AdminMenu::getModel()->getTable() . '] OFF;');
}
}
/**
* @param array $data
* @return void
*/
private function create(array $data): void
{
foreach ($data as $originValue => $newValue) {
AdminMenu::query()->where('name', $originValue)->update(['name' => $newValue]);
}
}
/**
* @return string[]
*/
public function data(): array
{
return [
'permission:get:role' => 'permission:role:getMenu',
'permission:set:role' => 'permission:role:setMenu',
'user:get:roles' => 'permission:user:getRole',
'user:set:roles' => 'permission:user:setRole',
];
}
}

View File

@@ -0,0 +1,41 @@
<?php
declare(strict_types=1);
use App\Constants\Model\AdminUser\AdminUserStatusCode;
use App\Constants\Model\AdminUser\AdminUserTypeCode;
use App\Model\AdminRole;
use App\Model\AdminUser;
use Hyperf\Database\Seeders\Seeder;
class AdminUserSeeder extends Seeder
{
/**
* Run the database seeds.
*
* @return void
*/
public function run(): void
{
AdminUser::truncate();
AdminRole::truncate();
$entity = AdminUser::create([
'username' => 'admin',
'user_type' => AdminUserTypeCode::SYSTEM,
'nickname' => '超级管理员',
'email' => 'admin@example.com',
'phone' => '18888888888',
'signed' => '人生只似风前絮,欢也零星,悲也零星',
'created_by' => 0,
'updated_by' => 0,
'status' => AdminUserStatusCode::Normal,
'created_at' => date('Y-m-d H:i:s'),
'updated_at' => date('Y-m-d H:i:s'),
]);
$role = AdminRole::create([
'name' => '超级管理员',
'code' => 'SuperAdmin',
]);
$entity->roles()->sync($role);
}
}