Skip to content

虚拟组织同步-前端对接文档

本文档面向前端开发,说明虚拟组织(虚拟通讯录)相关的两个功能对接:同步配置 与 ** 再次同步**。

一、同步配置 - 新增「虚拟组织」Tab

1.1 页面位置

应用管理 → 应用列表 → 某个应用的「同步配置」抽屉(scimConfig.vue

1.2 改造说明

在现有「账户」「组织机构」两个 Tab 基础上,新增第三个 Tab:「虚拟组织」

Tab 索引名称pushConfigType
0账户ACCOUNT
1组织机构ORG
2虚拟组织VIRTUAL_ORG

1.3 表单字段(与账户/组织类似)

虚拟组织 Tab 的表单字段与账户、组织机构保持一致:

字段说明必填
应用名称只读展示-
SCIM同步地址对接方接收虚拟组织变更的接口地址
是否开启开关-
协议类型BASIC-
用户名BASIC 认证用户名
密码BASIC 认证密码
是否自动推送开关-

SCIM同步地址 占位/提示文案示例:接收虚拟组织变更的接口,如:http://xxx.com/api/application/scim/virtual-org

1.4 使用的接口

配置详情查询(切换 Tab 时)

  • 接口POST /sys/dataPushConfig/detail
  • 请求体
json
{
  "appId": "应用ID",
  "pushType": "VIRTUAL_ORG"
}

保存配置(提交时)

  • 接口POST /sys/dataPushConfig/save
  • 请求体
json
{
  "appId": "应用ID",
  "pushConfigType": "VIRTUAL_ORG",
  "serverUrl": "http://xxx.com/api/xxx",
  "enable": true,
  "apiAuthType": "BASIC",
  "userName": "用户名",
  "password": "RSA加密后的密码(若未修改可为空)",
  "autoPush": false
}

1.5 前端实现参考

javascript
// tabsList 新增一项
tabsList: [
  { id: 0, text: '账户' },
  { id: 1, text: '组织机构' },
  { id: 2, text: '虚拟组织' }
]

// getDetail 时 pushType 映射
const pushTypeMap = {
  0: 'ACCOUNT',
  1: 'ORG',
  2: 'VIRTUAL_ORG'
}
const pushType = pushTypeMap[this.activeName]
await detail({ appId: this.param.appId, pushType })

// slotScim 的 help-tips 根据 activeName 区分
// activeName === 0: 接收同步账户的接口...
// activeName === 1: 接收同步组织机构的接口...
// activeName === 2: 接收虚拟组织变更的接口...

二、再次同步 - 虚拟组织接口

2.1 使用场景

同步记录 页面(synchronousRecord/index.vue),当某条记录的对象类型为「虚拟组织」时,点击「再次同步」需调用虚拟组织专用接口。

2.2 接口文档

同步虚拟组织

请求

  • URLPOST /sys/dataPushConfig/synVirtualOrgData
  • Content-Typeapplication/json

请求体

参数类型必填说明
orgIdString虚拟组织节点 ID(即 relationId)
appIdsString[]目标应用 ID 列表,通常为 [row.appId]
eventString操作类型:add_updatedelete
batchNoString批次号,可不传

示例

json
{
  "orgId": "虚拟组织节点ID",
  "appIds": ["应用ID"],
  "event": "add_update"
}

响应

  • 成功Boolean 类型,true 表示提交成功(实际推送为异步)
  • 失败 :抛出业务异常

2.3 同步记录字段映射

从同步记录行 row 构造请求参数:

请求参数来源说明
orgIdrow.relationId虚拟组织节点 ID
appIds[row.appId]单条记录对应一个应用,需包装成数组
eventrow.handleType同步记录中的操作类型

handleType 取值:

  • add_update:新增或更新
  • delete:删除

2.4 调用示例

javascript
// 当 row.pushConfigType === 'VIRTUAL_ORG' 时
const params = {
  orgId: row.relationId,
  appIds: [row.appId],
  event: row.handleType  // 'add_update' | 'delete'
}
const res = await synVirtualOrgData(params)
if (res?.success) {
  // 提交成功,刷新列表
}

三、API 汇总

功能方法路径
配置详情POST/sys/dataPushConfig/detail
保存配置POST/sys/dataPushConfig/save
同步虚拟组织POST/sys/dataPushConfig/synVirtualOrgData
查询同步记录POST/sys/dataPushConfig/logAll

四、同步记录展示

同步记录列表中,对象类型需支持「虚拟组织」的展示与筛选:

  • 展示pushConfigType === 'VIRTUAL_ORG' 时显示「虚拟组织」
  • 筛选 :对象类型筛选项增加 { value: 'VIRTUAL_ORG', label: '虚拟组织' }

五、前置条件

  1. 应用已与虚拟通讯录在「通讯录关联应用」中建立关联
  2. 目标对接方已提供虚拟组织变更的接收接口,并完成联调