technological-brain-server/README.md

135 lines
4.9 KiB
Markdown
Raw Permalink 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.

## 科技大脑展示平台technological-brain
面向高校/企业的人才与科研信息管理与展示后端服务,基于 Spring Boot 构建,集成权限认证、参数配置、科研与成果管理等功能模块,并提供在线 API 文档。
### 技术栈
- **后端框架**: Spring Boot 2.5.14, Spring MVC, Spring Security (JWT)
- **持久层**: MyBatis-Plus, MyBatis XML 映射
- **数据库/连接池**: MySQL 8.x, Druid
- **缓存**: Redis (Lettuce)
- **对象映射**: MapStruct
- **工具库**: Hutool, Guava, Apache Commons
- **文档**: Springfox Swagger2 2.9.2, Knife4j
- **云存储**: 阿里云 OSS SDK
### 目录结构(关键路径)
```text
src/
main/
java/com/CUST/brain/
BrainApplication.java # 应用入口
common/ # 通用配置、拦截器、异常、工具
config/ # Security / Swagger / Redis 等配置
security/ # JWT 过滤器、异常处理器
dto/ enums/ utils/ ...
dao/
domain/ # 实体对象
mapper/ # MyBatis-Plus Mapper 接口
service/ # 业务接口与实现
web/controller/ # REST 控制器
resources/
application.yml # 应用配置
mapper/*.xml # MyBatis 映射 XML
db/schema.sql # 库表结构初始化
db/data.sql # 基础数据(菜单/用户/角色/参数等)
```
### 功能模块
- **系统管理**: 用户、角色、权限、参数(类型/值)
- **人才管理**: 人才基本信息、工作单位(高校/企业)、履历、工作领域
- **科研管理**: 科研项目、立项项目、科技报告
- **成果管理**: 论文专著、专利、学术奖励、荣誉称号
以上模块的导航/菜单初始化见 `src/main/resources/db/data.sql`
### 环境要求
- JDK 1.8
- Maven 3.6+
- MySQL 8.x
- Redis 5+
### 快速开始
1) 克隆并进入项目目录
```bash
git clone <your-repo-url>
cd technological_brain
```
2) 配置数据库与中间件
- 新建数据库 `technological_brain`(或使用自定义库名)
- 启动 Redis 服务
- 根据实际环境修改 `src/main/resources/application.yml` 中的以下配置项(建议改为环境变量或外部化配置):
- spring.datasource.url / username / password
- spring.redis.host / port / password
- jwt.secret / expiration
- oss.endpoint / access-key-id / access-key-secret / bucket-name / domain
3) 初始化数据库
```sql
-- 执行库表结构
src/main/resources/db/schema.sql
-- 初始化菜单/用户/角色/参数等数据
src/main/resources/db/data.sql
```
4) 启动服务
```bash
mvn clean package -DskipTests
java -jar target/brain-1.0.0.jar
```
默认服务端口与上下文路径见 `application.yml`:
- 端口: 8090
- 上下文: /brain
因此应用根地址为: `http://localhost:8090/brain`
### API 文档与调试
- 文档入口: `http://localhost:8090/brain/doc.html`
- Swagger/Knife4j 可通过 `swagger.enable``knife4j.enable` 开关控制
- 文档扫描基础包: `com.CUST.brain.web.controller`
### 认证与授权
- 统一认证接口(放行): `POST /api/system/auth/login`
- 其他接口默认需要认证,携带 JWT:
- Header: `Authorization: Bearer <token>`
- 安全配置参考 `common/config/SecurityConfig.java`
### 配置说明(节选)
`src/main/resources/application.yml` 包含以下关键配置:
- **server**: `port`, `servlet.context-path`
- **spring.datasource**: Druid 数据源与连接池参数
- **spring.redis**: Redis 连接与池参数
- **mybatis-plus**: `mapper-locations`, `type-aliases-package`, 驼峰映射、逻辑删除
- **logging**: 各包日志级别
- **swagger/knife4j**: 文档开关与显示项
- **jwt**: `secret`, `expiration`, `tokenHeader`, `tokenHead`
- **oss**: 阿里云 OSS 访问配置(请勿在仓库中明文提交敏感信息)
> 安全提示强烈建议将数据库、Redis、JWT、OSS 等敏感配置改为环境变量或外部化配置文件,避免明文泄露。
### 构建与部署
- 构建命令:`mvn clean package -DskipTests`
- 运行命令:`java -jar target/brain-1.0.0.jar`
- 常用 JVM/运行参数:
```bash
java -Xms512m -Xmx1024m \
-Dspring.profiles.active=prod \
-Dserver.port=8090 \
-jar target/brain-1.0.0.jar
```
### 常见问题
- 文档页无法访问:确认 `swagger.enable=true`、`knife4j.enable=true`,并使用带有上下文路径的地址 `/brain/doc.html`
- 登录失败检查初始化数据是否执行、用户密码是否匹配、JWT `secret` 是否与生成 token 的配置一致。
- 数据源/Redis 连接失败:核对主机、端口、用户名密码与防火墙/容器网络。
### 版权与声明
本项目仅用于教学/演示目的,涉及的账号、密钥配置请在实际部署前更换为安全的私有配置。