LarAdmin 是一个基于 Laravel 12 + Swoole + Vue3 的高性能后台管理系统,采用模块化架构设计,提供完整的认证授权、系统管理、业务扩展等功能。项目集成了 hhxsv5/laravel-s 实现 Swoole 长生命周期服务,大幅提升系统并发性能和响应速度。
项目地址:https://gitee.com/ycgpp/laradmin
nwidart/laravel-modules 实现业务模块化管理laradmin/
├── app/ # 基础模块目录
│ ├── Http/Controllers/ # 控制器
│ │ ├── Auth/ # 认证模块控制器
│ │ │ └── Admin/
│ │ │ ├── Auth.php
│ │ │ ├── User.php
│ │ │ ├── Role.php
│ │ │ ├── Permission.php
│ │ │ └── Department.php
│ │ └── System/ # 系统模块控制器
│ │ ├── Admin/
│ │ │ ├── Config.php
│ │ │ ├── Log.php
│ │ │ ├── Dictionary.php
│ │ │ ├── Task.php
│ │ │ ├── City.php
│ │ │ └── Upload.php
│ │ ├── Api/
│ │ └── WebSocket.php
│ ├── Models/ # 模型
│ │ ├── Auth/
│ │ │ ├── User.php
│ │ │ ├── Role.php
│ │ │ ├── Permission.php
│ │ │ └── Department.php
│ │ └── System/
│ ├── Services/ # 服务层
│ │ ├── Auth/
│ │ ├── System/
│ │ └── WebSocket/
│ ├── Exports/ # 导出类
│ ├── Imports/ # 导入类
│ └── Middleware/ # 中间件
├── Modules/ # 业务模块目录
│ └── ModuleName/ # 业务模块示例
│ ├── App/
│ │ ├── Http/Controllers/
│ │ │ ├── Admin/ # 后台管理控制器
│ │ │ └── Api/ # 用户端API控制器
│ │ ├── Models/
│ │ ├── Services/
│ │ └── Providers/
│ ├── Database/
│ │ ├── migrations/
│ │ └── seeders/
│ ├── Resources/
│ └── Routes/
│ ├── admin.php
│ └── api.php
├── resources/
│ ├── admin/ # 前端管理界面
│ │ ├── src/
│ │ │ ├── api/ # API 接口
│ │ │ ├── components/ # 公共组件
│ │ │ │ ├── scForm/ # 表单组件
│ │ │ │ ├── scTable/ # 表格组件
│ │ │ │ ├── scUpload/ # 上传组件
│ │ │ │ ├── scEditor/ # 富文本编辑器
│ │ │ │ ├── scImport/ # 导入组件
│ │ │ │ └── scExport/ # 导出组件
│ │ │ ├── layouts/ # 布局组件
│ │ │ ├── pages/ # 页面组件
│ │ │ ├── router/ # 路由配置
│ │ │ ├── stores/ # 状态管理
│ │ │ ├── utils/ # 工具函数
│ │ │ ├── hooks/ # 组合式 API
│ │ │ └── i18n/ # 国际化
│ │ └── package.json
│ └── views/
├── routes/ # 路由定义
│ ├── admin.php # 后台管理路由
│ ├── api.php # 公共API路由
│ └── web.php # Web路由
├── config/ # 配置文件
│ ├── laravels.php # Laravel-S配置
│ ├── jwt.php # JWT配置
│ └── modules.php # 模块配置
├── database/ # 数据库
│ ├── migrations/
│ └── seeders/
├── docs/ # 文档目录
│ ├── README_AUTH.md # Auth模块文档
│ ├── README_SYSTEM.md # System模块文档
│ └── README_WEBSOCKET.md # WebSocket文档
└── storage/ # 存储目录# 构建并启动 PHP 容器
docker-compose up -d
# 查看日志
docker-compose logs -f
# 进入 PHP 容器
docker-compose exec php bash
# 停止容器
docker-compose stop
# 停止并删除容器
docker-compose down
# 停止并删除容器和数据卷
docker-compose down -v在 .env 文件中配置外部数据库和 Redis:
# 数据库配置
DB_CONNECTION=mysql
DB_HOST=host.docker.internal # Windows/Mac 或使用主机 IP
DB_PORT=3306
DB_DATABASE=laradmin
DB_USERNAME=root
DB_PASSWORD=your_password
# Redis 配置
REDIS_HOST=host.docker.internal # Windows/Mac 或使用主机 IP
REDIS_PASSWORD=null
REDIS_PORT=6379注意:host.docker.internal 在 Docker for Windows/Mac 上可以自动解析为主机 IP,在 Linux 上需要使用主机 IP 地址。
# 进入 PHP 容器
docker-compose exec php bash
# 安装 Composer 依赖
composer install
# 配置环境文件
cp .env.example .env
php artisan key:generate
# 执行数据库迁移
php artisan migrate
# 填充初始数据
php artisan db:seed
# 生成 JWT 密钥
php artisan jwt:secret
# 清除缓存
php artisan cache:clear
php artisan config:clear
php artisan route:clear
php artisan view:clear
# 退出容器
exit由于容器只提供 PHP-FPM,你需要使用以下方式运行应用:
方式 1:Laravel 开发服务器
docker-compose exec php bash
php artisan serve --host=0.0.0.0 --port=8000方式 2:Swoole
docker-compose exec php bash
php bin/laravels start方式 3:外部 Nginx配置外部 Nginx 的 FastCGI 指向容器:host.docker.internal:9000
访问应用:http://localhost:8000
默认账号:
用户名: admin
密码: 123456本项目 Docker 镜像已进行以下优化:
详细的 Docker 部署指南请参考 DOCKER.md
git clone http://git.tensent.cn/molong/laravel_swoole.git laradmin
cd laradmin# 一键安装所有依赖并初始化
composer run setup此命令会自动执行:
# 安装后端依赖
composer install
# 复制环境配置文件
cp .env.example .env
# 生成应用密钥
php artisan key:generate
# 配置数据库、Redis等参数
# 编辑 .env 文件
# 执行数据库迁移
php artisan migrate
# 填充初始数据
php artisan db:seed
# 生成 JWT 密钥
php artisan jwt:secret
# 安装前端依赖
cd resources/admin
npm install
# 构建前端
npm run build# 一键启动所有服务
composer run dev此命令会启动:
# 终端1: 启动 Laravel 开发服务器
php artisan serve
# 终端2: 启动前端开发服务器
cd resources/admin
npm run dev
# 终端3: 启动队列监听器(可选)
php artisan queue:listen# 启动 Laravel-S 服务
php bin/laravels start
# 停止服务
php bin/laravels stop
# 重启服务
php bin/laravels restart
# 重载服务(平滑重启)
php bin/laravels reload
# 查看状态
php bin/laravels status访问地址:http://localhost:5200 (默认)
用户名: admin
密码: 123456提供完整的用户认证和权限管理功能:
详细文档:docs/README_AUTH.md
提供系统级别的管理功能:
详细文档:docs/README_SYSTEM.md
实时通信功能支持:
详细文档:docs/README_WEBSOCKET.md
基础路径:/admin
主要接口:
POST /admin/auth/login - 用户登录POST /admin/auth/logout - 用户登出GET /admin/users - 获取用户列表GET /admin/roles - 获取角色列表GET /admin/permissions - 获取权限列表GET /admin/configs - 获取系统配置GET /admin/logs - 获取操作日志详细接口文档请参考各模块文档。
基础路径:/api
主要接口:
GET /api/system/configs - 获取系统配置(公开)GET /api/system/dictionaries - 获取数据字典(公开)GET /api/system/cities/tree - 获取城市树(公开)详细开发规范请参考:.clinerules/rule.md
User.phpUserService.phpUser.php{module}_{names} 格式,如 auth_users# 创建业务模块
php artisan module:make ModuleName
# 创建模块控制器
php artisan module:make-controller Admin/Post Blog
# 创建模块模型
php artisan module:make-model Post Blog详细开发规范请参考:.clinerules/admin-rule.md
<script setup>
import { ref, onMounted } from 'vue'
const state = ref({})
onMounted(() => {
// 组件挂载
})
</script>项目采用基于角色的访问控制(RBAC):
User (用户)
↓ N:N
Role (角色)
↓ N:N
Permission (权限)采用 模块.功能.操作 格式:
system.user.list - 系统管理-用户-列表system.user.create - 系统管理-用户-创建system.user.update - 系统管理-用户-更新system.user.delete - 系统管理-用户-删除# 数据库迁移
php artisan migrate
php artisan migrate:rollback
php artisan migrate:refresh
# 数据填充
php artisan db:seed
# 清除缓存
php artisan cache:clear
php artisan config:clear
php artisan route:clear
php artisan view:clear
# 队列处理
php artisan queue:work
php artisan queue:listen
# 测试
php artisan test# 启动服务
php bin/laravels start
# 停止服务
php bin/laravels stop
# 重启服务
php bin/laravels restart
# 重载服务(平滑重启)
php bin/laravels reload
# 查看状态
php bin/laravels status
# 查看帮助
php bin/laravels help# 创建模块
php artisan module:make ModuleName
# 列出所有模块
php artisan module:list
# 启用/禁用模块
php artisan module:enable ModuleName
php artisan module:disable ModuleName
# 模块迁移
php artisan module:migrate ModuleName
php artisan module:migrate-rollback ModuleName
# 模块数据填充
php artisan module:seed ModuleNamecd resources/admin
# 开发
npm run dev
# 构建
npm run build
# 预览
npm run preview
# 代码检查
npm run lint
# 代码格式化
npm run format由于 Swoole 是长生命周期运行,需要注意:
$_GET, $_POST 等超全局变量Request 对象获取请求数据config/laravels.php 中配置连接池前端支持动态路由加载,登录后自动根据权限生成菜单树:
// 登录后获取菜单
const menus = await authApi.permissions.menu.get()
userStore.setMenu(menus)前端提供权限指令,方便控制元素显示:
<!-- 只有拥有 user.create 权限时显示 -->
<a-button v-permission="'user.create'">新增</a-button>
<!-- 拥有多个权限之一时显示 -->
<a-button v-permission="['user.create', 'user.update']">编辑</a-button>支持 Excel 数据导入导出:
// 导出用户数据
await userApi.export.post(params)
// 导入用户数据
await userApi.import.post(formData)集成 CKEditor 5 富文本编辑器:
<sc-editor
v-model="content"
:height="400"
/>支持多种上传方式:
<!-- 图片上传 -->
<sc-upload
v-model="imageUrl"
:limit="1"
accept="image/*"
list-type="picture-card"
/>
<!-- 文件上传 -->
<sc-upload
v-model="fileList"
:limit="5"
:max-size="10"
/>感谢大家阅读,个人观点仅供参考,欢迎在评论区发表不同观点。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。