12 KiB
Backend 现状梳理
1. 文档目的
本文档用于帮助项目成员快速理解当前引入的后端子模块 backend/ 的整体技术现状、模块结构、与本项目业务设计的对应关系,以及当前可确认的边界与待进一步核实的事项。
2. 当前后端来源与状态
- 子模块路径:
backend/ - 仓库地址:
ssh://git@gitea.devops.1msoft.cn:12224/emsoft-IF/sw-system-cloud.git - 当前分支:
develop - 当前提交:
be71df0a1efc1d778fdfb337032993259943c1f7
说明:
- 当前已作为 Git submodule 正常加入本仓库。
- 该后端仓库存在一个上游遗留的嵌套 submodule 异常路径:
infra/converter/markdown-converter-service-standalone。 - 该异常目前不影响代码浏览和结构分析,但可能影响部分递归 submodule 命令。
3. 总体技术架构判断
根据 backend/pom.xml 与 backend/README.md,当前后端是一个基于 Spring Cloud Alibaba 的 Maven 多模块微服务系统,而非单体应用。
3.1 核心技术栈
- Java 17
- Spring Boot 3.4.5
- Spring Cloud Alibaba 2023.0.1
- Nacos(注册中心、配置中心)
- Spring Cloud Gateway
- MyBatis Plus
- Redis + Redisson
- Spring Security
- XXL-Job
- RocketMQ / Kafka / RabbitMQ(按模块选配)
- Flowable(工作流)
- PF4J(IoT 插件机制)
3.2 总体结构特征
该后端更像“微服务底座 + 通用平台模块 + 行业业务模块”的组合:
- 底座层负责依赖、框架、网关、启动装配。
- 通用模块负责系统管理、基础设施、流程、支付、报表、AI、IoT 等能力。
- 行业业务模块负责水务营收与银行代收等业务。
4. 顶层模块结构
根据 backend/pom.xml,当前顶层聚合模块包括:
sw-dependenciessw-gatewaysw-frameworksw-serversw-module-systemsw-module-infrasw-module-bpmsw-module-paysw-module-reportsw-module-aisw-module-iotsw-businesssw-business-bank
5. 顶层模块职责简述
5.1 基础底座层
sw-dependencies
- Maven 依赖版本管理中心(BOM)。
- 统一管理各模块依赖版本。
sw-framework
- 框架公共能力层。
- 预计封装 Web、安全、租户、数据权限、MyBatis、Redis、RPC 等基础能力。
sw-gateway
- 微服务统一入口。
- 负责网关路由、鉴权、过滤等能力。
sw-server
- 服务启动与装配层。
- README 中定义为“管理后台 + 用户 APP 的服务端”。
5.2 平台通用能力层
sw-module-system
- 系统功能模块。
- 包括用户、角色、菜单、部门、岗位、租户、字典、通知、日志等。
sw-module-infra
- 基础设施模块。
- 包括代码生成、接口文档、数据库文档、配置管理、文件服务、定时任务、API 日志、监控等。
sw-module-bpm
- 工作流模块。
- 基于 Flowable,承接审批流、表单、任务、抄送、驳回、会签等能力。
sw-module-pay
- 支付模块。
- 包括支付订单、退款订单、回调通知、支付接入等能力。
sw-module-report
- 报表与大屏模块。
- 包括报表设计器、大屏设计器。
sw-module-ai
- AI 模块。
- 当前与营收主流程关联度相对较低。
sw-module-iot
- 物联网模块。
- 与远传水表、厂家协议、设备接入、集抄平台等方向高度相关。
5.3 行业业务层
sw-business
- 水务业务模块。
- 是当前最值得重点分析的行业核心模块。
sw-business-bank
- 多银行代收模块。
- 与银行代扣、托收、送盘、银行报文处理相关。
6. 重点模块下钻结果
6.1 sw-business 结构
sw-business 包含两个子模块:
sw-business-apisw-business-server
sw-business-api
定位:业务 API / DTO / Feign 契约层。
主要特征:
- 依赖
sw-common - 支持参数校验
- 支持 OpenFeign
- 提供 OpenAPI 文档模型支持
判断:
- 主要承载对外接口定义、DTO/VO、服务间调用契约。
- 不直接作为运行服务。
sw-business-server
定位:水务业务服务实现层。
主要依赖:
sw-module-system-apisw-module-infra-apisw-business-apisw-business-bank-api(provided)sw-module-bpm-api
技术能力:
- Web
- Security
- MyBatis
- Redis
- RPC
- Nacos 注册/配置
- Job
- MQ
- Monitor
判断:
- 这是当前水务营收业务的核心服务实现模块。
- 大概率承载客户、表务、抄表、账务、工单等业务逻辑。
- 与银行代收和流程模块均存在集成关系。
6.2 sw-business-bank 结构
sw-business-bank 包含两个子模块:
sw-business-bank-apisw-business-bank-server
sw-business-bank-api
定位:银行业务 API 契约层。
主要特征:
- 依赖
sw-common - 支持参数校验
- 支持 OpenFeign
- 支持 OpenAPI 文档模型
判断:
- 主要用于银行代收、托收等服务间调用契约。
sw-business-bank-server
定位:多银行代收服务实现层。
主要依赖:
sw-module-system-apisw-module-infra-apisw-business-bank-apisw-business-api
技术能力:
- Web
- Security
- MyBatis
- Redis
- RPC
- Nacos
- Job
- MQ
- Monitor
- 国密算法支持(SM2/SM4)
判断:
- 这是一个独立的银行业务服务。
- 很可能承载托收、代扣、送盘、回盘、银行接口报文处理。
- 与
sw-business存在双向协同关系。
6.3 sw-module-iot 结构
sw-module-iot 包含三个子模块:
sw-module-iot-apisw-module-iot-bizsw-module-iot-plugins
sw-module-iot-api
定位:IoT API 与插件扩展接口层。
主要特征:
- 依赖
sw-common - 引入
pf4j-spring - 提供 IoT 插件机制的接口抽象
判断:
- 不只是普通 API 层,还承担插件扩展点定义职责。
sw-module-iot-biz
定位:IoT 业务主服务层。
POM 描述明确提到:
- 产品管理
- 设备管理
- 协议管理
主要技术能力:
- Web / Security
- MyBatis / Redis
- RPC
- Nacos
- Job
- MQ
- Quartz
- PF4J
- Groovy / GraalVM JS ScriptEngine
- 可选 RocketMQ / Kafka / RabbitMQ
- 额外依赖
taos-jdbcdriver
判断:
- 这是一个较重的 IoT 业务中台模块。
- 不只是设备台账,还可能包含协议接入、规则执行、消息桥接、动态脚本处理等能力。
- 对“远传水表、集抄平台、厂家协议、水表数据交互”场景具有直接参考价值。
sw-module-iot-plugins
定位:IoT 插件聚合层。
包含四个插件子模块:
sw-module-iot-plugin-commonsw-module-iot-plugin-httpsw-module-iot-plugin-mqttsw-module-iot-plugin-emqx
sw-module-iot-plugin-common
- 插件公共能力层。
- 提供 Web、Vertx、校验等共通依赖。
sw-module-iot-plugin-http
- HTTP 协议插件。
- 插件主类:
IotHttpVertxPlugin - 支持插件包与 standalone 打包。
sw-module-iot-plugin-mqtt
- MQTT 协议插件。
- 插件主类:
MqttPlugin - 依赖
vertx-mqtt。
sw-module-iot-plugin-emqx
- EMQX 专用插件。
- 插件主类:
IotEmqxPlugin - 说明系统不仅支持通用 MQTT,也对 EMQX 做了专门适配。
判断:
sw-module-iot采用了明显的可插拔协议接入架构。- 适合对接多厂家、多协议、多接入方式的物联网设备场景。
7. 与当前福建水务营收文档的映射关系
结合本项目已有文档结构,可以先建立如下对应关系:
7.1 营收主业务
优先对应模块:
sw-business-serversw-business-api
可能映射章节:
- 客户资料管理
- 抄表开账
- 营业收费
- 账务处理
- 工单办理
- 部分表务相关业务
7.2 银行代收与托收业务
优先对应模块:
sw-business-bank-serversw-business-bank-api
可能映射章节:
- 代收业务
- 银行接口
- 托收代扣
- 送盘/回盘
7.3 远传表 / 物联网 / 集抄接入
优先对应模块:
sw-module-iot-bizsw-module-iot-apisw-module-iot-plugin-httpsw-module-iot-plugin-mqttsw-module-iot-plugin-emqx
可能映射章节:
- 物联网平台
- 集抄平台
- 厂家设备信息管理
- 水表数据交互接口
- 水表用户同步接口
7.4 支付与退款
优先对应模块:
sw-module-pay
可能映射章节:
- 在线缴费
- 柜面扫码支付
- 支付订单与退款
7.5 流程审批与工单流转
优先对应模块:
sw-module-bpm
可能映射章节:
- 业务工单
- 报装流程
- 审批流相关能力
8. 当前能确认的现状结论
8.1 已确认
- 当前后端是微服务多模块架构,不是单体应用。
- 已具备较完整的通用平台底座能力:系统、基础设施、流程、支付、报表。
- 已存在明确的水务业务模块:
sw-business。 - 已存在明确的银行业务模块:
sw-business-bank。 - 已存在明确的 IoT 模块,并且采用插件化协议接入架构。
- IoT 模块对远传水表、集抄平台、厂家协议接入场景具备较高相关性。
8.2 尚未完全确认
以下内容目前还只是根据模块命名、POM 依赖与 README 做出的结构判断,尚未下钻到具体 Java 包、Controller、Service、Mapper 层:
-
sw-business-server内是否已经完整实现:- 客户资料
- 抄表开账
- 营业收费
- 账务处理
- 发票管理
- 催缴管理
- 工单办理
-
sw-business-bank-server内是否已经完整实现:- 银行托收
- 银行代扣
- 送盘/回盘
- 对账
- 国密报文交互
-
sw-module-iot-biz内是否已经完整实现:- 产品管理
- 设备台账
- 协议管理
- 厂家适配
- 数据桥接与规则执行
9. 当前后端分析的限制
- 当前仅完成了模块级与 POM 级分析,尚未做代码包级逐层拆解。
- 当前未完成运行验证,尚未确认各服务启动配置与部署方式。
- 当前未完成数据库脚本与后端实体/Mapper 的逐项映射。
- 当前未完成接口清单与文档章节的逐条绑定。
10. 建议的下一步分析顺序
为了更高效支撑本项目设计文档,建议后续按以下顺序继续下钻:
第一阶段:业务代码结构分析
优先分析:
sw-business-serversw-business-bank-serversw-module-iot-biz
目标:
- 找到 Controller / Service / Mapper / DO / VO 的实际结构
- 确认是否已有“客户、抄表、账单、收费、工单、托收、设备”对应实现
第二阶段:数据库与代码映射
目标:
- 对照
sql/lhc_数据库设计.md - 对照
docs/design/04_Appendix/Archive/05_Data_Dictionary/营收数据字典.md - 找出已实现表、未实现表、后端已有但文档未覆盖的对象
第三阶段:接口与文档映射
目标:
- 对照接口设计文档
- 对照物联网接口规范附件
- 确认后端已有接口、待补接口、历史遗留接口
11. 当前建议的阅读重点
如果只想快速建立对后端系统的认识,建议优先关注:
backend/pom.xmlbackend/sw-business/sw-business-serverbackend/sw-business-bank/sw-business-bank-serverbackend/sw-module-iot/sw-module-iot-bizbackend/sw-module-iot/sw-module-iot-plugins
12. 一句话结论
当前 backend 后端系统的现状可以概括为:
它已经具备较完整的微服务底座与通用平台能力,并且明确拆分出了水务业务、银行代收、IoT 设备接入三条与本项目高度相关的业务线;但目前我们对其理解仍停留在模块结构层,尚需进一步下钻代码包结构、数据库映射和接口实现,才能形成可直接落地到本项目设计文档的精确结论。
13. 相关延伸文档
- 真实表清单与数据字典映射:
docs/guides/BACKEND_TABLE_MAPPING.md