55 行
2.4 KiB
Markdown
55 行
2.4 KiB
Markdown
# 代码质量修复(多模块)
|
||
|
||
**日期**: 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 回归。
|