# 重复架构问题清单 > 扫描时间: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` (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..dto.ApiResponse` → `com.erp.common.core.model.ApiResponse` - 所有服务中的 `com.erp..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 需明确职责边界 |