From 78fe5b7a99d7214234f8429126ecc7460785d5ea Mon Sep 17 00:00:00 2001 From: lc Date: Wed, 9 Sep 2026 21:39:43 +0800 Subject: [PATCH] =?UTF-8?q?docs(changelogs-v2):=20#7400=20=E4=BE=9B?= =?UTF-8?q?=E5=BA=94=E5=95=86=E8=A7=A3=E7=BB=91=E5=85=8D=E5=8E=9F=E5=9B=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ..._资源供应商解绑免原因-修改接口-管理后台.md | 148 ++++++++++++++++++ 1 file changed, 148 insertions(+) create mode 100644 changelogs-v2/2026-09/09_7400_资源供应商解绑免原因-修改接口-管理后台.md diff --git a/changelogs-v2/2026-09/09_7400_资源供应商解绑免原因-修改接口-管理后台.md b/changelogs-v2/2026-09/09_7400_资源供应商解绑免原因-修改接口-管理后台.md new file mode 100644 index 00000000..3ecaa50d --- /dev/null +++ b/changelogs-v2/2026-09/09_7400_资源供应商解绑免原因-修改接口-管理后台.md @@ -0,0 +1,148 @@ +--- +schema: "hl-changelog/v2" +ticket: "7400" +title: "资源供应商解绑免原因" +consumer: "admin" +author: "lc(GIT)" +change_type: "修改接口" +backend_status: "deployed" +gateway_status: "verified" +frontend_status: "pending" +frontend_owner: "" +frontend_ref: "" +target_release: "" +verified_at: "2026-09-09" +status_note: "后端已部署并经 TEST Gateway 验证;前端需移除资源供应商解绑原因弹框,直接提交关系版本字段。" +updated_at: "2026-09-09" +base: "dev-v3" +--- + +# 资源供应商解绑免原因 + +## ⚠️ 关键变化 + +资源管理解绑供应商时,`changeReason` 由必填改为可选;前端无需再弹出原因输入框,也不要补写默认原因。 + +## 二、变更接口清单 + +| # | 接口 | 方法 | 路径 | 变更类型 | 说明 | +|---|---|---|---|---|---| +| 1 | 解除资源供应商 | POST | `/admin/supplier/resource-relations/{resourceModule}/{resourceId}/unbind` | 修改接口 | `changeReason` 改为可选 | + +## 三、接口详情 + +### 1. 解除资源供应商 `POST /admin/supplier/resource-relations/{resourceModule}/{resourceId}/unbind` + +**VO**: `SupplierResourceUnbindReqVO / Result` + +#### 使用场景 + +资源管理页面确认解除当前供应商关系时调用。 + +#### 入参 + +| 字段 | 位置 | 类型 | 必填 | 约束 | 说明 | +|---|---|---|---|---|---| +| `resourceModule` | Path | String | 是 | 现有资源模块编码 | 资源模块 | +| `resourceId` | Path | String | 是 | 正整数 | 资源 ID | +| `expectedCurrentSupplierId` | Body | String | 是 | 正整数 | 当前关系返回的 `supplierId` | +| `expectedRelationUpdateTime` | Body | String | 是 | `yyyy-MM-dd HH:mm:ss` | 当前关系返回的 `updateTime` | +| `changeReason` | Body | String | 否 | 最长 500 字 | 省略、`null`、空串或空白均视为未填写 | + +#### 出参 `Result` + +| 字段 | 类型 | 说明 | +|---|---|---| +| `code` / `message` / `success` | Integer / String / Boolean | 业务结果 | +| `data` | null | 成功时固定为空 | + +#### 请求示例 + +```json +{"expectedCurrentSupplierId":"2000000000000000022","expectedRelationUpdateTime":"2026-09-09 10:01:00"} +``` + +#### 响应示例 + +```json +{"code":200,"message":"成功","data":null,"success":true} +``` + +#### 空数据 / 降级响应 + +无空成功集合;关系不存在或必要依赖不可用时返回失败结果,不执行解绑。 + +#### 错误响应 + +```json +{"code":395014,"message":"数据已被他人修改,请刷新后重试","data":null,"success":false} +``` + +#### 业务边界 + +- 未登录返回 `401`;缺少任一版本字段或原因超过 500 字返回 `400`;关系不存在返回 `395038`。 +- 权限、数据范围、景区未完成订单门禁、幂等、并发版本与软删除规则不变;失败不改写关系或审计。 + +## 四、契约约束与正确调用方式 + +用户确认解绑后,直接提交当前关系的两个版本字段: + +| 场景 | payload | +|---|---| +| 正确:省略原因 | `{"expectedCurrentSupplierId":"22","expectedRelationUpdateTime":"2026-09-09 10:01:00"}` | +| 兼容:继续传原因 | `{"expectedCurrentSupplierId":"22","expectedRelationUpdateTime":"2026-09-09 10:01:00","changeReason":"业务调整"}` | +| 错误:缺版本时间 | `{"expectedCurrentSupplierId":"22"}` → `400` | + +关系版本已变化返回 `395014`,应刷新当前关系后再由用户重试。业务失败可能仍为 HTTP 200,须判断响应体 `code` 和 `success`。 + +## 五、数据库行为 + +成功解绑仍按原逻辑软删除当前关系并追加供应商变更审计;省略原因时 `supplier_change_log.change_reason` 记录为 `NULL`,非空原因继续原样审计。无表结构或迁移变化。 + +## 六、边界行为 + +- `changeReason` 省略、`null`、空串或纯空白均可解绑,且不生成虚构默认值。 +- `changeReason` 最长 500 字;501 字返回 `400` 且零写入。 +- 两个 `expected*` 字段仍必填;陈旧版本返回 `395014` 且零写入。 +- 景区已有未完成订单时继续按既有规则返回 `395059`,不允许解绑。 + +## 六.6、修改前后对比 + +| 字段 / 行为 | 改前 | 改后 | +|---|---|---| +| `changeReason` | 必填 | 可省略;非空请求继续兼容 | +| 关系版本、权限与业务门禁 | 必须满足 | 不变 | + +## 六.7、影响评估 + +- **是否破坏向后兼容**: 否。 +- **前端是否必须同步上线**: 是,移除解绑原因弹框及必填校验。 +- **前端 workaround 清理点**: 删除为了满足旧契约而填写或生成解绑原因的逻辑。 + +## 七、不影响范围 + +- 仅影响资源供应商解绑请求的 `changeReason` 必填性。 +- 设置与改绑契约、响应字段、错误码数值、数据库结构、Redis、MQ、Feign 和网关路由均不变。 + +## 八、测试环境已验证 + +TEST Gateway 已验证省略原因的解绑成功并恢复原关系基线;匿名、缺版本、501 字原因及陈旧版本请求均被拒绝且零写入,原有携带原因的解绑继续成功。 + +**当前状态:后端已交付,待前端处理。** + +## 九、相关历史 PR + +| PR | Issue | 说明 | 是否仍有效 | +|---|---|---|---| +| #7358 | #7357 | 景区设置及改绑免原因,不覆盖解绑 | 是 | +| #7401 | #7400 | 全部资源供应商解绑免原因 | 是,最新 | + +## 十、相关文档 + +- 关联工单:[#7400](https://git.1814.love:8443/wx/HL/issues/7400) +- 后端 PR:[#7401](https://git.1814.love:8443/wx/HL/pulls/7401) + +## 关联 / 联系人 + +- Merge commit:[49a05cfb](https://git.1814.love:8443/wx/HL/commit/49a05cfb83723ae9d72471c1927cf034961a5010) +- 后端负责人:@lc