文件
hl-api-changelog/changelogs-v2/2026-09/04_7094_供应商账户驳回终态-修改接口-管理后台.md
T
Mimingguang 125014ac9b
changelog-filename-gate / validate (push) Failing after 2s
chore(changelog): 回写 #7094 前端 verified
修改原因:#7094 前端已交付(commit 2e8ed57c,sync-log 已记 done)但 frontmatter 仍为 pending,
发布门禁前端核验状态与真实交付不符。

修改内容:frontend_status=verified、frontend_owner=mmg、frontend_ref=2e8ed57c、verified_at=2026-09-04;
target_release 与 status_note 保持原值,正文未动。

实际验证:git diff 逐字段核对仅改 frontmatter 5 字段。
2026-09-04 23:34:24 +08:00

8.8 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 7094 供应商账户驳回终态 admin lc(GIT) 修改接口 deployed verified verified mmg 2e8ed57c 2026-09-04 后端已部署并通过 TEST;前端需将 REJECTED 映射为已驳回且不可用。 2026-09-04 dev-v3

供应商模块:账户驳回返回明确不可用终态

企微驳回后,后续新增账户由 PENDING 改为 REJECTED;只有 ACTIVE 账户可用于收款或设为默认。

二、变更接口清单

# 接口 方法 路径 变更类型 说明
1 账户列表 GET /admin/supplier/items/{supplierId}/account-info/list 响应枚举扩展 bankAccounts[].status 新增 REJECTED
2 账户详情 GET /admin/supplier/bank-accounts/{accountId}/view 响应枚举扩展 status 新增 REJECTED
3 新增账户 POST /admin/supplier/items/{supplierId}/bank-accounts/add 重放结果修正 已驳回请求重放返回 accountStatus=REJECTED
4 审批变更记录 GET /admin/supplier/items/{supplierId}/approval-records/page 查询枚举扩展 账户记录支持按 REJECTED 筛选并显示“已驳回”

三、接口详情

1. 账户列表 GET /admin/supplier/items/{supplierId}/account-info/list

VO: SupplierAccountInfoRespVO

使用场景

账户管理弹窗刷新企微审批后的账户状态。

入参

字段 位置 类型 必填 约束 说明
supplierId Path String 是 正整数 供应商 ID

出参

字段 类型 说明
data.bankAccounts[].status String 新增 REJECTED,表示已驳回且不可用
data.bankAccounts[].isDefault String 驳回账户为 NO

请求示例

GET /admin/supplier/items/2095000000000000001/account-info/list
Authorization: Bearer <token>

响应示例

{"code":200,"message":"成功","success":true,"data":{"supplierId":"2095000000000000001","bankAccounts":[{"accountId":"2095000000000000002","status":"REJECTED","isDefault":"NO"}]}}

空数据 / 降级响应

供应商没有可见账户时返回 bankAccounts=[];接口不提供降级成功。

错误响应

{"code":395001,"message":"供应商不存在","data":null,"success":false}

业务边界

  • 前端只有在 status=ACTIVE 时才允许选择账户或显示默认操作。

2. 账户详情 GET /admin/supplier/bank-accounts/{accountId}/view

VO: SupplierBankAccountDetailRespVO

使用场景

打开单个账户详情时展示当前终态。

入参

字段 位置 类型 必填 约束 说明
accountId Path String 是 正整数 账户 ID

出参

字段 类型 说明
data.status String 新增 REJECTED,表示已驳回且不可用
data.isDefault String 驳回账户为 NO

请求示例

GET /admin/supplier/bank-accounts/2095000000000000002/view
Authorization: Bearer <token>

响应示例

{"code":200,"message":"成功","success":true,"data":{"accountId":"2095000000000000002","status":"REJECTED","isDefault":"NO"}}

空数据 / 降级响应

账户不存在或不可见时返回业务失败,不返回空成功详情。

错误响应

{"code":395001,"message":"供应商不存在","data":null,"success":false}

业务边界

  • REJECTED 只读可见,但不能设为默认账户。

3. 新增账户 POST /admin/supplier/items/{supplierId}/bank-accounts/add

VO: SupplierBankAccountBatchCreateReqVO → List<BankAccountSubmitResultRespVO>

使用场景

新增账户提交企微审批,或以同一请求重放已完成结果。

入参

字段 位置 类型 必填 约束 说明
supplierId Path String 是 正整数 已生效供应商 ID
accounts Body Array 是 1~50 项 请求结构不变

出参

字段 类型 说明
data[].approvalStatus String 已驳回终态为 REJECTED
data[].accountStatus String 已驳回终态由 PENDING 修正为 REJECTED

请求示例

{"accounts":[{"accountType":"CORPORATE","bankName":"示例银行","accountNo":"6222000012345678"}]}

响应示例

{"code":200,"message":"成功","success":true,"data":[{"accountId":"2095000000000000002","approvalStatus":"REJECTED","accountStatus":"REJECTED","isDefault":"NO"}]}

空数据 / 降级响应

写接口不返回空成功列表;新提交在企微完成前仍返回 PENDING。

错误响应

{"code":395010,"message":"请先完成供应商注册","data":null,"success":false}

业务边界

  • 仅已完成驳回的请求返回 REJECTED;企微撤销继续沿用既有 PENDING 语义。

4. 审批变更记录 GET /admin/supplier/items/{supplierId}/approval-records/page

VO: SupplierApprovalRecordPageReqVO → PageResult<SupplierApprovalRecordRespVO>

使用场景

查询账户审批关联的状态变更记录。

入参

字段 位置 类型 必填 约束 说明
supplierId Path String 是 正整数 供应商 ID
targetType Query String 否 查询账户时传 ACCOUNT 目标类型
status Query String 否 新增 REJECTED 变更后状态

出参

字段 类型 说明
data.records[].status String 驳回记录为 REJECTED
data.records[].statusName String 驳回记录为“已驳回”

请求示例

GET /admin/supplier/items/2095000000000000001/approval-records/page?targetType=ACCOUNT&status=REJECTED&page=1&pageSize=20
Authorization: Bearer <token>

响应示例

{"code":200,"message":"成功","success":true,"data":{"records":[{"targetType":"ACCOUNT","status":"REJECTED","statusName":"已驳回"}],"total":1}}

空数据 / 降级响应

无匹配记录时返回 records=[];接口不提供降级成功。

错误响应

{"code":400,"message":"变更目标状态不合法","data":null,"success":false}

业务边界

  • status=REJECTED 配合 targetType=ACCOUNT 使用,不作为供应商主体生命周期筛选值。

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

  1. 企微处理完成后刷新账户列表,以 status 判断账户是否可用。
  2. 将 REJECTED 映射为“已驳回”,按不可用样式展示;只有 ACTIVE 可设为默认。
  3. 必须检查统一响应的 code 和 success,不能只判断 HTTP 状态。

五、数据库行为

企微驳回完成后,账户最终可观察状态为 REJECTED;历史同类异常会同步收敛。将 REJECTED 账户设为默认会失败且不改变账户或原默认账户。

六、边界行为

  • PENDING、REJECTED、DISABLED 均不可用,ACTIVE 才可用于收款。
  • 企微撤销仍保留 PENDING;本次未新增错误码,也未改变请求字段。

六.6、修改前后对比

场景 修改前 修改后
企微驳回 账户仍返回 PENDING 账户返回 REJECTED
已驳回请求重放 accountStatus=PENDING accountStatus=REJECTED

六.7、影响评估

  • 是否破坏向后兼容: 响应枚举扩展;前端需增加未知值处理。
  • 前端是否必须同步上线: 是。
  • 前端 workaround 清理点: 删除把企微驳回账户继续显示为“待审批”的兜底逻辑。

七、不影响范围

  • 不改变供应商注册随单账户的驳回退草稿语义。
  • 不改变企微撤销、审批通过、默认账户或停用流程。
  • 不影响小程序接口;没有新增错误码。

八、测试环境已验证

  • 列表和详情均返回业务成功,目标账户为 status=REJECTED、isDefault=NO。
  • 将该账户设为默认返回 code=395005、success=false,账户与原默认账户均未变化。
  • 企微已驳回且仍为 PENDING 的精确异常计数为 0。

十、相关文档

前端动作与当前状态

  • 将 REJECTED 显示为“已驳回”且不可用,只为 ACTIVE 显示默认操作。
  • 当前状态:待前端处理。

关联 / 联系人