文件
hl-api-changelog/changelogs-v2/2026-09/04_7078_供应商企微审核中冻结资料修改-修改接口-管理后台.md
T
Mimingguang 17490fff88
changelog-filename-gate / validate (push) Failing after 2s
chore(changelog): 补齐6条已实现条目的前端verified回写
修改原因:6 条 changelog 前端已落地并交付(sync-log 已记 done),但 frontmatter 仍为 pending,
导致发布门禁的前端核验状态与真实交付不符。

修改内容:按 hl-changelog/v2 口径回写 frontend_status=verified、frontend_owner=mmg、
frontend_ref=对应业务 commit 短哈希、verified_at=2026-09-04;target_release 与 status_note 保持原值。

- #6926 导出补 opsStage 筛选 -> ea1b9803
- #7059 设置供应商候选按资源上下文过滤 -> a1a78906
- #7069 供应商企微在途状态统一审核中 -> f6ddd94c
- #7070 房务列表/详情补产品类型标签 productType -> 7476250d
- #7078 供应商企微审核中冻结资料修改 -> f4d3e1c9
- #7087 供应商新建修改必填资料校验 -> 72d63c8e

实际验证:逐条 diff 核对仅改 frontmatter 5 字段,status_note/target_release/正文未动。
2026-09-04 20:04:16 +08:00

14 KiB
原始文件 Blame 文件历史

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 7078 供应商企微审核中冻结资料修改 admin lc(GIT) 修改接口 deployed verified verified mmg f4d3e1c9 2026-09-04 后端已部署并通过 TEST;前端需在 statusName="审核中" 时制灰供应商、账户、合同及冲突状态写操作。 2026-09-04 dev-v3

供应商模块:企微审核中冻结资料修改

服务: hl-resource-service Issue: #7078 PR: #7086 日期: 2026-09-04 影响范围: 管理后台供应商详情、账户、合同和状态操作

⚠️ 关键变化

statusName="审核中" 时,前端统一制灰供应商资料、账户、合同及冲突状态写入口;详情和审批记录仍可查看,注册审批撤销等合法审批退出路径保持可用。statusName 是 #7069 已交付字段,本次未新增请求字段、响应字段或错误码。

二、变更接口清单

# 接口 方法 路径 变更类型 说明
1 更新供应商 PUT /admin/supplier/items/{supplierId}/update 行为修改 企微主体审批中返回 395005
2 新增合同 POST /admin/supplier/items/{supplierId}/contracts/add 行为修改 企微主体审批中返回 395005
3 更新合同 PUT /admin/supplier/items/{supplierId}/contracts/{contractId}/update 行为修改 企微主体审批中返回 395005
4 删除合同 DELETE /admin/supplier/items/{supplierId}/contracts/{contractId}/del 行为修改 企微主体审批中返回 395005
5 恢复合作 POST /admin/supplier/items/{supplierId}/resume 行为修改 状态审批中不得绕过审批恢复合作

三、接口详情

1. 更新供应商 PUT /admin/supplier/items/{supplierId}/update

VO: SupplierUpdateReqVO → SupplierWriteRespVO

使用场景

修改供应商主体、类型、联系人、资质、评价或其他档案资料。

入参

字段 位置 类型 必填 约束 说明
supplierId Path String 是 正整数 供应商 ID
expectedUpdateTime Body String 是 yyyy-MM-dd HH:mm:ss 当前供应商版本
changeReason Body String 条件必填 最长 500 非草稿修改必填
资料字段 Body 原类型 否 沿用原契约 至少提交一个可变更字段

出参

字段 类型 说明
data SupplierWriteRespVO 成功响应结构不变

请求示例

{"remark":"更新备注","changeReason":"资料修正","expectedUpdateTime":"2026-09-04 10:00:00"}

响应示例

{"code":200,"message":"成功","data":{"supplierId":"2095000000000000001","status":"ACTIVE","updateTime":"2026-09-04 10:01:00"},"success":true}

空数据 / 降级响应

写接口无空成功结果,也不提供降级成功。

错误响应

{"code":395005,"message":"当前状态不允许执行该操作","data":null,"success":false}

业务边界

  • 企微注册或主体状态审批为 PENDING 时拒绝,供应商主档及聚合子项均保持不变。
  • 其他权限、字段校验、并发和审计规则不变。

2. 新增合同 POST /admin/supplier/items/{supplierId}/contracts/add

VO: SupplierContractCreateReqVO → SupplierContractRespVO

使用场景

为供应商独立登记一份线下合同。

入参

字段 位置 类型 必填 约束 说明
supplierId Path String 是 正整数 供应商 ID
changeReason Body String 是 最长 500 登记原因
合同资料字段 Body 原类型 否 沿用原契约 名称、编号、日期、金额等字段不变

出参

字段 类型 说明
data SupplierContractRespVO 成功响应结构不变

请求示例

{"contractName":"年度框架合同","changeReason":"线下签署后登记"}

响应示例

{"code":200,"message":"成功","data":{"contractId":"2095000000000000002","contractName":"年度框架合同","updateTime":"2026-09-04 10:02:00"},"success":true}

空数据 / 降级响应

除 changeReason 外的合同业务字段可空;成功仍返回合同对象,不提供降级成功。

错误响应

{"code":395005,"message":"当前状态不允许执行该操作","data":null,"success":false}

业务边界

  • 企微注册或主体状态审批为 PENDING 时不新增合同或审计记录。
  • 合同字段、权限、锁和幂等规则不变。

3. 更新合同 PUT /admin/supplier/items/{supplierId}/contracts/{contractId}/update

VO: SupplierContractUpdateReqVO → SupplierContractRespVO

使用场景

完整替换一份已有合同的业务资料。

入参

字段 位置 类型 必填 约束 说明
supplierId / contractId Path String 是 正整数 供应商和合同 ID
changeReason Body String 是 最长 500 修改原因
expectedUpdateTime Body String 否 yyyy-MM-dd HH:mm:ss 合同并发版本
合同资料字段 Body 原类型 否 沿用原契约 完整替换语义不变

出参

字段 类型 说明
data SupplierContractRespVO 成功响应结构不变

请求示例

{"contractName":"年度框架合同(修订)","changeReason":"合同修订","expectedUpdateTime":"2026-09-04 10:02:00"}

响应示例

{"code":200,"message":"成功","data":{"contractId":"2095000000000000002","contractName":"年度框架合同(修订)","updateTime":"2026-09-04 10:03:00"},"success":true}

空数据 / 降级响应

合同业务字段保持既有可空和完整替换语义;写接口不提供降级成功。

错误响应

{"code":395005,"message":"当前状态不允许执行该操作","data":null,"success":false}

业务边界

  • 企微注册或主体状态审批为 PENDING 时,先于合同查询拒绝,不修改合同或审计记录。
  • 合同归属、可选版本及无变化校验不变。

4. 删除合同 DELETE /admin/supplier/items/{supplierId}/contracts/{contractId}/del

VO: SupplierContractDeleteReqVO → Void

使用场景

软删除一份已有合同。

入参

字段 位置 类型 必填 约束 说明
supplierId / contractId Path String 是 正整数 供应商和合同 ID
changeReason Body String 是 最长 500 删除原因
expectedUpdateTime Body String 否 yyyy-MM-dd HH:mm:ss 合同并发版本

出参

字段 类型 说明
data null 成功时为空

请求示例

{"changeReason":"合同登记作废","expectedUpdateTime":"2026-09-04 10:03:00"}

响应示例

{"code":200,"message":"成功","data":null,"success":true}

空数据 / 降级响应

成功时 data=null;请求体不能省略,也不提供降级成功。

错误响应

{"code":395005,"message":"当前状态不允许执行该操作","data":null,"success":false}

业务边界

  • 企微注册或主体状态审批为 PENDING 时,先于合同查询拒绝,不删除合同或新增审计记录。
  • 合同归属、可选版本、软删除及幂等规则不变。

5. 恢复合作 POST /admin/supplier/items/{supplierId}/resume

VO: SupplierStatusChangeReqVO → SupplierStatusChangeRespVO

使用场景

将没有在途主体审批的暂停合作供应商恢复合作。

入参

字段 位置 类型 必填 约束 说明
supplierId Path String 是 正整数 供应商 ID
reason Body String 是 1~500 字符 恢复原因
expectedUpdateTime Body String 是 yyyy-MM-dd HH:mm:ss 当前供应商版本

出参

字段 类型 说明
data.status / data.statusName String 成功后为 ACTIVE / “合作中”
data.updateTime String 新并发版本

请求示例

{"reason":"恢复合作","expectedUpdateTime":"2026-09-04 10:00:00"}

响应示例

{"code":200,"message":"成功","data":{"supplierId":"2095000000000000003","status":"ACTIVE","statusName":"合作中","updateTime":"2026-09-04 10:04:00"},"success":true}

空数据 / 降级响应

写接口无空成功结果,也不提供降级成功。

错误响应

{"code":395005,"message":"当前状态不允许执行该操作","data":null,"success":false}

业务边界

  • 暂停合作供应商已有企微主体状态审批时不得恢复合作,来源状态保持不变。
  • 原有权限、来源状态、并发、审计和幂等规则不变。

四、契约约束与正确调用方式

  • 后端以企微注册或主体状态审批 PENDING 为权威门禁;页面即使状态滞后,写请求仍可能返回 395005。
  • 前端展示和制灰统一读取列表或详情的 statusName;status 继续用于筛选和生命周期判断。
  • 账户新增和设默认接口的后端契约未变:注册审批中的 VETTING、状态审批来源的 SUSPENDED / BLACKLIST 均不满足账户写入所需的 ACTIVE 状态,仍返回既有 395010。
  • 详情、账户详情、审批记录和变更记录等读取入口保持可用;注册审批撤销 POST /admin/supplier/items/{supplierId}/approval/revoke 保持可用。

五、数据库行为

  • 本次没有数据库结构、初始化数据或迁移变化。
  • 审核中被拒绝的请求不修改供应商、账户、合同、状态或审计数据。

六、边界行为

  • 五类展示场景:注册、列入黑名单、解除黑名单、“终止且账清”和“拉黑且账清”在企微审核中均返回 statusName="审核中"。
  • 审批结束后刷新列表或详情,再按最终生命周期状态恢复原有可用操作。
  • 请求参数、成功响应、认证、权限、配置、Redis 和 MQ 契约均未改变。

六.6、修改前后对比

行为 修改前 修改后
企微主体审批中修改供应商资料 部分入口可能继续写入 返回 395005,业务数据不变
企微主体审批中新增、更新或删除合同 部分入口可能继续写入 返回 395005,业务数据不变
状态审批中恢复合作 可能绕过审批候选来源状态 返回 395005,来源状态不变
账户写入 既有规则要求供应商为 ACTIVE 规则不变;前端在“审核中”时提前制灰
详情与合法审批退出 可用 保持可用

六.7、影响评估

  • 是否破坏向后兼容: 是;审批中的资料和合同写请求由可能成功调整为业务拒绝。
  • 前端是否必须同步上线: 是。
  • 前端 workaround 清理点: 不再仅按 status 放开写按钮,增加 statusName="审核中" 的统一制灰条件。

七、不影响范围

  • 仅影响: 企微注册或主体状态审批中的供应商资料、账户、合同和冲突状态操作。
  • 零影响: 详情及审批记录读取、注册审批撤销、企微回调与轮询、审批结束后的原有业务规则。
  • 无变化: 请求/响应字段、错误码定义、数据库、配置、Redis、MQ;后端仓库未修改前端代码。

八、测试环境已验证

部署提交:6462397526ad61acfbcf503486d8507c9c1c7293。

GET  /admin/supplier/items/list?limit=200                                      → 200;注册审批返回 VETTING / 审核中 ✓
GET  /admin/supplier/items/{supplierId}/basic-info/view                        → 200;详情同为 VETTING / 审核中 ✓
PUT  /admin/supplier/items/{supplierId}/update                                 → 395005 ✓
POST /admin/supplier/items/{supplierId}/contracts/add                          → 395005 ✓
PUT  /admin/supplier/items/{supplierId}/contracts/{contractId}/update           → 395005 ✓
DELETE /admin/supplier/items/{supplierId}/contracts/{contractId}/del            → 395005 ✓
POST /admin/supplier/items/{supplierId}/bank-accounts/add                       → 395010 ✓

上述拒绝请求前后,供应商版本、账户、合同、审批和审计的只读数据库快照哈希一致。TEST 当前没有四类状态审批的在途样本,因此没有发起企微审批造数;对应子类型、来源状态、“审核中”投影及全部写入口由合并提交中的精确自动化测试覆盖。

十、相关文档

前端动作与当前状态

  • statusName="审核中" 时,统一制灰供应商资料编辑/保存、账户新增/设默认、合同新增/编辑/删除,以及暂停、恢复、拉黑、解除拉黑和归档等冲突写入口。
  • 保留详情、审批记录、审批进度刷新和合法审批退出。
  • 当前状态:待前端处理。

关联 / 联系人

链接

联系人

  • 后端负责人: @lc