docs: 修复产品上架下架切换500 (PR #726)
这个提交包含在:
父节点
4e02058aff
当前提交
1226509a4f
@ -0,0 +1,38 @@
|
||||
# 修复:产品上架/下架切换接口 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。
|
||||
正在加载...
x
在新工单中引用
屏蔽一个用户