# 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。
