hl-api-changelog/changelogs-v2/2026-05/22_2849_round2-followup_PR2850.md

4.1 KiB

Round 2 review 收尾 7 项:Wrapper 漏修 + LockFailure 500 + JavaDoc 旧编号 + 孤儿枚举 + Publisher rename + 脱敏收敛 + Mapper default 单测

存放目录: 二期 → changelogs-v2/2026-05/ 服务: hl-user-service + hl-common-core + hl-starter-protection + hl-order-service-v3 PR: #2850 Issue: #2849 日期: 2026-05-22 影响范围: 全部内部代码简化 / 无破坏性变更 — 但 HouseEventPublisher → HouseNotificationPublisher rename + LockFailureException 全局新错误码


⚠️ 关键变化(前端可感知)

1. 🟡 @Lock4j 抢锁失败错误码 100503 RESOURCE_LOCKED

之前 @Lock4j(acquireTimeout=5s) 抢锁失败抛 LockFailureException 上抛 GlobalExceptionHandler 兜底返 500,前端体验差。

:全局 LockFailureExceptionHandler 拦截返:

{ "code": 100503, "message": "资源被占用,请稍后重试", "success": false }

生效范围:全部 @Lock4j 注解(目前主要 ProductSnapshotService.restoreSnapshot,后续扩展)。前端如有错误码映射需识别 100503 显示"操作冲突,请稍后重试"提示。

2. 🟢 Bug 修复:漏修的 listCustomers Wrapper(后端内部)

hl-user-service listCustomers Service 内 Wrapper 残留下沉到 UserMapper.selectCustomerPage default。前端无感知。


一、变更接口清单

# 接口 变更类型 说明
1 所有 @Lock4j 注解接口(目前 /admin/product/snapshot/restore) 错误码新增 抢锁失败返 100503 RESOURCE_LOCKED 而非 500
2 /admin/customer/page 内部重构 listCustomers Wrapper 下沉到 Mapper default(前端响应不变)

二、关键改动(内部)

  1. hl-common-core.CommonErrorCode 新增 RESOURCE_LOCKED(100503, "资源被占用,请稍后重试")
  2. hl-starter-protection.LockFailureExceptionHandler 新增全局 @RestControllerAdvice 拦截 LockFailureException 返 100503
  3. HouseEventEnum.CUSTOMER_CHANGE 孤儿常量删除(PR #2846 删了对应状态机规则,枚举常量是孤儿)
  4. HouseEventPublisherHouseNotificationPublisher rename(单职责后类名误导)— 9 处引用 + 3 IT @MockBean 同步
  5. ComplaintConverter 手工 substring 脱敏 → PiiMaskUtil.maskPhone()(删 13 行)
  6. PR #2846 8 处 JavaDoc 旧编号/类名更新(808990→808900 / 808994→808901 / 808993→808941 / RESOURCE_SERVICE_UNAVAILABLERESOURCE_UNAVAILABLE / INVENTORY_DEDUCT_FAILEDROOM_STOCK_INSUFFICIENT)
  7. 5 个新 Mapper default 单测:LoginLogMapperTest / UserMapperTest / AdminUserMapperTest(8 测试)

三、测试服验证

服务 部署 commit uptime 验证
hl-user-service dev-v3 含 #2850 21:34 Wrapper 下沉 + 新 Mapper default 单测全绿
hl-order-service-v3 dev-v3 含 #2850 21:36(SSH restart) Publisher rename 后启动正常

四、累计 Round 1 + Round 2 收益

维度 数值
PR 数 5 张(#2845 / #2846 / #2847 / #2848 / #2850)
工单数 5 张(#2841 / #2842 / #2843 / #2844 / #2849)
净行数 -1359(R1) + +311(R2 含 5 新测试文件)= 净 -1048 行
HOUSE 模块评分 C+ → A-
整体评分 Round 1 A- → Round 2 后整体 A
单测数 2579 + Round 1 各服务 全绿

五、留尾(独立工单 backlog)

  • product-v2 全模块 294 文件 HTML 标签清零(P0 铁规 15h 全局)→ 大工程独立工单
  • MpTripDetailVO Object → List 真实数据回归 → /@qa 工单
  • AdminUserService 9 处跨聚合 Mapper(红线 5 二期) → 独立工单
  • HOUSE FLEET vehicle_plan Feign 接通后补 DRIVER 通知三件套 → 独立工单
  • MaterialCategory ↔ Permission 双 @Lazy 抽 PermissionGate → backlog
  • EquipmentTemplateService ↔ ProductLineService 双 @Lazy 抽 ProductEquipmentBindingService → backlog

六、关联

  • 工单: #2849(closed)
  • PR: #2850(merged)
  • Round 2 review 来源: Claude /@cr 3 agent 并发(A/B/C)2026-05-22
  • memory P0 铁规 7 升级:agent 严禁 git stash(同周 3 次违规累计 4+ 次)