# 后端 - 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 中被注释掉