# sysmintool **Repository Path**: ymb95/mintool ## Basic Information - **Project Name**: sysmintool - **Description**: No description available - **Primary Language**: Unknown - **License**: MulanPSL-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-01-26 - **Last Updated**: 2026-03-26 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Mintool 管理系统 基于 Spring Boot 3.2.0 + Vue 3 的完整前后端分离项目 ## 技术栈 ### 后端 - Spring Boot 3.2.0 - JDK 21 - MySQL 5.7 - MyBatis-Plus 3.5.5 - Spring Security - JWT (jjwt 0.12.3) - Redis - EasyExcel 3.3.3 - Lombok ### 前端 - Vue 3 - TypeScript - Element Plus - Axios - Pinia - Vue Router ## 功能特性 ✅ **RBAC 权限模型**(用户-角色-菜单) - 完整的用户、角色、菜单管理 - 用户角色关联、角色菜单关联 - 权限动态分配 ✅ **JWT + Redis Token管理** - JWT token生成和验证 - Redis存储token,支持过期管理 - 用户权限缓存到Redis ✅ **枚举类型支持** - 所有状态使用枚举(UserStatus、CommonStatus、MenuType、OperStatus、LoginStatus) - MyBatis-Plus自动转换枚举类型 ✅ **权限缓存机制** - 用户权限缓存到Redis(24小时有效期) - 支持按角色批量失效权限缓存 ✅ **操作日志记录** - 结构化JSON格式记录操作参数和返回结果 - 变更前后对比(可扩展) - 记录操作人、IP、时间等信息 ✅ **文件转换功能** - 支持单个PDF/OFD文件上传转换 - 支持ZIP压缩包批量转换 - 转换完成后生成压缩包,通过流返回下载 ✅ **日志导出** - 使用EasyExcel导出登录日志 - 支持Excel格式导出 ✅ **安全特性** - 防重复提交(基于Redis) - 超管bypass权限校验 - 双重权限校验(注解+切面) ✅ **代码组织** - 按包组织:entity、Mapper、Service、Controller、config、aspect - 清晰的代码结构 ## 数据库配置 数据库用户名:`mintool` 数据库密码:`MyDB2026@` 数据库名:`mintool` ## 快速开始 ### 1. 初始化数据库 执行 `src/main/resources/db/schema.sql` 脚本创建数据库和表结构。 默认管理员账号: - 用户名:`admin` - 密码:`admin123` ### 2. 配置Redis 确保Redis服务已启动,默认配置: - Host: localhost - Port: 6379 - Password: (无) ### 3. 启动后端 ```bash # 进入项目根目录 cd mintool # 使用Maven启动 mvn spring-boot:run # 或打包后运行 mvn clean package java -jar target/mintool-1.0.0.jar ``` 后端服务地址:http://localhost:8080/api ### 4. 启动前端 ```bash # 进入前端目录 cd tool-font/tool-font # 安装依赖 npm install # 启动开发服务器 npm run dev ``` 前端服务地址:http://localhost:5173 ## 项目结构 ``` mintool/ ├── src/main/java/com/mintool/ │ ├── MintoolApplication.java # 启动类 │ ├── common/ # 通用类 │ │ ├── Result.java # 统一响应 │ │ ├── annotation/ # 注解 │ │ │ ├── OperLog.java # 操作日志注解 │ │ │ ├── PreventDuplicate.java # 防重复提交注解 │ │ │ └── RequiresPermissions.java # 权限校验注解 │ │ ├── enums/ # 枚举类 │ │ └── exception/ # 异常处理 │ ├── config/ # 配置类 │ ├── domain/ # 领域模型 │ │ ├── entity/ # 实体类 │ │ ├── dto/ # 数据传输对象 │ │ └── vo/ # 视图对象 │ ├── mapper/ # Mapper接口 │ ├── service/ # 服务层 │ ├── controller/ # 控制器 │ ├── aspect/ # AOP切面 │ ├── filter/ # 过滤器 │ └── utils/ # 工具类 ├── src/main/resources/ │ ├── application.yml # 应用配置 │ ├── db/ │ │ └── schema.sql # 数据库脚本 │ └── mapper/ # MyBatis XML └── tool-font/tool-font/ # 前端代码 └── src/ ├── views/ # 页面组件 ├── layout/ # 布局组件 ├── router/ # 路由配置 ├── store/ # 状态管理 └── utils/ # 工具函数 ``` ## API接口 ### 认证接口 - `POST /api/auth/login` - 登录 - `POST /api/auth/logout` - 登出 ### 用户管理 - `GET /api/system/user/list` - 用户列表 - `GET /api/system/user/{id}` - 用户详情 - `POST /api/system/user` - 新增用户 - `PUT /api/system/user` - 更新用户 - `DELETE /api/system/user/{id}` - 删除用户 ### 菜单管理 - `GET /api/system/menu/list` - 菜单列表 - `GET /api/system/menu/user` - 用户菜单 - `POST /api/system/menu` - 新增菜单 - `PUT /api/system/menu` - 更新菜单 - `DELETE /api/system/menu/{id}` - 删除菜单 ### 文件转换 - `POST /api/tool/convert/upload` - 上传文件转换 ### 日志管理 - `GET /api/log/oper/list` - 操作日志列表 - `GET /api/log/login/list` - 登录日志列表 - `POST /api/log/login/export` - 导出登录日志 ## 注意事项 1. **数据库密码**:请确保MySQL数据库密码为 `MyDB2026@` 2. **Redis**:确保Redis服务已启动 3. **文件上传路径**:默认上传路径为 `./uploads`,转换路径为 `./converts` 4. **JWT密钥**:生产环境请修改 `application.yml` 中的JWT密钥 5. **枚举类型**:数据库中的状态字段存储的是枚举的code值(整数或字符串) ## 开发说明 ### 添加新功能 1. 在 `domain/entity` 中创建实体类 2. 在 `mapper` 中创建Mapper接口 3. 在 `service` 中创建Service接口和实现 4. 在 `controller` 中创建Controller 5. 如需权限控制,使用 `@RequiresPermissions` 注解 6. 如需记录日志,使用 `@OperLog` 注解 ### 权限控制 - 使用 `@RequiresPermissions({"权限标识"})` 注解 - 超管(admin角色)自动bypass所有权限检查 - 权限标识格式:`模块:功能:操作`,如 `system:user:add` ### 防重复提交 - 使用 `@PreventDuplicate` 注解 - 支持SpEL表达式指定key - 默认5秒内不允许重复提交