# 予书管理系统 - 后端

基于 Spring Boot 的企业级管理系统后端

---

## 简介

予书管理系统后端是一个基于 Spring Boot 3.x 的企业级应用系统，提供完整的用户权限管理、系统监控等功能。

---

## 核心特性

- 完整的权限管理：RBAC权限模型，支持角色、菜单、按钮级权限控制
- 系统监控：在线用户、定时任务、数据监控、服务监控、缓存监控
- 开发工具：代码生成器、表单构建器、接口文档
- 操作日志：详细的操作日志和登录日志记录
- 定时任务：基于 Quartz 的分布式定时任务调度

---

## 技术栈

### 核心框架

| 技术 | 说明 | 版本 |
|------|------|------|
| Spring Boot | 基础框架 | 3.5.4 |
| Spring Security | 安全框架 | - |
| MyBatis | ORM框架 | - |
| Druid | 数据库连接池 | - |

### 数据存储

| 技术 | 说明 | 版本 |
|------|------|------|
| MySQL | 主数据库 | 5.7+ |
| Redis | 缓存数据库 | 3.0+ |

### 工具库

| 技术 | 说明 |
|------|------|
| JWT | Token生成与验证 |
| FastJson | JSON处理 |
| POI | Excel导入导出 |
| Velocity | 代码生成模板引擎 |
| Quartz | 定时任务调度 |

---

## 项目结构

```
yushu-backend/
├── sql/                          # 数据库脚本
│   ├── ys_20250522.sql          # 系统核心数据库（必须）
│   ├── quartz.sql               # 定时任务模块（必须）
│   ├── ai.sql                   # AI模块（可选）
│   ├── mail.sql                 # 邮箱模块（可选）
│   ├── file.sql                 # 文件模块（可选）
│   ├── message.sql              # 消息模块（可选）
│   └── error-log.sql            # 错误日志模块（可选）
├── yushu-admin/                 # 主应用模块
│   └── src/main/java/com/yushu/
│       ├── YuShuApplication.java      # 启动类
│       └── web/controller/            # 控制器层
├── yushu-common/                # 通用模块
│   └── src/main/java/com/yushu/common/
│       ├── annotation/          # 自定义注解
│       ├── constant/            # 常量定义
│       ├── core/                # 核心组件
│       ├── enums/               # 枚举类
│       ├── exception/           # 异常处理
│       └── utils/               # 工具类
├── yushu-framework/             # 框架核心
│   └── src/main/java/com/yushu/framework/
│       ├── aspectj/             # AOP切面
│       ├── config/              # 配置类
│       ├── datasource/          # 数据源配置
│       ├── interceptor/         # 拦截器
│       ├── security/            # 安全配置
│       └── web/                 # Web配置
├── yushu-generator/             # 代码生成器
├── yushu-quartz/                # 定时任务模块
└── yushu-system/                # 系统模块
    └── src/main/java/com/yushu/system/
        ├── domain/              # 实体类
        ├── mapper/              # Mapper接口
        ├── service/             # 服务层
        └── controller/          # 控制器（由admin模块调用）
```

---

## 环境要求

- JDK 17+
- Maven 3.6+
- MySQL 5.7+
- Redis 3.0+

---

## 安装部署

### 1. 克隆项目
```bash
git clone https://github.com/your-username/yushu-backend.git
cd yushu-backend
```

### 2. 创建数据库
```sql
CREATE DATABASE yushu DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
```

### 3. 执行SQL脚本

**必须导入**：
```bash
# 系统核心数据库
mysql -u root -p yushu < sql/ys_20250522.sql

# 定时任务模块
mysql -u root -p yushu < sql/quartz.sql
```

**可选模块**：
```bash
# AI模块 - 集成AI聊天功能
mysql -u root -p yushu < sql/ai.sql

# 邮箱模块 - 系统邮件发送
mysql -u root -p yushu < sql/mail.sql

# 文件模块 - 文件管理功能
mysql -u root -p yushu < sql/file.sql

# 消息模块 - 站内消息功能
mysql -u root -p yushu < sql/message.sql

# 错误日志模块 - 前端错误日志收集
mysql -u root -p yushu < sql/error-log.sql
```

### 4. 修改配置
编辑 `yushu-admin/src/main/resources/application-druid.yml`：
```yaml
spring:
    datasource:
        druid:
            master:
                url: jdbc:mysql://localhost:3306/yushu?useUnicode=true&characterEncoding=utf8&...
                username: root
                password: your_password
```

编辑 `yushu-admin/src/main/resources/application.yml` 配置Redis：
```yaml
redis:
    host: localhost
    port: 6379
    password: 
```

### 5. 编译打包
```bash
mvn clean package
```

### 6. 运行项目
```bash
cd yushu-admin/target
java -jar yushu-admin.jar
```

或者在IDE中直接运行 `YuShuApplication.java`

### 7. 访问系统
- 后端接口：http://localhost:8080
- 接口文档：http://localhost:8080/swagger-ui.html

### 默认账号
- 用户名：`admin`
- 密码：`admin123`

---

## 系统监控

### 在线用户监控
- 实时查看在线用户列表
- 支持强制踢出用户
- 查看用户登录信息

### 定时任务管理
- 可视化任务配置
- 支持Cron表达式
- 任务执行日志

### 数据监控
- Druid数据源监控
- SQL性能分析
- 数据库连接池状态

### 服务监控
- CPU使用率
- 内存使用情况
- JVM信息
- 磁盘状态

### 缓存监控
- Redis连接信息
- 缓存命中率
- 键值管理

---

## 开发工具

### 代码生成器
1. 配置数据源
2. 选择要生成的表
3. 自动生成：
   - Entity实体类
   - Mapper接口和XML
   - Service层
   - Controller层
   - 前端页面

### 表单构建器
- 可视化表单设计
- 拖拽式组件配置
- 生成Vue表单代码

---

## 接口文档

访问 `http://localhost:8080/swagger-ui.html` 查看完整的API文档。

### 主要接口模块
- `/system/user` - 用户管理
- `/system/role` - 角色管理
- `/system/menu` - 菜单管理
- `/system/dept` - 部门管理
- `/system/ai/**` - AI聊天相关
- `/monitor/**` - 系统监控相关

---

## 配置说明

### 核心配置文件
- `application.yml` - 主配置文件
- `application-druid.yml` - 数据源配置
- `logback.xml` - 日志配置

### 重要配置项

#### JWT配置
```yaml
token:
    header: Authorization
    secret: your-secret-key
    expireTime: 30  # 分钟
```

#### 文件上传
```yaml
yushu:
    profile: D:/yushu/uploadPath  # 上传路径
    upload:
        maxSize: 50  # MB
```

#### AI配置
在数据库 `ai_model_config` 表中配置各AI厂商的API密钥。

---

## 安全说明

### 已实现的安全措施

- JWT Token认证
- 密码加密存储（BCrypt）
- SQL注入防护
- XSS攻击防护
- CSRF防护
- 接口防重放
- 敏感操作日志记录

### 建议
- 生产环境务必修改默认密码
- 定期更换JWT密钥
- 配置HTTPS
- 限制IP访问（如有需要）

---

## 生产部署

### Jar包部署
```bash
# 打包
mvn clean package -Dmaven.test.skip=true

# 运行
nohup java -jar yushu-admin.jar > yushu.log 2>&1 &
```

### Docker部署
```dockerfile
FROM openjdk:8-jdk-alpine
VOLUME /tmp
COPY yushu-admin.jar app.jar
ENTRYPOINT ["java","-jar","/app.jar"]
```

```bash
docker build -t yushu-backend .
docker run -d -p 8080:8080 --name yushu yushu-backend
```

---

## 贡献指南

欢迎提交Issue和Pull Request！

### 开发规范
- 代码风格遵循阿里巴巴Java开发手册
- 提交信息格式：`[模块] 功能描述`
- 新功能需要添加单元测试

---

## License

本项目采用 MIT 许可证。

---

## 联系方式

- 项目主页：https://github.com/your-username/yushu-backend
- 问题反馈：https://github.com/your-username/yushu-backend/issues
- 邮箱：your-email@example.com

---

## 致谢

感谢以下开源项目：
- [RuoYi](https://gitee.com/y_project/RuoYi) - 基础框架
- [Spring Boot](https://spring.io/projects/spring-boot)
- [MyBatis](https://mybatis.org/mybatis-3/)
- 以及所有贡献者

