
<div align="center">
   <h2>server-java</h2>
   <img alt="Java" src="https://img.shields.io/badge/Java-17-brightgreen.svg"/>
   <img alt="SpringBoot" src="https://img.shields.io/badge/SpringBoot-3.3.2-green.svg"/>
   <img alt="license" src="https://img.shields.io/badge/license-Apache%20License%202.0-blue.svg"/>
</div>

基于 JDK 17、Spring Boot 3.3.2、Spring Security 6、JWT、Redis、MyBatis-Plus、Knife4j 构建的前后端分离单体业务系统。

## 项目概况

- **开发框架**：Spring Boot 3.3.2 + Spring Security 6 + MyBatis-Plus 3.5.7
- **安全认证**：Spring Security + JWT 无状态认证，部分接口白名单免登录
- **权限管理**：基于 RBAC 模型，细粒度控制到接口方法和按钮级别
- **功能模块**：用户管理、角色管理、菜单管理、部门管理、字典管理、代码生成、文件管理、邮件、短信、支付（支付宝/微信）等
- **接口文档**：Knife4j 自动生成，支持在线调试

## 项目目录

```
src/main/java/com/ichangzuo/
  iczApplication.java          # 启动类
  common/                     # 公共模块：注解、常量、枚举、异常、工具类
  config/                     # 自动装配配置（CORS、Redis、Security、Swagger 等）
  core/                       # 核心功能：切面（日志、防重提交）、过滤器、Security
  module/                     # 业务模块
    auth/                     # 认证模块
    codegen/                  # 代码生成器
    file/                     # 文件模块
    mail/                     # 邮件模块
    sms/                      # 短信模块
    websocket/                # WebSocket 模块
  system/                     # 系统管理模块：用户、角色、菜单、部门、字典等
    controller/
    converter/                # MapStruct 转换器
    event/                    # 事件处理
    handler/
    listener/
    model/                    # bo, dto, entity, form, query, vo
    mapper/
    service/
```

## 技术选型

| 技术 | 版本 | 说明 |
|------|------|------|
| JDK | 17 | |
| Spring Boot | 3.3.2 | 开发框架 |
| Spring Security | 6 | 安全认证 |
| MyBatis-Plus | 3.5.7 | ORM 框架 |
| Knife4j | 4.5.0 | 接口文档 |
| MapStruct | 1.5.5.Final | 对象映射 |
| Druid | 1.2.23 | 数据库连接池 |
| XXL-JOB | 2.4.2 | 定时任务 |
| Redisson | 3.30.0 | 分布式锁 |

## 环境依赖

- **MySQL**：数据库名 `music`，开发配置在 `application-dev.yml`
- **Redis**：端口 16378
- **运行时 Profile**：
  - `dev`（默认）：本地开发
  - `test`：测试环境
  - `prod`：生产环境

## 快速开始

### 1. 配置数据库

修改 `src/main/resources/application-dev.yml` 中的 MySQL、Redis 连接配置。

### 2. 启动项目

```bash
# 开发模式启动（使用 dev profile）
mvn spring-boot:run -P dev
```

### 3. 验证启动

访问接口文档地址 [http://localhost:8989/doc.html](http://localhost:8989/doc.html) 验证项目启动是否成功。

## 常用命令

```bash
# 开发模式启动
mvn spring-boot:run -P dev

# 打包（默认 dev）
mvn clean package

# 测试环境打包
mvn clean package -P test

# 生产环境打包
mvn clean package -P prod

# 运行测试
mvn test

# 跳过测试打包
mvn clean package -DskipTests
```

## 接口文档
- `knife4j` 接口文档：[http://localhost:8989/doc.html](http://localhost:8989/doc.html)
- `swagger` 接口文档：[http://localhost:8989/swagger-ui/index.html](http://localhost:8989/swagger-ui/index.html)
