> For the complete documentation index, see [llms.txt](https://polyv.gitbook.io/document/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://polyv.gitbook.io/document/docs/seminar/java/whitelistservice.md).

# Whitelist Service

### 1、批量新增白名单

#### 描述

```
批量新增白名单
接口地址（仅做说明使用）：https://api.polyv.net/meet/v1/channel/auth-whitelist/save-batch
```

#### 调用约束

1、接口调用有频率限制，[详细请查看](https://git.polyv.net/help-center/document-center/-/blob/master/seminar/java/limit.md)，调用常见异常，[详细请查看](https://git.polyv.net/help-center/document-center/-/blob/master/seminar/java/exceptionDoc/README.md)

#### 单元测试

```java
	@Test
	public void testWhitelistSaveBatch() throws IOException, NoSuchAlgorithmException {
        SeminarWhitelistSaveBatchRequest seminarWhitelistSaveBatchRequest = new SeminarWhitelistSaveBatchRequest();
        Boolean seminarWhitelistSaveBatchResponse;
        try {
            String channelId = super.getSeminarChannelId();
            seminarWhitelistSaveBatchRequest.setChannelId(channelId);
            List<SeminarWhitelistSaveBatchRequest.WhitelistInfo> whitelistInfos = new ArrayList<>();
            SeminarWhitelistSaveBatchRequest.WhitelistInfo whitelistInfo =
                    new SeminarWhitelistSaveBatchRequest.WhitelistInfo();
            whitelistInfo.setCode("code1").setName("name1").setGroupNo(1).setGroupRole("leader");
            whitelistInfos.add(whitelistInfo);
            seminarWhitelistSaveBatchRequest.setList(whitelistInfos);
            seminarWhitelistSaveBatchResponse = new SeminarWhitelistServiceImpl().whitelistSaveBatch(
                    seminarWhitelistSaveBatchRequest);
            Assert.assertNotNull(seminarWhitelistSaveBatchResponse);
            if (seminarWhitelistSaveBatchResponse != null) {
                //to do something ......
                log.debug("测试批量新增白名单成功 {}", JSON.toJSONString(seminarWhitelistSaveBatchResponse));
                //TODO 此处创建完成后删除了白名单，正式使用需删除该语句
                super.deleteWhitelist(channelId, "code1");
            }
        } catch (PloyvSdkException e) {
            //参数校验不合格 或者 请求服务器端500错误，错误信息见PloyvSdkException.getMessage()
            log.error(e.getMessage(), e);
            // 异常返回做B端异常的业务逻辑，记录log 或者 上报到ETL 或者回滚事务
            throw e;
        } catch (Exception e) {
            log.error("SDK调用异常", e);
            throw e;
        }
    }
```

#### 单元测试说明

1、请求正确，返回Boolean对象，B端依据此对象处理业务逻辑；

2、请求参数校验不合格，抛出PloyvSdkException，错误信息见PloyvSdkException.getMessage()，如 \[ 输入参数 \[xxx.chat.LivexxxRequest]对象校验失败，失败字段 \[pic不能为空 / msg不能为空] ]

3、服务器处理异常，抛出PloyvSdkException，错误信息见PloyvSdkException.getMessage()，如 \[ 保利威请求返回数据错误，请求流水号：66e7ad29fd04425a84c2b2b562d2025b，错误原因： invalid signature. ]

#### 请求入参描述

| 参数名       | 必选   | 类型     | 说明                                                                                                                                        |
| --------- | ---- | ------ | ----------------------------------------------------------------------------------------------------------------------------------------- |
| channelId | true | String | 频道号                                                                                                                                       |
| list      | true | Array  | 批量插入记录【详见[WhitelistInfo参数描述](https://git.polyv.net/help-center/document-center/-/blob/master/seminar/java/whitelistService.md?id=polyv8)】 |

[**WhitelistInfo参数描述**](#/whitelistService.md?id=polyv8)

| 参数名       | 必选    | 类型      | 说明                                                     |
| --------- | ----- | ------- | ------------------------------------------------------ |
| code      | true  | String  | 会员码，长度不超过64位（不可重复）                                     |
| name      | true  | String  | 参会人昵称，长度不超过64位                                         |
| groupNo   | false | Integer | 分组序号，1\~50之间（需与组内身份同时传或同时不传）                           |
| groupRole | false | String  | 组内身份，一个分组内不能多于一个组长（需与分组序号同时传或同时不传） leader：组长 member：组员 |

#### 返回对象描述

true为新增成功，false为新增失败\ <br>

***

\ <br>

### 2、删除单个白名单

#### 描述

```
删除单个白名单
接口地址（仅做说明使用）：https://api.polyv.net/meet/v1/channel/auth-whitelist/delete
```

#### 调用约束

1、接口调用有频率限制，[详细请查看](https://git.polyv.net/help-center/document-center/-/blob/master/seminar/java/limit.md)，调用常见异常，[详细请查看](https://git.polyv.net/help-center/document-center/-/blob/master/seminar/java/exceptionDoc/README.md)

#### 单元测试

```java
	@Test
	public void testDeleteWhitelist() throws IOException, NoSuchAlgorithmException {
        SeminarDeleteWhitelistRequest seminarDeleteWhitelistRequest = new SeminarDeleteWhitelistRequest();
        Boolean seminarDeleteWhitelistResponse;
        try {
            String channelId = super.getSeminarChannelId();
            seminarDeleteWhitelistRequest.setChannelId(channelId);
            seminarDeleteWhitelistRequest.setCode("code1");
            seminarDeleteWhitelistResponse = new SeminarWhitelistServiceImpl().deleteWhitelist(
                    seminarDeleteWhitelistRequest);
            Assert.assertNotNull(seminarDeleteWhitelistResponse);
            if (seminarDeleteWhitelistResponse != null) {
                //to do something ......
                log.debug("测试删除单个白名单成功 {}", JSON.toJSONString(seminarDeleteWhitelistResponse));
            }
        } catch (PloyvSdkException e) {
            //参数校验不合格 或者 请求服务器端500错误，错误信息见PloyvSdkException.getMessage()
            log.error(e.getMessage(), e);
            // 异常返回做B端异常的业务逻辑，记录log 或者 上报到ETL 或者回滚事务
            throw e;
        } catch (Exception e) {
            log.error("SDK调用异常", e);
            throw e;
        }
    }
```

#### 单元测试说明

1、请求正确，返回Boolean对象，B端依据此对象处理业务逻辑；

2、请求参数校验不合格，抛出PloyvSdkException，错误信息见PloyvSdkException.getMessage()，如 \[ 输入参数 \[xxx.chat.LivexxxRequest]对象校验失败，失败字段 \[pic不能为空 / msg不能为空] ]

3、服务器处理异常，抛出PloyvSdkException，错误信息见PloyvSdkException.getMessage()，如 \[ 保利威请求返回数据错误，请求流水号：66e7ad29fd04425a84c2b2b562d2025b，错误原因： invalid signature. ]

#### 请求入参描述

| 参数名       | 必选   | 类型     | 说明                |
| --------- | ---- | ------ | ----------------- |
| channelId | true | String | 频道号               |
| code      | true | String | 需要删除的白名单，长度不超过64位 |

#### 返回对象描述

true为删除成功，false为删除失败\ <br>

***

\ <br>

### 3、清空白名单

#### 描述

```
清空白名单
接口地址（仅做说明使用）：https://api.polyv.net/meet/v1/channel/auth-whitelist/delete-all
```

#### 调用约束

1、接口调用有频率限制，[详细请查看](https://git.polyv.net/help-center/document-center/-/blob/master/seminar/java/limit.md)，调用常见异常，[详细请查看](https://git.polyv.net/help-center/document-center/-/blob/master/seminar/java/exceptionDoc/README.md)

#### 单元测试

```java
	@Test
	public void testDeleteAllWhitelist() throws IOException, NoSuchAlgorithmException {
        SeminarDeleteAllWhitelistRequest seminarDeleteAllWhitelistRequest = new SeminarDeleteAllWhitelistRequest();
        Boolean seminarDeleteAllWhitelistResponse;
        try {
            String channelId = super.getSeminarChannelId();
            seminarDeleteAllWhitelistRequest.setChannelId(channelId);
            seminarDeleteAllWhitelistResponse = new SeminarWhitelistServiceImpl().deleteAllWhitelist(
                    seminarDeleteAllWhitelistRequest);
            Assert.assertNotNull(seminarDeleteAllWhitelistResponse);
            if (seminarDeleteAllWhitelistResponse != null) {
                //to do something ......
                log.debug("测试清空白名单成功 {}", JSON.toJSONString(seminarDeleteAllWhitelistResponse));
            }
        } catch (PloyvSdkException e) {
            //参数校验不合格 或者 请求服务器端500错误，错误信息见PloyvSdkException.getMessage()
            log.error(e.getMessage(), e);
            // 异常返回做B端异常的业务逻辑，记录log 或者 上报到ETL 或者回滚事务
            throw e;
        } catch (Exception e) {
            log.error("SDK调用异常", e);
            throw e;
        }
    }
```

#### 单元测试说明

1、请求正确，返回Boolean对象，B端依据此对象处理业务逻辑；

2、请求参数校验不合格，抛出PloyvSdkException，错误信息见PloyvSdkException.getMessage()，如 \[ 输入参数 \[xxx.chat.LivexxxRequest]对象校验失败，失败字段 \[pic不能为空 / msg不能为空] ]

3、服务器处理异常，抛出PloyvSdkException，错误信息见PloyvSdkException.getMessage()，如 \[ 保利威请求返回数据错误，请求流水号：66e7ad29fd04425a84c2b2b562d2025b，错误原因： invalid signature. ]

#### 请求入参描述

| 参数名       | 必选   | 类型     | 说明  |
| --------- | ---- | ------ | --- |
| channelId | true | String | 频道号 |

#### 返回对象描述

true为清空成功，false为清空失败\ <br>

***

\ <br>

### 4、分页查询白名单

#### 描述

```
分页查询白名单
接口地址（仅做说明使用）：https://api.polyv.net/meet/v1/channel/auth-whitelist/get
```

#### 调用约束

1、接口调用有频率限制，[详细请查看](https://git.polyv.net/help-center/document-center/-/blob/master/seminar/java/limit.md)，调用常见异常，[详细请查看](https://git.polyv.net/help-center/document-center/-/blob/master/seminar/java/exceptionDoc/README.md)

#### 单元测试

```java
	@Test
	public void testGetWhitelist() throws IOException, NoSuchAlgorithmException {
        SeminarGetWhitelistRequest seminarGetWhitelistRequest = new SeminarGetWhitelistRequest();
        SeminarGetWhitelistResponse seminarGetWhitelistResponse;
        try {
            String channelId = super.getSeminarChannelId();
            seminarGetWhitelistRequest.setChannelId(channelId);
            seminarGetWhitelistResponse = new SeminarWhitelistServiceImpl().getWhitelist(seminarGetWhitelistRequest);
            Assert.assertNotNull(seminarGetWhitelistResponse);
            if (seminarGetWhitelistResponse != null) {
                //to do something ......
                log.debug("测试分页查询白名单成功 {}", JSON.toJSONString(seminarGetWhitelistResponse));
            }
        } catch (PloyvSdkException e) {
            //参数校验不合格 或者 请求服务器端500错误，错误信息见PloyvSdkException.getMessage()
            log.error(e.getMessage(), e);
            // 异常返回做B端异常的业务逻辑，记录log 或者 上报到ETL 或者回滚事务
            throw e;
        } catch (Exception e) {
            log.error("SDK调用异常", e);
            throw e;
        }
    }
```

#### 单元测试说明

1、请求正确，返回SeminarGetWhitelistResponse对象，B端依据此对象处理业务逻辑；

2、请求参数校验不合格，抛出PloyvSdkException，错误信息见PloyvSdkException.getMessage()，如 \[ 输入参数 \[xxx.chat.LivexxxRequest]对象校验失败，失败字段 \[pic不能为空 / msg不能为空] ]

3、服务器处理异常，抛出PloyvSdkException，错误信息见PloyvSdkException.getMessage()，如 \[ 保利威请求返回数据错误，请求流水号：66e7ad29fd04425a84c2b2b562d2025b，错误原因： invalid signature. ]

#### 请求入参描述

| 参数名         | 必选    | 类型      | 说明                                |
| ----------- | ----- | ------- | --------------------------------- |
| channelId   | true  | String  | 频道号                               |
| currentPage | false | Integer | 页数，默认为1【对应api文档的**pageNumber**字段】 |
| pageSize    | false | Integer | 每页显示的数据条数，默认每页显示20条数据             |

#### 返回对象描述

| 参数名         | 类型      | 说明                                                                                                                                         |
| ----------- | ------- | ------------------------------------------------------------------------------------------------------------------------------------------ |
| contents    | Array   | 查询的结果列表【详见[WhitelistInfo参数描述](https://git.polyv.net/help-center/document-center/-/blob/master/seminar/java/whitelistService.md?id=polyv9)】 |
| pageSize    | Integer | 每页显示的数据条数，默认每页显示20条数据                                                                                                                      |
| currentPage | Integer | 当前页【对应api文档的**pageNumber**字段】                                                                                                              |
| totalItems  | Integer | 记录总条数                                                                                                                                      |
| totalPage   | Integer | 总页数【对应api文档的**totalPages**字段】                                                                                                              |

[**WhitelistInfo参数描述**](#/whitelistService.md?id=polyv9)

| 参数名       | 类型      | 说明                       |
| --------- | ------- | ------------------------ |
| channelId | String  | 频道号                      |
| userId    | String  | 账号id                     |
| code      | String  | 会员码                      |
| name      | String  | 参会昵称                     |
| groupNo   | Integer | 分组序号                     |
| groupName | String  | 分组名称                     |
| groupRole | String  | 组内身份 leader：组长 member：组员 |

\ <br>

***

\ <br>

### 5、更新白名单

#### 描述

```
更新白名单
接口地址（仅做说明使用）：https://api.polyv.net/meet/v1/channel/auth-whitelist/update
```

#### 调用约束

1、接口调用有频率限制，[详细请查看](https://git.polyv.net/help-center/document-center/-/blob/master/seminar/java/limit.md)，调用常见异常，[详细请查看](https://git.polyv.net/help-center/document-center/-/blob/master/seminar/java/exceptionDoc/README.md)

#### 单元测试

```java
	@Test
	public void testUpdateWhitelist() throws IOException, NoSuchAlgorithmException {
        SeminarUpdateWhitelistRequest seminarUpdateWhitelistRequest = new SeminarUpdateWhitelistRequest();
        Boolean seminarUpdateWhitelistResponse;
        try {
            String channelId = super.getSeminarChannelId();
            seminarUpdateWhitelistRequest.setChannelId(channelId);
            seminarUpdateWhitelistRequest.setOldCode("code2")
                    .setCode("code2")
                    .setName("newName")
                    .setGroupNo(2)
                    .setGroupRole("member");
            seminarUpdateWhitelistResponse = new SeminarWhitelistServiceImpl().updateWhitelist(
                    seminarUpdateWhitelistRequest);
            Assert.assertNotNull(seminarUpdateWhitelistResponse);
            if (seminarUpdateWhitelistResponse != null) {
                //to do something ......
                log.debug("测试更新白名单成功 {}", JSON.toJSONString(seminarUpdateWhitelistResponse));
            }
        } catch (PloyvSdkException e) {
            //参数校验不合格 或者 请求服务器端500错误，错误信息见PloyvSdkException.getMessage()
            log.error(e.getMessage(), e);
            // 异常返回做B端异常的业务逻辑，记录log 或者 上报到ETL 或者回滚事务
            throw e;
        } catch (Exception e) {
            log.error("SDK调用异常", e);
            throw e;
        }
    }
```

#### 单元测试说明

1、请求正确，返回Boolean对象，B端依据此对象处理业务逻辑；

2、请求参数校验不合格，抛出PloyvSdkException，错误信息见PloyvSdkException.getMessage()，如 \[ 输入参数 \[xxx.chat.LivexxxRequest]对象校验失败，失败字段 \[pic不能为空 / msg不能为空] ]

3、服务器处理异常，抛出PloyvSdkException，错误信息见PloyvSdkException.getMessage()，如 \[ 保利威请求返回数据错误，请求流水号：66e7ad29fd04425a84c2b2b562d2025b，错误原因： invalid signature. ]

#### 请求入参描述

| 参数名       | 必选    | 类型      | 说明                                 |
| --------- | ----- | ------- | ---------------------------------- |
| channelId | true  | String  | 频道号                                |
| oldCode   | true  | String  | 需要更新的原白名单记录，长度不超过64位               |
| code      | true  | String  | 新的白名单记录，长度不超过64位                   |
| name      | false | String  | 新的昵称，长度不超过64位（不传则不修改）              |
| groupNo   | false | Integer | 新的分组序号，1\~50之间（不传则不修改）             |
| groupRole | false | String  | 新的组内身份（不传则不修改） leader：组长 member：组员 |

#### 返回对象描述

true为更新成功，false为更新失败<br>
