# laymini-admin **Repository Path**: wlf213/laymini-admin ## Basic Information - **Project Name**: laymini-admin - **Description**: 基于layuimini框架,整合后端服务,开袋即食。。 - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 2 - **Forks**: 1 - **Created**: 2024-11-14 - **Last Updated**: 2025-12-23 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # laymini-admin [![Java](https://img.shields.io/badge/Java-25-orange.svg)](https://www.oracle.com/java/) [![Spring Boot](https://img.shields.io/badge/Spring%20Boot-3.5.5-brightgreen.svg)](https://spring.io/projects/spring-boot) [![MySQL](https://img.shields.io/badge/MySQL-8.0-blue.svg)](https://www.mysql.com/) [![License](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE) ## 📖 项目简介 laymini-admin 是一个基于 LayuiMini 的简单后台管理系统,采用前后端不分离架构。项目整合了 Spring Boot + MyBatis-Plus + Sa-Token + FreeMarker 技术栈,提供了完整的 RBAC 权限管理功能,适合中小型项目快速开发和学习使用。 ## ✨ 核心特性 - 🔐 **安全可靠**: URL 白名单机制,精细化权限控制,开发模式可绕过权限校验 - 🛡️ **全局异常处理**: 友好的错误提示,未登录自动跳转,无权限页面引导 - 📅 **日期处理**: 统一的日期格式化,解决大数字 JSON 精度丢失问题 - 💰 **金额格式化**: FreeMarker 自定义数字格式化,保证浮点数精度 - 🚀 **零 SQL**: 基于 MyBatis-Plus 条件构造器,避免手写 SQL,提高开发效率 - ⚡ **高性能缓存**: Caffeine 本地缓存,配合单表操作提升响应速度 - 🎯 **零中间件**: 仅依赖数据库,降低运维复杂度 - 📦 **开箱即用**: 代码简洁规范,二次开发友好 ## 🏗️ 技术架构 ### 后端技术栈 | 技术 | 版本 | 说明 | |------|------|------| | Spring Boot | 3.5.5 | 基础框架 | | MyBatis-Plus | 3.5.14 | ORM 框架 | | Sa-Token | 1.44.0 | 权限认证 | | FreeMarker | - | 模板引擎 | | MySQL | 8.0+ | 数据库 | | Quartz | - | 任务调度 | | Caffeine | - | 本地缓存 | | Hutool | 5.8.40 | 工具类库 | ### 前端技术栈 - **jQuery** - JavaScript 库 - **LayUI** - UI 框架 - **LayuiMini** - 后台管理界面 ## 📋 系统功能 - ✅ 用户管理 - 用户增删改查、密码重置 - ✅ 角色管理 - 角色权限分配、用户角色绑定 - ✅ 菜单管理 - 动态菜单配置、权限控制 - ✅ 机构管理 - 组织架构管理 - ✅ 任务管理 - Quartz 定时任务管理 - ✅ 字典管理 - 系统字典维护 - ✅ 订单管理 - 示例业务模块 - ✅ 系统监控 - 在线用户、系统日志 ## 🏛️ 项目结构 ``` laymini-admin/ ├── src/main/java/com/wlf/admin/ │ ├── AdminApplication.java # 主启动类 │ ├── common/ # 公共模块 │ │ ├── config/ # 配置类 │ │ ├── filter/ # 过滤器 │ │ ├── freemarker/ # FreeMarker 配置 │ │ ├── model/ # 数据模型 │ │ ├── quartz/ # 定时任务配置 │ │ ├── run/ # 启动相关 │ │ ├── util/ # 工具类 │ │ └── xss/ # XSS 防护 │ ├── system/ # 系统管理模块 │ │ ├── controller/ # 控制器 │ │ ├── domain/ # 实体类 │ │ ├── mapper/ # 数据访问层 │ │ ├── model/ # 模型 │ │ ├── repository/ # 仓库层 │ │ └── service/ # 业务层 │ └── module/ # 业务模块 │ └── pay/ # 支付模块 │ ├── controller/ # 控制器 │ ├── demo/ # 示例代码 │ ├── domain/ # 实体类 │ ├── mapper/ # 数据访问层 │ ├── service/ # 业务层 │ └── task/ # 定时任务 ├── src/main/resources/ │ ├── config/ # 配置文件 │ ├── db/ # 数据库脚本 │ ├── mapper/ # MyBatis 映射文件 │ ├── static/ # 静态资源 │ ├── templates/ # FreeMarker 模板 │ └── captcha-images/ # 验证码图片 ├── script/ # 部署脚本 ├── img/ # 项目截图 └── pom.xml # Maven 配置 ``` ## 🖼️ 界面预览 ### 登录验证码 ![验证码](img/img_9.png) ### 菜单管理 ![菜单管理](img/img.png) ### 用户管理 ![用户管理](img/img_1.png) ### 角色管理 ![角色管理](img/img_2.png) ### 机构管理 ![机构管理](img/img_3.png) ### 任务管理 ![任务管理](img/img_4.png) ### Cron表达式 ![Cron表达式](img/img_5.png) ### 订单管理 ![订单管理](img/img_6.png) ### 多级菜单 ![多级菜单](img/img_7.png) #### 项目预览 ##### 登陆验证码 ![验证码](img/img_9.png) ##### 菜单管理 ![菜单管理](./img/img.png) ##### 用户管理 ![用户管理](./img/img_1.png) ##### 角色管理 ![角色管理](./img/img_2.png) ##### 机构管理 ![机构管理](./img/img_3.png) ##### 任务管理 ![任务管理](./img/img_4.png) ##### Cron表达式 ![Cron表达式](./img/img_5.png) ##### 订单管理 ![订单管理](./img/img_6.png) ##### 多级菜单 ![多级菜单](./img/img_7.png) ## 🚀 快速开始 ### 环境要求 - **JDK**: 25+ - **Maven**: 3.6+ - **MySQL**: 8.0+ ### 安装步骤 1. **克隆项目** ```bash git clone https://gitee.com/wlf213/laymini-admin.git cd laymini-admin ``` 2. **创建数据库** ```sql CREATE DATABASE layuimini_admin CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; ``` 3. **修改配置** 编辑 `src/main/resources/config/application-dev.yml`,修改数据库连接信息: ```yaml spring: datasource: username: root password: your_password url: jdbc:mysql://localhost:3306/layuimini_admin?allowPublicKeyRetrieval=true&useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&transformedBitIsBoolean=true&useSSL=false&serverTimezone=Asia/Shanghai ``` 4. **启动项目** ```bash # 方式一:使用 Maven mvn spring-boot:run # 方式二:直接运行主类 # 在 IDE 中运行 AdminApplication.java ``` 5. **访问系统** 打开浏览器访问:`http://localhost:8001/layuiadmin` ### 首次启动说明 - 项目启动时会自动创建表结构和初始数据 - 首次运行可能会报 `Sys_Map` 相关异常,属于正常现象,再次启动即可 - 系统会自动创建默认管理员账号 ### 故障排除 **数据库异常处理** ```sql -- 如果遇到表不存在等异常,执行以下操作 -- 1. 备份数据(重要!) -- 2. 删除 ddl_history 表 DROP TABLE IF EXISTS ddl_history; -- 3. 重启项目,系统会自动重建表结构 ``` **手动维护数据库** - 可查看 `src/main/resources/db/init.sql` 手动执行 SQL - 建议优先使用自动建表功能 ## 📚 开发指南 ### 核心概念 **零 SQL 设计理念** - 使用 MyBatis-Plus 条件构造器替代手写 SQL - 问题排查顺序:代码问题 → 缓存优化 → 数据库设计 - 避免复杂 SQL,保持代码简洁可维护 **缓存策略** - 基于 Caffeine 的本地缓存 - 单表操作配合缓存提升性能 - 权限数据自动缓存,开发者无需过多关注 ### 常见问题 **Q: freemarker_implicit.ftl 是什么文件?** A: 该文件主要用于 IDEA 代码提示和跳转,配置了模板中可用的工具类,提供更好的开发体验。 **Q: FreemarkerConfig 配置了什么功能?** A: 主要功能包括: 1. 注入静态工具类(DateUtil、StpUtil) 2. 注入系统配置类(SysConfig) 3. 注入权限校验方法(HasPerm) 4. 设置全局日期格式(yyyy-MM-dd HH:mm:ss) 5. 自定义数字格式化(${x?string.@amt}) 6. 日期处理工具(${dateUtil.date(x)?datetime}) **Q: 为什么选择 Layui 而不是 Vue?** A: 技术选型应基于实际需求: - Layui 足以满足简单后台管理需求 - 避免前后端分离带来的额外复杂度 - 降低开发门槛,提高开发效率 ## 📦 部署指南 ### 打包项目 ```bash # 编译打包 mvn clean package # 跳过测试打包 mvn clean package -DskipTests ``` 打包完成后,在 `target/` 目录下会生成以下文件: - `laymini-admin-0.0.1.jar` - 主程序包 - `lib/` - 项目依赖包 - `resources/` - 资源文件 - `run.sh` - Linux 启动脚本 - `start.bat` - Windows 启动脚本 ### Linux 部署 1. **上传文件** 将以下文件上传到服务器同一目录: - `laymini-admin-0.0.1.jar` - `lib/` 目录 - `resources/` 目录 - `run.sh` 脚本 2. **启动服务** ```bash # 启动应用 sh run.sh start # 停止应用 sh run.sh stop # 重启应用 sh run.sh restart # 查看状态 sh run.sh status ``` ### Windows 部署 1. **准备文件** 将以下文件放置在同一目录: - `laymini-admin-0.0.1.jar` - `lib/` 目录 - `resources/` 目录 - `start.bat` 脚本 2. **启动服务** 双击 `start.bat` 或在命令行执行: ```bash start.bat ``` 停止服务使用 `Ctrl+C`(推荐)或关闭窗口。 ### 通用部署 ```bash java -jar laymini-admin-0.0.1.jar ``` ### 生产环境配置 1. 修改 `application-prod.yml` 中的配置 2. 配置数据库连接信息 3. 设置日志级别和文件路径 4. 配置服务器端口和上下文路径 ## 🤝 参与贡献 我们欢迎所有形式的贡献! ### 贡献流程 1. **Fork** 本仓库 2. **创建** 特性分支 (`git checkout -b feature/AmazingFeature`) 3. **提交** 更改 (`git commit -m 'Add some AmazingFeature'`) 4. **推送** 到分支 (`git push origin feature/AmazingFeature`) 5. **创建** Pull Request ### 开发规范 - 遵循现有代码风格 - 添加必要的注释和文档 - 确保测试通过 - 提交信息清晰明确 ## 📄 许可证 本项目采用 MIT 许可证 - 查看 [LICENSE](LICENSE) 文件了解详情。 ## 🙏 致谢 感谢以下开源项目: - [Spring Boot](https://spring.io/projects/spring-boot) - 基础框架 - [MyBatis-Plus](https://baomidou.com/) - ORM 框架 - [Sa-Token](https://sa-token.cc/) - 权限认证 - [Layui](https://www.layui.com/) - UI 框架 - [LayuiMini](https://layuimini.99php.cn/) - 后台模板 ## 📞 联系方式 - **问题反馈**: [Issues](https://gitee.com/wlf213/laymini-admin/issues) - **建议交流**: [讨论区](https://gitee.com/wlf213/laymini-admin/discussions) --- 如果这个项目对您有帮助,请给我们一个 ⭐️ Star!