6.0 KiB
6.0 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 | 7357 | 景区改绑供应商免变更原因 | admin | lc(GIT) | 修改接口 | deployed | verified | verified | mmg | 15fea12f | 2026-09-09 | 后端已部署并验证;待前端移除景区改绑原因弹框。 | 2026-09-09 | dev-v3 |
景区改绑供应商免变更原因
一、关键变化
景区改绑也可省略 changeReason。选择新供应商后直接提交,去掉“改绑供应商—变更原因”弹框;首次添加已完成的免原因行为继续保留。
二、变更接口清单
| # | 接口 | 方法 | 路径 | 变更类型 | 说明 |
|---|---|---|---|---|---|
| 1 | 设置或改绑供应商 | PUT | /admin/supplier/resource-relations/{resourceModule}/{resourceId}/update |
修改接口 | 景区改绑原因改为可选 |
三、接口详情
1. 设置或改绑供应商 PUT /admin/supplier/resource-relations/{resourceModule}/{resourceId}/update
VO: SupplierResourceReassignReqVO / SupplierResourceRelationRespVO
使用场景
景区管理选择目标供应商后提交添加或改绑。
入参
| 字段 | 位置 | 类型 | 必填 | 约束 | 说明 |
|---|---|---|---|---|---|
resourceModule |
Path | String | 是 | 景区为 SCENIC |
本次放宽仅适用于景区 |
resourceId |
Path | String | 是 | 正整数 | 景区 ID |
supplierId |
Body | String | 是 | 正整数 | 新供应商 ID |
expectedCurrentSupplierId |
Body | String | 改绑必填 | 与版本时间成对提交 | 当前关系的供应商 ID |
expectedRelationUpdateTime |
Body | String | 改绑必填 | yyyy-MM-dd HH:mm:ss |
当前关系的 updateTime |
changeReason |
Body | String | 景区可省略 | 最长 500 字 | 省略、null、空串、空白均视为未填;无需补默认原因 |
requiredTypeCode |
Body | String | 否 | 最长 64 字 | 景区可省略,由后端确定为 SCENIC |
remark |
Body | String | 否 | 最长 500 字 | 关系备注,继续按原表单组装 |
出参
| 字段 | 类型 | 说明 |
|---|---|---|
code / message / success |
Integer / String / Boolean | 业务结果 |
data.relationId / supplierId / supplierNo / supplierName |
String | 生效关系及供应商标识、全称 |
data.resourceModule / moduleName / resourceId / resourceName |
String | 资源模块及资源信息 |
data.requiredTypeCode / requiredTypeName |
String | 要求的供应商类型 |
data.remark |
String 或 null | 关系备注 |
data.available / unavailableReasons |
Boolean / Array | 关系可用性及原因 |
data.createTime / updateTime |
String | 关系时间;后续改绑使用最新 updateTime |
请求示例
以下 ID 为示例,版本时间必须取当前关系返回值。
PUT /admin/supplier/resource-relations/SCENIC/3001000000000000015/update
Content-Type: application/json
{"supplierId":"2000000000000000022","expectedCurrentSupplierId":"2000000000000000011","expectedRelationUpdateTime":"2026-09-09 10:00:00"}
响应示例
{"code":200,"message":"成功","success":true,"data":{"relationId":"2000000000000000031","supplierId":"2000000000000000022","supplierNo":"SUP2000000000000000022","supplierName":"示例新供应商","resourceModule":"SCENIC","moduleName":"景区管理","resourceId":"3001000000000000015","resourceName":"示例景区","requiredTypeCode":"SCENIC","requiredTypeName":"景区管理","remark":null,"available":true,"unavailableReasons":[],"createTime":"2026-09-09 10:01:00","updateTime":"2026-09-09 10:01:00"}}
空数据 / 降级响应
无空成功结果;校验失败返回 data: null、success: false。
错误响应
{"code":395014,"message":"数据已被他人修改,请刷新后重试","data":null,"success":false}
业务边界
- 使用现有登录凭证及关系维护权限;目标供应商仍须符合既有状态、类型和资格要求。
- 改绑须携带完整且最新的两个版本字段;过期返回
395014,不覆盖当前关系。原来携带原因的请求继续兼容。
四、契约约束与正确调用方式
改绑提交 supplierId 和两个 expected* 字段,可完全不传 changeReason。两个版本字段仅传一个会返回 400;已有关系却完全省略版本字段仍按原规则拒绝。
五、数据库行为
成功后切换当前供应商并保留新旧关系变更记录;未填原因记录为空,失败不改写关系。相同业务请求重放不产生重复变更。
六、边界行为
未登录返回 401;缺少目标供应商或原因超过 500 字返回 400。业务失败可能使用 HTTP 200,应同时判断响应体 code 和 success。
六.6、修改前后对比
| 场景 | 原来 | 现在 |
|---|---|---|
景区改绑 changeReason |
必填 | 可省略 |
| 改绑关系版本 | 两字段必填 | 保持原规则 |
六.7、影响评估
- 向后兼容:是,原请求仍可使用。
- 前端动作:移除景区改绑的原因弹框及必填校验,确定选择后直接调用接口;保留两个关系版本字段。
七、不影响范围
非景区添加/改绑、全部解绑的原因要求及现有响应字段保持原契约。
八、测试环境已验证
景区添加与改绑均完全省略 changeReason 成功,当前关系回读一致;原有携带原因的改绑请求成功。缺参、超长原因及旧关系版本均拒绝且零写入。
当前状态:后端已部署并验证;待前端处理。
九、相关历史 PR
#7282 的首次添加免原因仍有效;其中“景区改绑仍必填”的旧口径由本次补充替代。
十、相关文档
关联 / 联系人
- PR:#7358
- 后端负责人:@lc