1. 用户属性
1.1. 用户属性说明
1.1.1. 用户属性的定义
由系统定义或用户自定义的用户扩展变量,可作为可变参数用于数据连接、链接权限、行权限、高级表达式等功能
用户属性结构说明
| 字段 | 类型 | 描述 | 
|---|---|---|
| id | LONG | id | 
| name | STRING | 属性名称 | 
| scope | STRING | 用户属性作用范围:SYSTEM,INTERNAL,GLOBAL,SYSTEM为系统定义,用户不可添加或修改 | 
| openLevel | STRING | 用户属性开放级别:READ_ONLY,HIDDEN | 
| updatedAt | DATETIME | 用户属性最后更新时间 | 
| updatedBy | LONG | 用户属性最后修改者的userId | 
| createdAt | DATETIME | 用户属性创建时间 | 
| updatedBy | LONG | 用户属性最后修改者的userId | 
| options | OBJECT | 用户属性的配置信息 | 
| options.type | STRING | 用户属性类型,支持:string,number,date,time,any | 
| options.defaultValue | OBJECT | 用户属性默认值,需与用户属性类型匹配,属性类型为any时可任意设置 | 
| options.allowAllValue | BOOL | 用户属性是否允许任意值 | 
| options.multiValueConfig | OBJECT | 用户属性多值配置 | 
| options.multiValueConfig.enable | BOOL | 用户属性开启多值 | 
| options.multiValueConfig.split | STRING | 用户属性多值配置分隔符 | 
| options.multiValueConfig.quote | STRING | 用户属性多值配置起止符 | 
| options.multiValueConfig.prefix | STRING | 用户属性多值配置前缀 | 
| options.multiValueConfig.suffix | STRING | 用户属性多值配置后缀 | 
用户属性使用说明
- 用户属性可用于连接权限或行权限的过滤
 - 用户属性可用于表达式,使用格式为``
 - 若用户属性设置了默认值,且当前被含有用户属性的过滤限制了的登陆用户,没有专门为自身设置这个属性的具体值,则在过滤时会使用默认值
 - 系统定义的用户属性的默认名称前缀为
sys.,用户自定义属性不可以此前缀开头 - 用户属性创建后,名称不可再变更
 - 系统定义的用户属性不可修改,其值为用户对应的信息,如登录名,邮箱等
 - 用户属性作用范围说明:
SYSTEM为系统定义,用户不可添加或修改;INTERNAL为内部属性,定义后只能在平台方或租户内部可用;GLOBAL为全局属性,平台方与租户方都可以使用,由平台方定义并为租户方赋值,属性值被所有对应的租户内所有用户继承,租户不可修改或删除。 - 开放级别为
HIDDEN的用户属性只能用于数据连接,不可在应用中使用。 - 开放级别为
HIDDEN的平台方全局用户属性,对租户方不可见。 - 作用范围为
GLOBAL的全局属性,在租户方有三个可取值的点:属性默认值(attr.defaultValue)、平台方为租户设置的值(tenant.platformConfig)、租户内用户通过sso登陆同步的值(user.platformConfig),取值优先级为:user.platformConfig>tenant.platformConfig>attr.defaultValue1.2. 接口说明
 
1.2.1. 创建用户属性
创建用户属性。
请求URL
POST /api/v1/users/attrs
请求参数
request body 参数
返回对象的格式说明
| 字段 | 类型 | 说明 | 
|---|---|---|
| code | LONG | 返回码 | 
| msg | STRING | 返回码对应的信息 | 
| version | STRING | 当前系统版本哈希值 | 
| data | OBJECT | 用户属性的共同结构见用户属性结构说明 | 
接口示例1: 创建用户属性
POST /api/v1/users/attrs
{
  "name": "数字属性",
  "scope": "INTERNAL",
  "openLevel": "READ_ONLY",
  "options": {
    "type": "number",
    "multiValueConfig": {
      "enable": false,
      "split": ",",
      "quote": "",
      "prefix": "",
      "suffix": ""
    },
    "defaultValue": 8
  }
}
返回
{
  "version": "4.5-SNAPSHOT@@git.commit.id.abbrev@#352dc7c5",
  "code": 0,
  "msg": "success",
  "data": {
    "id": 2,
    "name": "数字属性",
    "scope": "INTERNAL",
    "options": {
      "type": "number",
      "defaultValue": 8,
      "allowAllValue": true,
      "multiValueConfig": {
        "enable": false,
        "split": ",",
        "quote": "",
        "prefix": "",
        "suffix": ""
      }
    },
    "createdBy": 2,
    "createdAt": "2023-08-10 18:46:36",
    "updatedBy": 2,
    "updatedAt": "2023-08-10 18:46:36",
    "openLevel": "READ_ONLY"
  }
}
接口示例2: 创建用户属性
POST /api/v1/users/attrs
{
  "name": "任意属性",
  "scope": "INTERNAL",
  "openLevel": "READ_ONLY",
  "options": {
    "type": "any",
    "multiValueConfig": {
      "enable": false,
      "split": ",",
      "quote": "",
      "prefix": "",
      "suffix": ""
    },
    "defaultValue": "[\"值1\",\"值2\"]"
  }
}
返回
{
  "version": "4.5-SNAPSHOT@@git.commit.id.abbrev@#352dc7c5",
  "code": 0,
  "msg": "success",
  "data": {
    "id": 3,
    "name": "任意属性",
    "scope": "INTERNAL",
    "options": {
      "type": "any",
      "defaultValue": "[\"值1\",\"值2\"]",
      "allowAllValue": true,
      "multiValueConfig": {
        "enable": false,
        "split": ",",
        "quote": "",
        "prefix": "",
        "suffix": ""
      }
    },
    "createdBy": 2,
    "createdAt": "2023-08-10 18:48:57",
    "updatedBy": 2,
    "updatedAt": "2023-08-10 18:48:57",
    "openLevel": "READ_ONLY"
  }
}
1.2.2. 修改用户属性
修改用户属性。
说明
PUT /api/v1/users/attrs/{attrId}
请求参数
URL 参数
| 字段 | 类型 | 是否必须 | 说明 | 
|---|---|---|---|
| attrId | LONG | 是 | 被修改用户属性的 id | 
request body 参数
返回对象的格式说明
| 字段 | 类型 | 说明 | 
|---|---|---|
| code | LONG | 返回码 | 
| msg | STRING | 返回码对应的信息 | 
| version | STRING | 当前系统版本哈希值 | 
| data | OBJECT | 用户属性的共同结构见用户属性结构说明 | 
接口示例1: 修改用户属性
PUT /api/v1/users/attrs/2
{
  "id": 2,
  "name": "数字属性",
  "scope": "GLOBAL",
  "editable": true,
  "options": {
    "type": "number",
    "defaultValue": 9,
    "allowAllValue": true,
    "multiValueConfig": {
      "enable": false,
      "split": ",",
      "quote": "",
      "prefix": "",
      "suffix": ""
    }
  },
  "openLevel": "READ_ONLY",
  "valueSet": [
  ],
  "isMultiValue": false,
  "isAttr": true
}
返回
{
  "version": "4.5-SNAPSHOT@@git.commit.id.abbrev@#352dc7c5",
  "code": 0,
  "msg": "success",
  "data": {
    "id": 2,
    "name": "数字属性",
    "scope": "GLOBAL",
    "editable": true,
    "options": {
      "type": "number",
      "defaultValue": 9,
      "allowAllValue": true,
      "multiValueConfig": {
        "enable": false,
        "split": ",",
        "quote": "",
        "prefix": "",
        "suffix": ""
      }
    },
    "createdBy": 2,
    "createdAt": "2023-08-10 18:46:36",
    "updatedBy": 2,
    "updatedAt": "2023-08-10 18:54:23",
    "isDelete": false,
    "openLevel": "READ_ONLY"
  }
}
1.2.3. 删除用户属性
删除用户属性
说明
| 字段 | 类型 | 是否必须 | 说明 | 
|---|---|---|---|
| attrId | LONG | 是 | 被删除用户属性的id | 
返回对象的格式说明
| 字段 | 类型 | 说明 | 
|---|---|---|
| code | LONG | 返回码 | 
| msg | STRING | 返回码对应的信息 | 
| version | STRING | 当前系统版本哈希值 | 
接口示例1: 删除用户
DELETE /api/v1/users/attrs/2
返回:
{
  "version": "4.5-SNAPSHOT@@git.commit.id.abbrev@#352dc7c5",
  "code": 0,
  "msg": "success"
}
1.2.4. 获取用户属性列表
请求URL
GET /api/v1/users/attrs?offset=0&limit=1000&queryValueSet=true
需要认证:是
请求参数
URL 参数
| 字段 | 类型 | 是否必须 | 说明 | 
|---|---|---|---|
| offset | INTEGER | 可选 | 分页偏移量,默认是0 | 
| limit | INTEGER | 可选 | 分页获取个数,默认是10 | 
| queryValueSet | BOOLEAN | 可选 | 是否要获取每条属性在设置了该属性的所有用户中的distinct值列表 | 
返回对象的格式说明
| 字段 | 类型 | 说明 | 
|---|---|---|
| code | LONG | 返回码 | 
| msg | STRING | 返回码对应的信息 | 
| version | STRING | 当前系统版本哈希值 | 
| data | OBJECT 数组 | 每种用户属性的共同结构见用户属性结构说明 | 
接口示例1: 获取用户属性列表
GET /api/v1/users/attrs?offset=0&limit=1000&queryValueSet=true
返回:
{
  "version": "4.5-SNAPSHOT@@git.commit.id.abbrev@#352dc7c5",
  "code": 0,
  "msg": "success",
  "data": [
    {
      "name": "sys.email",
      "scope": "SYSTEM",
      "editable": false,
      "options": {
        "type": "string",
        "allowAllValue": true
      },
      "openLevel": "READ_ONLY",
      "valueSet": [
        "admin@hengshi.com"
      ]
    },
    {
      "name": "sys.id",
      "scope": "SYSTEM",
      "editable": false,
      "options": {
        "type": "number",
        "allowAllValue": true
      },
      "openLevel": "READ_ONLY",
      "valueSet": [
        2
      ]
    },
    {
      "name": "sys.language",
      "scope": "SYSTEM",
      "editable": false,
      "options": {
        "type": "string",
        "allowAllValue": true
      },
      "openLevel": "READ_ONLY",
      "valueSet": [
        "zh_CN"
      ]
    },
    {
      "name": "sys.loginName",
      "scope": "SYSTEM",
      "editable": false,
      "options": {
        "type": "string",
        "allowAllValue": true
      },
      "openLevel": "READ_ONLY",
      "valueSet": [
        "admin"
      ]
    },
    {
      "name": "sys.mobile",
      "scope": "SYSTEM",
      "editable": false,
      "options": {
        "type": "string",
        "allowAllValue": true
      },
      "openLevel": "READ_ONLY",
      "valueSet": []
    },
    {
      "name": "sys.name",
      "scope": "SYSTEM",
      "editable": false,
      "options": {
        "type": "string",
        "allowAllValue": true
      },
      "openLevel": "READ_ONLY",
      "valueSet": [
        "admin"
      ]
    },
    {
      "name": "sys.org_ids",
      "scope": "SYSTEM",
      "editable": false,
      "options": {
        "type": "any",
        "allowAllValue": true
      },
      "openLevel": "READ_ONLY",
      "valueSet": [
        []
      ]
    },
    {
      "name": "sys.org_names",
      "scope": "SYSTEM",
      "editable": false,
      "options": {
        "type": "any",
        "allowAllValue": true
      },
      "openLevel": "READ_ONLY",
      "valueSet": [
        []
      ]
    },
    {
      "name": "sys.organization_ids",
      "scope": "SYSTEM",
      "editable": false,
      "options": {
        "type": "any",
        "allowAllValue": true
      },
      "openLevel": "READ_ONLY",
      "valueSet": [
        []
      ]
    },
    {
      "name": "sys.organization_names",
      "scope": "SYSTEM",
      "editable": false,
      "options": {
        "type": "any",
        "allowAllValue": true
      },
      "openLevel": "READ_ONLY",
      "valueSet": [
        []
      ]
    },
    {
      "name": "sys.tenant_code",
      "scope": "SYSTEM",
      "editable": false,
      "options": {
        "type": "string",
        "allowAllValue": true
      },
      "openLevel": "READ_ONLY",
      "valueSet": []
    },
    {
      "name": "sys.tenant_id",
      "scope": "SYSTEM",
      "editable": false,
      "options": {
        "type": "number",
        "allowAllValue": true
      },
      "openLevel": "READ_ONLY",
      "valueSet": []
    },
    {
      "name": "sys.tenant_name",
      "scope": "SYSTEM",
      "editable": false,
      "options": {
        "type": "string",
        "allowAllValue": true
      },
      "openLevel": "READ_ONLY",
      "valueSet": []
    },
    {
      "id": 3,
      "name": "任意属性",
      "scope": "INTERNAL",
      "editable": true,
      "options": {
        "type": "any",
        "defaultValue": "[\"值1\",\"值2\"]",
        "allowAllValue": true,
        "multiValueConfig": {
          "enable": false,
          "split": ",",
          "quote": "",
          "prefix": "",
          "suffix": ""
        }
      },
      "createdBy": 2,
      "createdAt": "2023-08-10 18:48:57",
      "updatedBy": 2,
      "updatedAt": "2023-08-10 18:48:57",
      "isDelete": false,
      "openLevel": "READ_ONLY",
      "valueSet": []
    },
    {
      "id": 1,
      "name": "属性1",
      "scope": "INTERNAL",
      "editable": true,
      "options": {
        "type": "string",
        "defaultValue": [
          "啊"
        ],
        "allowAllValue": true,
        "multiValueConfig": {
          "enable": true,
          "split": ",",
          "quote": "`",
          "prefix": "(",
          "suffix": ")"
        }
      },
      "createdBy": 2,
      "createdAt": "2023-08-10 18:30:57",
      "updatedBy": 2,
      "updatedAt": "2023-08-10 18:35:28",
      "isDelete": false,
      "openLevel": "READ_ONLY",
      "valueSet": []
    }
  ],
  "totalHits": 15,
  "offset": 0,
  "chartDataStartTimeMillis": 0
}
1.2.5. 根据ID获取用户属性
请求URL
GET /api/v1/users/attrs/{attrId}
需要认证:是
请求参数
URL 参数
| 字段 | 类型 | 是否必须 | 说明 | 
|---|---|---|---|
| attrId | LONG | 是 | 用户属性的 id | 
返回对象的格式说明
| 字段 | 类型 | 说明 | 
|---|---|---|
| code | LONG | 返回码 | 
| msg | STRING | 返回码对应的信息 | 
| version | STRING | 当前系统版本哈希值 | 
| data | OBJECT | 用户属性的共同结构见用户属性结构说明 | 
接口示例1: 根据ID获取用户属性
GET /api/v1/users/attrs/4
返回:
{
  "version": "4.5-SNAPSHOT@@git.commit.id.abbrev@#352dc7c5",
  "code": 0,
  "msg": "success",
  "data": {
    "id": 4,
    "name": "test",
    "scope": "INTERNAL",
    "editable": true,
    "options": {
      "type": "string",
      "defaultValue": "aaa",
      "allowAllValue": true,
      "multiValueConfig": {
        "enable": false,
        "split": ",",
        "quote": "",
        "prefix": "",
        "suffix": ""
      }
    },
    "createdBy": 2,
    "createdAt": "2023-08-11 10:13:27",
    "updatedBy": 2,
    "updatedAt": "2023-08-11 10:13:27",
    "isDelete": false,
    "openLevel": "READ_ONLY"
  }
}