11 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 | 7101 | 供应商合作中资料变更接入企微审批 | admin | lc(GIT) | 修改接口 | deployed | verified | verified | mmg | fbed9101 | 2026-09-05 | 后端已部署并通过 TEST;前端需将合作中资料保存结果按企微异步审批处理,并展示审核中。 | 2026-09-05 | dev-v3 |
供应商模块:合作中资料变更接入企微审批
服务:
hl-resource-service、hl-user-serviceIssue: #7101 PR: #7125、#7128 日期: 2026-09-05 影响范围: 管理后台供应商资料保存与新增收款账户结果展示
⚠️ 关键变化
合作中(ACTIVE)供应商保存资料不再直接更新正式资料:接口先返回企微审批受理结果,待审批时统一显示“审核中”;驳回不更新,通过后才应用本次申请。新增账户仍独立审批,本次补充中文审批状态字段。
二、变更接口清单
| # | 接口 | 方法 | 路径 | 变更类型 | 说明 |
|---|---|---|---|---|---|
| 1 | 更新供应商 | PUT | /admin/supplier/items/{supplierId}/update |
行为与响应修改 | ACTIVE 改为企微审批后生效,响应新增 approval |
| 2 | 批量新增收款账户 | POST | /admin/supplier/items/{supplierId}/bank-accounts/add |
响应字段扩展 | 每项新增 approvalStatusName |
三、接口详情
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 | ACTIVE 必填 |
最长 500 | 变更原因 |
| 资料字段 | Body | 原类型 | 否 | 沿用原契约 | 至少产生一项实际变化 |
contacts |
Body | Array | 否 | 完整快照 | 已有联系人带 contactId、expectedUpdateTime;新增联系人省略 contactId |
出参 Result<SupplierWriteRespVO>
| 字段 | 类型 | 说明 |
|---|---|---|
data.status |
String | 审批期间仍为 ACTIVE |
data.statusName |
String | 待审批时为“审核中” |
data.approval.approvalLogId |
String | 资料变更审批记录 ID |
data.approval.approvalStatus |
String | 初次受理为 PENDING |
data.approval.approvalStatusName |
String | 初次受理为“审核中” |
data.approval.spNo |
String | 企业微信审批单号 |
data.approval.syncStatus |
String | 审批同步状态 |
data.updateTime |
String | 审核中仍返回正式资料当前版本 |
请求示例
{
"remark": "更新合作备注",
"changeReason": "业务资料更新",
"expectedUpdateTime": "2026-09-05 09:00:00"
}
响应示例
{
"code": 200,
"message": "成功",
"success": true,
"data": {
"supplierId": "2095000000000000001",
"status": "ACTIVE",
"statusName": "审核中",
"approval": {
"approvalLogId": "2095000000000000002",
"provider": "WECOM",
"approvalStatus": "PENDING",
"approvalStatusName": "审核中",
"spNo": "202609050001",
"syncStatus": "REQUESTING"
},
"updateTime": "2026-09-05 09:00:00"
}
}
空数据 / 降级响应
成功受理时 data.approval 不为空;企微结果不确定时保留审批事实,前端不得自动重复提交。草稿直接保存时 data.approval=null。
错误响应
{
"code": 395014,
"message": "数据已被他人修改,请刷新后重试",
"success": false,
"data": null
}
400 表示字段、联系人快照或变更原因不合法;395005 表示当前状态不允许;395019~395022 表示企微未配置、账号未绑定、提交失败或状态待对账。未新增错误码。
业务边界
- 审核中正式资料保持原值;驳回不更新,通过后一次性应用申请中的冻结值。
- 新增联系人必须省略
contactId,不得发送contactId:null;只修正内部审批快照兼容,不放宽外部显式空 ID 校验。 - 企微表单的变更明细只列实际差异,身份证号和个人电话完整展示;相关附件和当前正式资料为选填。
2. 批量新增收款账户 POST /admin/supplier/items/{supplierId}/bank-accounts/add
VO: SupplierBankAccountBatchCreateReqVO → List<BankAccountSubmitResultRespVO>
使用场景
为合作中供应商新增一至五十个收款账户,每个账户独立提交企微审批。
入参
| 字段 | 位置 | 类型 | 必填 | 约束 | 说明 |
|---|---|---|---|---|---|
supplierId |
Path | String | 是 | 正整数 | 合作中供应商 ID |
accounts |
Body | Array | 是 | 1~50 项 | 账户列表,原请求结构不变 |
出参 Result<List<BankAccountSubmitResultRespVO>>
| 字段 | 类型 | 说明 |
|---|---|---|
data[].approvalStatus |
String | PENDING / APPROVED / REJECTED |
data[].approvalStatusName |
String | “审核中” / “已通过” / “已驳回” |
data[].accountStatus |
String | 审核中为 PENDING,通过为 ACTIVE,驳回为 REJECTED |
data[].spNo |
String | 企业微信审批单号 |
请求示例
{
"accounts": [{
"accountType": "PERSONAL",
"bankName": "示例银行",
"bankBranch": "示例支行",
"accountNo": "6222000012345678",
"proofFileUrls": [],
"settleMode": "SINGLE",
"invoiceType": "NONE"
}]
}
响应示例
{
"code": 200,
"message": "成功",
"success": true,
"data": [{
"accountId": "2095000000000000003",
"approvalLogId": "2095000000000000004",
"provider": "WECOM",
"approvalStatus": "PENDING",
"approvalStatusName": "审核中",
"spNo": "202609050002",
"syncStatus": "REQUESTING",
"accountStatus": "PENDING",
"isDefault": "NO"
}]
}
空数据 / 降级响应
写接口不返回空成功列表;结果不确定时账户保持不可用,前端不得自动重提。
错误响应
{
"code": 395011,
"message": "该账户正在审批中,请勿重复提交",
"success": false,
"data": null
}
400 表示账户字段或组合规则不合法;395010 表示供应商尚未生效;其他企微错误沿用现有 395019~395022。
业务边界
- 每个账户独立审批;审核中保持
PENDING且不可收款、不可设为默认。 - 企微驳回后为
REJECTED,通过后为ACTIVE;前端只把ACTIVE当作生效账户。
四、契约约束与正确调用方式
- 更新接口返回成功后,若
data.approval.approvalStatus=PENDING,展示“审核中”并保留正式资料页面值,不做本地乐观覆盖。 - 通过详情、审批记录或账户列表刷新终态;审批只能在企业微信处理,管理端不发送通过或驳回命令。
- 联系人数组是完整快照;新增项省略
contactId,已有项同时传contactId与expectedUpdateTime。 - 所有接口同时检查 HTTP 状态和响应体
code/success。
五、数据库行为
- 本次无数据库结构或迁移变化。
- 资料审批中不写正式资料;通过后应用冻结申请,驳回后正式版本和值均不变。
- 新账户审批中为
PENDING,通过后为ACTIVE,驳回后为REJECTED。
六、边界行为
- 模板审批节点由企业微信配置决定,后端不校验“恰好一级”。
- 表单固定使用已配置的八个
Text控件;相关附件与当前正式资料允许为空。 - 企微回调或轮询完成前,前端只展示受理状态,不推断最终结果。
六.5、枚举 / 数据字典
| 字段 | 值 | 中文 | 说明 |
|---|---|---|---|
approvalStatus |
PENDING |
审核中 | 尚未终结 |
approvalStatus |
APPROVED |
已通过 | 业务变更已应用 |
approvalStatus |
REJECTED |
已驳回 | 业务变更未应用 |
accountStatus |
PENDING |
待审批 | 账户不可用 |
accountStatus |
ACTIVE |
生效中 | 账户可用 |
accountStatus |
REJECTED |
已驳回 | 账户不可用 |
六.6、修改前后对比
| 行为 | 修改前 | 修改后 |
|---|---|---|
ACTIVE 供应商保存资料 |
直接更新正式资料 | 返回企微审批;通过后更新,驳回不更新 |
| 资料保存响应 | 无独立资料审批结果 | 返回 data.approval 与“审核中”状态 |
| 新增账户响应 | 仅英文审批状态 | 增加 approvalStatusName 中文状态 |
六.7、影响评估
- 是否破坏向后兼容: 是;合作中资料保存由同步生效改为异步审批。
- 前端是否必须同步上线: 是。
- 前端 workaround 清理点: 删除保存成功后立即以请求值覆盖正式资料的逻辑,改为展示“审核中”并刷新终态。
七、不影响范围
- 草稿供应商直接保存、注册审批、主体状态审批、合同、默认账户和停用流程不变。
- 新增账户的请求路径、请求字段和独立审批语义不变。
- 未新增数据库、配置、Redis、MQ 或错误码。
八、测试环境已验证
PUT /admin/supplier/items/{supplierId}/update → PENDING / 审核中,正式资料保持原值 ✓
企微通过资料变更 → 正式资料更新,身份证号与电话完整值可见 ✓
企微驳回资料变更 → 正式资料和值版本均不变 ✓
POST /admin/supplier/items/{supplierId}/bank-accounts/add → PENDING / 审核中 ✓
企微通过新增账户 → ACTIVE ✓
企微驳回新增账户 → REJECTED,未激活 ✓
资料审批使用模板 3WNhaxns4i6kfVs74gz4qZQhFxy4iJY4anxMuvYw;八个 Text 控件、实际差异格式、完整身份证号/电话和两个选填项已逐项验证。部署提交为 6bc1c1262e5e4902a893f30fac875d35a65f8a76。
十、相关文档
前端动作与当前状态
- 合作中资料保存成功后读取
data.approval,展示“审核中”,刷新终态后再更新正式资料。 - 新增账户直接展示
approvalStatusName,并按accountStatus判断是否可用。 - 新增联系人省略
contactId,已有联系人继续携带 ID 与版本。 - 当前状态:待前端处理。
关联 / 联系人
链接
- Issue: #7101
- PR: #7125
- Merge commit: 91a965f0b0f403a0f8c9d3990587f09ea780c9dd
联系人
- 后端负责人: @lc