济南畜牧局项目后端
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

95 lines
4.2 KiB

# 后端 - SpringBlade(Spring Boot + Cloud)
**技术栈:** Spring Boot 2.2.13, Spring Cloud Hoxton.SR11, MyBatis-Plus, Flowable 6.4.2, XXL-Job
**Java:** 1.8 | **构建:** Maven 3.8+ | **注册中心:** Nacos | **部署:** Docker(Harbor: 192.168.0.106)
## 目录结构
```
project_husbandry_back/
├── lab-auth/ # 认证授权(OAuth2/JWT)
├── lab-common/ # 公共模块(Redis 缓存、配置、常量、工具类、启动类)
├── lab-gateway/ # Spring Cloud Gateway(路由、过滤器)
├── lab-ops/ # 运维模块(11 个子模块)
│ ├── lab-admin/ # 管理后台
│ ├── lab-develop/ # 开发工具/代码生成器
│ ├── lab-log/ # 审计日志
│ ├── lab-mail/ # 邮件服务
│ ├── lab-office/ # Office 文档处理
│ ├── lab-report/ # 报表引擎
│ ├── lab-resource/ # 文件/OSS 资源管理
│ ├── lab-swagger/ # Swagger API 文档聚合
│ ├── lab-turbine/ # Hystrix 监控面板
│ ├── lab-xxljob/ # XXL-Job 分布式任务执行器
│ └── lab-xxljob-admin/ # XXL-Job 管理后台
├── lab-ops-api/ # 运维模块 Feign 客户端接口
├── lab-plugin/lab-workflow/ # Flowable 工作流引擎
├── lab-service/ # 业务服务模块
│ ├── lab-capital/ # 资金/财务
│ ├── lab-desk/ # 工作台/通知
│ ├── lab-file/ # 文件管理
│ ├── lab-iot/ # IoT 集成(已注释,未启用)
│ ├── lab-lims/ # LIMS 核心模块(最大模块,250+ Java 文件)
│ ├── lab-monitor/ # 监控
│ ├── lab-repair/ # 维修管理
│ ├── lab-system/ # 系统设置
│ └── lab-user/ # 用户管理
├── lab-service-api/ # 业务服务 Feign 客户端接口
└── script/ # Docker Compose、SQL 迁移脚本、fatjar 脚本
```
## 分层模式(每个模块)
`controller/``service/`(接口)→ `service/impl/``mapper/`(MyBatis-Plus)
额外包: `entity/`, `vo/`, `dto/`, `wrapper/`, `feign/`, `excel/`, `utils/`
## 快速定位
| 任务 | 路径模式 |
|------|---------|
| REST 控制器 | `lab-service/*/src/.../controller/*Controller.java` |
| 业务逻辑 | `lab-service/*/src/.../service/impl/*ServiceImpl.java` |
| 数据库 Mapper | `lab-service/*/src/.../mapper/*Mapper.java` |
| 实体类 | `lab-service/*/src/.../entity/*.java` / `lab-service-api/*/src/.../entity/*.java` |
| Feign 客户端 | `lab-service-api/*/src/.../feign/*Client.java` |
| 视图对象 | `lab-service-api/*/src/.../vo/*VO.java` |
| Excel 导出 | `lab-service/*/src/.../excel/*.java` |
## 约定规范
- **包结构**: `org.springblade.{模块}.{领域}` — 如 `org.springblade.lims.capital`
- **API 版本**: 通过 `bladex.project.version` 管理(当前 2.8.1.RELEASE)
- **配置**: 每个模块有自己的 `application-{profile}.yml`,通过 Nacos bootstrap.yml 加载
- **服务间调用**: 通过 `lab-*-api` 模块的 Feign 客户端实现
- **认证**: JWT 令牌,网关层校验,通过请求头传播
- **数据库**: MySQL + MyBatis-Plus(自动填充 createTime/updateTime)
- **日志**: SLF4J + Logback
- **Docker**: 每个可部署模块都有独立的 Dockerfile
## 反模式
- 生产模块无单元测试(仅有 TestController/TestValue 空壳)
- `lab-iot``lab-plugin` 在根 pom 中被注释掉
- `.idea/` 目录提交到了版本控制
## 常用命令
```bash
# 构建整个后端(跳过测试)
mvn clean install -Dmaven.test.skip=true
# 运行某个模块
cd lab-gateway && mvn spring-boot:run
# Docker 打包
mvn clean package -Dmaven.test.skip=true -Pprod
```
## 备注
- 最大模块: `lab-lims`(横跨 controller/service/mapper/entity,约 250+ Java 文件)
- `lab-common` 被所有模块共享 — 修改需谨慎
- Docker 镜像标签格式: `${docker.registry.url}/${docker.namespace}/${artifactId}:${version}`
- 镜像仓库: 192.168.0.106:2375(Harbor,命名空间: lab)
- `lab-iot``lab-plugin` 在根 pom.xml 中被注释掉