# 整体架构 ## 项目定位 FastBee 是基于若依 v3.8.5 改造的物联网平台,覆盖设备接入、产品/物模型管理、数据采集、规则引擎、通知、视频监控、SCADA/GoView 可视化和移动端。 ## 技术栈 | 层 | 技术 | | --- | --- | | 后端框架 | Spring Boot 2.5.14, Spring Security, JWT | | ORM/数据访问 | MyBatis Plus, MyBatis XML Mapper, PageHelper | | 数据源 | MySQL 主库,动态数据源,可选 TDengine | | 缓存/锁 | Redis, Redisson, Lock4j | | 协议接入 | Netty MQTT/TCP/UDP/HTTP/CoAP, SIP GB28181 | | 规则引擎 | LiteFlow, Groovy 脚本 | | 消息通道 | 本地 `LinkedBlockingQueue` 队列族,MQTT/EMQX 或内嵌 Broker | | 前端 | Vue 2 + Element UI, Vue 3 + Vite + Naive UI, UniApp + uView | ## 后端模块分层 ```text fastbee-admin -> fastbee-framework -> fastbee-open-api -> fastbee-server/boot-strap -> fastbee-service/* -> fastbee-iot-data -> fastbee-mq -> fastbee-notify/* -> fastbee-plugs/* -> fastbee-common ``` | 模块 | 职责 | | --- | --- | | `fastbee-admin` | Spring Boot 主入口,端口默认 8080,聚合 Web/API/协议/插件依赖。 | | `fastbee-framework` | 若依框架层:安全、鉴权、Web 配置、数据源、拦截器、通用基础设施。 | | `fastbee-common` | 公共 DTO、枚举、工具、注解、Redis Key、MQ 消息模型、协议通用模型。 | | `fastbee-open-api` | 对外 REST Controller,覆盖设备、产品、物模型、规则、视频、通知等业务 API。 | | `fastbee-service/fastbee-system-service` | 系统管理服务:用户、角色、菜单、部门、字典、参数、日志。 | | `fastbee-service/fastbee-iot-service` | IoT 核心业务:产品、设备、物模型、场景、规则、告警、Modbus、网关、固件。 | | `fastbee-server` | Netty/SIP 协议服务集合:基础 Server、MQTT Broker、TCP/UDP/HTTP/CoAP/SIP、启动装配。 | | `fastbee-protocol` | 协议抽象和具体编解码实现,如 Modbus、JSON、自定义采集协议、OTA 包。 | | `fastbee-iot-data` | 设备数据处理层:上报处理、下发处理、规则触发、TDengine 日志、OTA、设备消息发布。 | | `fastbee-mq` | 设备消息通道封装,当前核心是 JVM 内本地阻塞队列和消息生产入口。 | | `fastbee-notify` | 通知配置、模板、日志和发送通道实现,包含邮件、短信、微信、钉钉等。 | | `fastbee-plugs` | 插件能力:Quartz、代码生成、OSS、Forest HTTP、OAuth、MQTT Client、LiteFlow 扩展、支付。 | | `fastbee-record` | 独立视频录像/回调服务,入口 `ZlmRecordApplication`,与 ZLMediaKit 配合使用。 | ## 启动入口与条件装配 - 主应用入口:`fastbee-admin/src/main/java/com/fastbee/FastBeeApplication.java`。 - `@SpringBootApplication` 扫描 `com.fastbee` 包下所有模块 Bean。 - `@ForestScan(basePackages = "com.fastbee")` 扫描 Forest HTTP 客户端。 - 协议服务由 `fastbee-server/boot-strap` 按配置条件创建 Netty `Server` Bean: - `server.broker.enabled=true`:启动内嵌 MQTT Broker 和 WebSocket MQTT。 - `server.tcp.enabled=true`:启动 TCP 服务,默认 8888。 - `server.http.enabled=true`:启动 HTTP 设备接入服务,默认 8081。 - `server.coap.enabled=true`:启动 CoAP 服务,默认 5683。 - `sip.enabled=true`:启动 GB28181 视频接入。 ## 前端组成 | 应用 | 目录 | 技术 | 角色 | | --- | --- | --- | --- | | 管理后台 | `yack-web` | Vue 2, Element UI, Vuex | 运维/管理端,覆盖系统、设备、产品、规则、告警等后台功能。 | | 低代码可视化 | `yack-view` | Vue 3, TypeScript, Vite, Naive UI, Pinia | GoView 风格大屏和项目可视化编辑器。 | | 移动端 | `yack-app` | UniApp, uView 2.0, MQTT.js | App/小程序/H5 设备查看、控制和移动操作。 | ## 配置中心 | 文件 | 重点 | | --- | --- | | `fastbee-admin/src/main/resources/application.yml` | 端口、协议服务开关、JWT、MyBatis Plus、Redisson、Forest、LiteFlow SQL 规则源。 | | `fastbee-admin/src/main/resources/application-dev.yml` | 本地 MySQL、Redis、MQTT、EMQX、SIP、Swagger 配置。 | | `fastbee-admin/src/main/resources/application-prod.yml` | 生产环境覆盖配置。 | | `fastbee-admin/src/main/resources/application-sql.yml` | SQL 相关配置。 | ## 数据与依赖边界 ```text Controller(open-api/admin/plugs) -> Service(fastbee-iot-service/system-service/notify/sip/oss) -> Mapper XML -> MySQL / TDengine Protocol Server(Netty/SIP/MQTT) -> fastbee-mq queue -> fastbee-iot-data handler -> IoT Service + Rule Engine + Log Service -> MQTT/WebSocket/DB/Notify ``` `fastbee-common` 不应反向依赖业务模块;`fastbee-framework` 提供框架装配;业务 Controller 优先调用 Service 接口,不直接写复杂 SQL。