Skip to content

角色管理接口文档

概述

角色管理模块提供了一单位一平台向子应用同步角色数据的能力,以及子应用向一单位一平台查询角色数据的能力,支持角色的创建、更新、删除以及查询等功能。所有接口遵循国密 SM2/SM4 数字信封加密方案,确保数据传输安全。

交互方向

本模块包含以下交互方向:

交互方向接口类型子应用实现要求说明
一单位一平台→子应用(推送)创建角色、更新角色、删除角色必须实现接收接口一单位一平台主动推送角色数据变更,子应用需实现对应接收接口
子应用→一单位一平台(查询)角色详情查询、角色列表查询❌ 无需实现子应用主动查询角色数据,一单位一平台提供查询接口

重要说明:

  • 对于"一单位一平台→子应用"的推送接口,子应用必须实现对应的接收接口
  • 对于"子应用→一单位一平台"的查询接口,子应用直接调用一单位一平台提供的接口,无需额外实现

使用场景

  • 一单位一平台→子应用(推送): 一单位一平台向子应用推送角色创建、更新、删除操作
  • 子应用→一单位一平台(查询): 子应用向一单位一平台查询角色详情、角色列表
  • 数据同步: 子应用通过角色列表接口定期同步一单位一平台的角色数据

接口设计原则

所有接口均采用国密 SM2/SM4 数字信封加密方案:

  1. 统一 POST 方式:所有接口使用 POST 方法,业务参数在 encryptData 中加密传输
  2. 无路径参数:URL 路径中不包含任何业务参数(如 roleId),所有业务参数均在加密报文中
  3. 安全性:通过 SM2 混合加密和数字签名确保数据传输的机密性、完整性和不可抵赖性

适用范围

适用于需要统一管理用户角色和权限的子应用系统。

术语定义

核心概念

术语说明
一单位一平台核心管理平台,负责数据存储、权限管理、接口路由等核心功能
子应用接入一单位一平台的独立业务系统,通过一单位一平台网关与其他系统交互
网关一单位一平台的统一入口,负责路由转发、身份认证、权限控制、速率限制等

操作语义

术语说明数据流向接口实现方
查询主动请求获取数据子应用→一单位一平台一单位一平台实现
推送主动通知数据变更一单位一平台→子应用子应用实现接收

重要提示:

  • "查询"表示子应用主动向一单位一平台请求数据,由一单位一平台提供查询接口
  • "推送"表示一单位一平台主动通知子应用数据变更,子应用必须实现对应的接收接口

系统架构

数据流向

查询流程(子应用→一单位一平台)

子应用 → [加密请求] → 一单位一平台 → [加密响应] → 子应用

推送流程(一单位一平台→子应用)

一单位一平台 → [加密推送] → 子应用接收接口 → [加密响应] → 一单位一平台

重要: 对于推送接口,子应用必须实现接收接口

接口列表

一单位一平台→子应用(推送接口)

接口名称请求地址交互方向说明
创建角色POST /ydyp/role/create主→子(推送)创建新角色
更新角色POST /ydyp/role/update主→子(推送)更新角色信息
删除角色POST /ydyp/role/delete主→子(推送)删除角色

⚠️ 重要提示: 以上"主→子(推送)"接口需要子应用实现接收接口,接收一单位一平台推送的角色数据变更

子应用→一单位一平台(查询接口)

接口名称请求地址交互方向说明
角色详情查询POST /hztech-application/role/detail子→主(查询)获取单个角色
角色列表查询POST /hztech-application/role/list子→主(查询)分页查询角色列表

: 所有业务参数均在 encryptData 中加密传输,URL 路径中不包含任何业务参数。

接口详情

1.1 创建角色

⚠️ 子应用需实现此接口

本接口需要子应用实现接收接口,接收一单位一平台推送的角色创建通知。

实现要求:

  • 子应用需在一单位一平台注册接收接口地址
  • 接收接口必须验签并解密一单位一平台的推送数据
  • 接收接口需返回加密的响应报文

时序说明:

  1. 一单位一平台检测到角色创建事件
  2. 一单位一平台向子应用注册的接收地址发送加密推送
  3. 子应用接收接口验签、解密、处理数据
  4. 子应用返回加密响应

接口说明

创建新的角色,用于系统权限管理。一单位一平台向子应用推送新角色数据。

请求方式

POST

请求地址

POST /ydyp/role/create

交互方向

一单位一平台 → 子应用 (推送)

完整时序图

请求参数

参数名类型必填说明示例值
roleNameString角色名称"系统管理员"
roleCodeString角色编码"ADMIN"
descriptionString角色描述"系统管理员角色"
statusInteger状态(1:启用,0:禁用)1
sortInteger排序号0

HTTP 请求示例

http
POST /ydyp/role/create HTTP/1.1
Host: subapp.example.com
Content-Type: application/json

{
  "appId": "MAIN_SYSTEM",
  "version": "1.0",
  "timestamp": 1735516800000,
  "nonce": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
  "encryptKey": "MIIBOgIBAAJBAKj34GkxFhD90vcNLYLInFEX6...",
  "encryptData": "U2FsdGVkX1+jmZn5KqWYEgjPkQKpH5KqWYEg...",
  "sign": "MEUCIQDZ5KqWYEgjPkQKpH5KqWYEgjPkQKpH5KqWY..."
}

encryptData 解密后的业务数据

json
{
  "roleName": "系统管理员",
  "roleCode": "ADMIN",
  "description": "系统管理员角色",
  "status": 1,
  "sort": 0
}

响应参数

参数名类型说明示例值
codeInteger响应码(200:成功)200
messageString响应消息"success"
data.roleIdString角色ID"ROLE_001"
data.createTimeString创建时间"2026-01-04T00:00:00"

HTTP 响应示例

json
{
  "code": 200,
  "message": "success",
  "data": {
    "roleId": "ROLE_001",
    "createTime": "2026-01-04T00:00:00"
  },
  "timestamp": 1735516801500
}

错误响应示例

json
{
  "code": 2002,
  "message": "角色编码已存在",
  "timestamp": 1735516801000
}

1.2 更新角色

⚠️ 子应用需实现此接口

本接口需要子应用实现接收接口,接收一单位一平台推送的角色更新通知。

实现要求:

  • 子应用需在一单位一平台注册接收接口地址
  • 接收接口必须验签并解密一单位一平台的推送数据
  • 接收接口需返回加密的响应报文

接口说明

更新已有角色的信息。一单位一平台向子应用推送角色更新数据。

请求方式

POST

请求地址

POST /ydyp/role/update

交互方向

一单位一平台 → 子应用 (推送)

完整时序图

请求参数

参数名类型必填说明示例值
roleIdString角色ID"ROLE_001"
roleNameString角色名称"超级管理员"
descriptionString角色描述"系统最高管理员"
statusInteger状态(1:启用,0:禁用)1
sortInteger排序号1

HTTP 请求示例

http
POST /ydyp/role/update HTTP/1.1
Host: subapp.example.com
Content-Type: application/json

{
  "appId": "MAIN_SYSTEM",
  "version": "1.0",
  "timestamp": 1735516800000,
  "nonce": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
  "encryptKey": "MIIBOgIBAAJBAKj34GkxFhD90vcNLYLInFEX6...",
  "encryptData": "U2FsdGVkX1+jmZn5KqWYEgjPkQKpH5KqWYEg...",
  "sign": "MEUCIQDZ5KqWYEgjPkQKpH5KqWYEgjPkQKpH5KqWY..."
}

encryptData 解密后的业务数据

json
{
  "roleId": "ROLE_001",
  "roleName": "超级管理员",
  "description": "系统最高管理员",
  "status": 1,
  "sort": 1
}

HTTP 响应示例

json
{
  "code": 200,
  "message": "success",
  "data": {
    "roleId": "ROLE_001",
    "updateTime": "2026-01-04T00:01:00"
  },
  "timestamp": 1735516801500
}

错误响应示例

json
{
  "code": 2001,
  "message": "角色不存在",
  "timestamp": 1735516801000
}

1.3 删除角色

⚠️ 子应用需实现此接口

本接口需要子应用实现接收接口,接收一单位一平台推送的角色删除通知。

实现要求:

  • 子应用需在一单位一平台注册接收接口地址
  • 接收接口必须验签并解密一单位一平台的推送数据
  • 接收接口需返回加密的响应报文

接口说明

删除指定的角色。一单位一平台向子应用推送角色删除指令。

请求方式

POST

请求地址

POST /ydyp/role/delete

交互方向

一单位一平台 → 子应用 (推送)

完整时序图

请求参数

参数名类型必填说明示例值
roleIdString角色ID"ROLE_001"

HTTP 请求示例

http
POST /ydyp/role/delete HTTP/1.1
Host: subapp.example.com
Content-Type: application/json

{
  "appId": "MAIN_SYSTEM",
  "version": "1.0",
  "timestamp": 1735516800000,
  "nonce": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
  "encryptKey": "MIIBOgIBAAJBAKj34GkxFhD90vcNLYLInFEX6...",
  "encryptData": "U2FsdGVkX1+jmZn5KqWYEgjPkQKpH5KqWYEg...",
  "sign": "MEUCIQDZ5KqWYEgjPkQKpH5KqWYEgjPkQKpH5KqWY..."
}

encryptData 解密后的业务数据

json
{
  "roleId": "ROLE_001"
}

HTTP 响应示例

json
{
  "code": 200,
  "message": "success",
  "data": {
    "roleId": "ROLE_001"
  },
  "timestamp": 1735516801500
}

错误响应示例

json
{
  "code": 2004,
  "message": "角色已被用户使用,无法删除",
  "timestamp": 1735516801000
}

1.4 角色详情查询

接口说明

查询单个角色的详细信息。子应用向一单位一平台请求角色数据。

请求方式

POST

请求地址

POST /hztech-application/role/detail

交互方向

子应用 → 一单位一平台 (查询)

完整时序图

请求参数

参数名类型必填说明示例值
roleIdString角色ID"ROLE_001"

HTTP 请求示例

http
POST /hztech-application/role/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
{
  "roleId": "ROLE_001"
}

HTTP 响应示例

json
{
  "code": 200,
  "message": "success",
  "data": {
    "roleId": "ROLE_001",
    "roleName": "系统管理员",
    "roleCode": "ADMIN",
    "description": "系统管理员角色",
    "status": 1,
    "sort": 0,
    "createTime": "2026-01-04T00:00:00",
    "updateTime": "2026-01-04T00:00:00"
  },
  "timestamp": 1735516801500
}

错误响应示例

json
{
  "code": 2001,
  "message": "角色不存在",
  "timestamp": 1735516801000
}

1.5 角色列表查询

接口说明

分页查询角色列表。子应用向一单位一平台请求角色列表数据。结果按照更新时间倒序排列。

请求方式

POST

请求地址

POST /hztech-application/role/list

交互方向

子应用 → 一单位一平台 (查询)

完整时序图

请求参数

参数名类型必填说明示例值
pageNumInteger页码(默认1)1
pageSizeInteger每页数量(默认20)20
roleNameString角色名称(模糊查询)"管理员"
roleCodeString角色编码(精确查询)"ADMIN"
statusInteger状态(1:启用,0:禁用)1

HTTP 请求示例

http
POST /hztech-application/role/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,
  "status": 1
}

HTTP 响应示例

json
{
  "code": 200,
  "message": "success",
  "data": {
    "total": 100,
    "pageNum": 1,
    "pageSize": 20,
    "pages": 5,
    "list": [
      {
        "roleId": "ROLE_001",
        "roleName": "系统管理员",
        "roleCode": "ADMIN",
        "description": "系统管理员角色",
        "status": 1,
        "sort": 0,
        "createTime": "2026-01-04T00:00:00",
        "updateTime": "2026-01-04T00:00:00"
      }
    ]
  },
  "timestamp": 1735516801500
}

数据模型

角色对象 (Role)

完整的角色数据结构:

json
{
  "roleId": "string",           // 角色ID(系统生成)
  "roleName": "string",         // 角色名称
  "roleCode": "string",         // 角色编码(唯一)
  "description": "string",      // 角色描述
  "status": 1,                  // 状态: 1-启用, 0-禁用
  "sort": 0,                    // 排序号
  "createTime": "2026-01-04T00:00:00",  // 创建时间
  "updateTime": "2026-01-04T00:00:00"   // 更新时间
}

字段说明

字段类型必填说明约束
roleIdString角色唯一标识系统生成,不可修改
roleNameString角色名称2-50个字符
roleCodeString角色编码英文大写+下划线,全局唯一
descriptionString角色描述最多200个字符
statusInteger状态1或0
sortInteger排序号数值越小越靠前
createTimeString创建时间ISO 8601格式
updateTimeString更新时间ISO 8601格式

枚举值说明

角色状态 (status):

  • 1: 启用
  • 0: 禁用

错误码

业务错误码

错误码说明处理建议
2001角色不存在检查roleId是否正确
2002角色编码已存在使用其他编码
2003角色名称已存在使用其他名称
2004角色已被用户使用,无法删除先移除用户的该角色
2005角色权限分配失败检查权限ID是否存在
2006角色权限移除失败检查权限ID是否属于该角色
2007角色编码格式错误使用英文大写+下划线格式

系统错误码

错误码说明处理建议
1001时间戳过期同步系统时间
1002重复请求检查nonce生成逻辑
1003签名验证失败检查密钥配置
1004解密失败检查密钥配置
1005appId不存在检查appId注册
1006业务逻辑错误根据具体错误处理

相关文档


文档版本: v1.0.0 最后更新: 2026-01-04

最近更新