Appearance
虚拟组织同步-前端对接文档
本文档面向前端开发,说明虚拟组织(虚拟通讯录)相关的两个功能对接:同步配置 与 ** 再次同步**。
一、同步配置 - 新增「虚拟组织」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 接口文档
同步虚拟组织
请求
- URL :
POST /sys/dataPushConfig/synVirtualOrgData - Content-Type :
application/json
请求体
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| orgId | String | 是 | 虚拟组织节点 ID(即 relationId) |
| appIds | String[] | 是 | 目标应用 ID 列表,通常为 [row.appId] |
| event | String | 是 | 操作类型:add_update 或 delete |
| batchNo | String | 否 | 批次号,可不传 |
示例
json
{
"orgId": "虚拟组织节点ID",
"appIds": ["应用ID"],
"event": "add_update"
}响应
- 成功 :
Boolean类型,true表示提交成功(实际推送为异步) - 失败 :抛出业务异常
2.3 同步记录字段映射
从同步记录行 row 构造请求参数:
| 请求参数 | 来源 | 说明 |
|---|---|---|
| orgId | row.relationId | 虚拟组织节点 ID |
| appIds | [row.appId] | 单条记录对应一个应用,需包装成数组 |
| event | row.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: '虚拟组织' }
五、前置条件
- 应用已与虚拟通讯录在「通讯录关联应用」中建立关联
- 目标对接方已提供虚拟组织变更的接收接口,并完成联调
