# cs-springboot-admin **Repository Path**: xhbug_cs4380/cs-springboot-admin ## Basic Information - **Project Name**: cs-springboot-admin - **Description**: cs-springboot-admin基础权限单体架构,前后端分离项目 后端项目基于Spring Boot、Spring、Spring MVC、MyBatis、Shiro等主流后端技术开发 前端项目基于react 19 + Vite 5 + TypeScript5 + antd 6、axios等主流后端技术开发 - **Primary Language**: Java - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 33 - **Forks**: 9 - **Created**: 2019-04-24 - **Last Updated**: 2026-06-21 ## Categories & Tags **Categories**: backend **Tags**: None ## README # cs-admin 基础权限管理系统 cs-admin 是一套企业级基础权限单体架构系统,采用前后端分离设计。 后端基于 Spring Boot 3、Spring MVC、MyBatis-Plus、Shiro 等主流技术栈开发。 前端基于 React 19 + Vite 5 + TypeScript 5 + Ant Design 6 构建。 支持多租户数据隔离、角色权限细粒度控制(菜单级 + 按钮级)、数据字典、消息中心等核心功能。 > 当前版本:**1.2.0.RELEASE** 联系方式: cs4380@163.com ## 一. 系统说明 ### 1. 目录模块说明 ``` cs-springboot-admin ├── cs-admin-ui/ # 前端项目(React 19 + Vite 5 + TypeScript 5 + Ant Design 6) ├── cs-admin/ # 管理模块 - 提供后台管理基础功能(用户/角色/菜单/字典/租户等) ├── cs-auth/ # 认证模块 - 统一认证授权、JWT Token、Shiro 鉴权 ├── cs-common/ # 公共模块 - 通用工具类、异常处理、常量定义、公共 VO ├── cs-biz/ # 业务模块 - 主程序入口(BizBootstrap),通过 POM 依赖聚合其他模块 ├── cs-tool/ # 工具模块 - 文件存储、微信支付等扩展能力 ├── cs-generator/ # 代码生成器 - 可视化操作数据库表,一键生成前后端代码 └── doc/ # 项目文档 - 数据库脚本、字体库、代码模板 ``` #### 各模块职责 | 模块 | 职责说明 | |------|----------| | **cs-admin** | 用户管理、组织机构管理、角色权限管理、数据字典管理、系统菜单管理、系统租户管理 | | **cs-auth** | 认证授权服务,基于 Shiro + JWT 的登录验证与权限校验 | | **cs-common** | 系统公共基础工具包(注解、切面、异常、常量、分页、统一返回等) | | **cs-biz** | 业务主服务,启动入口,其他模块通过 Maven 依赖注入 | | **cs-tool** | 扩展工具服务(云文件存储 OSS、微信支付等) | | **cs-generator** | 独立代码生成器项目,可视化配置数据库表生成前后端代码 | ### 2. 技术架构 #### 后端技术栈 | 技术 | 版本 | 说明 | |------|------|------| | JDK | 21 | 开启全局虚拟线程 | | Spring Boot | 3.3.6 | 基础框架 | | MyBatis-Plus | 3.5.6 | ORM 持久层增强 | | Apache Shiro | 1.11.0(Jakarta) | 认证授权框架 | | Druid | 1.2.9 | 数据库连接池(含 SQL 监控与防火墙) | | MySQL Connector | 8.0.33 | 数据库驱动 | | Redis(spring-boot-starter-data-redis) | 3.2.5 | 缓存中间件 | | Caffeine | 3.1.8 | 本地内存缓存 | | JWT(java-jwt) | 4.0.0 | Token 令牌 | | Jasypt | 3.0.5 | 配置文件密码加密 | | Knife4j + SpringDoc | 4.4.0 | 接口文档(OpenAPI 3) | | Fastjson | 2.0.12 | JSON 序列化 | | Lombok | 1.18.32 | 代码简化 | | Guava | 33.2.0-jre | Google 工具库 | #### 前端技术栈 | 技术 | 版本 | 说明 | |------|------|------| | React | 19 | UI 框架 | | TypeScript | 5.5 | 类型安全 | | Vite | 5.3 | 构建工具 | | Ant Design | 6.4 | UI 组件库 | | Redux Toolkit | 2.2 | 状态管理 | | React Router | 6.24 | 路由管理 | | Axios | 1.17 | HTTP 请求 | | ECharts | 6.1 | 图表可视化 | | i18next | 26.3 | 国际化 | | Less | 4.2 | CSS 预处理器 | #### 基础设施 | 组件 | 版本 | |------|------| | MySQL | 8.x | | Redis | 6.x | | Node.js | >= 20.0.0 | ### 3. 功能清单 - **权限体系管理** - 组织机构管理(部门树形结构、部门人员维护) - 用户管理(用户信息、用户权限查询、密码修改) - 角色管理(角色增删改查) - 菜单管理(菜单树形结构、目录/菜单/按钮三级) - 按钮管理(菜单按钮配置,细粒度接口权限控制) - 权限授权(角色菜单授权、角色按钮授权) - **基础配置管理** - 数据字典管理(字典类型维护、字典值管理) - 系统租户管理(多租户数据隔离) - **消息中心** - 系统消息管理(消息发布、分页查询、详情查看) - 用户消息(消息已读/未读) - **通用能力服务** - 统一认证服务(图形验证码、账号密码登录、微信授权登录) - 云文件存储(多云适配、文件上传下载) - 代码生成器(数据库表解析、前后端代码生成) ### 4. 代码规范(推荐) 本项目基于 阿里代码规范,采用了常见的代码规范 - 表单验证采用 Hibernate-Validator,前端做表单验证,后台只做验证不做提示 - 插件:Lombok、Swagger(Knife4j)、MyBatis-Plus、PageHelper ## 二、开发环境搭建 ### 1. 环境要求 | 环境 | 版本要求 | |------|----------| | JDK | 21+ | | Node.js | >= 20.0.0(推荐 24) | | MySQL | 8.x | | Redis | 6.x | | Maven | 3.x+ | | pnpm / npm | 最新稳定版 | ### 2. 后端项目环境搭建 #### 2.1 编辑器插件 - **Lombok 插件**:需要手动下载并安装到 IDE 中 - **Maven 插件**:一般编辑器都自带,只需和本地 Maven 关联配置即可 #### 2.2 数据库初始化 1. 执行建表 SQL 脚本:`/doc/db/base_db.sql`(含建库、建表、初始数据) 2. 数据库名称:`base_db`,字符集:`utf8` #### 2.3 Maven 打包 在项目根目录执行,下载依赖并打基础包: ```bash mvn clean install ``` #### 2.4 配置说明 后端配置文件位于 `cs-biz/src/main/resources/` 目录: | 文件 | 说明 | |------|------| | `application.yml` | 主配置文件(通用配置) | | `application-dev.yml` | 开发环境配置 | | `application-prod.yml` | 生产环境配置 | | `application-test.yml` | 测试环境配置 | 配置项均支持通过环境变量覆盖,格式为 `${ENV_VAR:默认值}`,核心配置项: ```yaml # 数据库配置 MYSQL_HOST: 127.0.0.1 MYSQL_PORT: 3306 MYSQL_NAME: base_db MYSQL_USER_NAME: root MYSQL_PASS: 123456 # Redis 配置 REDIS_HOST: 127.0.0.1 REDIS_PORT: 6379 REDIS_PASSWORD: 123456 REDIS_DATABASE: 0 # 服务端口 SERVER_PORT: 8080 ``` **外部配置文件加载方式**(推荐): Spring Boot 支持通过外部 YAML 文件覆盖默认配置,在 IDEA 中配置 VM 参数: ``` -Dspring.config.additional-location=/path/to/your/dev.yml ``` > **注意**:外部配置文件必须是合法的 YAML 格式(键值对使用 `:` 分隔),不要使用 `.env` 风格的 `=` 语法。 #### 2.5 启动服务 运行主启动类 `com.cs.biz.BizBootstrap`,启动成功后访问: - 接口地址:`http://localhost:8080/api/` - 接口文档:`http://localhost:8080/api/doc.html` - 默认账号:**admin** / 密码:**123456** ### 3. 前端项目环境搭建 前端项目位于 `cs-admin-ui/` 目录: ```bash # 进入前端目录 cd cs-admin-ui # 安装依赖 pnpm install # 启动开发服务器 pnpm dev ``` 前端环境变量配置(`.env.development`): | 变量 | 说明 | 默认值 | |------|------|--------| | `VITE_API_URL` | 接口请求前缀 | `/api` | | `VITE_PROXY` | 跨域代理目标地址 | `http://127.0.0.1:8080/api` | | `VITE_ROUTER_MODE` | 路由模式(hash / history) | `hash` | 前端构建: ```bash # 生产环境打包 pnpm run build:prod ``` [前端项目 admin-ui 详细说明](https://gitee.com/xhbug_cs4380/cs-springcloud-admin/tree/master/cs-admin-ui) ## 三、项目部署 服务器环境要求:JDK 21、Nginx 最新版 ### 3.1 后端部署 通过 Maven 打包业务项目,生成 `cs-springboot-admin-server.jar` 部署到云服务器: ```bash mvn clean install -P prod ``` 在 jar 包同级目录创建启动脚本 `start.sh`: ```bash #!/bin/bash nohup java -server -Xms256m -Xmx1024m -jar ./cs-springboot-admin-server.jar --spring.profiles.active=prod --spring.config.additional-location=./config.yml >./logs/nohup.out 2>&1 & ``` - 启动:执行 `start.sh` - 关闭:`kill -9 ` `config.yml` 为生产环境外部配置文件,覆盖 `application.yml` 中的默认值(如数据库地址、密码等)。 ### 3.2 前端部署 在 Nginx 配置文件 `nginx.conf` 中添加以下配置: ```nginx server { listen 80; # 公网域名或 IP 地址 server_name www.xxxxx.cn; location ^~ /api/ { # 后端服务地址 proxy_pass http://localhost:8080; proxy_connect_timeout 500s; proxy_read_timeout 500s; proxy_send_timeout 500s; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } location / { # 前端项目部署目录(pnpm run build:prod 产物) root /html/cs-admin-ui/; index index.html index.htm; try_files $uri $uri/ /index.html; } } ``` ### 3.3 密码加密(Jasypt) 项目中敏感配置(如数据库密码)支持使用 Jasypt 加密存储,配置值格式为 `ENC(密文)`。 #### 3.3.1 生成密文 ```java public static void main(String[] args) { BasicTextEncryptor textEncryptor = new BasicTextEncryptor(); // 加密所需的 salt(需与配置文件中 jasypt.encryptor.password 一致) textEncryptor.setPassword("xxxxxxxx"); // 输出加密后的密文,使用 ENC(xxx) 包裹 System.out.println("ENC(" + textEncryptor.encrypt("123456") + ")"); } ``` #### 3.3.2 Jasypt 配置 ```yaml jasypt: encryptor: password: xxxxxxxx # 自定义盐值 algorithm: PBEWithMD5AndDES iv-generator-classname: org.jasypt.iv.NoIvGenerator ``` #### 3.3.3 使用示例 ```yaml spring: datasource: password: ENC(加密后的密文) ``` ## 四、多租户说明 系统内置多租户数据隔离能力,通过 `tenant_id` 字段实现行级隔离。 ```yaml tenant: enable: true # 是否开启多租户 column: tenant_id # 租户字段名 ignoreTables: # 不参与租户隔离的表 - base_user - base_user_role - base_dept - sys_dict_type - sys_dict_value - sys_role - sys_menu - sys_menu_button - sys_tenant # ... 其他全局表 ``` - 系统表(用户、角色、菜单、字典、租户等)不参与租户隔离,全局共享 - 业务表默认添加 `tenant_id` 字段,自动按租户过滤数据 ## 五、项目环境推荐 ### 5.1 本地开发工具 - [VSCode 官网下载地址](https://code.visualstudio.com/) - [IDEA 官网下载地址](https://www.jetbrains.com/idea/download/#section=windows) - [Node.js 官网下载地址](https://nodejs.org/en/) - [Maven 安装指南](https://maven.apache.org/download.cgi) ### 5.2 服务器环境 - [CentOS 7 安装 Docker](https://blog.csdn.net/cs4380/article/details/85777416) - [Docker 中安装 MySQL](https://blog.csdn.net/cs4380/article/details/89928514) - [Docker 中安装 Redis](https://blog.csdn.net/cs4380/article/details/86582569) - [CentOS 7 安装 Nginx](https://blog.csdn.net/cs4380/article/details/104551530) ### 5.3 其他推荐 - [OpenJDK 21 安装](https://blog.csdn.net/cs4380/article/details/97497455) 服务器和本地推荐安装一致的 JDK 版本 - [IDEA 配置外部依赖](https://blog.csdn.net/cs4380/article/details/108937132) Spring Boot 支持依赖外部文件配置,在 IDEA 中配置 VM 参数 `-Dspring.config.additional-location` 即可 ## 六、项目预览图
## 七、开源协议 本项目采用 [MIT License](LICENSE) 开源协议。