fix(admin-agency): set-primary 用 PUT 不是 POST

这个提交包含在:
API Changelog Bot 2026-05-06 19:28:13 +08:00
父节点 88dc320976
当前提交 4b86043a94

查看文件

@ -0,0 +1,53 @@
# fix(agency-admin): set-primary 接口必须用 PUT 不是 POST
**日期**: 2026-05-06 20:30
**通知对象**: @mmg (前端)
**关联 BUG 反馈**: 用户报 `http://localhost:9527/admin/travel-agency/2051985889785012226/set-primary` 报"请求方法不支持: POST"
---
## 一、根因(前端 BUG)
后端 `AdminTravelAgencyController.setPrimary``hl-order-service-v2/src/main/java/com/hulalv/agency/controller/admin/AdminTravelAgencyController.java:99-104`**`@PutMapping`**:
```java
@PutMapping("/{id}/set-primary")
@ApiOperation("设为主体公司(SUPER_ADMIN)")
public Result<Void> setPrimary(@PathVariable("id") Long id) {
agencyService.setPrimary(id);
return Result.success();
}
```
前端发的是 **`POST`** → 网关 `MethodArgumentNotSupportedException` 返"请求方法不支持: POST"。
## 二、为什么后端用 PUT
REST 语义 + 同模块其他**状态变更**接口都是 PUT(保持一致):
- `PUT /admin/travel-agency/{id}/disable` 停用
- `PUT /admin/travel-agency/{id}/enable` 启用
- `PUT /admin/travel-agency/{id}/set-primary` 设为主体 ← 同一类语义
`POST /admin/travel-agency` 用于"新建公司"(资源创建),不在状态变更范畴。
## 三、前端修复
把"设为主体"按钮的 API 调用从:
```js
http.post(`/admin/travel-agency/${id}/set-primary`)
```
改为:
```js
http.put(`/admin/travel-agency/${id}/set-primary`)
```
## 四、为什么不改后端
如果改后端为 POST,会和 `disable` / `enable` 同模式风格冲突,REST 语义不一致 — 后续看代码的人会困惑"为啥状态变更有 PUT 又有 POST"。
## 五、不建工单
按规则前端 BUG 都走 changelog,不建 wx/HL 或 wx/hl-ui issue。