# 武术赛事管理系统 - 后端 API

基于 BladeX 4.0.1 企业级框架构建的武术比赛管理系统后端服务。

## 🌐 在线访问

- **生产环境 API**: https://martial-api.johnsion.club
- **API 文档**: https://martial-doc.johnsion.club
- **前端系统**: https://martial.johnsion.club
- **CI/CD 管理**: https://martial-ci.johnsion.club

## 📦 技术栈

- **框架**: Spring Boot 3.2.4
- **语言**: Java 17
- **ORM**: MyBatis-Plus
- **数据库**: MySQL 8.0
- **缓存**: Redis 7
- **API 文档**: Knife4j (Swagger)
- **企业框架**: BladeX 4.0.1 RELEASE

## 📁 项目结构

```
martial-master/
├── src/main/java/org/springblade/
│   ├── Application.java           # 主启动类
│   ├── common/                    # 公共工具和配置
│   ├── modules/                   # 业务模块
│   │   ├── auth/                  # 认证授权
│   │   ├── system/                # 系统管理
│   │   ├── resource/              # 资源管理
│   │   ├── desk/                  # 工作台
│   │   ├── develop/               # 代码生成
│   │   └── martial/               # ⭐ 武术比赛业务（核心）
│   └── job/                       # 定时任务
├── src/main/resources/
│   ├── application.yml            # 主配置
│   ├── application-dev.yml        # 开发环境
│   ├── application-test.yml       # 测试环境
│   └── application-prod.yml       # 生产环境
├── database/                      # 数据库脚本
│   ├── bladex/                    # BladeX 框架表
│   ├── flowable/                  # 工作流表
│   ├── martial-db/                # 武术业务表
│   └── upgrade/                   # 升级脚本
├── docs/                          # 项目文档
│   ├── README.md                  # 文档索引
│   ├── 架构说明.md                 # 架构设计
│   ├── 前后端架构说明.md            # 前后端交互
│   ├── 开发指南.md                 # 开发规范
│   └── CI-CD部署总结.md            # 部署文档
├── scripts/                       # 运维脚本
│   ├── docker/                    # Docker 部署
│   └── fatjar/                    # JAR 启动脚本
├── .drone.yml                     # CI/CD 配置
├── Dockerfile                     # Docker 镜像构建
└── CLAUDE.md                      # 项目完整说明

```

## 🚀 快速开始

### 环境要求

- **JDK**: 17+
- **Maven**: 3.8+
- **MySQL**: 8.0+
- **Redis**: 6.0+

### 本地开发

```bash
# 1. 克隆项目
git clone https://git.waypeak.work/martial/martial-master.git
cd martial-master

# 2. 编译 BladeX 框架（首次必须）
cd /path/to/martial-tool
mvn clean install -DskipTests

# 3. 编译并运行
cd /path/to/martial-master
mvn clean package -DskipTests -Dmaven.test.skip=true
mvn spring-boot:run

# 4. 访问应用
# API: http://localhost:8123
# 文档: http://localhost:8123/doc.html
```

详细说明请参考：[CLAUDE.md](./CLAUDE.md)

## 🔄 自动化部署

### CI/CD 架构

本项目已配置 Drone CI/CD 实现代码推送后的全自动编译、部署流程。

```
开发者 Push 代码
    ↓
Gitea 仓库（git.waypeak.work）
    ↓ [Webhook 触发]
Drone CI Server（martial-ci.johnsion.club）
    ↓ [Runner 执行]
编译 BladeX 框架 → 编译后端项目 → 构建 Docker 镜像 → 部署容器 → 健康检查
    ↓
生产服务器部署完成（martial-api.johnsion.club）
```

### 部署流程

**日常开发（不触发部署）：**

```bash
# 1. 切换到开发分支
git checkout dev

# 2. 修改代码并提交
git add .
git commit -m "feat: 添加新功能"
git push origin dev

# ✅ 推送到 dev 分支不会触发自动部署
```

**发布到生产环境：**

```bash
# 1. 合并开发分支到 main
git checkout main
git merge dev

# 2. 推送到 main 分支（自动触发部署）
git push origin main

# 3. 查看部署进度
# 访问 Drone UI: https://martial-ci.johnsion.club
# 或等待约 5-6 分钟后直接访问生产环境
```

### 部署步骤（全自动）

1. **编译完整项目**（约4-5分钟）
   - 克隆 BladeX 框架代码（martial-tool）
   - 编译框架并安装到 Maven 本地仓库
   - 编译后端项目（martial-master）
   - 生成 blade-api.jar（约236MB）

2. **构建 Docker 镜像**（约1分钟）
   - 基于 eclipse-temurin:17-jre-alpine
   - 复制 JAR 文件和配置
   - 构建轻量化镜像

3. **部署到生产环境**（约30秒）
   - 停止旧容器
   - 启动新容器
   - 连接数据库和 Redis

4. **健康检查**（约45秒）
   - 等待 Spring Boot 应用完全启动
   - 检查健康端点: `/actuator/health`
   - 验证部署成功

**总耗时：** 约 6-7 分钟

### 访问地址

**部署完成后：**
- 后端 API: https://martial-api.johnsion.club
- API 文档: https://martial-doc.johnsion.club
- 健康检查: https://martial-api.johnsion.club/actuator/health
- 前端系统: https://martial.johnsion.club

**CI/CD 管理：**
- Drone UI: https://martial-ci.johnsion.club

### 部署配置

**生产服务器：**
- MySQL 8.0 (Docker 容器)
- Redis 7 (Docker 容器)
- Docker Network: martial_martial-network

**环境变量配置在 docker-compose.yml：**
```yaml
SPRING_PROFILE: prod
JAVA_OPTS: "-Xms512m -Xmx1024m"
```

### 故障排查

**查看部署日志：**
```bash
# Drone 构建日志
访问: https://martial-ci.johnsion.club

# 应用日志
ssh root@154.30.6.21
docker logs -f martial-backend
```

**检查服务状态：**
```bash
# 查看容器状态
docker ps | grep martial

# 查看健康状态
curl https://martial-api.johnsion.club/actuator/health

# 重启服务
cd /app/martial && docker-compose restart backend
```

详细部署文档请参考：[docs/CI-CD部署总结.md](./docs/CI-CD部署总结.md)

## 📚 开发文档

- **[CLAUDE.md](./CLAUDE.md)** - 项目完整说明、构建命令、技术栈
- **[docs/README.md](./docs/README.md)** - 文档索引和快速导航
- **[docs/架构说明.md](./docs/架构说明.md)** - BladeX 架构设计说明
- **[docs/前后端架构说明.md](./docs/前后端架构说明.md)** - 前后端分离架构
- **[docs/开发指南.md](./docs/开发指南.md)** - 开发规范和最佳实践
- **[docs/CI-CD部署总结.md](./docs/CI-CD部署总结.md)** - CI/CD 配置和运维

## 🗄️ 数据库

**连接信息（生产环境）：**
- Host: 容器内使用 `martial-mysql`
- Port: 3306
- Database: martial_db
- Username: root
- Password: WtcSecure901faf1ac4d32e2bPwd

**数据库脚本：**
- BladeX 框架表: `database/bladex/bladex.mysql.all.create.sql`
- Flowable 工作流表: `database/flowable/flowable.mysql.all.create.sql`
- 武术业务表: `database/martial-db/martial_db.sql`

## 🔧 配置说明

**配置文件优先级：**
```
application.yml (基础配置)
    ↓
application-{profile}.yml (环境配置)
    ↓
环境变量 (Docker 容器配置)
```

**环境切换：**
```bash
# 开发环境
mvn spring-boot:run -Dspring-boot.run.profiles=dev

# 测试环境
java -jar blade-api.jar --spring.profiles.active=test

# 生产环境（Docker）
SPRING_PROFILE=prod
```

## 🔐 安全配置

- **Token 认证**: 无状态 Token 机制
- **多租户隔离**: 基于 tenant_id 的数据隔离
- **权限控制**: RBAC 角色权限体系
- **SQL 监控**: Druid 数据库连接池监控
- **API 文档**: 生产环境可配置访问控制

## 📊 监控和管理

- **API 文档**: https://martial-doc.johnsion.club
- **Druid 监控**: https://martial-api.johnsion.club/druid
  - 用户名: blade
  - 密码: 1qaz@WSX
- **健康检查**: https://martial-api.johnsion.club/actuator/health
- **CI/CD 管理**: https://martial-ci.johnsion.club

## 🤝 贡献指南

1. Fork 本仓库
2. 创建特性分支 (`git checkout -b feature/AmazingFeature`)
3. 提交更改 (`git commit -m 'feat: Add some AmazingFeature'`)
4. 推送到分支 (`git push origin feature/AmazingFeature`)
5. 提交 Pull Request

**提交规范：**
```
feat: 新功能
fix: 修复 Bug
docs: 文档更新
style: 代码格式调整
refactor: 重构
perf: 性能优化
test: 测试相关
chore: 构建/工具配置
```

## 👥 开发团队

- **开发者**: JohnSion
- **AI 助手**: Claude Code
- **基础框架**: BladeX 4.0.1 (上海布雷德科技有限公司)

## 📄 许可协议

### BladeX 商业授权

本项目基于 **BladeX 商业框架** 构建，需遵守以下协议：

#### 版权声明
- BladeX 是一个商业化软件，系列产品知识产权归**上海布雷德科技有限公司**独立所有
- 您一旦开始复制、下载、安装或者使用本产品，即被视为完全理解并接受本协议的各项条款
- 更多详情请看：[BladeX商业授权许可协议](https://license.bladex.cn)

#### 授权范围
- **专业版**：只可用于**个人学习**及**个人私活**项目，不可用于公司或团队，不可泄露给任何第三方
- **企业版**：可用于**企业名下**的任何项目，企业版员工在**未购买**专业版授权前，只授权开发**所在授权企业名下**的项目，**不得将BladeX用于个人私活**
- **共同遵守**：若甲方需要您提供项目源码，则需代为甲方购买BladeX企业授权，甲方购买后续的所有项目都无需再次购买授权

#### 商用权益
- ✔️ 遵守[商业协议](https://license.bladex.cn)的前提下，将BladeX系列产品用于授权范围内的商用项目，并上线运营
- ✔️ 遵守[商业协议](https://license.bladex.cn)的前提下，不限制项目数，不限制服务器数
- ✔️ 遵守[商业协议](https://license.bladex.cn)的前提下，将自行编写的业务代码申请软件著作权

#### 何为侵权
- ❌ 不遵守商业协议，私自销售商业源码
- ❌ 以任何理由将BladeX源码用于申请软件著作权
- ❌ 将商业源码以任何途径任何理由泄露给未授权的单位或个人
- ❌ 开发完毕项目，没有为甲方购买企业授权，向甲方提供了BladeX代码
- ❌ 基于BladeX拓展研发与BladeX有竞争关系的衍生框架，并将其开源或销售

#### 侵权后果
- 情节较轻：第一次发现警告处理
- 情节较重：封禁账号，踢出商业群，并保留追究法律责任的权利
- 情节严重：与本地律师事务所合作，以公司名义起诉侵犯计算机软件著作权

#### 技术支持
- **答疑时间**: 工作日 9:00 ~ 17:00，周末、节假日休息
- **技术社区**: https://sns.bladex.cn
- **官方QQ**: 1272154962

---

**最后更新**: 2025-11-30
**项目版本**: 4.0.1 RELEASE
**部署环境**: Docker + Drone CI/CD
