Files
martial-master/docs/前后端架构说明.md
n72595987@gmail.com 4d13f9e38c
Some checks failed
continuous-integration/drone/push Build is failing
docs: 完善文档内容,更新地址和路径信息
更新内容:

前后端架构说明.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>
2025-11-30 12:59:18 +08:00

601 lines
19 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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本项目自主开发的管理系统
- SaberBladeX 官方提供的商业版管理系统
- 两者都可以对接 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
后端 APIhttps://martial-api.johnsion.club
API 文档https://martial-doc.johnsion.club
CI/CD 平台https://martial-ci.johnsion.club
```
**默认账号**
```
用户名admin
密码admin
租户ID000000
```
**优点**
- ✅ 开箱即用,无需本地部署
- ✅ 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/CDDrone
- ✅ 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 触发自动部署