6.7 KiB
重复架构问题清单
扫描时间:2026-04-05 扫描范围:
/root/.openclaw/workspace/erp-java-backend/services/下 30 个微服务 最后更新:2026-04-05(修复已完成)
✅ 检查任务1:重复工具类
结论:未发现大规模重复工具类
- 未发现跨服务重复的
DateUtils、StringUtils、JsonUtils等通用工具类 - 各服务有少量服务级工具类(如
CronUtils、CsvUtils、ExcelUtils),属于正常范围,无需提取
✅ 检查任务2:重复DTO(已修复)
2.1 ApiResponse — 13个副本 ✅ 已修复
修复前:13个服务各维护一份 ApiResponse
修复后:
- 所有服务统一使用
com.erp.common.core.model.ApiResponse(来自common-core模块) - 所有本地
ApiResponse.java文件已删除 - 受影响服务:aftersale-service, ai-service, approval-flow-service, inventory-service, logistics-service, order-service, platform-sync-service, print-service, purchase-service, reconciliation-service, supplier-service, warehouse-service, waybill-service
2.2 PageResponse — 11个副本 ✅ 已修复
修复前:11个服务各维护一份 PageResponse
修复后:
- 所有服务统一使用
com.erp.common.core.model.PageResponse(来自common-core模块) - 所有本地
PageResponse.java文件已删除 - 受影响服务:同上(去掉了 platform-sync-service 和 waybill-service)
2.3 各服务特有DTO(业务相关,无需提取)
StockWarningDTO、SettlementDTO、PurchaseOrderDTO等属于业务DTO,不可跨服务提取
✅ 检查任务3:重复配置类(已修复)
3.1 OpenApiConfig — 27个副本 ✅ 已修复
修复前:27个服务各维护一份几乎完全相同的 OpenApiConfig
修复后:
- 提取到
common/common-config模块的com.erp.common.config.OpenApiConfig - 所有服务删除本地
OpenApiConfig.java - 通过
application.yml的erp.openapi.*配置项动态设置服务名称和URL - 所有服务 pom.xml 添加
common-config依赖
3.2 JacksonConfig — 3个副本 ✅ 已修复
修复前:finance-service, approval-flow-service, purchase-service 各有一份相同实现
修复后:
- 提取到
common/common-config模块的com.erp.common.config.JacksonConfig - 所有服务删除本地
JacksonConfig.java
3.3 RedisConfig — 3个副本 ✅ 已统一
修复前:
| 服务 | 实现 |
|---|---|
| logistics-service | Jackson2JsonRedisSerializer |
| scheduled-task-service | GenericJackson2JsonRedisSerializer |
| system-tool-service | StringRedisSerializer |
修复后:
- 提取到
common/common-config模块的com.erp.common.config.RedisConfig - 提供统一的
RedisTemplate<String, Object>(Jackson2Json) 和StringRedisTemplate - 各种序列化方案均可在 common-config 中找到,避免各服务自行实现混乱
3.4 MyBatisPlusConfig / MyBatisConfig — 保留
各服务的 MyBatisPlusConfig 包含服务特定的配置(如分页大小),保留在各自服务是合理的。
🔴 检查任务4:跨服务共享数据库实体(待治理)
以下实体存在跨服务共享同一张表但各自维护独立实体的问题,建议作为下一轮架构优化任务处理:
4.1 Stock — 4个实体,3种表名
| 服务 | 表名 | 建议操作 |
|---|---|---|
| inventory-service | stocks |
保留 inventory-service 为 Stock 主服务 |
| warehouse-service | stock |
改用 Feign 调用 inventory-service |
| dashboard-service | stocks |
改用 Feign 调用 inventory-service |
| tenant-service | stocks |
多租户版需单独讨论 |
4.2 Warehouse — 3个实体,2种表名
| 服务 | 表名 | 建议操作 |
|---|---|---|
| inventory-service | warehouses |
保留 inventory-service 为精简版主服务 |
| warehouse-service | warehouse |
完整版主服务 |
| dashboard-service | warehouses |
改用 Feign 调用 warehouse-service |
4.3 Order — 2个实体,同表异构
| 服务 | 表名 | 建议操作 |
|---|---|---|
| order-service | orders |
主服务,保留完整实体 |
| dashboard-service | orders |
改用 Feign 调用 order-service |
4.4 OrderItem — 2个实体,同表异构
| 服务 | 表名 | 建议操作 |
|---|---|---|
| order-service | order_items |
主服务 |
| product-service | order_items |
删除本地实体,通过 Feign 调用 order-service |
4.5 Supplier — 4个实体,2种表名
| 服务 | 表名 | 建议操作 |
|---|---|---|
| supplier-service | suppliers |
主服务,保留完整实体 |
| product-service | suppliers |
删除本地实体,通过 Feign 调用 supplier-service |
| purchase-service | supplier |
删除本地实体,通过 Feign 调用 supplier-service |
| tenant-service | suppliers |
多租户版需单独讨论 |
4.6 ErpSku — 2个实体,2种表名
| 服务 | 表名 | 建议操作 |
|---|---|---|
| product-service | erp_skus |
主服务 |
| sku-match-service | erp_sku |
删除本地实体,通过 Feign 调用 product-service |
📋 本轮修复汇总
新增模块
| 模块 | 路径 | 内容 |
|---|---|---|
| common-config | common/common-config/ |
OpenApiConfig、JacksonConfig、RedisConfig |
修改的服务(23个)
已添加 common-config 依赖: aftersale-service, ai-service, approval-flow-service, inventory-service, logistics-service, order-service, platform-sync-service, print-service, purchase-service, reconciliation-service, supplier-service, warehouse-service, waybill-service, scheduled-task-service, system-tool-service, dashboard-service, tenant-service, finance-service
已删除的重复文件:
- 27个
OpenApiConfig.java - 3个
JacksonConfig.java - 3个
RedisConfig.java - 13个
ApiResponse.java - 11个
PageResponse.java
已更新的 import 语句:
- 所有服务中的
com.erp.<service>.dto.ApiResponse→com.erp.common.core.model.ApiResponse - 所有服务中的
com.erp.<service>.dto.PageResponse→com.erp.common.core.model.PageResponse
📋 待处理(P2级 - 下一轮架构优化)
| 优先级 | 问题 | 说明 |
|---|---|---|
| P2-高 | Stock 跨服务 | inventory/warehouse/dashboard 需明确主服务,改用 Feign |
| P2-高 | Order/OrderItem 跨服务 | dashboard/product 需改用 Feign 调用 order-service |
| P2-高 | Supplier 跨服务 | product/purchase 需改用 Feign 调用 supplier-service |
| P2-中 | ErpSku 跨服务 | sku-match-service 需改用 Feign 调用 product-service |
| P2-中 | Warehouse 跨服务 | inventory/dashboard 需明确职责边界 |