hl-api-changelog/changelogs/2026-04/2026-04-17_product-v2_toggle-publish-aop-fix.md
2026-04-17 12:02:06 +08:00

1.3 KiB

修复:产品上架/下架切换接口 500

服务: hl-product-service-v2 (端口 8083) PR: #726 Issue: #725 日期: 2026-04-17 影响范围: 管理端产品上架/下架操作


现象(前端感知)

点击产品「上架」/「下架」按钮后,后端返回 {"code":500, "message":"服务器内部错误"},操作失败。

根因

ProductStatusService.togglePublish 内部调用 this.doTogglePublishInTx(...) 是 Spring AOP 自调用,绕过代理,@Transactional 注解失效 → 方法内的 registerAfterCommit 拿不到事务上下文,抛 IllegalStateException: Transaction synchronization is not active

修复

  • @Lazy setter 注入自身代理 self
  • togglePublish 改用 self.doTogglePublishInTx(...) 走 AOP 代理,@Transactional 生效

接口契约

无变化。仅修复原本应该 200 却误返 500 的 bug,接口路径/参数/响应结构未变动。

方法 路径 说明
POST /admin/product/item/{id}/toggle-publish 上架/下架切换(修复后正常 200

前端适配

无需改动。原本的调用代码现在能正常工作。

重启提示

需要重启 hl-product-service-v2(端口 8083—— 通过 Deploy Panel 重新部署最新 jar。