# 2. 添加或更新用户

**功能描述：**

此命令用于管理平台向 SE AI计算盒下发用户列表和用户详细信息请求URL。SE AI计算盒的默认行为是创建并添加新用户，但如果用户ID已经存在，则会覆盖已有的用户信息。

为提升系统性能，管理平台一般只下发用户ID列表和获取用户详细信息的URL，SE AI计算盒在收到用户列表后，会根据这两个字段组合出获取用户详细信息的实际URL。如何组合实际URL，请参见 URL组合章节。

|                           |                         |        |       |        |                                                                                                                                                                                                             |                                                                                                                                                                                       |
| ------------------------- | ----------------------- | ------ | ----- | ------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **一级参数**                  | **二级参数**                | **类型** | 默认值   | **选择** | **说明**                                                                                                                                                                                                      | 举例                                                                                                                                                                                    |
| method                    |                         | string | 无     | **必选** | add\_users\_plus                                                                                                                                                                                            | “add\_users\_plus”                                                                                                                                                                    |
| messageId                 |                         | string | 空     | 可选     | MQ消息的唯一标识ID                                                                                                                                                                                                 | “004a5b58-32e8-487e-a90a-2ce443877e7e”                                                                                                                                                |
| userid\_list              |                         | list   | 无     | 必选，二选一 | 用户信息ID列表，**管理平台需要保证用户ID唯一；默认行为是创建并添加新用户，但如果用户ID已经存在，则会覆盖已有的信息。**                                                                                                                                            | \["user\_id1","user\_id2"]                                                                                                                                                            |
| user\_info\_list          |                         | list   | 无     | 必选，二选一 | 用户信息列表，不只下发ID信息，还有其他基础信息，下发基础信息和通过http协议得内容一致，字段定义详情请看人员下发信息接口。                                                                                                                                             |                                                                                                                                                                                       |
|                           | identity\_id            | string | 无     | 必选     | 每个用户的唯一标识id                                                                                                                                                                                                 | “666”                                                                                                                                                                                 |
|                           | reg\_url                | string | 无     | 可选     | 图片地址，当need\_bring\_pic为true时候需要带上图片数据， <http://xxx>, 绝对地址                                                                                                                                                   | <http://xxxx.jng>                                                                                                                                                                     |
|                           | relative\_pic\_url      | string | 无     | 可选，二选一 | 图片相对地址，相对于平台得地址，如平台地址：<https://xxx.com,则图片地址可为/aaa.jpg。>                                                                                                                                                    | /xxx.jpg。                                                                                                                                                                             |
|                           | fiqa\_level             | string | 无     | 可选     | 质量检测级别，共high，middle，low，custom, no 5个级别, 其中no表示下放人员不需要再进行质量检测                                                                                                                                               |                                                                                                                                                                                       |
|                           | info                    | dict   | 无     | 必选     | 每个用户的信息                                                                                                                                                                                                     | 请参考下面info字段                                                                                                                                                                           |
|                           | import\_mode            | bool   | false | 可选     | <p>false：使用图片提取特征值进行注册，<br>true：使用传入的特征值进行注册。</p>                                                                                                                                                           |                                                                                                                                                                                       |
|                           | get\_features\_url      | string | 无     |        | import\_mode=true时必选，获取feature的接口url                                                                                                                                                                        | 请参考下面下放feature\_list说明                                                                                                                                                                |
| <p>extend<br>\_params</p> |                         | dict   | 无     | **必选** | 注意，如果为True，需要同时传入下载特征值的接口url扩展字段，可以为空                                                                                                                                                                       |                                                                                                                                                                                       |
|                           | path                    | string | 空     | 可选     | <p>获取人员详细信息的URL：<br>a. 绝对地址：必然加上协议，以http或者https开头<br>b. 相对地址：以"/"开始，加上接口名。如 /getUserInfo。<br>注意： 若人员信息通过user\_info\_list中下发，则此path无意义。</p>                                                                  | “[http://ip:port/getPersonInfo”](https://bm168x.gitbook.io/project/v5r5c01_readme/xi-tong-dui-jie-shuo-ming-shu/dui-jie-se3-he-zi/3.2.3-yong-hu-guan-li/http:/ip:port/getPersonInfo”) |
|                           | <p>notify<br>\_path</p> | string | 空     | 可选     | <p>管理平台URL（相对地址），用于通过http方式回传命令执行结果。相对地址的组合请参见 URL组合章节。<br>注意： 如果登陆时管理平台下发 uploadQueue 字段，则会通过MQ上传通道返回结果。<br>如果没有 uploadQueue 字段，并且 notify\_path 为非空，则会向 notify\_path 返回结果<br>如果两个字段都没有，则不会返回结果（即单向通信）。</p> | "[http://ip:port:/getResult](https://bm168x.gitbook.io/project/v5r5c01_readme/xi-tong-dui-jie-shuo-ming-shu/dui-jie-se3-he-zi/3.2.3-yong-hu-guan-li/http:/ip:port:/getResult)"        |

info中字段信息如下：

|      |                 |        |     |        |                                                  |
| ---- | --------------- | ------ | --- | ------ | ------------------------------------------------ |
| 二级参数 | **三级参数**        | **类型** | 默认值 | **选择** |                                                  |
| info |                 |        |     |        |                                                  |
|      | name            | string | 无   | **必选** | 用户名称                                             |
|      | type            | string | 无   | **必选** | <p>1:员工<br>2: 访客<br>3: 黑名单<br>4：陌生人<br>5：VIP</p> |
|      | permission\_ids | list   | 无   | **必选** | 权限组id列表                                          |

**MQ命令示例：**

使用 user\_list 的形式间接下发人员信息：

```json
// 如下是下发人员id列表的话，则人员的基础信息则通过path中的获取人员信息接口获取其他基础信息 
{
    "method": "add_users_plus", // 此关键字和内容不能变
    "userid_list": ["user_id1","user_id2"], // 人员id列表
    "extend_params":   // 扩展字段，当前为空。用于将来的接口升级。扩展字段的内容以字典的形式填充，但扩展字段本身为必选。
    { 
        "path": "URL",// 获取用户信息的接口的URL前缀
        "notify_path": "URL" // 此处选择通过http协议返回mq命令处理结果的地址
    }  
}
```

使用 user\_info\_list 的形式直接下发人员信息：

```json
{
    "method": "add_users_plus", // 此关键字和内容不能变

    "user_info_list":  // 人员数据列表
         [
            {
             "info":
                   {
                     "permission_ids":["1046"], //设备权限组列表
                     "name":"fubing",   //人员名称
                     "type":1     //人员类型
                   },

            "identity_id":"666",   //人员id
            "reg_url":"http://xxxx.png"  //图片地址
            },
            {
             "info":
                   {
                     "permission_ids":["1046"], //设备权限组列表
                     "name":"wuyanzu",   //人员名称
                     "type":1     //人员类型
                   },

            "identity_id":"888",   //人员id
            "reg_url":"http://xxxx.png"  //图片地址
            },

        ],
    "extend_params":   // 扩展字段，当前为空。用于将来的接口升级。扩展字段的内容以字典的形式填充，但扩展字段本身为必选。
    { 
    }  
}
```

**下放feature\_list的接口请求参数及返回：**

```json
请求地址： http://xxx,    //MQ命令下放参数get_features_url对应的接口url
请求方式：POST
请求参数：
{
    "userid_list":[
        {"userid":"userid1", "type":1},
        {"userid":"userid2", "type":1}     
        ]  
}
请求响应返回结果：
{
    "data":{
        "feature_list":[
            {
                "userid":"userid1",
            	"feature":[]
            },
            {
                "userid":"userid2",
            	"feature":[]
            }
        ]
    }
}
```

**返回结果示例：**

```json
{
    "success":true,
    "code":0,
    "message":"下发人员MQ命令执行成功",
    "dev_sno":"sda23erasd" ,//设备唯一标识key
    "messageKey":"add_users_plus", //每一类消息格式的key
    "result":{
        "success_users":[
                 {"userid":"12365", "username":"小赵", "type":1,"message":"人员下发成功"，"code":0}
         ] ,//下发成功的人员
        "failed_users":[
                {"userid":"12366", "username":"小王",  "type":1,"message":"无法检测到人脸", "code":"40094"},//插入失败的人员
                {"userid":"12367", "username":"小明", "type":1, "message":"无法检测到人脸,  "code":"40094"}
        ]
}
```
