# 桔桔波管理系统(基于Springboot3+Vue3的管理系统) **Repository Path**: BestClever/jujubo-system ## Basic Information - **Project Name**: 桔桔波管理系统(基于Springboot3+Vue3的管理系统) - **Description**: No description available - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 8 - **Created**: 2026-07-15 - **Last Updated**: 2026-07-15 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 桔桔波管理系统(Orange-Wave-Management-System) 一个基于 **Spring Boot 3 + Vue 3** 的前后端分离后台管理系统框架,开箱即用,包含完整的用户认证、权限控制(RBAC)、菜单管理、操作日志、数据统计与文件上传等后台管理常用功能,可作为新项目快速起步的通用骨架。 --- ## 开源说明 本项目采用 **MIT 开源协议** 进行开源。 ✅ 允许个人/企业免费使用、二次修改、商业用途、二次分发; ✅ 仅要求在衍生项目中保留原版权与 MIT 协议声明; ❌ 作者不承担软件使用带来的任何直接或间接风险。 完整协议内容请查看仓库根目录下的 `LICENSE` 文件。 ## 在线体验 - 体验地址:**http://159.75.182.200/** - 体验账号:`awei` - 登录密码:`awei123456` > 💡 本项目会**持续进行优化与部署更新**,线上地址与功能可能随时间迭代,建议以当前线上版本为最新体验。如遇访问异常或功能调整,欢迎反馈。 ## 项目截图 ### 登录页面 ![输入图片说明](%E7%99%BB%E5%BD%95%E9%A1%B5%E9%9D%A2.png) ### 首页 ![输入图片说明](%E9%A6%96%E9%A1%B5.png) ## 一、项目概览 ``` system/ ├── springboot3-admin/ # 后端:Spring Boot 3 后台服务 │ ├── src/main/java/ # Java 源码 │ ├── src/main/resources/ # 配置文件、MyBatis Mapper XML │ ├── target/ # 构建产物(含可执行 jar) │ ├── uploads/ # 文件上传目录(运行时生成) │ ├── pom.xml # Maven 构建文件 │ └── build.log ├── vue3-admin/ # 前端:Vue 3 管理后台 │ ├── src/ # 源码(views / layout / stores / utils / router) │ ├── public/ │ ├── dist/ # 构建产物(生产打包) │ ├── index.html │ ├── vite.config.js # Vite 配置(含代理) │ └── package.json ├── uploads/ # 根级上传目录 ├── winget.err / winget.log # 环境安装日志 └── README.md ``` | 模块 | 技术栈 | 端口 | 路径前缀 | |------|--------|------|----------| | 后端 | Spring Boot 3.1.12 / Java 17 | 8080 | `/api` | | 前端 | Vue 3.5 + Vite 8 | 5173(dev) | `/` | --- ## 二、后端(springboot3-admin) ### 2.1 技术栈 | 类别 | 选型 | |------|------| | 基础框架 | Spring Boot 3.1.12(Java 17) | | 持久层 | MyBatis-Plus 3.5.7(MySQL 8) | | 安全框架 | Spring Security 6(无状态 / JWT) | | 缓存 | Redis(spring-boot-starter-data-redis) | | 工具 | Hutool 5.8.25、Lombok、Jackson(jsr310 时间支持) | | 鉴权令牌 | JJWT 0.11.5 | | 接口文档 | Knife4j OpenAPI3(4.5.0,访问 `/doc.html`) | | 其他 | spring-boot-starter-validation(参数校验)、spring-boot-starter-aop(操作日志切面) | ### 2.2 核心配置 - `application.yml`:全局配置,激活环境 `dev`(部署改为 `prod`),服务端口 `8080`,`context-path=/api`,文件上传上限 10MB/20MB,JWT 密钥与过期时间(默认 24h)。 - `application-dev.yml`:本地开发,MySQL `localhost:3306/manager_system`,Redis `127.0.0.1:6379`,开启 SQL 控制台日志,上传目录 `./uploads/`。 - `application-prod.yml`:生产环境(服务器 `159.75.182.200`),通过 `forward-headers-strategy: native` 获取真实客户端 IP,关闭 SQL 日志。 - 切换环境:`java -jar xxx.jar --spring.profiles.active=prod` ### 2.3 包结构(`com.admin`) ``` com.admin ├── AdminApplication.java # 启动类(@MapperScan("com.admin.mapper")) ├── controller/ # 接口层 │ ├── AuthController # 登录 / 登出 │ ├── CaptchaController # 图形验证码 │ ├── UserController # 用户管理 + 个人信息 + 改密 / 重置密码 │ ├── RoleController # 角色管理 │ ├── DeptController # 部门管理 │ ├── MenuController # 菜单管理(树、用户菜单、启停) │ ├── NotifyMessageController # 通知管理 │ ├── OperLogController # 操作日志(含前端日志上报接口) │ ├── StatisticsController # 数据概览 / 趋势 / 最新用户 │ ├── FileController # 文件上传 │ └── HomeController # 首页信息 ├── entity/ # 数据实体(对应 sys_* 表) │ ├── SysUser / SysRole / SysDept / SysMenu │ ├── SysUserRole / SysRoleMenu # 关联表 │ ├── SysNotifyMessage / SysOperLog ├── mapper/ # MyBatis-Plus Mapper 接口 ├── service/ + service/impl/ # 业务层 ├── config/ # 配置类 │ ├── SecurityConfig # 安全链、CORS、密码编码器 │ ├── JwtAuthenticationFilter # JWT 拦截器 │ ├── RedisConfig / MyBatisPlusConfig / JacksonConfig │ ├── Knife4jConfig # 接口文档 │ ├── DataInitializer # 启动时自动修复数据关联 │ └── MyMetaObjectHandler # 自动填充 createTime/updateTime ├── filter/ # JwtAuthenticationFilter ├── dto/ # LoginDTO、FrontendOperLogDto └── common/ ├── annotation/Log # 操作日志注解 ├── enums/ # BusinessType、OperatorType ├── security/ # LoginUser、UserDetailsServiceImpl ├── result/ # Result、ResultCodeEnum(统一响应) ├── exception/ # 全局异常处理器、ServiceException └── util/ # JwtUtil、RedisUtil、IpUtil、CaptchaUtil、SecurityUtil ``` ### 2.4 关键功能实现 - **认证流程**:登录(`/auth/login`)先校验 Redis 中的图形验证码(一次性),再经 Spring Security `AuthenticationManager` 校验账号密码(BCrypt 加密),通过后生成 JWT 并返回,同时把 `LoginUser` 缓存到 Redis(`login:user:{userId}`,与 JWT 同过期)。 - **无状态鉴权**:`SecurityConfig` 关闭 session(`STATELESS`),所有受保护接口需携带 `Authorization: Bearer `;`JwtAuthenticationFilter` 解析 token 并重建 `Authentication`。 - **权限控制**:基于 RBAC,使用 `@PreAuthorize("hasAuthority('xxx')")` 进行方法级鉴权;菜单 `perms` 字段即权限标识;前端根据「用户菜单」动态生成路由与可显示的按钮。 - **操作日志**:通过 `@Log` 注解 + AOP(`LogAspect`)自动记录后端增删改查;前端页面访问与接口失败也会调用 `OperLogController` 的 frontend 上报接口,统一落入 `sys_oper_log`。 - **动态菜单 / 路由**:菜单表以树形结构维护(`type`:0 目录 / 1 菜单 / 2 按钮),前端 `utils/dynamicRouter.js` 将 `user-menu` 转为 Vue Router 路由。 - **数据自修复**:`DataInitializer` 在应用启动时检查并补全 admin 用户角色、通知/用户/操作日志的按钮权限与「系统监控」目录,确保功能开箱可用(仅修复、不覆盖已有数据)。 ### 2.5 主要接口一览(`/api` 前缀) | 模块 | 接口 | 说明 | |------|------|------| | 认证 | `POST /auth/login`、`POST /auth/logout`、`GET /auth/captcha` | 登录、登出、验证码 | | 用户 | `/system/user/page`、`/system/user/{id}`、`POST /system/user`、`PUT /system/user`、`DELETE /system/user/{id}`、`/system/user/profile`、`/system/user/reset-password/{id}` | 分页、详情、增改删、个人信息、重置密码 | | 角色 | `/system/role/...` | 角色增删改查与权限分配 | | 部门 | `/system/dept/...` | 部门树 | | 菜单 | `/system/menu/tree`、`/system/menu/user-menu`、`POST/PUT/DELETE`、`/system/menu/toggle-status` | 菜单树、用户菜单、启停 | | 通知 | `/system/notify/...` | 通知管理 | | 操作日志 | `/monitor/operlog/...`、`POST /monitor/operlog/frontend` | 查询/删除/清空、前端日志上报 | | 统计 | `/statistics/overview`、`/statistics/user-trend`、`/statistics/user-trend-week`、`/statistics/latest-users` | 概览、月/周趋势、最新用户 | | 文件 | `POST /file/upload` | 文件上传(返回可访问路径) | > 接口文档(Knife4j):启动后访问 `http://localhost:8080/api/doc.html` --- ## 三、前端(vue3-admin) ### 3.1 技术栈 | 类别 | 选型 | |------|------| | 框架 | Vue 3.5(`