# lightboat-platform **Repository Path**: gxsq/lightboat-platform ## Basic Information - **Project Name**: lightboat-platform - **Description**: LightBoat 是一个基于 Spring Boot 3.5 + Java 21 + Vue 3 + Naive UI 的企业级中后台管理系统。它提供了一套完整的权限管理、系统管理、安全防护、数据脱敏、API 加密等企业级能力,适合作为各类业务系统的管理后台脚手架。 是一个超级轻量的脚手架。 - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 5 - **Created**: 2026-06-03 - **Last Updated**: 2026-08-17 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # LightBoat Platform — 企业级后台管理系统 > LightBoat 是一个基于 **Spring Boot 4.1 + Java 21 + Vue 3 + Naive UI** 的企业级中后台管理系统。它提供了一套完整的权限管理、系统管理、安全防护、数据脱敏、API 加密等企业级能力,适合作为各类业务系统的管理后台脚手架。 *** ## 功能特性 ### 系统管理 - **用户管理** — 用户增删改查、角色分配、密码重置、头像上传 - **角色管理** — 角色创建编辑、权限配置、角色成员管理、数据范围控制 - **部门管理** — 部门树结构管理、部门归属、人员分配 - **菜单管理** — 前端菜单 + 后端 API 权限统一配置,支持按钮级权限 - **数据字典** — 字典类型 + 字典数据管理,支持启用/禁用 ### 安全与审计 - **三级等保防护** — 登录失败锁定、密码复杂度校验、定期改密提醒、双因子登录 - **操作日志** — 记录所有用户操作,支持按模块/操作人/时间检索 - **登录日志** — 记录每次登录的 IP、设备、结果,支持失败锁定记录 - **API 加解密** — 支持 SM4/AES 对请求和响应进行加密传输 - **敏感数据脱敏** — 手机号、身份证、银行卡等敏感字段自动加密存储、脱敏展示 - **验证码** — 图形验证码登录(支持开关) ### 其他能力 - **文件管理** — 文件上传 / 下载 / 预览(本地存储 + 阿里云 OSS) - **缓存管理** — Redis 缓存查询、清理 - **更新日志** — 版本变更记录管理 - **Druid 监控** — 数据库连接池实时监控 - **Demo 客户管理** — 示例业务模块,作为二次开发的参考模板 *** ## 技术栈 ### 后端 | 依赖 | 版本 | 说明 | | ------------ | --------------------- | ----------------------------- | | Java | 21 | 编程语言 | | Spring Boot | 4.1.0 | 应用框架 | | MyBatis Plus | 3.5.17 | ORM 框架 | | Sa-Token | 1.45.0 | 权限认证框架(spring-boot4-starter) | | PostgreSQL | 42.7.11 | 数据库驱动 | | Druid | 1.2.28 | 数据库连接池(spring-boot-4-starter) | | Redisson | 4.6.1 | Redis 客户端 | | Hutool | 5.8.44 | Java 工具库 | | Argon2 | Spring Security 7.1.0 | 密码加密(Argon2id) | | P6Spy | 3.9.1 | SQL 日志拦截 | ### 前端 | 依赖 | 版本 | 说明 | | ----------------- | ------ | ------- | | Vue | 3.5.34 | 前端框架 | | Vite | 8.0.12 | 构建工具 | | TypeScript | 6.0.3 | 类型系统 | | Naive UI | 2.44.1 | UI 组件库 | | Pinia | 3.0.4 | 状态管理 | | Vue Router | 5.0.7 | 路由 | | UnoCSS | ^66.x | 原子化 CSS | | ECharts | 6.0.0 | 图表库 | | Vue I18n | 11.4.2 | 国际化 | | Axios (@sa/axios) | — | HTTP 请求 | *** ## 项目结构 ``` lightboat-platform/ ├── 00-backend/ # 后端 Maven 多模块项目 │ ├── pom.xml # lightboat-parent 父 POM │ ├── platform-common/ # 共享基础能力(LightboatResponse、ErrorCode、PageParam) │ ├── platform-web/ # Web 层(全局异常、数据源、MyBatis、Redis、重复提交、API 加密) │ ├── domain-system/ # 系统管理业务域(用户、角色、部门、菜单、字典、权限、日志、文件) │ ├── domain-demo/ # 业务参考模板(Customer 单表 CRUD + 权限 + 脱敏) │ └── boot-admin/ # 启动模块 ├── 01-frontend/ # 前端 Vue 项目 │ └── src/ │ ├── views/ # 业务页面 │ ├── components/ # 公共组件(PageContainer、ListPageLayout 等) │ ├── service/ # API 请求层(@/service/api) │ ├── store/ # Pinia 状态 │ ├── router/ # 路由配置 │ ├── typings/ # 类型定义(Api.System.* 等) │ └── hooks/ # 组合式 hooks ├── sql/ # 数据库脚本 │ ├── lightboat_v1_00.sql # 初始化脚本(建表 + 初始数据) │ └── migrations/ # 增量迁移脚本(按日期命名) ├── docs/ # 项目文档 └── dev-restart.sh # 一键重启脚本(后端编译+启动 + 前端启动) ``` *** ## 快速开始 ### 环境要求 | 工具 | 最低版本要求 | | ---------- | ------ | | Java | 21+ | | Maven | 3.8+ | | Node.js | 20.19+ | | pnpm | 10.5+ | | PostgreSQL | 15+ | | Redis | 6+ | ### 1. 数据库初始化 ```bash # 创建数据库和用户(如已存在可跳过) CREATE USER lightboat WITH PASSWORD 'lightboat'; CREATE DATABASE lightboatdb OWNER lightboat; # 导入初始数据 PGPASSWORD='lightboat' psql -h localhost -U lightboat -d lightboatdb -f sql/lightboat_v1_00.sql ``` > 如果有增量 SQL 脚本,按日期顺序依次执行: > > ```bash > for f in sql/migrations/*.sql; do > PGPASSWORD='**' psql -h localhost -U lightboat -d lightboatdb -f "$f" > done > ``` ### 2. 启动后端 ```bash cd 00-backend # 编译所有模块(跳过测试以加速) mvn -pl boot-admin -am install -DskipTests # 启动开发服务(默认端口 10030) mvn -pl boot-admin spring-boot:run ``` > 首次编译可能需要 2-5 分钟。 ### 3. 启动前端 ```bash cd 01-frontend # 安装依赖 pnpm install # 启动开发服务器(默认端口 9527) pnpm dev ``` > 前端启动后访问 `http://localhost:9527` 即可看到登录页面。 ### 4. 一键重启(开发环境) 项目根目录提供了 `dev-restart.sh` 脚本,可一键停止旧进程、重新编译后端、启动前后端: ```bash bash dev-restart.sh ``` *** ## 默认登录账号 | 用户名 | 密码 | 角色 | 说明 | | ---------- | ---------- | ----- | ------------------- | | `admin` | `admin123` | 超级管理员 | 拥有系统所有权限,不可删除 | | `testUser` | — | 普通用户 | 用于测试普通权限(首次登录需重置密码) | > 密码在首次启动前可通过 SQL 脚本修改。密码加密使用 **Argon2id** 算法,并经过用户 UID 加盐处理,安全性较高。 *** ## 开发规范 ### 后端开发规范 - 新增业务模块必须参照 `domain-demo` 中的 `DemoCustomer` 实现 - Service 接口必须继承 `IService`,实现类必须继承 `ServiceImpl` - Controller 必须使用 `@SaCheckPermission` 做权限校验,列表查询必须叠加 `@DataScope` 和 `@ColumnScope` - 布尔标志字段统一使用 `Integer`(0=否,1=是),判断时使用 `Objects.equals(field, 1)` - 业务主表 Entity 必须继承 `BaseEntity`,日志表/流水表/关联表继承 `BaseTimeEntity` - 审计字段(`createUserCode`、`updateUserCode`)由 `MybatisPlusFillHandler` 自动填充,Service 无需手动设置 ### 前端开发规范 - 列表页必须使用 `PageContainer` + `ListPageLayout` + `SearchForm` + `ListPagination` 组合 - API 请求必须封装在 `@/service/api`,页面里不要直接裸写 `request()` - 导航类菜单图标必须使用 `fluent-color:xxx-32` 彩色图标集 - 错误提示统一使用全局红色跑马灯机制,不要使用临时 toast *** ## 常见问题 **Q: 启动后端报数据库连接失败?** A: 确保 PostgreSQL 已启动且连接信息正确: - 数据库:`lightboatdb` - 用户名:`lightboat` - 密码:`lightboat` - 端口:`5432` **Q: 前端启动后访问接口跨域?** A: 开发环境通过 Vite 代理解决跨域,已在 `.env` 中配置 `VITE_HTTP_PROXY=Y`。生产环境需配置 Nginx 反向代理。 **Q: 验证码不显示?** A: 开发环境默认禁用验证码(`captcha.enabled: false`)。如需启用验证码,修改 `application-dev.yml` 中的配置即可。 **Q: 如何修改默认密码?** A: 直接修改 SQL 文件中的 `t_user.login_pwd` 字段,使用 `Argon2PasswordEncoder` 生成哈希值。格式为 Argon2id。 *** ## 许可证 本项目基于 MIT 许可证开源。请遵守相关开源协议。 *** *更多文档请查阅* *`docs/`* *目录。*