更新内容: 前后端架构说明.md: - 更新项目状态说明,反映 martial-web 已存在 - 添加开发环境和生产环境架构对比图 - 添加详细的请求流程示例 - 更新访问地址为域名(生产环境) - 更新开发方式说明,包含本地全栈开发 - 完善环境对比表,包含开发和生产地址 - 强调 martial-web 项目而非商业版 Saber 开发指南.md: - 更新 SQL 脚本路径:doc/sql/ → database/ 总体改进: - 所有生产环境地址使用域名替代 IP:端口 - 反映当前项目的实际状态(前后端都已部署) - 提供开发和生产两种环境的清晰对比 - 帮助开发者快速理解完整的系统架构 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
601 lines
19 KiB
Markdown
601 lines
19 KiB
Markdown
# BladeX 完整架构说明
|
||
|
||
## 一、BladeX 完整系统架构
|
||
|
||
BladeX 是一个**前后端分离**的企业级微服务架构,完整的系统包含多个项目:
|
||
|
||
```
|
||
BladeX 完整架构
|
||
├── 后端项目(当前)
|
||
│ ├── martial-master # Spring Boot 后端 API(当前项目)
|
||
│ └── martial-tool # BladeX 框架核心(依赖库)
|
||
│
|
||
├── 前端项目(独立仓库)
|
||
│ ├── Saber (推荐) # Vue 3 + Element Plus 管理后台 ⭐
|
||
│ └── Sword (旧版) # Vue 2 + Avue 管理后台(已不推荐)
|
||
│
|
||
└── 可选组件
|
||
├── BladeX-Auth # 独立认证中心(微服务版)
|
||
├── BladeX-Gateway # 网关服务(微服务版)
|
||
└── BladeX-Register # 注册中心(Nacos)
|
||
```
|
||
|
||
### 当前项目状态
|
||
|
||
根据 `CLAUDE.md` 的说明:
|
||
```
|
||
"The frontend is a separate Vue.js project (not in this repository)"
|
||
```
|
||
|
||
**当前您手上的项目包含**:
|
||
- 后端项目:`martial-master`(主业务 API)
|
||
- 前端项目:`martial-web`(Vue 3 管理系统,独立仓库)
|
||
|
||
两个项目均已部署到生产环境,并配置了自动化 CI/CD 部署流程。
|
||
|
||
---
|
||
|
||
## 二、前端管理系统
|
||
|
||
### 2.1 当前项目前端:martial-web
|
||
|
||
**martial-web** 是本项目配套的 Vue 3 管理系统,基于 Element Plus 和 Avue 构建。
|
||
|
||
**项目信息**:
|
||
- 仓库位置:`/remote_dev/martial/martial-web`(独立仓库)
|
||
- 技术栈:Vue 3 + Vite + Element Plus + Avue
|
||
- 生产地址:https://martial.johnsion.club
|
||
- 开发端口:5173
|
||
|
||
**主要功能**:
|
||
- 🏠 **仪表盘**:数据统计、图表展示
|
||
- 👥 **用户管理**:用户增删改查、角色分配
|
||
- 🔐 **权限管理**:角色管理、菜单管理、权限分配
|
||
- 🏢 **组织架构**:部门管理、岗位管理
|
||
- 📋 **系统管理**:字典管理、参数配置、日志查看
|
||
- 🗂️ **资源管理**:文件上传、OSS 配置
|
||
- ⚙️ **开发工具**:代码生成器、数据源管理
|
||
- 🥋 **业务功能**:武术比赛管理(核心业务)
|
||
|
||
### 2.2 技术栈
|
||
|
||
```
|
||
前端框架:Vue 3.4 (Composition API)
|
||
UI 组件:Element Plus
|
||
表单/表格:Avue
|
||
状态管理:Vuex 4
|
||
路由:Vue Router 4
|
||
构建工具:Vite 5
|
||
HTTP 库:Axios
|
||
样式:Sass/SCSS
|
||
```
|
||
|
||
### 2.3 访问地址
|
||
|
||
**开发环境**:
|
||
- 本地开发:http://localhost:5173
|
||
- API 代理:通过 Vite proxy 转发到后端
|
||
|
||
**生产环境**:
|
||
- 前端地址:https://martial.johnsion.club
|
||
- API 代理:通过 Nginx 转发到后端
|
||
|
||
### 2.4 BladeX 官方前端 Saber(可选)
|
||
|
||
BladeX 框架还提供商业版本的官方前端 **Saber**(需要购买授权):
|
||
|
||
**官方仓库**:
|
||
```
|
||
Gitee: https://gitee.com/smallc/Saber
|
||
GitHub: https://github.com/chillzhuang/Saber
|
||
```
|
||
|
||
**与 martial-web 的关系**:
|
||
- martial-web:本项目自主开发的管理系统
|
||
- Saber:BladeX 官方提供的商业版管理系统
|
||
- 两者都可以对接 martial-master 后端,功能类似
|
||
|
||
---
|
||
|
||
## 三、前后端交互流程
|
||
|
||
### 3.1 开发环境架构
|
||
|
||
```
|
||
┌─────────────────────────────────────────────────────────────┐
|
||
│ 用户浏览器 │
|
||
└──────────────┬──────────────────────────────────────────────┘
|
||
│
|
||
│ http://localhost:5173
|
||
▼
|
||
┌──────────────────────────────────────────────────────────────┐
|
||
│ martial-web 前端 (Vue 3 + Vite) │
|
||
│ - 登录页面 │
|
||
│ - 仪表盘 │
|
||
│ - 用户管理 │
|
||
│ - 权限管理 │
|
||
│ - 武术比赛管理(调用后端 API) │
|
||
└──────────────┬───────────────────────────────────────────────┘
|
||
│
|
||
│ Vite Dev Proxy
|
||
│ /api → http://localhost:8123/api
|
||
│ /blade-auth → http://localhost:8123/blade-auth
|
||
│ /blade-system → http://localhost:8123/blade-system
|
||
▼
|
||
┌──────────────────────────────────────────────────────────────┐
|
||
│ martial-master 后端 (Spring Boot) │
|
||
│ http://localhost:8123 │
|
||
│ │
|
||
│ ├── /blade-auth/** → 认证模块 │
|
||
│ ├── /blade-system/** → 系统管理 │
|
||
│ ├── /blade-desk/** → 仪表盘 │
|
||
│ ├── /blade-resource/** → 资源管理 │
|
||
│ ├── /blade-develop/** → 开发工具 │
|
||
│ └── /api/martial/** → 武术比赛(核心业务) │
|
||
└──────────────┬───────────────────────────────────────────────┘
|
||
│
|
||
▼
|
||
┌──────────────┐
|
||
│ MySQL 33066 │
|
||
│ Redis 63379 │
|
||
└──────────────┘
|
||
```
|
||
|
||
### 3.2 生产环境架构
|
||
|
||
```
|
||
┌─────────────────────────────────────────────────────────────┐
|
||
│ 互联网用户 │
|
||
└──────────────┬──────────────────────────────────────────────┘
|
||
│
|
||
│ HTTPS (Cloudflare CDN)
|
||
▼
|
||
┌──────────────────────────────────────────────────────────────┐
|
||
│ Caddy 反向代理(80/443,自动 HTTPS) │
|
||
│ - martial.johnsion.club → localhost:5173 │
|
||
│ - martial-api.johnsion.club → localhost:8123 │
|
||
│ - martial-doc.johnsion.club → localhost:8123/doc.html │
|
||
│ - martial-ci.johnsion.club → localhost:8080 │
|
||
└────────┬─────────────────────────────┬───────────────────────┘
|
||
│ │
|
||
│ 前端请求 │ API 请求
|
||
▼ ▼
|
||
┌──────────────────────┐ ┌───────────────────────────────┐
|
||
│ martial-frontend │ │ martial-backend │
|
||
│ (Nginx 容器) │ │ (Spring Boot) │
|
||
│ 端口: 5173:80 │ │ 端口: 8123 │
|
||
│ │ │ │
|
||
│ 静态文件服务 │ │ ├── /blade-auth/** │
|
||
│ ├── index.html │ │ ├── /blade-system/** │
|
||
│ ├── assets/ │ │ ├── /blade-desk/** │
|
||
│ └── ... │ │ ├── /blade-resource/** │
|
||
│ │ │ ├── /blade-develop/** │
|
||
│ Nginx 反向代理 │ │ └── /api/martial/** │
|
||
│ └── /blade-auth/** │──────┘ │
|
||
│ /blade-system/**│ ┌───────────────────────────────┘
|
||
│ /api/** │──────┘
|
||
│ → 172.21.0.1:8123 │
|
||
└──────────────────────┘ │
|
||
│ │
|
||
└────────────┬──────────────────────┘
|
||
│
|
||
│ Docker Network: martial_martial-network
|
||
▼
|
||
┌──────────────┐
|
||
│ martial-mysql│ (端口: 3306)
|
||
│ martial-redis│ (端口: 6379)
|
||
└──────────────┘
|
||
```
|
||
|
||
### 3.3 请求流程示例
|
||
|
||
**用户登录流程**:
|
||
```
|
||
1. 用户访问 https://martial.johnsion.club
|
||
↓
|
||
2. Caddy 转发到 frontend 容器 (localhost:5173)
|
||
↓
|
||
3. Nginx 返回 Vue 应用 (index.html)
|
||
↓
|
||
4. 前端 JS 发起登录请求: POST /blade-auth/oauth/token
|
||
↓
|
||
5. Nginx 代理到后端: http://172.21.0.1:8123/blade-auth/oauth/token
|
||
↓
|
||
6. Spring Boot 认证模块处理登录
|
||
↓
|
||
7. 返回 Token 给前端
|
||
↓
|
||
8. 前端存储 Token,后续请求携带 Blade-Auth header
|
||
```
|
||
|
||
**业务数据请求流程**:
|
||
```
|
||
1. 前端请求比赛列表: GET /api/martial/competition/list
|
||
↓
|
||
2. Nginx 代理: http://172.21.0.1:8123/api/martial/competition/list
|
||
↓
|
||
3. Spring Boot martial 模块查询数据库
|
||
↓
|
||
4. 返回 JSON 数据
|
||
↓
|
||
5. 前端展示数据
|
||
```
|
||
|
||
---
|
||
|
||
## 四、项目访问方式
|
||
|
||
### 方式一:生产环境在线访问 ✅
|
||
|
||
**适合场景**:
|
||
- 直接使用已部署的完整系统
|
||
- 演示和测试
|
||
- 前端开发(对接生产 API)
|
||
|
||
**访问地址**:
|
||
```
|
||
前端系统:https://martial.johnsion.club
|
||
后端 API:https://martial-api.johnsion.club
|
||
API 文档:https://martial-doc.johnsion.club
|
||
CI/CD 平台:https://martial-ci.johnsion.club
|
||
```
|
||
|
||
**默认账号**:
|
||
```
|
||
用户名:admin
|
||
密码:admin
|
||
租户ID:000000
|
||
```
|
||
|
||
**优点**:
|
||
- ✅ 开箱即用,无需本地部署
|
||
- ✅ HTTPS 安全访问
|
||
- ✅ 完整的前后端功能
|
||
- ✅ 生产级别的性能
|
||
|
||
---
|
||
|
||
### 方式二:本地开发环境 ✅
|
||
|
||
**适合场景**:
|
||
- 后端功能开发
|
||
- API 调试和测试
|
||
- 前端本地开发
|
||
|
||
**启动后端**:
|
||
```bash
|
||
cd /remote_dev/martial/martial-master
|
||
mvn spring-boot:run
|
||
|
||
访问地址:
|
||
- API Server: http://localhost:8123
|
||
- Swagger 文档: http://localhost:8123/doc.html
|
||
- Druid 监控: http://localhost:8123/druid
|
||
```
|
||
|
||
**启动前端**:
|
||
```bash
|
||
cd /remote_dev/martial/martial-web
|
||
npm run dev
|
||
|
||
访问地址:
|
||
- 前端系统: http://localhost:5173
|
||
```
|
||
|
||
**优点**:
|
||
- ✅ 可以调试代码
|
||
- ✅ 快速开发迭代
|
||
- ✅ 修改即时生效
|
||
|
||
---
|
||
|
||
### 方式三:仅使用 API 文档测试
|
||
|
||
**适合场景**:
|
||
- 后端 API 测试
|
||
- 接口调试
|
||
- 了解 API 规范
|
||
|
||
**访问方式**:
|
||
|
||
**生产环境**:
|
||
```
|
||
Knife4j API 文档:https://martial-doc.johnsion.club
|
||
|
||
直接调用 API:
|
||
POST https://martial-api.johnsion.club/blade-auth/oauth/token
|
||
GET https://martial-api.johnsion.club/api/martial/competition/list
|
||
```
|
||
|
||
**本地环境**:
|
||
```
|
||
Knife4j API 文档:http://localhost:8123/doc.html
|
||
|
||
直接调用 API:
|
||
POST http://localhost:8123/blade-auth/token
|
||
GET http://localhost:8123/api/martial/competition/list
|
||
```
|
||
|
||
**优点**:
|
||
- ✅ 无需前端,可以直接测试 API
|
||
- ✅ 适合后端开发和调试
|
||
- ✅ Swagger UI 提供可视化测试界面
|
||
|
||
**缺点**:
|
||
- ❌ 没有完整的管理界面
|
||
- ❌ 需要手动构造请求参数
|
||
|
||
---
|
||
|
||
### 方式四:使用第三方 API 工具
|
||
|
||
**适合场景**:
|
||
- 复杂 API 测试
|
||
- 批量接口测试
|
||
- 自动化测试
|
||
|
||
**推荐工具**:
|
||
|
||
**Postman / Apifox / Insomnia**
|
||
```
|
||
1. 先调用登录接口获取 Token:
|
||
POST https://martial-api.johnsion.club/blade-auth/oauth/token
|
||
Body: {
|
||
"tenantId": "000000",
|
||
"username": "admin",
|
||
"password": "admin",
|
||
"grant_type": "password",
|
||
"scope": "all"
|
||
}
|
||
|
||
2. 复制返回的 access_token
|
||
|
||
3. 在后续请求中添加 Header:
|
||
Blade-Auth: bearer <access_token>
|
||
|
||
4. 调用业务接口:
|
||
GET https://martial-api.johnsion.club/api/martial/competition/list
|
||
```
|
||
|
||
**VS Code REST Client 扩展**
|
||
```http
|
||
### 1. 登录获取 Token
|
||
POST https://martial-api.johnsion.club/blade-auth/oauth/token
|
||
Content-Type: application/json
|
||
|
||
{
|
||
"tenantId": "000000",
|
||
"username": "admin",
|
||
"password": "admin",
|
||
"grant_type": "password",
|
||
"scope": "all"
|
||
}
|
||
|
||
### 2. 调用业务接口
|
||
GET https://martial-api.johnsion.club/api/martial/competition/list
|
||
Blade-Auth: bearer {{token}}
|
||
```
|
||
|
||
---
|
||
|
||
## 五、模块启动管理
|
||
|
||
### 5.1 单体架构(当前项目)
|
||
|
||
**当前项目是单体应用**,所有模块在一个进程中运行:
|
||
|
||
```
|
||
java -jar blade-api.jar
|
||
|
||
启动后,所有模块同时可用:
|
||
✅ auth 模块
|
||
✅ system 模块
|
||
✅ resource 模块
|
||
✅ desk 模块
|
||
✅ develop 模块
|
||
✅ martial 模块
|
||
✅ job 模块
|
||
```
|
||
|
||
**没有独立的模块启动管理**,因为不是微服务架构。
|
||
|
||
---
|
||
|
||
### 5.2 微服务架构(可选升级)
|
||
|
||
如果升级到微服务版本,架构会变成:
|
||
|
||
```
|
||
BladeX 微服务架构
|
||
├── BladeX-Register (Nacos) # 注册中心,管理所有服务
|
||
├── BladeX-Gateway # 网关服务
|
||
├── BladeX-Auth # 认证服务
|
||
├── BladeX-System # 系统服务
|
||
├── BladeX-Resource # 资源服务
|
||
├── BladeX-Desk # 工作台服务
|
||
└── Martial-Service # 武术比赛服务(您的业务)
|
||
```
|
||
|
||
**此时会有管理界面**:
|
||
|
||
**Nacos 控制台**:
|
||
```
|
||
地址:http://localhost:8848/nacos
|
||
功能:
|
||
- 查看所有注册的服务
|
||
- 服务健康检查
|
||
- 配置管理
|
||
- 服务上下线
|
||
```
|
||
|
||
**Sentinel 控制台**(可选):
|
||
```
|
||
地址:http://localhost:8858
|
||
功能:
|
||
- 流量控制
|
||
- 熔断降级
|
||
- 系统负载保护
|
||
```
|
||
|
||
**Spring Boot Admin**(可选):
|
||
```
|
||
地址:http://localhost:7002
|
||
功能:
|
||
- 监控所有 Spring Boot 应用
|
||
- 查看日志
|
||
- 查看 JVM 信息
|
||
- 健康检查
|
||
```
|
||
|
||
---
|
||
|
||
## 六、常见疑问解答
|
||
|
||
### Q1: 为什么没有找到管理界面?
|
||
|
||
**A**: 当前项目是**纯后端 API 项目**,前端管理系统(Saber)是独立的项目,需要单独获取和部署。
|
||
|
||
### Q2: 如何获取 Saber 前端源码?
|
||
|
||
**A**:
|
||
- 如果您有 BladeX 授权,从官方仓库获取
|
||
- 如果是开源版本,部分功能可能不可用
|
||
- 可以联系 BladeX 官方获取试用版
|
||
|
||
### Q3: 没有 Saber 可以开发吗?
|
||
|
||
**A**: 可以!
|
||
- 使用 Knife4j API 文档测试:http://localhost:8123/doc.html
|
||
- 使用 Postman/Apifox 调用 API
|
||
- 自己开发前端(任何技术栈都可以)
|
||
|
||
### Q4: 如何查看系统运行状态?
|
||
|
||
**A**:
|
||
- 查看日志:`tail -f application.log`
|
||
- 健康检查:http://localhost:8123/actuator/health
|
||
- Druid 监控:http://localhost:8123/druid
|
||
- Knife4j 文档:http://localhost:8123/doc.html
|
||
|
||
### Q5: 这个项目是微服务吗?
|
||
|
||
**A**: 当前是**单体应用**(Monolithic),但使用了模块化设计。如果需要,可以升级为微服务架构。
|
||
|
||
---
|
||
|
||
## 七、推荐的开发方式
|
||
|
||
### 开发环境配置
|
||
|
||
**本地全栈开发**:
|
||
```bash
|
||
# 终端 1: 启动后端
|
||
cd /remote_dev/martial/martial-master
|
||
mvn spring-boot:run
|
||
|
||
# 终端 2: 启动前端
|
||
cd /remote_dev/martial/martial-web
|
||
npm run dev
|
||
|
||
# 访问
|
||
前端:http://localhost:5173
|
||
后端:http://localhost:8123
|
||
文档:http://localhost:8123/doc.html
|
||
```
|
||
|
||
**仅后端开发**:
|
||
```bash
|
||
# 启动后端
|
||
cd /remote_dev/martial/martial-master
|
||
mvn spring-boot:run
|
||
|
||
# 使用以下方式测试
|
||
1. Knife4j 文档:http://localhost:8123/doc.html
|
||
2. Postman/Apifox
|
||
3. 对接生产前端:https://martial.johnsion.club(配置 API 代理到 localhost:8123)
|
||
```
|
||
|
||
**仅前端开发**:
|
||
```bash
|
||
# 启动前端
|
||
cd /remote_dev/martial/martial-web
|
||
npm run dev
|
||
|
||
# 对接生产后端
|
||
在 vite.config.js 中配置 proxy 指向:
|
||
https://martial-api.johnsion.club
|
||
```
|
||
|
||
### 数据库操作
|
||
|
||
**开发环境**:
|
||
```bash
|
||
# 使用 Navicat/DBeaver 连接
|
||
Host: 127.0.0.1
|
||
Port: 33066
|
||
Database: martial_db
|
||
Username: root
|
||
Password: WtcSecure901faf1ac4d32e2bPwd
|
||
```
|
||
|
||
**生产环境**(仅运维人员):
|
||
```bash
|
||
# 通过 Docker 容器访问
|
||
ssh root@154.30.6.21
|
||
docker exec -it martial-mysql mysql -uroot -pWtcSecure901faf1ac4d32e2bPwd martial_db
|
||
```
|
||
|
||
---
|
||
|
||
## 八、总结
|
||
|
||
### 环境对比表
|
||
|
||
| 组件 | 开发环境 | 生产环境 | 说明 |
|
||
|------|---------|----------|------|
|
||
| **后端 API** | http://localhost:8123 | https://martial-api.johnsion.club | Spring Boot 应用 |
|
||
| **API 文档** | http://localhost:8123/doc.html | https://martial-doc.johnsion.club | Knife4j 文档 |
|
||
| **Druid 监控** | http://localhost:8123/druid | https://martial-api.johnsion.club/druid | 数据库监控 |
|
||
| **前端系统** | http://localhost:5173 | https://martial.johnsion.club | Vue 3 管理系统 |
|
||
| **CI/CD 平台** | - | https://martial-ci.johnsion.club | Drone CI/CD |
|
||
| **MySQL** | 127.0.0.1:33066 | 容器内部 | 数据库 |
|
||
| **Redis** | 127.0.0.1:63379 | 容器内部 | 缓存 |
|
||
|
||
### 项目特点
|
||
|
||
**架构设计**:
|
||
- ✅ 前后端完全分离
|
||
- ✅ 后端提供 RESTful API
|
||
- ✅ 前端独立部署(可替换为任何技术栈)
|
||
- ✅ 单体应用,模块化设计
|
||
- ✅ 支持升级为微服务架构
|
||
|
||
**部署方式**:
|
||
- ✅ 生产环境自动化 CI/CD(Drone)
|
||
- ✅ Docker 容器化部署
|
||
- ✅ Caddy 自动 HTTPS
|
||
- ✅ 前后端独立扩展
|
||
|
||
**开发体验**:
|
||
- ✅ 本地开发无需依赖生产环境
|
||
- ✅ Vite 热更新,开发效率高
|
||
- ✅ Swagger 文档完整,接口调试方便
|
||
- ✅ 支持调试和日志查看
|
||
|
||
### 关键点
|
||
|
||
1. **前端系统已存在**:martial-web 项目(Vue 3),不是 Saber
|
||
2. **生产环境可用**:https://martial.johnsion.club 直接访问完整系统
|
||
3. **本地开发便捷**:后端 8123 端口,前端 5173 端口
|
||
4. **API 文档齐全**:Knife4j 提供完整的 API 测试界面
|
||
5. **自动化部署**:推送到 main 分支自动触发 CI/CD
|
||
|
||
---
|
||
|
||
**开发建议**:
|
||
1. 使用生产环境了解系统功能
|
||
2. 本地启动后端进行业务开发
|
||
3. 使用 Knife4j 文档测试接口
|
||
4. 前端对接本地或生产 API 均可
|
||
5. 开发完成后推送到 dev 分支,测试通过后合并到 main 触发自动部署
|