diff --git a/changelogs/2026-05/18_refactor_order_todo_vo_updatetime_path_fix.md b/changelogs/2026-05/18_refactor_order_todo_vo_updatetime_path_fix.md new file mode 100644 index 0000000..79c3a20 --- /dev/null +++ b/changelogs/2026-05/18_refactor_order_todo_vo_updatetime_path_fix.md @@ -0,0 +1,33 @@ +# refactor(order): OrderTodoVO.updateTime 在「我的待办」「可签合同订单」2 个路径补返回 + +> **服务**: hl-order-service-v2 +> **PR**: #2469 (已合 dev,已部署测试服) +> **Issue**: #2468 (续 #2351 遗留尾巴) +> **日期**: 2026-05-18 +> **影响范围**: 管理后台 2 个待办相关查询接口 + +--- + +## 给前端的话 (mmg 看这里) + +`OrderTodoVO.updateTime` 字段先前在以下 2 个接口返回 null,本次补全: + +| 接口 | updateTime 实测 | +|------|----------------| +| `GET /admin/order/todo/my-list` (我的待办列表) | 2026-05-18 09:00:00 ✓ | +| `GET /admin/order/todo/contract-eligible` (可签合同订单列表) | 2026-04-28 14:21:19 ✓ | + +其他 OrderTodoVO 路径 (订单详情待办、按订单查 todos 等) PR #2353 已补,本次只是堵这两个用 mapper 自定义 SQL 返 DTO 的"漏洞"路径。 + +## 根因 + +`OrderTodoQueryService` 这两个方法走 `OrderTodoMapper` 的 `@Select` 自定义 SQL,返回 `ActiveTodoDTO` / `InsuranceCompletedDTO` 中转再 mapper 成 `OrderTodoVO`。**DTO 本身没有 update 字段**,即使后端 service 想 set 也无源。 + +## 修改清单 (4 文件 +11 -2) + +- `OrderTodoMapper.selectActiveTodos`: SELECT 加 `t.update_time AS updated_at` +- `OrderTodoMapper.selectInsuranceCompleted`: SELECT 加 `t.update_time AS updated_at` +- `ActiveTodoDTO`: 加 `private LocalDateTime updatedAt;` +- `InsuranceCompletedDTO`: 加 `private LocalDateTime updatedAt;` +- `OrderTodoQueryService.mapActiveTodoToVOList`: 补 `vo.setUpdateTime(dto.getUpdatedAt());` +- `OrderTodoQueryService.mapInsuranceToVOList`: 补 `vo.setUpdateTime(dto.getUpdatedAt());`