主题
人员管理接口文档
概述
人员管理模块提供了子应用向一单位一平台查询和同步人员数据的能力,支持人员信息的查询、人员搜索、角色部门查询等功能。所有接口遵循国密 SM2/SM4 数字信封加密方案,确保数据传输安全。
交互方向
本模块包含以下交互方向:
| 交互方向 | 接口类型 | 子应用实现要求 | 说明 |
|---|---|---|---|
| 子应用→一单位一平台(查询) | 查询人员详情、人员列表、人员搜索、人员角色、人员部门 | ❌ 无需实现 | 子应用主动查询人员数据,一单位一平台提供查询接口 |
重要说明: 本模块所有接口均为"子应用→一单位一平台"查询接口,子应用直接调用一单位一平台提供的接口,无需额外实现。
使用场景
- 子应用→一单位一平台(查询): 子应用向一单位一平台查询人员详情
- 子应用→一单位一平台(查询): 子应用向一单位一平台查询人员列表(支持分页和条件筛选)
- 子应用→一单位一平台(查询): 子应用向一单位一平台搜索人员
- 子应用→一单位一平台(查询): 子应用向一单位一平台查询人员角色、部门等关联信息
- 数据同步: 子应用通过人员列表接口定期同步一单位一平台的人员数据
接口设计原则
所有接口均采用国密 SM2/SM4 数字信封加密方案:
- 统一 POST 方式:所有接口使用 POST 方法,业务参数在 encryptData 中加密传输
- 无路径参数:URL 路径中不包含任何业务参数(如 userId),所有业务参数均在加密报文中
- 安全性:通过 SM2 混合加密和数字签名确保数据传输的机密性、完整性和不可抵赖性
适用范围
适用于子应用向一单位一平台查询人员数据以及同步人员信息到本地的场景。
术语定义
核心概念
| 术语 | 说明 |
|---|---|
| 一单位一平台 | 核心管理平台,负责数据存储、权限管理、接口路由等核心功能 |
| 子应用 | 接入一单位一平台的独立业务系统,通过一单位一平台网关与其他系统交互 |
| 网关 | 一单位一平台的统一入口,负责路由转发、身份认证、权限控制、速率限制等 |
操作语义
| 术语 | 说明 | 数据流向 | 接口实现方 |
|---|---|---|---|
| 查询 | 主动请求获取数据 | 子应用→一单位一平台 | 一单位一平台实现 |
重要提示:
- "查询"表示子应用主动向一单位一平台请求数据,由一单位一平台提供查询接口
系统架构
数据流向
查询流程(子应用→一单位一平台)
子应用 → [加密请求] → 一单位一平台 → [加密响应] → 子应用接口列表
子应用→一单位一平台(查询接口)
| 接口名称 | 请求地址 | 交互方向 | 说明 |
|---|---|---|---|
| 查询人员详情 | POST /hztech-application/user/detail | 子→主(查询) | 获取单个人员信息 |
| 人员列表查询 | POST /hztech-application/user/list | 子→主(查询) | 分页查询人员列表 |
| 人员搜索 | POST /hztech-application/user/search | 子→主(查询) | 搜索人员 |
| 查询人员角色 | POST /hztech-application/user/roles | 子→主(查询) | 查询人员角色 |
| 查询人员部门 | POST /hztech-application/user/department | 子→主(查询) | 查询人员部门 |
注: 所有业务参数均在 encryptData 中加密传输,URL 路径中不包含任何业务参数。
接口详情
1.1 查询人员详情
接口说明
查询单个人员的详细信息。子应用向一单位一平台请求人员数据。
请求方式
POST
请求地址
POST /hztech-application/user/detail
交互方向
子应用 → 一单位一平台 (查询)
完整时序图
请求参数
| 参数名 | 类型 | 必填 | 说明 | 示例值 |
|---|---|---|---|---|
| id | String | 是 | 用户ID | "1123598821738675203" |
HTTP 请求示例
http
POST /hztech-application/user/detail HTTP/1.1
Host: main.example.com
Content-Type: application/json
{
"appId": "SUB_APP_001",
"version": "1.0",
"timestamp": 1735516800000,
"nonce": "f6a7b8c9-d0e1-1234-5678-9abcdef01234",
"encryptKey": "MIIBOgIBAAJBAKj34GkxFhD90vcNLYLInFEX6...",
"encryptData": "U2FsdGVkX1+jmZn5KqWYEgjPkQKpH5KqWYEg...",
"sign": "MEUCIQDZ5KqWYEgjPkQKpH5KqWYEgjPkQKpH5KqWY..."
}encryptData 解密后的业务数据
json
{
"id": "1123598821738675203"
}HTTP 响应示例
json
{
"code": 200,
"message": "success",
"data": {
"id": "1123598821738675203",
"createUser": "1123598821738675201",
"createDept": "1123598813738675201",
"createTime": "2019-04-27 17:03:38",
"updateUser": "1123598821738675201",
"updateTime": "2019-04-27 17:03:38",
"status": 1,
"isDeleted": 0,
"tenantId": "000000",
"code": "",
"userType": 1,
"account": "manager",
"name": "经理",
"realName": "经理",
"avatar": "https://hztech.cn/images/logo-small.png",
"email": "ma****@hztech.vip",
"phone": "",
"birthday": "2018-08-08 00:00:00",
"sex": 1,
"roleId": "1123598816738675204",
"deptId": "1123598813738675202",
"postId": "1123598817738675206",
"leaderId": "",
"isLeader": 0,
"employmentStatus": "1",
"tenantName": "管理组",
"userTypeName": "WEB",
"roleName": "经理",
"deptName": "常州分公司",
"dataSource": -1,
"postName": "技术经理",
"sexName": "男",
"userExt": ""
}
}错误响应示例
json
{
"code": 2501,
"message": "用户不存在",
"timestamp": 1735516801000
}1.2 人员列表查询
接口说明
分页查询人员列表。支持按部门、职位、状态等条件筛选。结果按照更新时间倒序排列。
请求方式
POST
请求地址
POST /hztech-application/user/list
交互方向
子应用 → 一单位一平台 (查询)
完整时序图
请求参数
| 参数名 | 类型 | 必填 | 说明 | 示例值 |
|---|---|---|---|---|
| pageNum | Integer | 否 | 页码(默认1) | 1 |
| pageSize | Integer | 否 | 每页数量(默认20) | 20 |
| realName | String | 否 | 真实姓名(模糊查询) | "张" |
| account | String | 否 | 账号(精确查询) | "manager" |
| deptId | String | 否 | 部门ID | "1123598813738675202" |
| status | Integer | 否 | 状态(1:启用,0:禁用) | 1 |
| employmentStatus | String | 否 | 在职状态("1":在职,"0":离职) | "1" |
HTTP 请求示例
http
POST /hztech-application/user/list HTTP/1.1
Host: main.example.com
Content-Type: application/json
{
"appId": "SUB_APP_001",
"version": "1.0",
"timestamp": 1735516800000,
"nonce": "f6a7b8c9-d0e1-1234-5678-9abcdef01234",
"encryptKey": "MIIBOgIBAAJBAKj34GkxFhD90vcNLYLInFEX6...",
"encryptData": "U2FsdGVkX1+jmZn5KqWYEgjPkQKpH5KqWYEg...",
"sign": "MEUCIQDZ5KqWYEgjPkQKpH5KqWYEgjPkQKpH5KqWY..."
}encryptData 解密后的业务数据
json
{
"pageNum": 1,
"pageSize": 20,
"deptId": "1123598813738675202",
"status": 1,
"employmentStatus": "1"
}HTTP 响应示例
json
{
"code": 200,
"message": "success",
"data": {
"total": 100,
"pageNum": 1,
"pageSize": 20,
"pages": 5,
"list": [
{
"id": "1123598821738675203",
"account": "manager",
"realName": "经理",
"email": "ma****@hztech.vip",
"phone": "",
"sex": 1,
"deptId": "1123598813738675202",
"deptName": "常州分公司",
"postName": "技术经理",
"roleName": "经理",
"status": 1,
"employmentStatus": "1",
"createTime": "2019-04-27 17:03:38"
}
]
}
}1.3 人员搜索
接口说明
根据关键词搜索人员。支持按姓名、手机号、邮箱搜索。
请求方式
POST
请求地址
POST /hztech-application/user/search
交互方向
子应用 → 一单位一平台 (查询)
完整时序图
请求参数
| 参数名 | 类型 | 必填 | 说明 | 示例值 |
|---|---|---|---|---|
| keyword | String | 是 | 搜索关键词 | "经理" |
| searchType | String | 否 | 搜索类型(all/name/phone/email) | "all" |
| pageNum | Integer | 否 | 页码(默认1) | 1 |
| pageSize | Integer | 否 | 每页数量(默认20) | 20 |
HTTP 请求示例
http
POST /hztech-application/user/search HTTP/1.1
Host: main.example.com
Content-Type: application/json
{
"appId": "SUB_APP_001",
"version": "1.0",
"timestamp": 1735516800000,
"nonce": "f6a7b8c9-d0e1-1234-5678-9abcdef01234",
"encryptKey": "MIIBOgIBAAJBAKj34GkxFhD90vcNLYLInFEX6...",
"encryptData": "U2FsdGVkX1+jmZn5KqWYEgjPkQKpH5KqWYEg...",
"sign": "MEUCIQDZ5KqWYEgjPkQKpH5KqWYEgjPkQKpH5KqWY..."
}encryptData 解密后的业务数据
json
{
"keyword": "经理",
"searchType": "all",
"pageNum": 1,
"pageSize": 20
}HTTP 响应示例
json
{
"code": 200,
"message": "success",
"data": {
"total": 5,
"pageNum": 1,
"pageSize": 20,
"list": [
{
"id": "1123598821738675203",
"account": "manager",
"realName": "经理",
"phone": "",
"email": "ma****@hztech.vip",
"deptName": "常州分公司"
}
]
}
}1.4 查询人员角色
接口说明
查询指定人员的角色列表。
请求方式
POST
请求地址
POST /hztech-application/user/roles
交互方向
子应用 → 一单位一平台 (查询)
完整时序图
请求参数
| 参数名 | 类型 | 必填 | 说明 | 示例值 |
|---|---|---|---|---|
| id | String | 是 | 用户ID | "1123598821738675203" |
HTTP 请求示例
http
POST /hztech-application/user/roles HTTP/1.1
Host: main.example.com
Content-Type: application/json
{
"appId": "SUB_APP_001",
"version": "1.0",
"timestamp": 1735516800000,
"nonce": "f6a7b8c9-d0e1-1234-5678-9abcdef01234",
"encryptKey": "MIIBOgIBAAJBAKj34GkxFhD90vcNLYLInFEX6...",
"encryptData": "U2FsdGVkX1+jmZn5KqWYEgjPkQKpH5KqWYEg...",
"sign": "MEUCIQDZ5KqWYEgjPkQKpH5KqWYEgjPkQKpH5KqWY..."
}encryptData 解密后的业务数据
json
{}HTTP 响应示例
json
{
"code": 200,
"message": "success",
"data": {
"id": "1123598821738675203",
"account": "manager",
"realName": "经理",
"roleId": "1123598816738675204",
"roleName": "经理"
}
}1.5 查询人员部门
接口说明
查询人员所属部门信息。
请求方式
POST
请求地址
POST /hztech-application/user/department
交互方向
子应用 → 一单位一平台 (查询)
完整时序图
请求参数
| 参数名 | 类型 | 必填 | 说明 | 示例值 |
|---|---|---|---|---|
| id | String | 是 | 用户ID | "1123598821738675203" |
HTTP 请求示例
http
POST /hztech-application/user/department HTTP/1.1
Host: main.example.com
Content-Type: application/json
{
"appId": "SUB_APP_001",
"version": "1.0",
"timestamp": 1735516800000,
"nonce": "f6a7b8c9-d0e1-1234-5678-9abcdef01234",
"encryptKey": "MIIBOgIBAAJBAKj34GkxFhD90vcNLYLInFEX6...",
"encryptData": "U2FsdGVkX1+jmZn5KqWYEgjPkQKpH5KqWYEg...",
"sign": "MEUCIQDZ5KqWYEgjPkQKpH5KqWYEgjPkQKpH5KqWY..."
}encryptData 解密后的业务数据
json
{}HTTP 响应示例
json
{
"code": 200,
"message": "success",
"data": {
"id": "1123598821738675203",
"account": "manager",
"realName": "经理",
"deptId": "1123598813738675202",
"deptName": "常州分公司"
}
}数据模型
人员对象 (User)
完整的人员数据结构:
json
{
"id": "string", // 用户ID(系统生成)
"createUser": "string", // 创建人ID
"createDept": "string", // 创建部门ID
"createTime": "string", // 创建时间
"updateUser": "string", // 更新人ID
"updateTime": "string", // 更新时间
"status": 1, // 账号状态(1:启用,0:禁用)
"isDeleted": 0, // 是否删除(1:已删除,0:未删除)
"tenantId": "string", // 租户ID
"code": "string", // 用户编码
"userType": 1, // 用户类型
"account": "string", // 账号(登录名)
"name": "string", // 用户名
"realName": "string", // 真实姓名
"avatar": "string", // 头像URL
"email": "string", // 邮箱
"phone": "string", // 手机号
"birthday": "string", // 生日
"sex": 1, // 性别(1:男,2:女)
"roleId": "string", // 角色ID
"deptId": "string", // 部门ID
"postId": "string", // 岗位ID
"leaderId": "string", // 直属领导ID
"isLeader": 0, // 是否领导(1:是,0:否)
"employmentStatus": "string", // 在职状态
"tenantName": "string", // 租户名称
"userTypeName": "string", // 用户类型名称
"roleName": "string", // 角色名称
"deptName": "string", // 部门名称
"dataSource": -1, // 数据来源
"postName": "string", // 岗位名称
"sexName": "string", // 性别名称
"userExt": "string" // 用户扩展信息
}字段说明
| 字段 | 类型 | 必填 | 说明 | 约束 |
|---|---|---|---|---|
| id | String | 是 | 用户唯一标识 | 系统生成,不可修改 |
| account | String | 是 | 账号(登录名) | 4-50个字符,全局唯一 |
| realName | String | 是 | 真实姓名 | 2-50个字符 |
| String | 否 | 邮箱 | 格式验证 | |
| phone | String | 否 | 手机号 | 11位数字 |
| sex | Integer | 是 | 性别 | 1或2 |
| avatar | String | 否 | 头像URL | URL格式 |
| deptId | String | 否 | 部门ID | 关联部门表 |
| deptName | String | 否 | 部门名称 | 冗余字段 |
| postId | String | 否 | 岗位ID | 关联岗位表 |
| postName | String | 否 | 岗位名称 | 冗余字段 |
| roleId | String | 否 | 角色ID | 关联角色表 |
| roleName | String | 否 | 角色名称 | 冗余字段 |
| status | Integer | 是 | 账号状态 | 1或0 |
| isDeleted | Integer | 是 | 是否删除 | 1或0 |
| employmentStatus | String | 否 | 在职状态 | "1"或"0" |
| birthday | String | 否 | 生日 | YYYY-MM-DD HH:mm:ss |
| createTime | String | 是 | 创建时间 | YYYY-MM-DD HH:mm:ss |
| updateTime | String | 是 | 更新时间 | YYYY-MM-DD HH:mm:ss |
| createUser | String | 否 | 创建人ID | 用户ID |
| updateUser | String | 否 | 更新人ID | 用户ID |
| createDept | String | 否 | 创建部门ID | 部门ID |
| tenantId | String | 是 | 租户ID | 租户标识 |
| tenantName | String | 否 | 租户名称 | 冗余字段 |
| code | String | 否 | 用户编码 | 自定义编码 |
| userType | Integer | 是 | 用户类型 | 数字标识 |
| userTypeName | String | 否 | 用户类型名称 | 冗余字段 |
| name | String | 否 | 用户名 | 冗余字段 |
| leaderId | String | 否 | 直属领导ID | 用户ID |
| isLeader | Integer | 否 | 是否领导 | 1或0 |
| dataSource | Integer | 否 | 数据来源 | 数字标识 |
| userExt | String | 否 | 用户扩展信息 | JSON字符串 |
枚举值说明
性别 (sex):
1: 男2: 女
账号状态 (status):
1: 启用0: 禁用
是否删除 (isDeleted):
1: 已删除0: 未删除
是否领导 (isLeader):
1: 是领导0: 不是领导
在职状态 (employmentStatus):
"1": 在职"0": 离职
错误码
业务错误码
| 错误码 | 说明 | 处理建议 |
|---|---|---|
| 2501 | 用户不存在 | 检查id是否正确 |
| 2502 | 用户编码已存在 | 使用其他编码 |
| 2503 | 账号已存在 | 使用其他账号 |
| 2504 | 部门不存在 | 检查deptId是否正确 |
| 2505 | 参数错误 | 检查请求参数 |
| 2506 | 无数据权限 | 检查用户是否有权限查看该数据 |
系统错误码
| 错误码 | 说明 | 处理建议 |
|---|---|---|
| 1001 | 时间戳过期 | 同步系统时间 |
| 1002 | 重复请求 | 检查nonce生成逻辑 |
| 1003 | 签名验证失败 | 检查密钥配置 |
| 1004 | 解密失败 | 检查密钥配置 |
| 1005 | appId不存在 | 检查appId注册 |
| 1006 | 业务逻辑错误 | 根据具体错误处理 |
相关文档
文档版本: v1.0.0 最后更新: 2026-01-04