# 代码质量修复（多模块）

**日期**: 2026-03-21
**服务**: hl-order-service, hl-user-service, hl-payment-service, hl-file-service, hl-contract-service, hl-mp-service, hl-product-service, hl-insurance-service
**类型**: Bug修复 + 性能优化

---

## 变更说明

本次修复了多模块的代码级 bug，均为后端内部逻辑优化，**不影响现有接口的请求/响应格式**。

### 修复清单

| 模块 | 修复内容 |
|------|---------|
| hl-order-service | BigDecimal.equals→compareTo 修复价格比较精度问题 |
| hl-order-service | GROUP下单报价 NPE 防护（quoteInfo.get() 空值处理） |
| hl-order-service | 订单号升级：毫秒精度+6位随机数，防碰撞 |
| hl-order-service | 自动投保/签约方案ID类型安全转换 |
| hl-order-service | GROUP下单出发日期已过校验 |
| hl-user-service | AdminAuthService 6处 NPE 防护（会话数据提取） |
| hl-payment-service | 日期查询参数格式校验（400替代500） |
| hl-file-service | 文件统计空值防护 |
| hl-contract-service | userId 类型安全转换 |
| hl-mp-service | 产品列表 GROUP 团期获取从串行改为并行（性能优化） |
| hl-product-service | 车辆绑定异常信息不泄露技术细节 |
| hl-insurance-service | 投保公司主体错误提示不泄露用户输入 |

### 前端无需改动

以上修复均为后端内部逻辑，现有接口行为不变。

---

## 第二批修复（并发安全+幂等性+深层防护）

| 模块 | 修复内容 |
|------|---------|
| hl-product-service | PriceCalendarService: new Thread() → CompletableFuture.runAsync() |
| hl-order-service | OrderExpiryJob: 分布式锁 TTL 4min → 5min（不短于任务间隔） |
| hl-order-service | OrderExpiryConsumer: 新增 Redis 幂等性检查 |
| hl-order-service | BatchDisbandConsumer: batchId 安全类型转换 |
| hl-order-service | GROUP下单 batchInfo 字段 null 防护 |
| hl-order-service | refundPolicyId 4处安全转换 |
| hl-order-service | contactPhone.substring 越界防护 |
| hl-order-service | Map.of() NPE 防护（STATUS_LABELS 查询前 null 检查） |
| hl-insurance-service | InsuranceOrderService STATUS_LABELS null 防护 |
| hl-contract-service | ContractService STATUS_LABELS null 防护 |
| 全项目 | ((Number) map.get()).xxxValue() → instanceof 检查（15处） |

### 测试统计

15 模块 3598 测试全绿，0 回归。
