5.7 KiB
5.7 KiB
schema, ticket, title, consumer, author, change_type, backend_status, gateway_status, frontend_status, frontend_owner, frontend_ref, target_release, verified_at, status_note, updated_at, base
| schema | ticket | title | consumer | author | change_type | backend_status | gateway_status | frontend_status | frontend_owner | frontend_ref | target_release | verified_at | status_note | updated_at | base |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| hl-changelog/v2 | 7400 | 资源供应商解绑免原因 | admin | lc(GIT) | 修改接口 | deployed | verified | verified | mmg | 02e17345 | 2026-09-09 | verified 2026-09-09 mmg(hl-admin 02e17345):SupplierRelationModal 解绑改确认框确定后直接 submitUnbind,body 仅两 expected 版本字段不带 changeReason;设置/改绑原因弹窗与必填校验保留,SCENIC 设置/改绑免原因(#7274/#7357)不动;resources.js 050 JSDoc 同步。scoped checkpoint 全绿(Vitest 全量+生产构建)。 | 2026-09-09 | 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<Void>
使用场景
资源管理页面确认解除当前供应商关系时调用。
入参
| 字段 | 位置 | 类型 | 必填 | 约束 | 说明 |
|---|---|---|---|---|---|
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<Void>
| 字段 | 类型 | 说明 |
|---|---|---|
code / message / success |
Integer / String / Boolean | 业务结果 |
data |
null | 成功时固定为空 |
请求示例
{"expectedCurrentSupplierId":"2000000000000000022","expectedRelationUpdateTime":"2026-09-09 10:01:00"}
响应示例
{"code":200,"message":"成功","data":null,"success":true}
空数据 / 降级响应
无空成功集合;关系不存在或必要依赖不可用时返回失败结果,不执行解绑。
错误响应
{"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 | 全部资源供应商解绑免原因 | 是,最新 |
十、相关文档
关联 / 联系人
- Merge commit:49a05cfb
- 后端负责人:@lc