> 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/live/java/channeloperate.md).

# Channel Operate

### 1、创建频道

#### 描述

```
创建一个直播频道，返回直播频道相关的基础信息。
接口地址（仅做说明使用）：https://api.polyv.net/live/v4/channel/create
```

#### 调用约束

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

#### 单元测试

```java
	@Test
	public void testCreateChannelV2() throws Exception, NoSuchAlgorithmException {
        LiveChannelV2Request liveChannelRequest = new LiveChannelV2Request();
        LiveChannelV2Response liveChannelResponse = null;
        try {
            liveChannelRequest.setName("gateway 从入门到精通")
                    .setNewScene(LiveConstant.NewSceneType.SEMINAR.getCode())
                    .setTemplate("seminar")
                    .setCategoryId(391352)
                    .setSeminarAttendeePassword(super.getRandomString(6))
                    .setSeminarHostPassword(super.getRandomString(7))
                    .setEndTime(super.getDate(2034,11,11));
            liveChannelResponse = new LiveChannelOperateServiceImpl().createChannelV2(liveChannelRequest);
            Assert.assertNotNull(liveChannelResponse);
            if (liveChannelResponse != null) {
                //to do something ......
                log.debug("频道创建成功{}", JSON.toJSONString(liveChannelResponse));
                log.debug("网页开播地址：https://live.polyv.net/web-start/login?channelId={}",
                        liveChannelResponse.getChannelId());
                log.debug("网页观看地址：https://live.polyv.cn/watch/{} ", liveChannelResponse.getChannelId());
                //TODO 此处创建完成后删除了频道，正式使用需删除该语句
                super.deleteChannel(liveChannelResponse.getChannelId());
            }
        } catch (PloyvSdkException e) {
            //参数校验不合格 或者 请求服务器端500错误，错误信息见PloyvSdkException.getMessage(),B
            log.error(e.getMessage(), e);
            // 异常返回做B端异常的业务逻辑，记录log 或者 上报到ETL 或者回滚事务
            throw e;
        } catch (Exception e) {
            log.error("SDK调用异常", e);
            throw e;
        }
    }
```

#### 单元测试说明

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

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

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

#### 请求入参描述

| 参数名                     | 必选    | 类型      | 说明                                                                                                                                                                                                                                                                                                                                                                                                              |
| ----------------------- | ----- | ------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| name                    | true  | String  | 直播名称，最大长度100                                                                                                                                                                                                                                                                                                                                                                                                    |
| newScene                | true  | String  | 直播场景 (topclass-大班课 、 double-双师课（该场景需开通） 、 train-企业培训 、 seminar-研讨会 、 alone-活动营销)                                                                                                                                                                                                                                                                                                                                |
| template                | true  | String  | <p>直播模板 (ppt-三分屏(横屏) 、 portrait\_ppt-三分屏(竖屏) 、 alone-纯视频(横屏) 、portrait\_alone-纯视频(竖屏) 、 topclass-纯视频-极速(横屏) 、 portrait\_topclass-纯视频-极速(竖屏) 、 seminar-研讨会、guide（导播，该场景需开通）)<br>直播场景为topclass时，该字段支持ppt、portrait\_ppt、alone、portrait\_alone、topclass、portrait\_topclass<br>直播场景为train、guide或alone时，该字段支持ppt、portrait\_ppt、alone、portrait\_alone<br>直播场景为double时，该字段支持ppt、alone<br>直播场景为seminar时，该字段支持seminar</p> |
| channelPasswd           | false | String  | 讲师登录密码，直播场景不是研讨会时有效，长度6-16位，不传则由系统随机生成                                                                                                                                                                                                                                                                                                                                                                          |
| seminarHostPassword     | false | String  | 研讨会主持人密码，仅直播场景是研讨会时有效，长度6-16位，不传则由系统随机生成。研讨会主持人密码和参会人密码不能相同。                                                                                                                                                                                                                                                                                                                                                    |
| seminarAttendeePassword | false | String  | 研讨会参会人密码，仅直播场景是研讨会时有效，长度6-16位，不传则由系统随机生成。研讨会主持人密码和参会人密码不能相同。                                                                                                                                                                                                                                                                                                                                                    |
| pureRtcEnabled          | false | String  | 直播延迟 Y无延时 N普通延迟                                                                                                                                                                                                                                                                                                                                                                                                 |
| type                    | false | String  | 转播类型 normal不开启、transmit发起转播、receive接收转播（该功能需要开通）                                                                                                                                                                                                                                                                                                                                                                |
| doubleTeacherType       | false | String  | 线上双师 transmit大房间、receive小房间                                                                                                                                                                                                                                                                                                                                                                                     |
| cnAndEnLiveEnabled      | false | String  | 中英双语直播开关 Y开、N关                                                                                                                                                                                                                                                                                                                                                                                                  |
| splashImg               | false | String  | 引导页图片地址，非保利威域名下的图片需先调用[上传图片资源](https://git.polyv.net/help-center/document-center/-/blob/master/live/java/webSetting?id=_2、上传图片资源/README.md)上传                                                                                                                                                                                                                                                                   |
| linkMicLimit            | false | Integer | 连麦人数限制，最多16人                                                                                                                                                                                                                                                                                                                                                                                                    |
| categoryId              | false | Integer | 分类ID，可通过“查询直播分类”接口获取                                                                                                                                                                                                                                                                                                                                                                                            |
| startTime               | false | Date    | 开始时间，格式：yyyy-MM-dd HH:mm:ss【注：仅做直播前倒计时显示，不对讲师开播操作产生影响】                                                                                                                                                                                                                                                                                                                                                          |
| endTime                 | false | Date    | 结束时间，格式：yyyy-MM-dd HH:mm:ss【注：仅做未开播时直播状态判断显示，不对讲师开播操作产生影响】                                                                                                                                                                                                                                                                                                                                                      |
| subAccount              | false | String  | 子账号邮箱，填写时频道会创建在该子账号下（子账号不能被删除或者禁用），暂无法通过接口获取                                                                                                                                                                                                                                                                                                                                                                    |

#### 返回对象描述

| 参数名                     | 类型     | 说明                                       |
| ----------------------- | ------ | ---------------------------------------- |
| channelId               | String | 频道ID                                     |
| userId                  | String | POLYV用户ID，和保利威官网一致，获取路径：官网->登录->直播（开发设置） |
| channelPasswd           | String | 讲师登录密码，直播场景不是研讨会时不为null，长度6-16位          |
| seminarHostPassword     | String | 研讨会主持人密码，仅直播场景是研讨会时不为null，长度6-16位        |
| seminarAttendeePassword | String | 研讨会参会人密码，仅直播场景是研讨会时不为null，长度6-16位        |

\ <br>

***

\ <br>

### 2、批量创建频道

#### 描述

```
批量创建频道
接口地址（仅做说明使用）：https://api.polyv.net/live/v4/channel/create-batch
```

#### 调用约束

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

#### 单元测试

```java
	@Test
	public void testCreateChannelListV2() throws IOException, NoSuchAlgorithmException {
        LiveCreateChannelListV2Request liveCreateChannelListV2Request = new LiveCreateChannelListV2Request();
        List<LiveCreateChannelListV2Response> liveCreateChannelListV2Response;
        try {
            List<LiveCreateChannelListV2Request.ChannelV2CreateBatch> channelV2CreateBatch = new ArrayList<>();
            channelV2CreateBatch.add(LiveCreateChannelListV2Request.ChannelV2CreateBatch.builder()
                    .name("测试批量创建频道1（可删）")
                    .newScene(LiveConstant.NewSceneType.ALONE.getCode())
                    .template(LiveConstant.Template.ALONE.getCode())
                    .channelPasswd(super.getRandomString(8))
                    .pureRtcEnabled(LiveConstant.Flag.YES.getFlag())
                    .categoryId(391352)
                    .linkMicLimit(2)
                    .startTime(super.getDate(System.currentTimeMillis() + 600 * 1000))
                    .build());
            channelV2CreateBatch.add(LiveCreateChannelListV2Request.ChannelV2CreateBatch.builder()
                    .name("测试批量创建频道2（可删）")
                    .newScene(LiveConstant.NewSceneType.SEMINAR.getCode())
                    .template(LiveConstant.Template.SEMINAR.getCode())
                    .seminarHostPassword(super.getRandomString(8))
                    .seminarAttendeePassword(super.getRandomString(8))
                    .categoryId(391352)
                    .subAccount("test-dev@qq.com")
                    .build());
            liveCreateChannelListV2Request.setChannels(channelV2CreateBatch);
            liveCreateChannelListV2Response = new LiveChannelOperateServiceImpl().createBatchV2(
                    liveCreateChannelListV2Request);
            Assert.assertNotNull(liveCreateChannelListV2Response);
            if (liveCreateChannelListV2Response != null) {
                //to do something ......
                log.debug("测试批量创建频道成功{}", JSON.toJSONString(liveCreateChannelListV2Response));
                //TODO 此处创建完成后删除了频道，正式使用需删除该语句
                liveCreateChannelListV2Response.stream()
                        .forEach(channel -> super.tryDeleteChannel(channel.getChannelId()));
            }
        } 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、请求正确，返回LiveCreateChannelListV2Response对象，B端依据此对象处理业务逻辑；

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

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

#### 请求入参描述

| 参数名      | 必选   | 类型    | 说明                                                                                                                                                                        |
| -------- | ---- | ----- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| channels | true | Array | 批量创建频道请求体【详见[ChannelV2CreateBatch参数描述](https://git.polyv.net/help-center/document-center/-/blob/master/live/java/channelOperate.md?id=p8da229ddb2b845ca646a942aa141bd12)】 |

[**ChannelV2CreateBatch参数描述**](#/channelOperate.md?id=p8da229ddb2b845ca646a942aa141bd12)

| 参数名                     | 必选    | 类型      | 说明                                                                                                                                                                                                                                                                                                                                                                                       |
| ----------------------- | ----- | ------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| name                    | true  | String  | 直播名称，最大长度100                                                                                                                                                                                                                                                                                                                                                                             |
| newScene                | true  | String  | 直播场景 (topclass-大班课 、 double-双师课（该场景需开通） 、 train-企业培训 、 seminar-研讨会 、 alone-活动营销)                                                                                                                                                                                                                                                                                                         |
| template                | true  | String  | <p>直播模板 (ppt-三分屏(横屏) 、 portrait\_ppt-三分屏(竖屏) 、 alone-纯视频(横屏) 、portrait\_alone-纯视频(竖屏) 、 topclass-纯视频-极速(横屏) 、 portrait\_topclass-纯视频-极速(竖屏) 、 seminar-研讨会)<br>直播场景为topclass时，该字段支持ppt、portrait\_ppt、alone、portrait\_alone、topclass、portrait\_topclass<br>直播场景为train或alone时，该字段支持ppt、portrait\_ppt、alone、portrait\_alone<br>直播场景为double时，该字段支持ppt、alone<br>直播场景为seminar时，该字段支持seminar</p> |
| channelPasswd           | false | String  | 讲师登录密码，直播场景不是研讨会时有效，长度6-16位，不传则由系统随机生成                                                                                                                                                                                                                                                                                                                                                   |
| seminarHostPassword     | false | String  | 研讨会主持人密码，仅直播场景是研讨会时有效，长度6-16位，不传则由系统随机生成。研讨会主持人密码和参会人密码不能相同。                                                                                                                                                                                                                                                                                                                             |
| seminarAttendeePassword | false | String  | 研讨会参会人密码，仅直播场景是研讨会时有效，长度6-16位，不传则由系统随机生成。研讨会主持人密码和参会人密码不能相同。                                                                                                                                                                                                                                                                                                                             |
| pureRtcEnabled          | false | String  | 直播延迟 Y无延时 N普通延迟                                                                                                                                                                                                                                                                                                                                                                          |
| type                    | false | String  | 转播类型 normal不开启、transmit发起转播、receive接收转播（该功能需要开通），部分直播场景不支持转播设置，具体请阅读接口约束                                                                                                                                                                                                                                                                                                                 |
| doubleTeacherType       | false | String  | 线上双师 transmit大房间、receive小房间                                                                                                                                                                                                                                                                                                                                                              |
| cnAndEnLiveEnabled      | false | String  | 中英双语直播开关 Y开、N关                                                                                                                                                                                                                                                                                                                                                                           |
| splashImg               | false | String  | 引导页图片地址，非保利威域名下的图片需先调用[上传图片资源](https://git.polyv.net/help-center/document-center/-/blob/master/live/java/webSetting?id=_2、上传图片资源/README.md)上传                                                                                                                                                                                                                                            |
| linkMicLimit            | false | Integer | 连麦人数限制，最多16人                                                                                                                                                                                                                                                                                                                                                                             |
| categoryId              | false | Integer | 分类ID，可通过“查询直播分类”接口获取                                                                                                                                                                                                                                                                                                                                                                     |
| startTime               | false | Date    | 开始时间                                                                                                                                                                                                                                                                                                                                                                                     |
| subAccount              | false | String  | 子账号邮箱，填写时频道会创建在该子账号下（子账号不能被删除或者禁用），暂无法通过接口获取                                                                                                                                                                                                                                                                                                                                             |

#### 返回对象描述

返回对象是List\<LiveCreateChannelListV2Response>，**LiveCreateChannelListV2Response**具体元素内容如下：

| 参数名                     | 类型     | 说明                            |
| ----------------------- | ------ | ----------------------------- |
| channelId               | String | 频道ID                          |
| userId                  | String | 校验信息                          |
| scene                   | String | 直播场景                          |
| channelPasswd           | String | 讲师登录密码，非研讨会场景使用，长度6-16位       |
| seminarHostPassword     | String | 研讨会主持人密码，仅直播场景是研讨会时返回，长度6-16位 |
| seminarAttendeePassword | String | 研讨会参会人密码，仅直播场景是研讨会时返回，长度6-16位 |

\ <br>

***

\ <br>

### 3、创建并初始化频道

#### 描述

```
根据请求参数与默认模板创建频道
接口地址（仅做说明使用）：https://api.polyv.net/live/v4/channel/create-init
```

#### 调用约束

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

#### 单元测试

```java
	@Test
	public void testCreateChannelInitV2() throws IOException, NoSuchAlgorithmException {
        LiveChannelInitV2Request liveChannelInitV2Request = new LiveChannelInitV2Request();
        LiveChannelInitV2Response liveChannelInitV2Response;
        try {
            //基础信息
            LiveChannelInitV2Request.BasicSetting basicSetting = new LiveChannelInitV2Request.BasicSetting().setName(
                            "创建并初始化新版后台频道-验证码观看")
                    .setChannelPasswd(getRandomString(6))
                    .setNewScene(LiveConstant.NewSceneType.TOPCLASS.getCode())
                    .setTemplate(LiveConstant.Template.PPT.getCode())
                    .setCategoryId(391352)
                    .setDescription("这是一个描述")
                    .setLinkMicLimit(1)
                    .setSubAccount("test-dev@qq.com");
            liveChannelInitV2Request.setBasicSetting(basicSetting);
            //主要观看条件 验证码观看
            LiveChannelInitV2Request.MasterAuthSetting masterAuthSetting =
                    new LiveChannelInitV2Request.MasterAuthSetting().setAuthType(
                            LiveConstant.AuthType.CODE.getDesc())
                    .setEnabled("Y")
                    .setAuthCode("123456")
                    .setQCodeTips("提示文案")
                    .setQCodeImg("https://live.polyv.net/static/images/live-header-logo.png");
            liveChannelInitV2Request.setMasterAuthSetting(masterAuthSetting);
            //设置角色
            LiveChannelInitV2Request.Roles assistantRole = new LiveChannelInitV2Request.Roles();
            assistantRole.setNickName("孙助教").setActor("助教").setPasswd(getRandomString(6)).setRole("Assistant");
            LiveChannelInitV2Request.Roles guestRole = new LiveChannelInitV2Request.Roles();
            guestRole.setNickName("赵嘉宾").setActor("嘉宾").setPasswd(getRandomString(6)).setRole("Guest");
            List<LiveChannelInitV2Request.Roles> roles = new ArrayList<>();
            roles.add(assistantRole);
            roles.add(guestRole);
            liveChannelInitV2Request.setRoles(roles);
            liveChannelInitV2Response = new LiveChannelOperateServiceImpl().createChannelInitV2(
                    liveChannelInitV2Request);
            Assert.assertNotNull(liveChannelInitV2Response);
            if (liveChannelInitV2Response != null) {
                //to do something ......
                log.debug("测试创建并初始化频道(新版后台)成功 {}", JSON.toJSONString(liveChannelInitV2Response));
                //TODO 此处创建完成后删除了频道，正式使用需删除该语句
                super.tryDeleteChannel(liveChannelInitV2Response.getChannelId());
            }
        } 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、请求正确，返回LiveChannelInitV2Response对象，B端依据此对象处理业务逻辑；

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

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

#### 请求入参描述

| 参数名               | 必选    | 类型                | 说明                                                                                                                                                                                                                                             |
| ----------------- | ----- | ----------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| basicSetting      | true  | BasicSetting      | 基础设置【详见[BasicSetting参数描述](https://git.polyv.net/help-center/document-center/-/blob/master/live/java/channelOperate.md?id=p6e8da11ca0c573395e52a492dbd0dbdd)】                                                                                   |
| masterAuthSetting | false | MasterAuthSetting | 主要观看条件【详见[MasterAuthSetting参数描述](https://git.polyv.net/help-center/document-center/-/blob/master/live/java/channelOperate.md?id=p0474571a7fce5861bfe25b75ac03e0a0)】                                                                            |
| roles             | false | Array             | 角色设置，包括讲师、助教、嘉宾。 不传该字段，将按照默认模板设置角色信息。 传入该字段，不设置讲师，将按照默认模板设置讲师信息。 传入该字段，不设置助教、嘉宾将不创建。最多设置10个角色【详见[Roles参数描述](https://git.polyv.net/help-center/document-center/-/blob/master/live/java/channelOperate.md?id=p28ac07ac384394b887452623812e72e3)】 |

[**BasicSetting参数描述**](#/channelOperate.md?id=p6e8da11ca0c573395e52a492dbd0dbdd)

| 参数名                     | 必选    | 类型      | 说明                                                                                                                                                                                                                                                                                                                                                                    |
| ----------------------- | ----- | ------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| name                    | true  | String  | 直播名称，最大长度50                                                                                                                                                                                                                                                                                                                                                           |
| newScene                | true  | String  | 直播场景 (topclass-大班课 、 double-双师课（该场景需开通） 、 train-企业培训 、 seminar-研讨会 、 alone-活动营销)                                                                                                                                                                                                                                                                                      |
| template                | false | String  | 直播模板 (ppt-三分屏(横屏) 、 portrait\_ppt-三分屏(竖屏) 、 alone-纯视频(横屏) 、portrait\_alone-纯视频(竖屏) 、 topclass-纯视频-极速(横屏) 、 portrait\_topclass-纯视频-极速(竖屏) 、 seminar-研讨会) 直播场景为topclass时，该字段支持ppt、portrait\_ppt、alone、portrait\_alone、topclass、portrait\_topclass 直播场景为train或alone时，该字段支持ppt、portrait\_ppt、alone、portrait\_alone 直播场景为double时，该字段支持ppt、alone 直播场景为seminar时，该字段支持seminar |
| channelPasswd           | false | String  | 讲师登录密码，直播场景不是研讨会时有效，长度6-16位，不传则由系统随机生成                                                                                                                                                                                                                                                                                                                                |
| seminarHostPassword     | false | String  | 研讨会主持人密码，仅直播场景是研讨会时有效，长度6-16位，不传则由系统随机生成                                                                                                                                                                                                                                                                                                                              |
| seminarAttendeePassword | false | String  | 研讨会参会人密码，仅直播场景是研讨会时有效，长度6-16位，不传则由系统随机生成                                                                                                                                                                                                                                                                                                                              |
| categoryId              | false | Integer | 分类ID                                                                                                                                                                                                                                                                                                                                                                  |
| startTime               | false | Date    | 直播开始时间                                                                                                                                                                                                                                                                                                                                                                |
| pureRtcEnabled          | false | String  | 无延迟直播开关，Y：开启，N：关闭                                                                                                                                                                                                                                                                                                                                                     |
| type                    | false | String  | 频道类型 发起转播：transmit 接收转播：receive 普通频道：normal                                                                                                                                                                                                                                                                                                                           |
| doubleTeacherType       | false | String  | 线上双师房间类型 transmit大房间、receive小房间                                                                                                                                                                                                                                                                                                                                       |
| cnAndEnLiveEnabled      | false | String  | 中英双语直播开关Y开、N关                                                                                                                                                                                                                                                                                                                                                         |
| linkMicLimit            | false | Integer | 连麦人数限制，最多16人                                                                                                                                                                                                                                                                                                                                                          |
| description             | false | String  | 直播介绍，最多1024字符长度                                                                                                                                                                                                                                                                                                                                                       |
| logoImg                 | false | String  | 直播logo图片                                                                                                                                                                                                                                                                                                                                                              |
| splashImg               | false | String  | 引导页图片地址，非保利威域名下的图片需先调用[上传图片资源](https://git.polyv.net/help-center/document-center/-/blob/master/live/java/webSetting?id=_2、上传图片资源/README.md)上传                                                                                                                                                                                                                         |
| coverImg                | false | String  | 播放器封面图片，没有直播和回放的时候显示                                                                                                                                                                                                                                                                                                                                                  |
| subAccount              | false | String  | 子账号邮箱，填写时频道会创建在该子账号下（子账号不能被删除或者禁用），暂无法通过接口获取                                                                                                                                                                                                                                                                                                                          |

[**MasterAuthSetting参数描述**](#/channelOperate.md?id=p0474571a7fce5861bfe25b75ac03e0a0)

| 参数名                 | 必选    | 类型      | 说明                                                                            |
| ------------------- | ----- | ------- | ----------------------------------------------------------------------------- |
| enabled             | true  | String  | 是否开启观看条件 Y：开启 N：关闭                                                            |
| authType            | false | String  | 观看条件类型 code：验证码观看 pay：付费观看 custom：自定义授权观看 external：外部授权观看 direct：独立授权观看       |
| authCode            | false | String  | authType为code时，设置参数，必填。观看验证码，长度不超过8位                                          |
| codeAuthTips        | false | String  | authType为code时，设置参数，非必填。欢迎标题，长度不超过20位，默认：欢迎观看本次直播                             |
| qCodeTips           | false | String  | authType为code时，设置参数，非必填。验证码提示文案，长度不超过30位，默认：扫描二维码获得验证码                        |
| qCodeImg            | false | String  | authType为code时，设置参数，非必填。二维码图片地址                                               |
| payAuthTips         | true  | String  | 当authType为pay时，设置参数，必填。欢迎语标题，长度不超过20位                                         |
| price               | true  | Float   | 当authType为pay时，设置参数，必填。价格，单位为元                                                |
| watchEndTime        | false | Date    | 当authType为pay时，设置参数，非必填。付费有效截止日期                                              |
| validTimePeriod     | false | Integer | 当authType为pay时，设置参数，非必填。付费有效时长，单位天。当watchEndTime和validTimePeriod都为空时，表示付费永久有效 |
| customKey           | true  | String  | 当authType为custom时，设置参数，必填。SecretKey，长度不超过10位                                  |
| customUri           | true  | String  | 当authType为custom时，设置参数，必填。自定义url                                              |
| externalKey         | true  | String  | 当authType为external时，设置参数，必填。SecretKey，长度不超过10位                                |
| externalUri         | true  | String  | 当authType为external时，设置参数，必填。自定义url                                            |
| externalRedirectUri | false | String  | 当authType为external时，设置参数，非必填。失败跳转地址                                           |
| externalEntryText   | false | String  | 当authType为external时，设置参数，非必填。入口文本，默认为：登录观看                                    |
| directKey           | true  | String  | 当authType为direct时，设置参数，必填。独立授权SecretKey，长度不超过10位                              |

[**Roles参数描述**](#/channelOperate.md?id=p28ac07ac384394b887452623812e72e3)

| 参数名      | 必选    | 类型     | 说明                                    |
| -------- | ----- | ------ | ------------------------------------- |
| role     | true  | String | 角色类型 Teacher：讲师 Assistant：助教 Guest：嘉宾 |
| nickName | false | String | 角色昵称                                  |
| actor    | false | String | 角色头衔                                  |
| passwd   | false | String | 角色密码，密码长度6-16位，必须包含数字和英文              |
| avatar   | false | String | 角色头像图片地址，需包含协议                        |

#### 返回对象描述

| 参数名                     | 类型      | 说明                                                                                                                                                                                                                                                                                                                                                                    |
| ----------------------- | ------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| channelId               | String  | 频道ID                                                                                                                                                                                                                                                                                                                                                                  |
| name                    | String  | 频道名称                                                                                                                                                                                                                                                                                                                                                                  |
| userId                  | String  | POLYV用户ID，和保利威官网一致，获取路径：官网->登录->直播（开发设置）                                                                                                                                                                                                                                                                                                                              |
| channelPasswd           | String  | 讲师登录密码，非研讨会场景使用，长度6-16位                                                                                                                                                                                                                                                                                                                                               |
| seminarHostPassword     | String  | 研讨会主持人密码，仅直播场景是研讨会时返回，长度6-16位                                                                                                                                                                                                                                                                                                                                         |
| seminarAttendeePassword | String  | 研讨会参会人密码，仅直播场景是研讨会时返回，长度6-16位                                                                                                                                                                                                                                                                                                                                         |
| publisher               | String  | 主持人名称                                                                                                                                                                                                                                                                                                                                                                 |
| description             | String  | 直播介绍                                                                                                                                                                                                                                                                                                                                                                  |
| newScene                | String  | 直播场景 (topclass-大班课 、 double-双师课（该场景需开通） 、 train-企业培训 、 seminar-研讨会 、 alone-活动营销)                                                                                                                                                                                                                                                                                      |
| template                | String  | 直播模板 (ppt-三分屏(横屏) 、 portrait\_ppt-三分屏(竖屏) 、 alone-纯视频(横屏) 、portrait\_alone-纯视频(竖屏) 、 topclass-纯视频-极速(横屏) 、 portrait\_topclass-纯视频-极速(竖屏) 、 seminar-研讨会) 直播场景为topclass时，该字段支持ppt、portrait\_ppt、alone、portrait\_alone、topclass、portrait\_topclass 直播场景为train或alone时，该字段支持ppt、portrait\_ppt、alone、portrait\_alone 直播场景为double时，该字段支持ppt、alone 直播场景为seminar时，该字段支持seminar |
| linkMicLimit            | Integer | 连麦人数                                                                                                                                                                                                                                                                                                                                                                  |
| pureRtcEnabled          | String  | 直播延迟 Y：无延时迟 N：普通延迟                                                                                                                                                                                                                                                                                                                                                    |
| type                    | String  | 频道类型 发起转播：transmit 接收转播：receive 普通频道：normal                                                                                                                                                                                                                                                                                                                           |
| currentTimeMillis       | Date    | 当前13位毫秒级时间戳                                                                                                                                                                                                                                                                                                                                                           |

\ <br>

***

\ <br>

### 4、创建MR频道

#### 描述

```
创建MR频道
接口地址（仅做说明使用）：https://api.polyv.net/live/v4/channel/mr/create
```

#### 调用约束

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

#### 单元测试

```java
	@Test
	public void testCreateMrChannel() throws IOException, NoSuchAlgorithmException {
        LiveCreateMrChannelRequest liveCreateMrChannelRequest = new LiveCreateMrChannelRequest();
        LiveCreateMrChannelResponse liveCreateMrChannelResponse;
        try {
            liveCreateMrChannelRequest.setName("SDK测试创建MR频道")
                    .setStartTime(getXDay(new Date(), 10))
                    .setChannelPasswd(getRandomString(16));
            liveCreateMrChannelResponse = new LiveChannelOperateServiceImpl().createMrChannel(
                    liveCreateMrChannelRequest);
            Assert.assertNotNull(liveCreateMrChannelResponse);
            if (liveCreateMrChannelResponse != null) {
                //to do something ......
                log.debug("测试创建MR频道成功 {}", JSON.toJSONString(liveCreateMrChannelResponse));
                //TODO 此处创建完成后删除了频道，正式使用需删除该语句
                super.tryDeleteChannel(liveCreateMrChannelResponse.getChannelId());
            }
        } 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、请求正确，返回LiveCreateMrChannelResponse对象，B端依据此对象处理业务逻辑；

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

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

#### 请求入参描述

| 参数名             | 必选    | 类型      | 说明                                                                                                                                            |
| --------------- | ----- | ------- | --------------------------------------------------------------------------------------------------------------------------------------------- |
| name            | true  | String  | 直播名称，最大长度100                                                                                                                                  |
| categoryId      | false | Integer | 分类ID                                                                                                                                          |
| startTime       | false | Date    | 开始时间，13位毫秒级时间戳                                                                                                                                |
| channelPasswd   | false | String  | MR控制台密码，长度6-16位，不传则由系统随机生成                                                                                                                    |
| assistantPasswd | false | String  | MR直播助理角色密码，长度6-16位，不传则由系统随机生成                                                                                                                 |
| splashImg       | false | String  | 引导页图片地址，非保利威域名下的图片需先调用[上传图片资源](https://git.polyv.net/help-center/document-center/-/blob/master/live/java/webSetting?id=_2、上传图片资源/README.md)上传 |
| subAccount      | false | String  | 子帐号邮箱，提交后，该频道帐号在后台拥有的权限会跟随该子帐号的频道权限                                                                                                           |

#### 返回对象描述

| 参数名              | 类型     | 说明            |
| ---------------- | ------ | ------------- |
| channelId        | String | 频道ID          |
| name             | String | 频道名称          |
| userId           | String | 直播账号userId    |
| channelPasswd    | String | MR直播-控制台登录密码  |
| assistantAccount | String | MR直播-直播助理账号   |
| assistantPasswd  | String | MR直播-直播助理登录密码 |

\ <br>

***

\ <br>

### 5、查询频道信息

#### 描述

```
查询频道信息
接口地址（仅做说明使用）：https://api.polyv.net/live/v2/channels/%s/get
```

#### 调用约束

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

#### 单元测试

```java
	@Test
	public void testGetChannelInfo() throws Exception, NoSuchAlgorithmException {
        LiveChannelInfoRequest liveChannelInfoRequest = new LiveChannelInfoRequest();
        LiveChannelInfoResponse liveChannelInfoResponse;
        try {
            //准备测试数据
            String channelId = super.createChannel();
            liveChannelInfoRequest.setChannelId(channelId);
            liveChannelInfoResponse = new LiveChannelOperateServiceImpl().getChannelInfo(liveChannelInfoRequest);
            Assert.assertNotNull(liveChannelInfoResponse);
            if (liveChannelInfoResponse != null) {
                //to do something ......
                log.debug("查询频道信息成功{}", JSON.toJSONString(liveChannelInfoResponse));
            }
        } catch (PloyvSdkException e) {
            //参数校验不合格 或者 请求服务器端500错误，错误信息见PloyvSdkException.getMessage(),B
            log.error(e.getMessage(), e);
            // 异常返回做B端异常的业务逻辑，记录log 或者 上报到ETL 或者回滚事务
            throw e;
        } catch (Exception e) {
            log.error("SDK调用异常", e);
            throw e;
        }
    }
```

#### 单元测试说明

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

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

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

#### 请求入参描述

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

#### 返回对象描述

| 参数名                 | 类型      | 说明                                                        |
| ------------------- | ------- | --------------------------------------------------------- |
| channelId           | String  | 频道号                                                       |
| userId              | String  | POLYV用户ID，和保利威官网一致，获取路径：官网->登录->直播（开发设置）                  |
| name                | String  | 直播频道名称                                                    |
| description         | String  | 直播频道描述                                                    |
| url                 | String  | 直播推流地址                                                    |
| stream              | String  | 直播流名称                                                     |
| logoImage           | String  | 播放器logo                                                   |
| logoOpacity         | Float   | Logo不透明度， 取值【0-1】, 1表示完全不透明                               |
| logoPosition        | String  | Logo位置                                                    |
| logoHref            | String  | Logo的跳转链接                                                 |
| coverImage          | String  | 播放前显示的封面图                                                 |
| coverHref           | String  | 封面图的跳转链接                                                  |
| waitImage           | String  | 等待推流时的显示图片                                                |
| waitHref            | String  | 等待推流时显示图片的跳转链接                                            |
| cutoffImage         | String  | 切断流时的显示图片                                                 |
| cutoffHref          | String  | 切断流时显示图片的跳转链接                                             |
| advertType          | String  | 广告类型                                                      |
| advertDuration      | String  | 广告时长，单位：秒                                                 |
| advertWidth         | String  | 广告区域宽度                                                    |
| advertHeight        | String  | 广告区域高度                                                    |
| advertImage         | String  | 图片广告                                                      |
| advertHref          | String  | 广告的跳转链接                                                   |
| advertFlvVid        | String  | 视频广告ID                                                    |
| advertFlvUrl        | String  | 视频广告链接                                                    |
| playerColor         | String  | 播放器控制栏颜色                                                  |
| autoPlay            | Boolean | 自动播放                                                      |
| warmUpFlv           | String  | 一开始的暖场视频                                                  |
| passwdRestrict      | Boolean | 观看密码限制，需要输入观看密码才能播放流                                      |
| passwdEncrypted     | String  | 观看密码加密后的密文                                                |
| isOnlyAudio         | String  | 仅推音频流                                                     |
| isLowLatency        | String  | 低延迟                                                       |
| m3u8Url             | String  | 直播拉流（播放）m3u8地址                                            |
| m3u8Url1            | String  | 直播拉流（播放）m3u8地址1                                           |
| m3u8Url2            | String  | 直播拉流（播放）m3u8地址2                                           |
| m3u8Url3            | String  | 直播拉流（播放）m3u8地址3                                           |
| currentTimeMillis   | Long    | 服务器返回的时间戳（毫秒）                                             |
| channelLogoImage    | String  | 频道的图标                                                     |
| publisher           | String  | 主持人姓名                                                     |
| scene               | String  | 直播场景：alone 活动直播, topclass 大班课, ppt 三分屏, seminar：研讨会       |
| categoryId          | String  | 所属分类Id                                                    |
| categoryName        | String  | 所属分类名称                                                    |
| channelPasswd       | String  | 频道密码                                                      |
| channelViewerPasswd | String  | 参与者密码                                                     |
| streamType          | String  | client：客户端推流，pull：拉流，thirdpull：第三方拉流，disk：硬盘推流，audio：音频直播 |
| pureRtcEnabled      | String  | 无延迟直播开关，Y：开启，N：关闭                                         |
| type                | String  | transmit：发起转播，normal：普通的频道，receive：接收转播                   |
| cnAndEnLiveEnabled  | String  | 中英文直播间开关，Y：开启，N：关闭                                        |
| pushEnUrl           | String  | 英文推流地址                                                    |
| closeDanmu          | String  | N：没有关闭弹幕，Y：关闭弹幕                                           |
| linkMicLimit        | Integer | -1：使用账号连麦人数，0-16：代表连麦人数                                   |

\ <br>

***

\ <br>

### 6、查询频道基本信息

#### 描述

```
查询频道基本信息，观看页状态与新版后台一致
接口地址（仅做说明使用）：https://api.polyv.net/live/v4/channel/basic/get
```

#### 调用约束

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

#### 单元测试

```java
	@Test
	public void testGetChannelDetail() throws IOException, NoSuchAlgorithmException {
        LiveChannelBasicInfoV2Request liveChannelBasicInfoV2Request = new LiveChannelBasicInfoV2Request();
        LiveChannelBasicInfoV2Response liveChannelBasicInfoV2Response;
        try {
            String channelId = super.createChannel();
            liveChannelBasicInfoV2Request.setChannelId(channelId);
            liveChannelBasicInfoV2Response = new LiveChannelOperateServiceImpl().getChannelDetail(
                    liveChannelBasicInfoV2Request);
            Assert.assertNotNull(liveChannelBasicInfoV2Response);
            if (liveChannelBasicInfoV2Response != null) {
                //to do something ......
                log.debug("测试查询频道信息成功 {}", JSON.toJSONString(liveChannelBasicInfoV2Response));
            }
        } 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、请求正确，返回LiveChannelBasicInfoV2Response对象，B端依据此对象处理业务逻辑；

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

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

#### 请求入参描述

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

#### 返回对象描述

| 参数名                              | 类型           | 说明                                                                                                                                                                   |
| -------------------------------- | ------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| channelId                        | String       | 频道号                                                                                                                                                                  |
| name                             | String       | 频道名称                                                                                                                                                                 |
| scene                            | String       | 直播场景：alone 活动拍摄；ppt 三分屏；topclass 大班课；seminar：研讨会                                                                                                                     |
| newScene                         | String       | <p>新版后台直播场景，若未定义则取scene<br>undefined：未定义<br>topclass：大班课<br>double：双师课（需开通权限）<br>train：企业培训<br>seminar：研讨会<br>alone：活动营销</p>                                         |
| template                         | String       | <p>新版后台直播模板，若老版频道，该字段为未定义<br>undefined：未定义<br>ppt：文档+视频<br>alone：纯视频(专业)<br>topclass：纯视频(极速)<br>seminar：研讨会<br>portrait\_ppt：文档+视频(竖屏)<br>portrait\_alone：视频(竖屏)</p> |
| channelPasswd                    | String       | 频道密码                                                                                                                                                                 |
| publisher                        | String       | 主持人名称                                                                                                                                                                |
| startTime                        | Date         | 直播开始时间，关闭时为null                                                                                                                                                      |
| endTime                          | Date         | 直播结束时间                                                                                                                                                               |
| pageView                         | Integer      | 页面累计观看数                                                                                                                                                              |
| likes                            | Integer      | 观看页点赞数                                                                                                                                                               |
| coverImg                         | String       | 频道图标url                                                                                                                                                              |
| splashImg                        | String       | 引导页图片地址                                                                                                                                                              |
| splashEnabled                    | String       | 引导页开关（取值为Y/N）                                                                                                                                                        |
| desc                             | String       | 直播介绍                                                                                                                                                                 |
| consultingMenuEnabled            | String       | 咨询提问开关（取值为Y/N）                                                                                                                                                       |
| maxViewerRestrict                | String       | 限制最大在线观看人数开关（取值为Y/N）                                                                                                                                                 |
| maxViewer                        | Integer      | 最大在线观看人数                                                                                                                                                             |
| watchStatus                      | String       | 观看页状态 live：直播中 playback：回放中 end：已结束 waiting：等待中 unStart：未开始                                                                                                          |
| watchStatusText                  | String       | 观看页状态描述                                                                                                                                                              |
| userCategory                     | UserCategory | 频道所属分类的信息【详见[UserCategory参数描述](https://git.polyv.net/help-center/document-center/-/blob/master/live/java/channelOperate.md?id=pe3abdfe6bb5c2d7d3e8c16637b29d145)】    |
| authSettings                     | Array        | 直播观看条件列表【详见[AuthSetting参数描述](https://git.polyv.net/help-center/document-center/-/blob/master/live/java/channelOperate.md?id=p58a448aa73148a975abd3a68bf49329b)】      |
| linkMicLimit                     | Integer      | 频道连麦人数限制                                                                                                                                                             |
| createdAccountId                 | String       | 创建者账号id，为主账号创建时，返回主账号userId                                                                                                                                          |
| createdAccountEmail              | String       | 创建者账号邮箱                                                                                                                                                              |
| createdTime                      | Date         | 创建时间                                                                                                                                                                 |
| clientAloneTemplateBackgroundUrl | String       | 客户端模版背景图URL                                                                                                                                                          |
| liveCdnBackgroundUrl             | String       | 视频混流背景图URL                                                                                                                                                           |
| labelData                        | Array        | 标签id数组                                                                                                                                                               |

[**UserCategory参数描述**](#/channelOperate.md?id=pe3abdfe6bb5c2d7d3e8c16637b29d145)

| 参数名          | 类型      | 说明                                       |
| ------------ | ------- | ---------------------------------------- |
| categoryId   | Integer | 分类ID                                     |
| categoryName | String  | 分类名称                                     |
| userId       | String  | POLYV用户ID，和保利威官网一致，获取路径：官网->登录->直播（开发设置） |
| rank         | Integer | 分类的排序值                                   |

[**AuthSetting参数描述**](#/channelOperate.md?id=p58a448aa73148a975abd3a68bf49329b)

| 参数名                  | 类型      | 说明                                                                                                                             |
| -------------------- | ------- | ------------------------------------------------------------------------------------------------------------------------------ |
| channelId            | String  | 频道号                                                                                                                            |
| userId               | String  | POLYV用户ID，和保利威官网一致，获取路径：官网->登录->直播（开发设置）                                                                                       |
| rank                 | Integer | 用于实现一个频道设置两个观看条件，为1或2（1为主要条件，2为次要条件）                                                                                           |
| globalSettingEnabled | String  | 是否开启全局设置（Y/N）                                                                                                                  |
| enabled              | String  | 是否开启观看条件(Y/N)                                                                                                                  |
| authType             | String  | 观看条件类型(1. 无限制 none 2. 验证码观看 code 3. 付费观看 pay 4. 白名单观看 phone 5. 登记观看 info 6. 分享观看 wxshare 7. 自定义授权观看 custom 8. 外部授权观看 external) |
| authTips             | String  | 白名单观看提示信息                                                                                                                      |
| payAuthTips          | String  | 付费观看提示信息                                                                                                                       |
| authCode             | String  | 验证码观看方式的验证码                                                                                                                    |
| qCodeTips            | String  | 验证码观看方式的二维码提示【对应api文档的**qcodeTips**字段】                                                                                         |
| qCodeImg             | String  | 验证码观看方式的二维码图片【对应api文档的**qcodeImg**字段】                                                                                          |
| price                | Float   | 付费观看的价格                                                                                                                        |
| watchEndTime         | Date    | 付费观看，截止时间，为null表示：一次付费，永久有效                                                                                                    |
| validTimePeriod      | Integer | 付费观看的截止时长（天）                                                                                                                   |
| customKey            | String  | 自定义授权观看的key                                                                                                                    |
| customUri            | String  | 自定义授权观看的接口地址                                                                                                                   |
| externalKey          | String  | 外部授权观看的key                                                                                                                     |
| externalUri          | String  | 外部授权观看的接口地址                                                                                                                    |
| externalRedirectUri  | String  | 外部授权观看，用户直接访问观看页时的跳转地址                                                                                                         |
| directKey            | String  | 独立授权key                                                                                                                        |
| trialWatchEnabled    | String  | 试看开关，Y:开启试看，N:关闭试看                                                                                                             |
| trialWatchTime       | Integer | 试看时间，单位为分钟                                                                                                                     |
| trialWatchEndTime    | Date    | 试看截止日期，为null 表示对该频道永久有效                                                                                                        |
| whiteListInputTips   | String  | 白名单输入提示                                                                                                                        |
| whiteListEntryText   | String  | 白名单入口文案                                                                                                                        |
| infoDesc             | String  | 登记观看描述字段                                                                                                                       |
| customTeacherId      | String  | 自定义讲师ID                                                                                                                        |

\ <br>

***

\ <br>

### 7、查询授权和连麦的token

#### 描述

```
查询授权和连麦的token
接口地址（仅做说明使用）：https://api.polyv.net/live/v3/channel/common/get-chat-token
```

#### 调用约束

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

#### 单元测试

```java
	@Test
	public void testGetChannelAuthToken() throws Exception, NoSuchAlgorithmException {
        LiveChannelAuthTokenRequest liveChannelAuthTokenRequest = new LiveChannelAuthTokenRequest();
        LiveChannelAuthTokenResponse liveChannelAuthTokenResponse;
        try {
            //准备测试数据
            String channelId = super.createChannel();
            liveChannelAuthTokenRequest.setUserId(getRandomString(32))
                    .setChannelId(channelId)
                    .setRole(LiveConstant.Role.ADMIN.getDesc())
                    .setOrigin(null);
            liveChannelAuthTokenResponse = new LiveChannelOperateServiceImpl().getChannelAuthToken(
                    liveChannelAuthTokenRequest);
            Assert.assertNotNull(liveChannelAuthTokenResponse);
            if (liveChannelAuthTokenResponse != null) {
                //to do something ......
                log.debug("查询授权和连麦的token成功{}", JSON.toJSONString(liveChannelAuthTokenResponse));
            }
        } catch (PloyvSdkException e) {
            //参数校验不合格 或者 请求服务器端500错误，错误信息见PloyvSdkException.getMessage(),B
            log.error(e.getMessage(), e);
            // 异常返回做B端异常的业务逻辑，记录log 或者 上报到ETL 或者回滚事务
            throw e;
        } catch (Exception e) {
            log.error("SDK调用异常", e);
            throw e;
        }
    }
```

#### 单元测试说明

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

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

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

#### 请求入参描述

| 参数名       | 必选    | 类型     | 说明                                          |
| --------- | ----- | ------ | ------------------------------------------- |
| userId    | true  | String | C端观众ID                                      |
| channelId | true  | String | 频道号                                         |
| role      | true  | String | 角色，值有：teacher admin guest assistant viewer等 |
| origin    | false | String | 观看来源,可以有web,client,app等                     |

#### 返回对象描述

| 参数名             | 类型     | 说明                   |
| --------------- | ------ | -------------------- |
| token           | String | 链接接口需要的token值，有效期6小时 |
| mediaChannelKey | String | 连麦需要的key             |

\ <br>

***

\ <br>

### 8、修改频道的相关设置

#### 描述

```
修改频道的相关设置
接口地址（仅做说明使用）：https://api.polyv.net/live/v3/channel/basic/update
```

#### 调用约束

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

#### 单元测试

```java
	@Test
	public void testUpdateChannelSetting() throws Exception, NoSuchAlgorithmException {
        LiveChannelSettingRequest liveChannelSettingRequest = new LiveChannelSettingRequest();
        Boolean liveChannelSettingResponse;
        try {
            //准备测试数据
            String channelId = getAloneChannelId();
            LiveChannelSettingRequest.BasicSetting basicSetting = new LiveChannelSettingRequest.BasicSetting().setName(
                    "Junit测试(勿删)888")
                    .setChannelPasswd(getRandomString(7))
                    .setCategoryId(340019)
                    .setMaxViewer(0)
                    .setPageView(1000)
                    .setLikes(2000)
                    .setCoverImg("https://www.polyv.net/")
                    .setStartTime(0l)
                    .setDesc("这是一个描述")
                    .setPublisher("sadboy主讲")
                    .setLinkMicLimit(-1)
                    .setReceiveChannelIds(null);
            LiveChannelSettingRequest.AuthSetting authSetting = new LiveChannelSettingRequest.AuthSetting().setAuthType(
                    LiveConstant.AuthType.CODE.getDesc())
                    .setRank(1)
                    .setEnabled("Y")
                    .setAuthCode("123456")
                    .setQcodeTips("提示文案")
                    .setQcodeImg("https://live.polyv.net/static/images/live-header-logo.png");
            List<LiveChannelSettingRequest.AuthSetting> authSettings =
                    new ArrayList<LiveChannelSettingRequest.AuthSetting>();
            authSettings.add(authSetting);
            liveChannelSettingRequest.setChannelId(channelId)
                    .setBasicSetting(basicSetting)
                    .setAuthSettings(authSettings);
            liveChannelSettingResponse = new LiveChannelOperateServiceImpl().updateChannelSetting(
                    liveChannelSettingRequest);
            Assert.assertTrue(liveChannelSettingResponse);
            if (liveChannelSettingResponse) {
                //to do something ......
                log.debug("测试修改频道的相关设置成功");
            }
        } catch (PloyvSdkException e) {
            //参数校验不合格 或者 请求服务器端500错误，错误信息见PloyvSdkException.getMessage(),B
            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       | 需要设置频道详情的频道号，例如：1938028                                                                                                                                       |
| basicSetting | false | BasicSetting | 基础设置【详见[BasicSetting参数描述](https://git.polyv.net/help-center/document-center/-/blob/master/live/java/channelOperate.md?id=p0a128758819b12eb1d5913ec8fa8fcf1)】  |
| authSettings | false | Array        | 观看条件设置【详见[AuthSetting参数描述](https://git.polyv.net/help-center/document-center/-/blob/master/live/java/channelOperate.md?id=pf5ba5ff2578be966c2829ca5210283d7)】 |

[**BasicSetting参数描述**](#/channelOperate.md?id=p0a128758819b12eb1d5913ec8fa8fcf1)

| 参数名                    | 必选    | 类型      | 说明                                                                                                                                            |
| ---------------------- | ----- | ------- | --------------------------------------------------------------------------------------------------------------------------------------------- |
| name                   | false | String  | 频道名称                                                                                                                                          |
| channelPasswd          | false | String  | 频道密码,长度不能超过16位,必须同时包含字母和数字                                                                                                                    |
| publisher              | false | String  | 主持人名称                                                                                                                                         |
| startTime              | false | Long    | 直播开始时间，13位时间戳，设置为0 表示关闭直播开始时间显示                                                                                                               |
| pageView               | false | Integer | 累积观看数                                                                                                                                         |
| likes                  | false | Integer | 点赞数                                                                                                                                           |
| coverImg               | false | String  | 封面图片地址                                                                                                                                        |
| splashImg              | false | String  | 引导页图片地址，非保利威域名下的图片需先调用[上传图片资源](https://git.polyv.net/help-center/document-center/-/blob/master/live/java/webSetting?id=_2、上传图片资源/README.md)上传 |
| splashEnabled          | false | String  | 引导页开关(Y、N)                                                                                                                                    |
| desc                   | false | String  | 直播介绍                                                                                                                                          |
| consultingMenuEnabled  | false | String  | 咨询提问开关(Y、N)                                                                                                                                   |
| maxViewerRestrict      | false | String  | 是否限制最大观看人数(Y、N)                                                                                                                               |
| maxViewer              | false | Integer | 最大在线人数                                                                                                                                        |
| categoryId             | false | Integer | 频道的所属分类（分类ID可通过“获取直播分类”接口得到）                                                                                                                  |
| linkMicLimit           | false | Integer | -1<=连麦人数<=账号的连麦人数，-1：使用账号的连麦人数，最大16人                                                                                                          |
| operation              | false | String  | 是否增加转播关联，Y：表示增加关联，N：表示取消关联 (注：需要开启频道转播功能该参数才生效)(Y、N)                                                                                          |
| receiveChannelIds      | false | String  | 接收转播频道号，多个频道号用半角逗号,隔开(注：需要开启频道转播功能该参数才生效)                                                                                                     |
| closeBarrage           | false | String  | 是否关闭弹幕功能的开关，N：表示不关闭，Y：表示关闭；【对应api文档的**closeDanmu**字段】                                                                                         |
| showBarrageInfoEnabled | false | String  | 默认是否显示弹幕信息开关，Y：表示显示，N：表示不显示；【对应api文档的**showDanmuInfoEnabled**字段】                                                                              |
| pureRtcEnabled         | false | String  | 是否开启无延时直播开关，为空时不对字段进行修改，直播中不能对该字段进行修改，Y：表示是，N：表示否；                                                                                            |
| customTeacherId        | false | String  | 自定义讲师ID，32个以内ASCII码可见字符                                                                                                                       |
| labelData              | false | Array   | 标签id数组，传null不修改                                                                                                                               |

[**AuthSetting参数描述**](#/channelOperate.md?id=pf5ba5ff2578be966c2829ca5210283d7)

| 参数名                 | 必选    | 类型      | 说明                                                                                                                                                                |
| ------------------- | ----- | ------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| rank                | true  | Integer | 通用参数：主要观看条件为1，次要观看条件为2                                                                                                                                            |
| enabled             | true  | String  | 通用参数：是否开启，Y为开启，N为关闭                                                                                                                                               |
| authType            | false | String  | 通用参数：付费观看-pay，验证码观看-code，白名单观看-phone，登记观看-info，自定义授权观看-custom，外部授权-external,直接授权-direct                                                                           |
| payAuthTips         | false | String  | 付费观看参数：欢迎语标题                                                                                                                                                      |
| price               | false | Float   | 付费观看参数：价格，单位为元                                                                                                                                                    |
| watchEndTime        | false | Date    | 付费观看参数：付费有效截止日期。当watchEndTime和validTimePeriod都为空时，表示付费永久有效                                                                                                        |
| validTimePeriod     | false | Integer | 付费观看参数：付费有效时长，单位天。当watchEndTime和validTimePeriod都为空时，表示付费永久有效                                                                                                      |
| authCode            | false | String  | 验证码观看参数：验证码                                                                                                                                                       |
| qcodeTips           | false | String  | 验证码观看参数：提示文案                                                                                                                                                      |
| qcodeImg            | false | String  | 验证码观看参数：公众号二维码地址                                                                                                                                                  |
| authTips            | false | String  | 当authType为phone时，设置参数，非必填。提示文案                                                                                                                                    |
| whiteListEntryText  | false | String  | 当authType为phone时，设置参数，非必填。白名单入口文案                                                                                                                                 |
| whiteListInputTips  | false | String  | 当authType为phone时，设置参数，非必填。白名单输入提示                                                                                                                                 |
| infoFields          | false | Array   | 登记观看参数,上限为5个【详见[InfoField参数描述](https://git.polyv.net/help-center/document-center/-/blob/master/live/java/channelOperate.md?id=p902e3060dceae5682fa0cc2a63b0a3f2)】 |
| infoAuthTips        | false | String  | 当authType为info时，设置参数，非必填。欢迎标题                                                                                                                                     |
| infoDesc            | false | String  | 当authType为info时，设置参数，非必填。提示信息                                                                                                                                     |
| infoEntryText       | false | String  | 当authType为info时，设置参数，非必填。入口文本                                                                                                                                     |
| externalKey         | false | String  | 外部授权参数：SecretKey                                                                                                                                                  |
| externalUri         | false | String  | 外部授权参数：自定义url                                                                                                                                                     |
| externalRedirectUri | false | String  | 外部授权参数：跳转地址                                                                                                                                                       |
| customKey           | false | String  | 自定义授权参数：SecretKey                                                                                                                                                 |
| customUri           | false | String  | 自定义授权参数：自定义url                                                                                                                                                    |
| directKey           | false | String  | 直接授权参数：直接授权SecretKey                                                                                                                                              |

[**InfoField参数描述**](#/channelOperate.md?id=p902e3060dceae5682fa0cc2a63b0a3f2)

| 参数名         | 必选    | 类型     | 说明                                                                |
| ----------- | ----- | ------ | ----------------------------------------------------------------- |
| name        | false | String | 登记信息名，最多为8字符                                                      |
| type        | true  | String | 登记类型，姓名-name，文本-text，手机号码-mobile，数字-number，下拉选项-option，登记观看时该字段必填 |
| options     | false | String | 下拉选项时，下拉的选项值，以英文逗号分割。选项个数上限为8个；选项内容最多为8字符                         |
| placeholder | false | String | 文本框输入提示，最多为8字符                                                    |
| sms         | false | String | 短信验证开关，Y 开启，N 关闭                                                  |

#### 返回对象描述

true为设置成功，false为设置失败\ <br>

***

\ <br>

### 9、修改频道设置

#### 描述

```
修改频道设置
接口地址（仅做说明使用）：https://api.polyv.net/live/v4/channel/update
```

#### 调用约束

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

#### 单元测试

```java
	@Test
	public void testUpdateChannel() throws IOException, NoSuchAlgorithmException {
        LiveUpdateChannelRequest liveUpdateChannelRequest = new LiveUpdateChannelRequest();
        Boolean liveUpdateChannelResponse;
        try {
            String channelId = super.createChannel();
            liveUpdateChannelRequest.setChannelId(channelId)
                    .setPassword(getRandomString(8))
                    .setPublisher("主持人sadboy");
            liveUpdateChannelResponse = new LiveChannelOperateServiceImpl().updateChannel(liveUpdateChannelRequest);
            Assert.assertTrue(liveUpdateChannelResponse);
            if (liveUpdateChannelResponse) {
                //to do something ......
                log.debug("测试修改频道设置成功");
            }
        } 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  | 频道号                                                                                                                                                                                                                                                                                                                                |
| name                    | false | String  | 直播名称，最大长度100                                                                                                                                                                                                                                                                                                                       |
| password                | false | String  | 密码，长度6-16位，需同时包含数字与字母                                                                                                                                                                                                                                                                                                              |
| seminarHostPassword     | false | String  | 主持人密码，频道场景为研讨会有效，长度6-16位，需同时包含数字与字母                                                                                                                                                                                                                                                                                                |
| seminarAttendeePassword | false | String  | 参会人密码，频道场景为研讨会有效，长度6-16位，需同时包含数字与字母                                                                                                                                                                                                                                                                                                |
| publisher               | false | String  | 主持人，最大长度100                                                                                                                                                                                                                                                                                                                        |
| template                | false | String  | 直播观看模板 三分屏-横屏：ppt 三分屏-竖屏：portrait\_ppt 纯视频-横屏：alone 纯视频-竖屏：portrait\_alone 纯视频-极速-横屏：topclass 纯视频-极速-竖屏：portrait\_topclass 旧版后台频道（场景为未定义 newScene：undefined）不支持修改 研讨会（seminar）场景不支持修改 场景为三分屏（scene：ppt）可修改值：ppt、portrait\_ppt 场景为纯视频（scene：alone）可修改值：alone、portrait\_alone 场景为大班课（scene：topclass）可修改值：topclass、portrait\_topclass |
| pureRtcEnabled          | false | String  | 无延时直播开关 Y：开启 N：关闭                                                                                                                                                                                                                                                                                                                  |
| linkMicLimit            | false | Integer | 连麦人数，范围：0-16                                                                                                                                                                                                                                                                                                                       |
| maxViewer               | false | Integer | 最大同时在线人数                                                                                                                                                                                                                                                                                                                           |
| startTime               | false | Date    | 直播开始时间，需大于当前时间                                                                                                                                                                                                                                                                                                                     |
| endTime                 | false | Date    | 直播结束时间，需大于直播开始时间                                                                                                                                                                                                                                                                                                                   |
| splashImg               | false | String  | 引导页图片地址，非保利威域名下的图片需先调用[上传图片资源](https://git.polyv.net/help-center/document-center/-/blob/master/live/java/webSetting?id=_2、上传图片资源/README.md)上传                                                                                                                                                                                      |

#### 返回对象描述

修改频道设置返回实体\ <br>

***

\ <br>

### 10、设置频道详情

#### 描述

```
设置频道详情
接口地址（仅做说明使用）：https://api.polyv.net/live/v3/channel/detail/update
```

#### 调用约束

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

#### 单元测试

```java
	@Test
	public void testUpdateChannelDetail() throws Exception, NoSuchAlgorithmException {
        LiveChannelDetailRequest liveChannelDetailRequest = new LiveChannelDetailRequest();
        Boolean liveChannelDetailResponse;
        try {
            //准备测试数据
            String channelId = super.createChannel();
            String newPassword = getRandomString(16);
            liveChannelDetailRequest.setChannelId(channelId).setField("channelPasswd").setValue(newPassword);
            liveChannelDetailResponse = new LiveChannelOperateServiceImpl().updateChannelDetail(
                    liveChannelDetailRequest);
            Assert.assertNotNull(liveChannelDetailResponse);
            if (liveChannelDetailResponse) {
                //to do something ......
                log.debug("频道{}修改密码为{}成功", channelId, newPassword);
            }
        } catch (PloyvSdkException e) {
            //参数校验不合格 或者 请求服务器端500错误，错误信息见PloyvSdkException.getMessage(),B
            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 | 需要设置频道详情的频道号，例如：1938028                                                                                                                              |
| field     | true  | String | 要更新的字段名称：channelPasswd-频道密码；maxViewer-最大同时观看人数；                                                                                                      |
| value     | false | String | 要更新的字段值，除设置无限制最大观看人数时可不提交，其他情况都为必填；field字段为channelPasswd时，value长度为1-16位，必填，必须同时带英文和数字；field字段为maxViewer时，value取值为(0-2147483647),其中0和不传为不限制同时观看人数，非必填 |

#### 返回对象描述

true为修改成功，false为修改失败\ <br>

***

\ <br>

### 11、设置频道密码

#### 描述

```
设置频道密码
接口地址（仅做说明使用）：https://api.polyv.net/live/v2/channels/%s/passwdSetting
```

#### 调用约束

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

#### 单元测试

```java
	@Test
	public void testUpdateChannelPassword() throws Exception, NoSuchAlgorithmException {
        LiveChannelPasswordSettingRequest liveChannelPasswordSettingRequest = new LiveChannelPasswordSettingRequest();
        Boolean liveChannelPasswordSettingResponse;
        try {
            //准备测试数据
            String channelId = super.createChannel();
            liveChannelPasswordSettingRequest.setChannelId(channelId).setPasswd(getRandomString(6));
            liveChannelPasswordSettingResponse = new LiveChannelOperateServiceImpl().updateChannelPassword(
                    liveChannelPasswordSettingRequest);
            Assert.assertNotNull(liveChannelPasswordSettingResponse);
            if (liveChannelPasswordSettingResponse) {
                //to do something ......
                log.debug("设置频道密码成功");
            }
        } catch (PloyvSdkException e) {
            //参数校验不合格 或者 请求服务器端500错误，错误信息见PloyvSdkException.getMessage(),B
            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 | false | String | 频道号，请留意，如果该参数为空，会对该用户所有的频道进行修改 |
| passwd    | true  | String | 修改的密码,必须同时包含字母和数字              |

#### 返回对象描述

true为设置密码成功，false为设置失败\ <br>

***

\ <br>

### 12、设置频道单点登录token

#### 描述

```
设置频道单点登录token
接口地址（仅做说明使用）：https://api.polyv.net/live/v2/channels/%s/set-token
```

#### 调用约束

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

#### 单元测试

```java
	@Test
	public void testCreateChannelToken() throws Exception, NoSuchAlgorithmException {
        LiveCreateChannelTokenRequest liveCreateChannelTokenRequest = new LiveCreateChannelTokenRequest();
        Boolean liveCreateChannelTokenResponse;
        try {
            //准备测试数据
            String channelId = super.createChannel();
            liveCreateChannelTokenRequest.setChannelId(channelId).setToken(LiveSignUtil.generateUUID());
            liveCreateChannelTokenResponse = new LiveChannelOperateServiceImpl().createChannelToken(
                    liveCreateChannelTokenRequest);
            Assert.assertNotNull(liveCreateChannelTokenResponse);
            if (liveCreateChannelTokenResponse) {
                //to do something ......
                log.debug("设置频道单点登录token成功");
            }
        } catch (PloyvSdkException e) {
            //参数校验不合格 或者 请求服务器端500错误，错误信息见PloyvSdkException.getMessage(),B
            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 | 频道号    |
| token     | true | String | 唯一的字符串 |

#### 返回对象描述

true为设置token成功，false为设置失败\ <br>

***

\ <br>

### 13、删除直播频道

#### 描述

```
删除直播频道
接口地址（仅做说明使用）：https://api.polyv.net/live/v2/channels/%s/delete
```

#### 调用约束

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

#### 单元测试

```java
	@Test
	public void testDeleteChannel() throws Exception, NoSuchAlgorithmException {
        LiveDeleteChannelRequest liveDeleteChannelRequest = new LiveDeleteChannelRequest();
        Boolean liveDeleteChannelResponse;
        try {
            //准备测试数据
            String channelId = super.createChannel();
            liveDeleteChannelRequest.setChannelId(channelId);
            liveDeleteChannelResponse = new LiveChannelOperateServiceImpl().deleteChannel(liveDeleteChannelRequest);
            Assert.assertNotNull(liveDeleteChannelResponse);
            if (liveDeleteChannelResponse) {
                //to do something ......
                log.debug("删除直播频道成功");
            }
        } catch (PloyvSdkException e) {
            //参数校验不合格 或者 请求服务器端500错误，错误信息见PloyvSdkException.getMessage(),B
            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>

### 14、批量删除频道

#### 描述

```
批量删除频道
接口地址（仅做说明使用）：https://api.polyv.net/live/v3/channel/basic/batch-delete
```

#### 调用约束

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

#### 单元测试

```java
	@Test
	public void testDeleteChannelList() throws Exception, NoSuchAlgorithmException {
        LiveDeleteChannelListRequest liveDeleteChannelListRequest = new LiveDeleteChannelListRequest();
        Boolean liveDeleteChannelListResponse;
        try {
            //准备测试数据
            String[] channelIds = new String[]{super.createChannel(), super.createChannel(), super.createChannel()};
            liveDeleteChannelListRequest.setChannelIds(channelIds);
            liveDeleteChannelListResponse = new LiveChannelOperateServiceImpl().deleteChannelList(
                    liveDeleteChannelListRequest);
            Assert.assertNotNull(liveDeleteChannelListResponse);
            if (liveDeleteChannelListResponse) {
                //to do something ......
                log.debug("批量删除频道成功");
            }
        } catch (PloyvSdkException e) {
            //参数校验不合格 或者 请求服务器端500错误，错误信息见PloyvSdkException.getMessage(),B
            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. ]

#### 请求入参描述

| 参数名        | 必选   | 类型        | 说明                          |
| ---------- | ---- | --------- | --------------------------- |
| channelIds | true | String\[] | 频道号列表，每次最多删除100个频道，必须放在请求体中 |

#### 返回对象描述

true为批量删除成功，false为批量删除失败，不存在部分成功\ <br>

***

\ <br>

### 15、创建角色

#### 描述

```
创建频道的助教或嘉宾角色
接口地址（仅做说明使用）：https://api.polyv.net/live/v4/channel/account/create
```

#### 调用约束

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

#### 单元测试

```java
	@Test
	public void testCreateAccount() throws Exception {
        LiveCreateAccountRequest liveCreateAccountRequest = new LiveCreateAccountRequest();
        LiveCreateAccountResponse liveCreateAccountResponse;
        try {
            String channelId = super.createChannel();
            liveCreateAccountRequest.setChannelId(channelId)
                    .setRole("Assistant")
                    .setActor("助教boy")
                    .setNickName("王助教")
                    .setPasswd(super.getRandomString(6))
                    .setPurviewList(Arrays.asList(new LiveCreateAccountRequest.Purview().setCode(
                                    LiveConstant.RolePurview.CHAT_LIST_ENABLED.getCode())
                            .setEnabled(LiveConstant.Flag.YES.getFlag())));
            liveCreateAccountResponse = new LiveChannelOperateServiceImpl().createAccount(liveCreateAccountRequest);
            Assert.assertNotNull(liveCreateAccountResponse);
            if (liveCreateAccountResponse != null) {
                //to do something ......
                log.debug("测试创建角色成功 {}", JSON.toJSONString(liveCreateAccountResponse));
                //TODO 此处创建完成后删除了角色，正式使用需删除该语句
                super.deleteSonChannel(liveCreateAccountResponse.getAccount());
            }
        } 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、请求正确，返回LiveCreateAccountResponse对象，B端依据此对象处理业务逻辑；

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

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

#### 请求入参描述

| 参数名         | 必选    | 类型     | 说明                                                                                                                                                    |
| ----------- | ----- | ------ | ----------------------------------------------------------------------------------------------------------------------------------------------------- |
| channelId   | true  | String | 频道ID                                                                                                                                                  |
| role        | true  | String | 角色 Assistant：助教 Guest：嘉宾                                                                                                                              |
| actor       | false | String | 头衔，助教默认为助教，头衔长度必须1到10位                                                                                                                                |
| nickName    | false | String | 昵称，默认随机生成昵称，昵称长度必须1到15位                                                                                                                               |
| avatar      | false | String | 头像，默认初始头像（JPG、PNG格式图片），需要携带 http\:// 或 https\://                                                                                                      |
| passwd      | false | String | 角色密码，默认随机生成密码，密码长度必须6到16位                                                                                                                             |
| purviewList | false | Array  | 权限【详见[Purview参数描述](https://git.polyv.net/help-center/document-center/-/blob/master/live/java/channelOperate.md?id=p65a455eb5b5cb99bb5e9e6ad134a2f64)】 |

[**Purview参数描述**](#/channelOperate.md?id=p65a455eb5b5cb99bb5e9e6ad134a2f64)

| 参数名     | 必选   | 类型     | 说明                                                                                                                                                              |
| ------- | ---- | ------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| code    | true | String | <p>权限<br>chatListEnabled：在线列表（仅支持助教）<br>pageTurnEnabled：翻页（仅支持助教，且仅能设置一个助教有翻页权限）<br>monitorEnabled：监播（仅支持助教，且仅能设置一个助教有监播权限）<br>chatAuditEnabled：聊天审核（仅支持助教）</p> |
| enabled | true | String | 开关 Y：开启 N：关闭                                                                                                                                                    |

#### 返回对象描述

| 参数名             | 类型      | 说明                       |
| --------------- | ------- | ------------------------ |
| account         | String  | 助教/嘉宾账号                  |
| userId          | String  | 用户ID                     |
| channelId       | String  | 频道号                      |
| passwd          | String  | 角色密码                     |
| nickname        | String  | 角色名称                     |
| stream          | String  | 角色流名，单独使用无效              |
| status          | String  | 角色状态 Y：开启 N：关闭           |
| createdTime     | Date    | 创建角色时间，13位毫秒级时间戳         |
| lastModified    | Date    | 角色最后修改时间，13位毫秒级时间戳       |
| sort            | Integer | 频道角色序号                   |
| avatar          | String  | 角色头像                     |
| actor           | String  | 角色头衔                     |
| role            | String  | 角色 Assistant：助教 Guest：嘉宾 |
| monitorEnabled  | String  | 监播权限 Y：开启 N：关闭           |
| pageTurnEnabled | String  | 翻页权限 Y：开启 N：关闭           |
| chatListEnabled | String  | 在线列表权限 Y：开启 N：关闭         |

\ <br>

***

\ <br>

### 16、查询角色

#### 描述

```
查询角色
接口地址（仅做说明使用）：https://api.polyv.net/live/v2/channelAccount/%s/account
```

#### 调用约束

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

#### 单元测试

```java
	@Test
	public void testGetSonChannelInfo() throws Exception, NoSuchAlgorithmException {
        LiveSonChannelInfoRequest liveSonChannelInfoRequest = new LiveSonChannelInfoRequest();
        LiveSonChannelInfoResponse liveSonChannelInfoResponse;
        try {
            //准备测试数据
            String channelId = super.createChannel();
            String sonChannelId = createSonChannel(channelId);
            liveSonChannelInfoRequest.setAccount(sonChannelId).setChannelId(channelId);
            liveSonChannelInfoResponse = new LiveChannelOperateServiceImpl().getSonChannelInfo(
                    liveSonChannelInfoRequest);
            Assert.assertNotNull(liveSonChannelInfoResponse);
            if (liveSonChannelInfoResponse != null) {
                //to do something ......
                log.debug("测试查询角色信息成功{}", JSON.toJSONString(liveSonChannelInfoResponse));
            }
        } catch (PloyvSdkException e) {
            //参数校验不合格 或者 请求服务器端500错误，错误信息见PloyvSdkException.getMessage(),B
            log.error(e.getMessage(), e);
            // 异常返回做B端异常的业务逻辑，记录log 或者 上报到ETL 或者回滚事务
            throw e;
        } catch (Exception e) {
            log.error("SDK调用异常", e);
            throw e;
        }
    }
```

#### 单元测试说明

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

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

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

#### 请求入参描述

| 参数名       | 必选   | 类型     | 说明      |
| --------- | ---- | ------ | ------- |
| channelId | true | String | 频道号     |
| account   | true | String | 助教/嘉宾账号 |

#### 返回对象描述

| 参数名              | 类型      | 说明                                       |
| ---------------- | ------- | ---------------------------------------- |
| account          | String  | 助教/嘉宾账号                                  |
| userId           | String  | POLYV用户ID，和保利威官网一致，获取路径：官网->登录->直播（开发设置） |
| channelId        | String  | 频道号                                      |
| passwd           | String  | 角色密码                                     |
| nickname         | String  | 角色名称                                     |
| stream           | String  | 角色流名（单独使用无效）                             |
| status           | String  | 角色状态                                     |
| createdTime      | Date    | 创建角色时间                                   |
| lastModified     | Date    | 角色最后修改时间                                 |
| sort             | Integer | 频道中所有角色序号                                |
| avatar           | String  | 角色头像                                     |
| pageTurnEnabled  | String  | 助教翻页权限（只能一个角色有）                          |
| notifyEnabled    | String  | 发布公告权限(Y/N)                              |
| checkinEnabled   | String  | 开启签到权限(Y/N)                              |
| voteEnabled      | String  | 发起投票(Y/N)                                |
| role             | String  | <p>角色<br>Assistant：助教<br>Guest：嘉宾</p>    |
| chatListEnabled  | String  | 助教页在线列表显示开关 Y：开启 N：关闭                    |
| chatAuditEnabled | String  | 助教聊天审核 Y：开启 N：关闭                         |
| monitorEnabled   | String  | 助教监播开关 Y：开启 N：关闭                         |
| roundTourEnabled | String  | 助教轮巡开关 Y：开启 N：关闭                         |
| watchLockEnabled | String  | 锁定直播间功能开关 Y：开启 N：关闭                      |
| pushUrl          | String  | 子频道推流地址（子频道推流请参考后台导播台使用）                 |

\ <br>

***

\ <br>

### 17、查询频道号下所有角色信息

#### 描述

```
查询频道号下所有角色信息
接口地址（仅做说明使用）：https://api.polyv.net/live/v2/channelAccount/%s/accounts
```

#### 调用约束

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

#### 单元测试

```java
	@Test
	public void testGetSonChannelInfoList() throws Exception, NoSuchAlgorithmException {
        LiveSonChannelInfoListRequest liveSonChannelInfoListRequest = new LiveSonChannelInfoListRequest();
        LiveSonChannelInfoListResponse liveSonChannelInfoResponse;
        try {
            //准备测试数据
            String channelId = super.createChannel();
            liveSonChannelInfoListRequest.setChannelId(channelId);
            liveSonChannelInfoResponse = new LiveChannelOperateServiceImpl().getSonChannelInfoList(
                    liveSonChannelInfoListRequest);
            Assert.assertNotNull(liveSonChannelInfoResponse);
            if (liveSonChannelInfoResponse != null) {
                //to do something ......
                log.debug("查询频道号下所有角色信息成功{}", JSON.toJSONString(liveSonChannelInfoResponse));
            }
        } catch (PloyvSdkException e) {
            //参数校验不合格 或者 请求服务器端500错误，错误信息见PloyvSdkException.getMessage(),B
            log.error(e.getMessage(), e);
            // 异常返回做B端异常的业务逻辑，记录log 或者 上报到ETL 或者回滚事务
            throw e;
        } catch (Exception e) {
            log.error("SDK调用异常", e);
            throw e;
        }
    }
```

#### 单元测试说明

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

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

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

#### 请求入参描述

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

#### 返回对象描述

| 参数名             | 类型    | 说明                                                                                                                                                                         |
| --------------- | ----- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| sonChannelInfos | Array | 角色信息【详见[LiveSonChannelInfoResponse参数描述](https://git.polyv.net/help-center/document-center/-/blob/master/live/java/channelOperate.md?id=p3d847676732cc60ff28f9e11057c7edb)】 |

[**LiveSonChannelInfoResponse参数描述**](#/channelOperate.md?id=p3d847676732cc60ff28f9e11057c7edb)

| 参数名              | 类型      | 说明                                       |
| ---------------- | ------- | ---------------------------------------- |
| account          | String  | 助教/嘉宾账号                                  |
| userId           | String  | POLYV用户ID，和保利威官网一致，获取路径：官网->登录->直播（开发设置） |
| channelId        | String  | 频道号                                      |
| passwd           | String  | 角色密码                                     |
| nickname         | String  | 角色名称                                     |
| stream           | String  | 角色流名（单独使用无效）                             |
| status           | String  | 角色状态                                     |
| createdTime      | Date    | 创建角色时间                                   |
| lastModified     | Date    | 角色最后修改时间                                 |
| sort             | Integer | 频道中所有角色序号                                |
| avatar           | String  | 角色头像                                     |
| pageTurnEnabled  | String  | 助教翻页权限（只能一个角色有）                          |
| notifyEnabled    | String  | 发布公告权限(Y/N)                              |
| checkinEnabled   | String  | 开启签到权限(Y/N)                              |
| voteEnabled      | String  | 发起投票(Y/N)                                |
| role             | String  | <p>角色<br>Assistant：助教<br>Guest：嘉宾</p>    |
| chatListEnabled  | String  | 助教页在线列表显示开关 Y：开启 N：关闭                    |
| chatAuditEnabled | String  | 助教聊天审核 Y：开启 N：关闭                         |
| monitorEnabled   | String  | 助教监播开关 Y：开启 N：关闭                         |
| roundTourEnabled | String  | 助教轮巡开关 Y：开启 N：关闭                         |
| watchLockEnabled | String  | 锁定直播间功能开关 Y：开启 N：关闭                      |
| pushUrl          | String  | 子频道推流地址（子频道推流请参考后台导播台使用）                 |

\ <br>

***

\ <br>

### 18、修改角色信息

#### 描述

```
修改助教或嘉宾的信息
接口地址（仅做说明使用）：https://api.polyv.net/live/v4/channel/account/update
```

#### 调用约束

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

#### 单元测试

```java
	@Test
	public void testUpdateAccount() throws Exception {
        LiveUpdateAccountRequest liveUpdateAccountRequest = new LiveUpdateAccountRequest();
        LiveUpdateAccountResponse liveUpdateAccountResponse;
        try {
            //准备测试数据
            String channelId = super.createChannel();
            String accountId = createSonChannel(channelId);
            liveUpdateAccountRequest.setChannelId(channelId)
                    .setAccount(accountId)
                    .setNickName("张三")
                    .setActor("嘉宾A")
                    .setPasswd(super.getRandomString(6));
            liveUpdateAccountResponse = new LiveChannelOperateServiceImpl().updateAccount(liveUpdateAccountRequest);
            Assert.assertNotNull(liveUpdateAccountResponse);
            if (liveUpdateAccountResponse != null) {
                //to do something ......
                log.debug("测试修改角色信息成功 {}", JSON.toJSONString(liveUpdateAccountResponse));
            }
        } 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、请求正确，返回LiveUpdateAccountResponse对象，B端依据此对象处理业务逻辑；

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

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

#### 请求入参描述

| 参数名         | 必选    | 类型     | 说明                                                                                                                                                    |
| ----------- | ----- | ------ | ----------------------------------------------------------------------------------------------------------------------------------------------------- |
| channelId   | true  | String | 频道ID                                                                                                                                                  |
| account     | true  | String | 助教/嘉宾账号                                                                                                                                               |
| actor       | false | String | 头衔，助教默认为助教                                                                                                                                            |
| nickName    | false | String | 昵称，默认随机生成昵称                                                                                                                                           |
| avatar      | false | String | 头像，默认初始头像（JPG、PNG格式图片，需要携带 http\:// 或 https\://）                                                                                                      |
| passwd      | false | String | 角色密码                                                                                                                                                  |
| purviewList | false | Array  | 权限【详见[Purview参数描述](https://git.polyv.net/help-center/document-center/-/blob/master/live/java/channelOperate.md?id=p162134e8e4bf6673bad4119cd99987d5)】 |

[**Purview参数描述**](#/channelOperate.md?id=p162134e8e4bf6673bad4119cd99987d5)

| 参数名     | 必选   | 类型     | 说明                                                                                                                                                              |
| ------- | ---- | ------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| code    | true | String | <p>权限<br>chatListEnabled：在线列表（仅支持助教）<br>pageTurnEnabled：翻页（仅支持助教，且仅能设置一个助教有翻页权限）<br>monitorEnabled：监播（仅支持助教，且仅能设置一个助教有监播权限）<br>chatAuditEnabled：聊天审核（仅支持助教）</p> |
| enabled | true | String | 开关 Y：开启 N：关闭                                                                                                                                                    |

#### 返回对象描述

| 参数名             | 类型      | 说明                       |
| --------------- | ------- | ------------------------ |
| account         | String  | 助教/嘉宾账号                  |
| userId          | String  | 用户ID                     |
| channelId       | String  | 频道号                      |
| passwd          | String  | 角色密码                     |
| nickname        | String  | 角色名称                     |
| stream          | String  | 角色流名，单独使用无效              |
| status          | String  | 角色状态 Y：开启 N：关闭           |
| createdTime     | Date    | 创建角色时间，13位毫秒级时间戳         |
| lastModified    | Date    | 角色最后修改时间，13位毫秒级时间戳       |
| sort            | Integer | 频道角色序号                   |
| avatar          | String  | 角色头像                     |
| actor           | String  | 角色头衔                     |
| role            | String  | 角色 Assistant：助教 Guest：嘉宾 |
| monitorEnabled  | String  | 监播权限 Y：开启 N：关闭           |
| pageTurnEnabled | String  | 翻页权限 Y：开启 N：关闭           |
| chatListEnabled | String  | 在线列表权限 Y：开启 N：关闭         |

\ <br>

***

\ <br>

### 19、删除角色

#### 描述

```
删除角色
接口地址（仅做说明使用）：https://api.polyv.net/live/v2/channelAccount/%s/delete
```

#### 调用约束

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

#### 单元测试

```java
	@Test
	public void testDeleteSonChannel() throws Exception, NoSuchAlgorithmException {
        LiveDeleteSonChannelRequest liveDeleteSonChannelRequest = new LiveDeleteSonChannelRequest();
        Boolean liveDeleteSonChannelResponse;
        try {
            //准备测试数据
            String channelId = super.createChannel();
            String sonChannelId = createSonChannel(channelId);
            liveDeleteSonChannelRequest.setChannelId(channelId).setAccount(sonChannelId);
            liveDeleteSonChannelResponse = new LiveChannelOperateServiceImpl().deleteSonChannel(
                    liveDeleteSonChannelRequest);
            Assert.assertNotNull(liveDeleteSonChannelResponse);
            if (liveDeleteSonChannelResponse) {
                //to do something ......
                log.debug("测试删除角色成功");
            }
        } catch (PloyvSdkException e) {
            //参数校验不合格 或者 请求服务器端500错误，错误信息见PloyvSdkException.getMessage(),B
            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 | 频道号     |
| account   | true | String | 助教/嘉宾账号 |

#### 返回对象描述

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

***

\ <br>

### 20、批量删除角色

#### 描述

```
批量删除角色
接口地址（仅做说明使用）：https://api.polyv.net/live/v4/channel/account/delete-batch
```

#### 调用约束

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

#### 单元测试

```java
	@Test
	public void testDeleteAccount() throws Exception {
        LiveDeleteAccountRequest liveDeleteAccountRequest = new LiveDeleteAccountRequest();
        Boolean liveDeleteAccountResponse;
        try {
            String channelId = super.getAloneNewChannelId();
            LiveCreateSonChannelRequest sonChannelRequest = new LiveCreateSonChannelRequest();
            sonChannelRequest.setChannelId(channelId);
            liveDeleteAccountRequest.setChannelId(channelId);
            liveDeleteAccountRequest.setAccounts(createSonChannel(sonChannelRequest));
            liveDeleteAccountResponse = new LiveChannelOperateServiceImpl().deleteAccount(liveDeleteAccountRequest);
            Assert.assertTrue(liveDeleteAccountResponse);
            if (liveDeleteAccountResponse) {
                //to do something ......
                log.debug("测试批量删除角色成功");
            }
        } 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 | 频道号                      |
| accounts  | true | String | 助教/嘉宾账号，多个用英文逗号分割，最大150个 |

#### 返回对象描述

批量删除角色返回实体\ <br>

***

\ <br>

### 21、设置子频道单点登录token

#### 描述

```
设置子频道单点登录token
接口地址（仅做说明使用）：https://api.polyv.net/live/v2/channels/%s/set-account-token
```

#### 调用约束

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

#### 单元测试

```java
	@Test
	public void testCreateSonChannelToken() throws Exception, NoSuchAlgorithmException {
        LiveCreateSonChannelTokenRequest liveCreateSonChannelTokenRequest = new LiveCreateSonChannelTokenRequest();
        Boolean liveCreateSonChannelTokenResponse;
        try {
            //准备测试数据
            String channelId = super.createChannel();
            String sonChannelId = createSonChannel(channelId);
            liveCreateSonChannelTokenRequest.setAccount(sonChannelId).setToken(LiveSignUtil.generateUUID());
            liveCreateSonChannelTokenResponse = new LiveChannelOperateServiceImpl().createSonChannelToken(
                    liveCreateSonChannelTokenRequest);
            Assert.assertNotNull(liveCreateSonChannelTokenResponse);
            if (liveCreateSonChannelTokenResponse) {
                //to do something ......
                log.debug("设置子频道单点登录token成功");
            }
        } catch (PloyvSdkException e) {
            //参数校验不合格 或者 请求服务器端500错误，错误信息见PloyvSdkException.getMessage(),B
            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. ]

#### 请求入参描述

| 参数名     | 必选   | 类型     | 说明                           |
| ------- | ---- | ------ | ---------------------------- |
| account | true | String | 子频道号(不能以数字类型提交，否则可能去掉ID前的00) |
| token   | true | String | 唯一的字符串                       |

#### 返回对象描述

true为设置子频道token成功，false为设置失败\ <br>

***

\ <br>

### 22、创建重制课件任务

#### 描述

```
创建重制课件任务
接口地址（仅做说明使用）：https://api.polyv.net/live/v3/channel/pptRecord/addRecordTask
```

#### 调用约束

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

#### 单元测试

```java
	@Test
	public void testCreateChannelPPTRecordTask() throws Exception, NoSuchAlgorithmException {
        LiveCreateChannelPPTRecordRequest liveCreateChannelPPTRecordRequest = new LiveCreateChannelPPTRecordRequest();
        Boolean liveCreateChannelPPTRecordResponse;
        try {
            String channel = super.createChannel();
            List<String> videoIds = listChannelVideoIds(channel);
            liveCreateChannelPPTRecordRequest.setChannelId(channel).setVideoId(videoIds.get(1));
            liveCreateChannelPPTRecordResponse = new LiveChannelOperateServiceImpl().createChannelPPTRecordTask(
                    liveCreateChannelPPTRecordRequest);
            Assert.assertTrue(liveCreateChannelPPTRecordResponse);
            if (liveCreateChannelPPTRecordResponse) {
                //to do something ......
                log.debug("测试创建重制课件任务成功");
            }
        } catch (PloyvSdkException e) {
            //参数校验不合格 或者 请求服务器端500错误，错误信息见PloyvSdkException.getMessage(),B
            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 | 频道号               |
| videoId   | true | String | 回放视频id,从查询视频库列表获取 |

#### 返回对象描述

true为创建成功，false为创建失败\ <br>

***

\ <br>

### 23、查询课件重制任务列表

#### 描述

```
查询课件重制任务列表
接口地址（仅做说明使用）：https://api.polyv.net/live/v3/channel/pptRecord/list
```

#### 调用约束

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

#### 单元测试

```java
	@Test
	public void testListPPTRecord() throws Exception, NoSuchAlgorithmException {
        LiveListChannelPPTRecordRequest liveListChannelPPTRecordRequest = new LiveListChannelPPTRecordRequest();
        LiveListChannelPPTRecordResponse liveListChannelPPTRecordResponse;
        try {
            //准备测试数据
            String channelId = super.createChannel();
            liveListChannelPPTRecordRequest.setChannelId(channelId)
                    .setStartTime(getDate(2020, 1, 1))
                    .setEndTime(getDate(2020, 11, 11))
                    .setCurrentPage(1);
            liveListChannelPPTRecordResponse = new LiveChannelOperateServiceImpl().listPPTRecord(
                    liveListChannelPPTRecordRequest);
            Assert.assertNotNull(liveListChannelPPTRecordResponse);
            if (liveListChannelPPTRecordResponse != null) {
                //to do something ......
                log.debug("查询课件重制任务列表信息成功{}", JSON.toJSONString(liveListChannelPPTRecordResponse));
            }
        } catch (PloyvSdkException e) {
            //参数校验不合格 或者 请求服务器端500错误，错误信息见PloyvSdkException.getMessage(),B
            log.error(e.getMessage(), e);
            // 异常返回做B端异常的业务逻辑，记录log 或者 上报到ETL 或者回滚事务
            throw e;
        } catch (Exception e) {
            log.error("SDK调用异常", e);
            throw e;
        }
    }
```

#### 单元测试说明

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

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

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

#### 请求入参描述

| 参数名         | 必选    | 类型      | 说明                                                                                           |
| ----------- | ----- | ------- | -------------------------------------------------------------------------------------------- |
| channelId   | true  | String  | 频道号                                                                                          |
| sessionId   | false | String  | 场次id，new LiveChannelPlaybackServiceImpl().listChannelSessionInfo()方法获取场次信息                   |
| status      | false | String  | 课件重制状态值，waiting-等待处理；process-处理中；success-重制成功；fail-重制失败；uploaded-上传点播成功；uploadFailed-上传点播失败； |
| startTime   | false | Date    | 直播开始时间开始区间                                                                                   |
| endTime     | false | Date    | 直播开始时间结束区间                                                                                   |
| currentPage | false | Integer | 页数，默认为1【对应api文档的**page**字段】                                                                  |
| pageSize    | false | Integer | 每页显示的数据条数，默认每页显示20条数据                                                                        |

#### 返回对象描述

| 参数名         | 类型      | 说明                                                                                                                                                                |
| ----------- | ------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| contents    | Array   | 课件重制任务列表【详见[LivePPTRecord参数描述](https://git.polyv.net/help-center/document-center/-/blob/master/live/java/channelOperate.md?id=p2c081ae6679908f80d12784905135cac)】 |
| pageSize    | Integer | 每页显示的数据条数，默认每页显示20条数据                                                                                                                                             |
| currentPage | Integer | 当前页【对应api文档的**pageNumber**字段】                                                                                                                                     |
| totalItems  | Integer | 记录总条数                                                                                                                                                             |
| totalPage   | Integer | 总页数【对应api文档的**totalPages**字段】                                                                                                                                     |

[**LivePPTRecord参数描述**](#/channelOperate.md?id=p2c081ae6679908f80d12784905135cac)

| 参数名       | 类型      | 说明                                                                                       |
| --------- | ------- | ---------------------------------------------------------------------------------------- |
| channelId | String  | 直播频道号                                                                                    |
| title     | String  | 对应回放的名称                                                                                  |
| url       | String  | 重制mp4下载地址，有24小时的防盗链超时时间                                                                  |
| sessionId | String  | 场次id                                                                                     |
| startTime | Date    | 对应回放的直播开始时间,格式为yyyy-MM-dd HH:mm:ss                                                       |
| status    | String  | 状态值，waiting-等待处理；process-处理中；success-重制成功；fail-重制失败；uploaded-上传点播成功；uploadFailed-上传点播失败； |
| remainDay | Integer | 重制剩余的过期时间，过期后将无法访问和下载，单位：天                                                               |
| duration  | Integer | 重制的视频时长，单位秒                                                                              |
| videoId   | String  | 直播系统视频ID，如：992d36fa40                                                                    |
| vid       | String  | 重制课件上传到点播的点播视频VID                                                                        |

\ <br>

***

\ <br>

### 24、查询频道重制课件参数设置信息

#### 描述

```
查询频道重制课件参数设置信息
接口地址（仅做说明使用）：https://api.polyv.net/live/v3/channel/pptRecord/get-setting
```

#### 调用约束

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

#### 单元测试

```java
	@Test
	public void testGetRecordSetting() throws Exception {
        LiveChannelGetRecordSettingRequest liveChannelGetRecordSettingRequest =
                new LiveChannelGetRecordSettingRequest();
        LiveChannelGetRecordSettingResponse liveChannelGetRecordSettingResponse;
        try {
            String channelId = super.createChannel();
            liveChannelGetRecordSettingRequest.setChannelId(channelId);
            liveChannelGetRecordSettingResponse = new LiveChannelOperateServiceImpl().liveChannelGetRecordSetting(
                    liveChannelGetRecordSettingRequest);
            Assert.assertNotNull(liveChannelGetRecordSettingResponse);
            if (liveChannelGetRecordSettingResponse != null) {
                //to do something ......
                log.debug("测试查询频道重制课件参数设置信息成功");
            }
        } catch (PloyvSdkException e) {
            //参数校验不合格 或者 请求服务器端500错误，错误信息见PloyvSdkException.getMessage(),B
            log.error(e.getMessage(), e);
            // 异常返回做B端异常的业务逻辑，记录log 或者 上报到ETL 或者回滚事务
            throw e;
        } catch (Exception e) {
            log.error("SDK调用异常", e);
            throw e;
        }
    }
```

#### 单元测试说明

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

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

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

#### 请求入参描述

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

#### 返回对象描述

| 参数名                  | 类型      | 说明                                       |
| -------------------- | ------- | ---------------------------------------- |
| channelId            | String  | 频道号                                      |
| userId               | String  | POLYV用户ID，和保利威官网一致，获取路径：官网->登录->直播（开发设置） |
| type                 | Integer | 视频布局方式 0：三分屏 1：纯文档 2：画中画                 |
| globalSettingEnabled | String  | 是否使用通用设置 Y：是 N：否                         |
| videoRatio           | String  | 摄像头画面比例 0：画面比例16:9 1：画面比例4:3             |
| brandImgFile         | String  | 展示图片                                     |
| backgroundImgFile    | String  | 背景图片                                     |
| actionPosition       | String  | 重制课件摄像头位置 left：左侧 right：右侧               |

\ <br>

***

\ <br>

### 25、设置频道重制课件配置信息

#### 描述

```
设置频道重制课件配置信息
接口地址（仅做说明使用）：https://api.polyv.net/live/v3/channel/pptRecord/setting
```

#### 调用约束

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

2、新版频道无法设置

#### 单元测试

```java
	@Test
	public void testSetChannelRecord() throws IOException, NoSuchAlgorithmException {
        LiveChannelRecordSettingRequest liveChannelRecordSettingRequest = new LiveChannelRecordSettingRequest();
        Boolean liveChannelRecordSettingResponse;
        try {
            String channelId = super.createChannel();
            liveChannelRecordSettingRequest.setChannelId(channelId)
                    .setGlobalSettingEnabled(LiveConstant.Flag.NO.getFlag())
                    .setType(LiveConstant.PPTRecordType.PICTURE.getValue())
                    .setVideoRatio(LiveConstant.PPTRecordRatio.RATIO_16_9.getValue());
            liveChannelRecordSettingResponse = new LiveChannelOperateServiceImpl().setChannelRecord(
                    liveChannelRecordSettingRequest);
            Assert.assertTrue(liveChannelRecordSettingResponse);
            if (liveChannelRecordSettingResponse) {
                //to do something ......
                log.debug("测试设置频道重制课件配置信息成功");
            }
        } 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  | 频道号                                                                    |
| globalSettingEnabled | true  | String  | 是否使用通用设置 Y：是 N：否                                                       |
| type                 | true  | Integer | 视频布局方式 0：三分屏 1：纯文档 2：画中画                                               |
| videoRatio           | false | String  | 摄像头画面比例，新版重制有效 0：画面比例16:9 1：画面比例4:3                                    |
| brandImgFile         | false | File    | 展示图片，新版重制有效，支持jpg和png格式 摄像头画面比例为16:9时尺寸为480X810 摄像头画面比例为4:3时尺寸为480X720 |
| backgroundImgFile    | false | File    | 背景图片，旧版重制有效，尺寸为1280X720，支持jpg和png格式                                    |

#### 返回对象描述

频道重制课件配置信息返回\ <br>

***

\ <br>

### 26、删除重制课件任务

#### 描述

```
删除重制课件任务, 可批量删除
接口地址（仅做说明使用）：https://api.polyv.net/live/v3/channel/pptRecord/batch-delete
```

#### 调用约束

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

#### 单元测试

```java
	@Test
	public void testDeleteChannelPPTRecord() throws IOException, NoSuchAlgorithmException {
        LiveDeleteChannelPPTRecordRequest liveDeleteChannelPPTRecordRequest = new LiveDeleteChannelPPTRecordRequest();
        Boolean liveDeleteChannelPPTRecordResponse;
        try {
            String channelId = super.createChannel();
            liveDeleteChannelPPTRecordRequest.setChannelId(channelId);
            liveDeleteChannelPPTRecordRequest.setTaskIds("12345,12346");
            liveDeleteChannelPPTRecordResponse = new LiveChannelOperateServiceImpl().deleteChannelPPTRecord(
                    liveDeleteChannelPPTRecordRequest);
            Assert.assertNotNull(liveDeleteChannelPPTRecordResponse);
            if (liveDeleteChannelPPTRecordResponse != null) {
                //to do something ......
                log.debug("测试删除重制课件任务成功 {}", JSON.toJSONString(liveDeleteChannelPPTRecordResponse));
            }
        } 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 | 频道ID                   |
| taskIds   | true | String | 任务ID列表，多个任务ID使用”,”进行分隔 |

#### 返回对象描述

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

***

\ <br>

### 27、查询频道回调设置接口

#### 描述

```
查询频道回调设置接口
接口地址（仅做说明使用）：https://api.polyv.net/live/v3/channel/callback/get-setting
```

#### 调用约束

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

#### 单元测试

```java
	@Test
	public void testGetChannelCallbackSetting() throws Exception {
        LiveChannelCallbackSettingRequest liveChannelCallbackSettingRequest = new LiveChannelCallbackSettingRequest();
        LiveChannelCallbackSettingResponse liveChannelCallbackSettingResponse;
        try {
            //准备测试数据
            String channelId = super.createChannel();
            liveChannelCallbackSettingRequest.setChannelId(channelId);
            liveChannelCallbackSettingResponse = new LiveChannelOperateServiceImpl().getChannelCallbackSetting(
                    liveChannelCallbackSettingRequest);
            Assert.assertNotNull(liveChannelCallbackSettingResponse);
            if (liveChannelCallbackSettingResponse != null) {
                //to do something ......
                log.debug("测试查询频道回调设置接口成功，{}", JSON.toJSONString(liveChannelCallbackSettingResponse));
            }
        } catch (PloyvSdkException e) {
            //参数校验不合格 或者 请求服务器端500错误，错误信息见PloyvSdkException.getMessage(),B
            log.error(e.getMessage(), e);
            // 异常返回做B端异常的业务逻辑，记录log 或者 上报到ETL 或者回滚事务
            throw e;
        } catch (Exception e) {
            log.error("SDK调用异常", e);
            throw e;
        }
    }
```

#### 单元测试说明

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

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

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

#### 请求入参描述

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

#### 返回对象描述

| 参数名                      | 类型     | 说明                         |
| ------------------------ | ------ | -------------------------- |
| recordCallbackUrl        | String | 录制生成回调URL                  |
| playbackCallbackUrl      | String | 录制视频转存成功回调URL              |
| streamCallbackUrl        | String | 流状态回调URL                   |
| liveScanCallbackUrl      | String | 直播内容审核回调URL                |
| recordCallbackVideoType  | String | 录制回调的视频类型,多个视频类型用,分隔       |
| playbackCacheCallbackUrl | String | 回放缓存生成成功的回调URL             |
| pptRecordCallbackUrl     | String | 课件重制成功回调URL                |
| globalSettingEnabled     | String | 是否应用全局设置开关，Y走用户回调设置，N走频道设置 |

\ <br>

***

\ <br>

### 28、设置频道回调设置

#### 描述

```
设置频道回调设置
接口地址（仅做说明使用）：https://api.polyv.net/live/v3/channel/callback/update-setting
```

#### 调用约束

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

2、如频道需要跟随用户设置，可以调用设置频道默认项开关接口

#### 单元测试

```java
	@Test
	public void testUpdateChannelCallbackSetting() throws Exception {
        LiveUpdateChannelCallbackSettingRequest liveUpdateChannelCallbackSettingRequest =
                new LiveUpdateChannelCallbackSettingRequest();
        Boolean liveUpdateChannelCallbackSettingResponse;
        try {
            //准备测试数据
            String channelId = super.createChannel();
            liveUpdateChannelCallbackSettingRequest.setChannelId(channelId);
            liveUpdateChannelCallbackSettingResponse = new LiveChannelOperateServiceImpl().updateChannelCallbackSetting(
                    liveUpdateChannelCallbackSettingRequest);
            Assert.assertTrue(liveUpdateChannelCallbackSettingResponse);
            if (liveUpdateChannelCallbackSettingResponse) {
                //to do something ......
                log.debug("测试设置频道回调设置成功");
            }
        } catch (PloyvSdkException e) {
            //参数校验不合格 或者 请求服务器端500错误，错误信息见PloyvSdkException.getMessage(),B
            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 | 频道号                                   |
| recordCallbackVideoType  | false | String | 录制回调文件类型，可选值m3u8或mp4或m3u8,mp4         |
| recordCallbackUrl        | false | String | 录制回调http(s)地址，需要url编码，如果要清空设置传入空串     |
| playbackCallbackUrl      | false | String | 转存成功回调http(s)地址，需要url编码，如果要清空设置传入空串   |
| streamCallbackUrl        | false | String | 流状态回调http(s)地址，需要url编码，如果要清空设置传入空串    |
| pptRecordCallbackUrl     | false | String | 课件重制成功回调http(s)地址，需要url编码，如果要清空设置传入空串 |
| liveScanCallbackUrl      | false | String | 直播内容鉴别回调http(s)地址，需要url编码，如果要清空设置传入空串 |
| playbackCacheCallbackUrl | false | String | 回放转存回调http(s)地址，需要url编码，如果要清空设置传入空串   |

#### 返回对象描述

null\ <br>

***

\ <br>

### 29、批量创建角色

#### 描述

```
批量创建角色
接口地址（仅做说明使用）：https://api.polyv.net/live/v3/channel/account/batch-create
```

#### 调用约束

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

2、批量创建角色，角色支持guest(嘉宾)、assistant(助教)

#### 单元测试

```java
	@Test
	public void testCreateSonChannelList() throws Exception {
        LiveCreateSonChannelListRequest liveCreateSonChannelListRequest = new LiveCreateSonChannelListRequest();
        LiveCreateSonChannelListResponse liveCreateSonChannelListResponse;
        try {
            //准备测试数据
            String channelId = super.createChannel();
            List<LiveCreateSonChannelListRequest.SonChannel> sonChannels =
                    new ArrayList<LiveCreateSonChannelListRequest.SonChannel>();
            LiveCreateSonChannelListRequest.SonChannel sonChannel1 = new LiveCreateSonChannelListRequest.SonChannel();
            sonChannel1.setRole("Guest")
                    .setNickname("嘉宾甲")
                    .setPasswd(getRandomString(10))
                    .setActor("博士")
                    .setAvatar("https://ss3.bdstatic.com/70cFv8Sh_Q1YnxGkpoWK1HF6hhy/it/u=3002379740," +
                            "3965499425&fm=26&gp=0.jpg");
            sonChannels.add(sonChannel1);
            sonChannel1 = new LiveCreateSonChannelListRequest.SonChannel();
            sonChannel1.setRole(null)
                    .setNickname("助教甲")
                    .setPasswd(getRandomString(10))
                    .setActor("助教")
                    .setAvatar("https://ss3.bdstatic.com/70cFv8Sh_Q1YnxGkpoWK1HF6hhy/it/u=3002379740," +
                            "3965499425&fm=26&gp=0.jpg");
            sonChannels.add(sonChannel1);
            liveCreateSonChannelListRequest.setChannelId(channelId).setSonChannels(sonChannels);
            liveCreateSonChannelListResponse = new LiveChannelOperateServiceImpl().createSonChannelList(
                    liveCreateSonChannelListRequest);
            Assert.assertNotNull(liveCreateSonChannelListResponse);
            if (liveCreateSonChannelListResponse != null) {
                //to do something ......
                log.debug("测试批量创建角色成功");
            }
        } catch (PloyvSdkException e) {
            //参数校验不合格 或者 请求服务器端500错误，错误信息见PloyvSdkException.getMessage(),B
            log.error(e.getMessage(), e);
            // 异常返回做B端异常的业务逻辑，记录log 或者 上报到ETL 或者回滚事务
            throw e;
        } catch (Exception e) {
            log.error("SDK调用异常", e);
            throw e;
        }
    }
```

#### 单元测试说明

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

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

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

#### 请求入参描述

| 参数名         | 必选   | 类型     | 说明                                                                                                                                                         |
| ----------- | ---- | ------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------- |
| channelId   | true | String | 频道号                                                                                                                                                        |
| sonChannels | true | Array  | 角色信息【详见[SonChannel参数描述](https://git.polyv.net/help-center/document-center/-/blob/master/live/java/channelOperate.md?id=pe9b87aae6f274117cabf13ab048ef11c)】 |

[**SonChannel参数描述**](#/channelOperate.md?id=pe9b87aae6f274117cabf13ab048ef11c)

| 参数名      | 必选    | 类型     | 说明                |
| -------- | ----- | ------ | ----------------- |
| role     | false | String | 默认不传为助教，传Guest为嘉宾 |
| nickname | false | String | 创建的助教或嘉宾昵称        |
| passwd   | true  | String | 角色密码              |
| actor    | true  | String | 创建的助教或嘉宾头衔        |
| avatar   | true  | String | 创建的助教或嘉宾头像        |

#### 返回对象描述

| 参数名             | 类型    | 说明                                                                                                                                                               |
| --------------- | ----- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| sonChannelInfos | Array | 角色返回信息【详见[SonChannelInfo参数描述](https://git.polyv.net/help-center/document-center/-/blob/master/live/java/channelOperate.md?id=paa9fdff55d807a58cd7b7b797a46ccbe)】 |

[**SonChannelInfo参数描述**](#/channelOperate.md?id=paa9fdff55d807a58cd7b7b797a46ccbe)

| 参数名             | 类型      | 说明                                       |
| --------------- | ------- | ---------------------------------------- |
| account         | String  | 助教ID                                     |
| userId          | String  | POLYV用户ID，和保利威官网一致，获取路径：官网->登录->直播（开发设置） |
| channelId       | String  | 频道号                                      |
| passwd          | String  | 助教密码                                     |
| nickname        | String  | 助教名称                                     |
| stream          | String  | 助教流名（单独使用无效）                             |
| status          | String  | 助教状态(Y/N)                                |
| createdTime     | Date    | 创建助教时间                                   |
| lastModified    | Date    | 助教最后修改时间                                 |
| sort            | Integer | 频道中所有助教序号                                |
| avatar          | String  | 助教头像                                     |
| pageTurnEnabled | String  | <p>助教翻页权限（只能一个助教有）<br>Y：开启<br>N：关闭</p>   |
| notifyEnabled   | String  | 发布公告权限(Y/N)                              |
| checkinEnabled  | String  | 开启签到权限(Y/N)                              |
| voteEnabled     | String  | 发起投票(Y/N)                                |
| role            | String  | <p>角色<br>assistant：助教<br>guest：嘉宾</p>    |
| loginUrl        | String  | 子账号（嘉宾）登录地址                              |

\ <br>

***

\ <br>

### 30、获取账号或频道转播列表信息

#### 描述

```
获取账号或频道转播列表信息
接口地址（仅做说明使用）：https://api.polyv.net/live/v3/channel/transmit/get-associations
```

#### 调用约束

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

#### 单元测试

```java
	@Test
	public void testGetChannelTransmitList() throws Exception {
        LiveChannelTransmitListRequest liveChannelTransmitListRequest = new LiveChannelTransmitListRequest();
        LiveChannelTransmitListResponse liveChannelTransmitListResponse;
        try {
            //准备测试数据
            String channelId = super.createChannel();
            liveChannelTransmitListRequest.setChannelId(channelId);
            liveChannelTransmitListResponse = new LiveChannelOperateServiceImpl().getChannelTransmitList(
                    liveChannelTransmitListRequest);
            Assert.assertNotNull(liveChannelTransmitListResponse);
            if (liveChannelTransmitListResponse != null) {
                //to do something ......
                log.debug("测试获取账号或频道转播列表信息成功，{}", JSON.toJSONString(liveChannelTransmitListResponse));
            }
        } catch (PloyvSdkException e) {
            //参数校验不合格 或者 请求服务器端500错误，错误信息见PloyvSdkException.getMessage(),B
            log.error(e.getMessage(), e);
            // 异常返回做B端异常的业务逻辑，记录log 或者 上报到ETL 或者回滚事务
            throw e;
        } catch (Exception e) {
            log.error("SDK调用异常", e);
            throw e;
        }
    }
```

#### 单元测试说明

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

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

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

#### 请求入参描述

| 参数名       | 必选    | 类型     | 说明                                |
| --------- | ----- | ------ | --------------------------------- |
| channelId | false | String | 频道号，如果不传，则查询appId对应的账号下所有转播频道关联关系 |

#### 返回对象描述

| 参数名              | 类型    | 说明                                                                                                                                                                   |
| ---------------- | ----- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| channelTransmits | Array | 账号或频道转播信息【详见[ChannelTransmit参数描述](https://git.polyv.net/help-center/document-center/-/blob/master/live/java/channelOperate.md?id=p9fe8527cd50b942f6da90ff45bb25d52)】 |

[**ChannelTransmit参数描述**](#/channelOperate.md?id=p9fe8527cd50b942f6da90ff45bb25d52)

| 参数名              | 类型     | 说明                                 |
| ---------------- | ------ | ---------------------------------- |
| channelId        | String | 发起转播频道号，如果一个接收转播频道没有关联主频道，则该值为null |
| receiveChannelId | String | 接收转播频道号                            |

\ <br>

***

\ <br>

### 31、设置频道最大在线人数

#### 描述

```
设置频道最大在线人数
接口地址（仅做说明使用）：https://api.polyv.net/live/v2/channelRestrict/%s/set-max-viewer
```

#### 调用约束

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

#### 单元测试

```java
	@Test
	public void testUpdateChannelMaxViewer() throws Exception {
        LiveUpdateChannelMaxViewerRequest liveUpdateChannelMaxViewerRequest = new LiveUpdateChannelMaxViewerRequest();
        Boolean liveUpdateChannelMaxViewerResponse;
        try {
            //准备测试数据
            String channelId = super.createChannel();
            liveUpdateChannelMaxViewerRequest.setChannelId(channelId).setMaxViewer(Integer.MAX_VALUE);
            liveUpdateChannelMaxViewerResponse = new LiveChannelOperateServiceImpl().updateChannelMaxViewer(
                    liveUpdateChannelMaxViewerRequest);
            Assert.assertTrue(liveUpdateChannelMaxViewerResponse);
            if (liveUpdateChannelMaxViewerResponse) {
                //to do something ......
                log.debug("测试设置频道最大在线人数成功");
            }
        } catch (PloyvSdkException e) {
            //参数校验不合格 或者 请求服务器端500错误，错误信息见PloyvSdkException.getMessage(),B
            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  | 频道号                                     |
| maxViewer | true | Integer | 最大观看在线人数，等于0时表示关闭在线人数观看限制，最大为2147483647 |

#### 返回对象描述

true为设置成功，false为设置失败\ <br>

***

\ <br>

### 32、查询频道广告列表

#### 描述

```
查询频道广告列表
接口地址（仅做说明使用）：https://api.polyv.net/live/v3/channel/advert/list
```

#### 调用约束

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

2、提供查询频道轮播广告列表信息，频道广告为空时，获取全局广告

#### 单元测试

```java
	@Test
	public void testGetChannelAdvertList() throws Exception {
        LiveChannelAdvertListRequest liveChannelAdvertListRequest = new LiveChannelAdvertListRequest();
        LiveChannelAdvertListResponse liveChannelAdvertListResponse;
        try {
            //准备测试数据
            String channelId = super.createChannel();
            liveChannelAdvertListRequest.setChannelId(channelId);
            liveChannelAdvertListResponse = new LiveChannelOperateServiceImpl().getChannelAdvertList(
                    liveChannelAdvertListRequest);
            Assert.assertNotNull(liveChannelAdvertListResponse);
            if (liveChannelAdvertListResponse != null) {
                //to do something ......
                log.debug("测试查询频道广告列表成功,{}", JSON.toJSONString(liveChannelAdvertListResponse));
            }
        } catch (PloyvSdkException e) {
            //参数校验不合格 或者 请求服务器端500错误，错误信息见PloyvSdkException.getMessage(),B
            log.error(e.getMessage(), e);
            // 异常返回做B端异常的业务逻辑，记录log 或者 上报到ETL 或者回滚事务
            throw e;
        } catch (Exception e) {
            log.error("SDK调用异常", e);
            throw e;
        }
    }
```

#### 单元测试说明

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

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

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

#### 请求入参描述

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

#### 返回对象描述

| 参数名            | 类型    | 说明                                                                                                                                                            |
| -------------- | ----- | ------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| channelAdverts | Array | 频道广告【详见[ChannelAdvert参数描述](https://git.polyv.net/help-center/document-center/-/blob/master/live/java/channelOperate.md?id=pcd7819b123b0eaf234d90dbd6cbc1b85)】 |

[**ChannelAdvert参数描述**](#/channelOperate.md?id=pcd7819b123b0eaf234d90dbd6cbc1b85)

| 参数名  | 类型     | 说明     |
| ---- | ------ | ------ |
| text | String | 文本广告内容 |
| img  | String | 图片广告链接 |
| href | String | 跳转链接   |

\ <br>

***

\ <br>

### 33、查询频道直播截图

#### 描述

```
查询频道直播截图
接口地址（仅做说明使用）：https://api.polyv.net/live/v2/stream/%s/capture
```

#### 调用约束

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

2、如果直播未开启，将抛出"channel is not live."异常

#### 单元测试

```java
	@Test
	public void testGetChannelCapture() throws Exception {
        LiveChannelCaptureRequest liveChannelCaptureRequest = new LiveChannelCaptureRequest();
        String liveChannelCaptureResponse;
        try {
            //准备测试数据
            String channelId = super.createChannel();
            liveChannelCaptureRequest.setChannelId(channelId);
            liveChannelCaptureResponse = new LiveChannelOperateServiceImpl().getChannelCapture(
                    liveChannelCaptureRequest);
            Assert.assertNotNull(liveChannelCaptureResponse);
            if (liveChannelCaptureResponse != null) {
                //to do something ......
                log.debug("测试查询频道直播截图成功,{}", JSON.toJSONString(liveChannelCaptureResponse));
            }
        } catch (PloyvSdkException e) {
            //参数校验不合格 或者 请求服务器端500错误，错误信息见PloyvSdkException.getMessage(),B
            log.error(e.getMessage(), e);
            // 异常返回做B端异常的业务逻辑，记录log 或者 上报到ETL 或者回滚事务
            throw e;
        } catch (Exception e) {
            log.error("SDK调用异常", e);
            throw e;
        }
    }
```

#### 单元测试说明

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

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

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

#### 请求入参描述

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

#### 返回对象描述

返回图片http地址，\ <br>

***

\ <br>

### 34、修改直播推流方式

#### 描述

```
修改直播推流方式
接口地址（仅做说明使用）：https://api.polyv.net/live/v3/channel/stream/update
```

#### 调用约束

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

2、直播过程中不允许修改直播方式

#### 单元测试

```java
	@Test
	public void testUpdateChannelStream() throws Exception {
        LiveUpdateChannelStreamRequest liveUpdateChannelStreamRequest = new LiveUpdateChannelStreamRequest();
        Boolean liveUpdateChannelStreamResponse;
        try {
            //准备测试数据
            String channelId = super.createChannel();
            liveUpdateChannelStreamRequest.setStreamType("disk").setChannelId(channelId);
            liveUpdateChannelStreamResponse = new LiveChannelOperateServiceImpl().updateChannelStream(
                    liveUpdateChannelStreamRequest);
            Assert.assertTrue(liveUpdateChannelStreamResponse);
            if (liveUpdateChannelStreamResponse) {
                //to do something ......
                log.debug("测试修改直播推流方式成功");
            }
        } catch (PloyvSdkException e) {
            //参数校验不合格 或者 请求服务器端500错误，错误信息见PloyvSdkException.getMessage(),B
            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 | 直播频道号                                            |
| streamType | true  | String | 直播方式，client:客户端推流;disk:硬盘推流;audio:音频直播;pull:拉流直播 |
| pullUrl    | false | String | 拉流地址                                             |

#### 返回对象描述

true为修改推流方式成功，false为修改失败\ <br>

***

\ <br>

### 35、设置硬盘推流直播

#### 描述

```
设置硬盘推流直播
接口地址（仅做说明使用）：https://api.polyv.net/live/v3/channel/stream/add-disk-videos
```

#### 调用约束

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

2、调用接口后，如果当前频道未在直播中，会自动设置直播方式为“硬盘推流”。如果当前使用其他直播推流方式直播中，则需要在直播结束后，调用《修改直播推流方式》修改为硬盘推流，才会在所设置的开始时间进行直播

3、无延迟频道不可修改为硬盘推流

4、仅纯视频模式支持硬盘推流

5、不支持设置加密视频为硬盘推流

#### 单元测试

```java
	@Test
	public void testCreateDiskVideosStream() throws Exception {
        LiveCreateDiskVideosStreamRequest liveCreateDiskVideosStreamRequest = new LiveCreateDiskVideosStreamRequest();
        Boolean liveCreateDiskVideosStreamResponse;
        try {
            //准备测试数据
            String channelId = super.getAloneChannelId();
            //保利威云点播视频列表的VID，需导入保利威点播SDK，调用new VodQueryServiceImpl().searchVideoList()获取VideoId
            String videoId = "1b448be323d7eaee38dcead42f053911_1";
            liveCreateDiskVideosStreamRequest.setVideoIds(videoId)
                    .setStartTimes(super.getDate(System.currentTimeMillis() + 60 * 1000))
                    .setChannelId(channelId);
            liveCreateDiskVideosStreamResponse = new LiveChannelOperateServiceImpl().createDiskVideosStream(
                    liveCreateDiskVideosStreamRequest);
            Assert.assertTrue(liveCreateDiskVideosStreamResponse);
            if (liveCreateDiskVideosStreamResponse) {
                //to do something ......
                log.debug("测试设置硬盘推流直播成功");
            }
        } catch (PloyvSdkException e) {
            //参数校验不合格 或者 请求服务器端500错误，错误信息见PloyvSdkException.getMessage(),B
            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 | 频道号                                |
| videoIds   | true | String | 要设置硬盘推流的点播视频ID【对应api文档的**vids**字段】 |
| startTimes | true | Date   | 硬盘推流开始时间                           |

#### 返回对象描述

true为设置硬盘推流直播成功，false为修改失败\ <br>

***

\ <br>

### 36、删除硬盘推流的视频

#### 描述

```
删除硬盘推流的视频
接口地址（仅做说明使用）：https://api.polyv.net/live/v3/channel/stream/delete-disk-videos
```

#### 调用约束

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

2、删除伪直播中的视频，不允许删除正在伪直播中的视频

#### 单元测试

```java
	@Test
	public void testDeleteDiskVideosStream() throws Exception {
        LiveDeleteDiskVideosStreamRequest liveDeleteDiskVideosStreamRequest = new LiveDeleteDiskVideosStreamRequest();
        Boolean liveDeleteDiskVideosStreamResponse;
        try {
            //准备测试数据
            String channelId = super.getAloneChannelId();
            liveDeleteDiskVideosStreamRequest.setVideoIds("1b448be323d7eaee38dcead42f053911_1").setChannelId(channelId);
            liveDeleteDiskVideosStreamResponse = new LiveChannelOperateServiceImpl().deleteDiskVideosStream(
                    liveDeleteDiskVideosStreamRequest);
            Assert.assertTrue(liveDeleteDiskVideosStreamResponse);
            if (liveDeleteDiskVideosStreamResponse) {
                //to do something ......
                log.debug("测试删除硬盘推流的视频成功");
            }
        } catch (PloyvSdkException e) {
            //参数校验不合格 或者 请求服务器端500错误，错误信息见PloyvSdkException.getMessage(),B
            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 | 频道号                              |
| videoIds  | true | String | 要删除的硬盘推流视频id【对应api文档的**vids**字段】 |

#### 返回对象描述

true为删除硬盘推流直播成功，false为删除失败\ <br>

***

\ <br>

### 37、批量修改频道弹幕开关

#### 描述

```
调用后频道会关闭掉通用设置
接口地址（仅做说明使用）：https://api.polyv.net/live/v3/channel/basic/batchUpdateDanmu
```

#### 调用约束

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

#### 单元测试

```java
	@Test
	public void testBatchUpdateBarrage() throws Exception {
        LiveBatchUpdateBarrageRequest liveBatchUpdateBarrageRequest = new LiveBatchUpdateBarrageRequest();
        Boolean liveBatchUpdateBarrageResponse;
        try {
            //准备测试数据
            String channelIds = String.format("%s,%s", super.getAloneChannelId(), super.createChannel());
            liveBatchUpdateBarrageRequest.setChannelIds(channelIds).setCloseBarrage("Y").setShowBarrageInfoEnabled("Y");
            liveBatchUpdateBarrageResponse = new LiveChannelOperateServiceImpl().batchUpdateBarrage(
                    liveBatchUpdateBarrageRequest);
            Assert.assertTrue(liveBatchUpdateBarrageResponse);
            if (liveBatchUpdateBarrageResponse) {
                //to do something ......
                log.debug("测试批量修改频道弹幕开关成功");
            }
        } catch (PloyvSdkException e) {
            //参数校验不合格 或者 请求服务器端500错误，错误信息见PloyvSdkException.getMessage(),B
            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. ]

#### 请求入参描述

| 参数名                    | 必选   | 类型     | 说明                                                             |
| ---------------------- | ---- | ------ | -------------------------------------------------------------- |
| closeBarrage           | true | String | 是否关闭弹幕功能 Y：表示关闭 N：表示开启【对应api文档的**closeDanmu**字段】               |
| showBarrageInfoEnabled | true | String | 是否显示弹幕信息开关， Y：表示显示 N：表示不显示【对应api文档的**showDanmuInfoEnabled**字段】 |
| channelIds             | true | String | 需要修改弹幕开关的频道号，多个频道号用半角逗号 , 隔开                                   |

#### 返回对象描述

true为批量修改频道弹幕开关成功，false为批量修改失败\ <br>

***

\ <br>

### 38、查询报名观看记录

#### 描述

```
查询频道报名观看记录
接口地址（仅做说明使用）：https://api.polyv.net/live/v3/channel/enroll/list
```

#### 调用约束

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

#### 单元测试

```java
	@Test
	public void testGetLiveEnrollList() throws IOException, NoSuchAlgorithmException {
        LiveGetEnrollListRequest liveGetEnrollListRequest = new LiveGetEnrollListRequest();
        LiveGetEnrollListResponse liveGetEnrollListResponse;
        try {
            String channelId = super.createChannel();
            liveGetEnrollListRequest.setChannelId(channelId);
            liveGetEnrollListResponse = new LiveChannelOperateServiceImpl().getLiveEnrollList(liveGetEnrollListRequest);
            Assert.assertNotNull(liveGetEnrollListResponse);
            if (liveGetEnrollListResponse != null) {
                //to do something ......
                log.debug("测试查询报名观看记录成功{}", JSON.toJSONString(liveGetEnrollListResponse));
            }
        } 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、请求正确，返回LiveGetEnrollListResponse对象，B端依据此对象处理业务逻辑；

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

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

#### 请求入参描述

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

#### 返回对象描述

| 参数名          | 类型     | 说明                                                                                                                                                               |
| ------------ | ------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| auditEnabled | String | 频道报名审核开关 Y：开启 N：关闭                                                                                                                                               |
| list         | Array  | 报名观看记录【详见[LiveEnrollList参数描述](https://git.polyv.net/help-center/document-center/-/blob/master/live/java/channelOperate.md?id=p23805f6b579cd37de5ae36752b60e2c1)】 |

[**LiveEnrollList参数描述**](#/channelOperate.md?id=p23805f6b579cd37de5ae36752b60e2c1)

| 参数名         | 类型     | 说明                                                                                                                                                               |
| ----------- | ------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| viewerId    | String | 观众ID                                                                                                                                                             |
| mobile      | String | 手机号                                                                                                                                                              |
| createTime  | Date   | 报名时间                                                                                                                                                             |
| hasWatched  | String | 是否已观看 Y：是 N：否                                                                                                                                                    |
| promoteId   | String | 推广渠道ID                                                                                                                                                           |
| promoteName | String | 推广渠道名称                                                                                                                                                           |
| auditStatus | String | 审核结果 W：未审核 P：已通过 F：已拒绝                                                                                                                                           |
| fields      | Array  | 报名信息【详见[LiveEnrollFields参数描述](https://git.polyv.net/help-center/document-center/-/blob/master/live/java/channelOperate.md?id=p85764248270cbaa2fc5529ba889c7eb0)】 |

[**LiveEnrollFields参数描述**](#/channelOperate.md?id=p85764248270cbaa2fc5529ba889c7eb0)

| 参数名   | 类型     | 说明     |
| ----- | ------ | ------ |
| name  | String | 报名信息名称 |
| value | String | 报名信息值  |

\ <br>

***

\ <br>

### 39、查询频道页面装修

#### 描述

```
查询频道的页面装修设置
接口地址（仅做说明使用）：https://api.polyv.net/live/v4/channel/decorate/get
```

#### 调用约束

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

#### 单元测试

```java
	@Test
	public void testGetChannelDecorate() throws IOException, NoSuchAlgorithmException {
        LiveGetChannelDecorateRequest liveGetChannelDecorateRequest = new LiveGetChannelDecorateRequest();
        LiveGetChannelDecorateResponse liveGetChannelDecorateResponse;
        try {
            String channelId = super.createChannel();
            liveGetChannelDecorateRequest.setChannelId(channelId);
            liveGetChannelDecorateResponse = new LiveChannelOperateServiceImpl().getChannelDecorate(
                    liveGetChannelDecorateRequest);
            Assert.assertNotNull(liveGetChannelDecorateResponse);
            if (liveGetChannelDecorateResponse != null) {
                //to do something ......
                log.debug("测试查询频道页面装修成功{}", JSON.toJSONString(liveGetChannelDecorateResponse));
            }
        } 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、请求正确，返回LiveGetChannelDecorateResponse对象，B端依据此对象处理业务逻辑；

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

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

#### 请求入参描述

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

#### 返回对象描述

| 参数名                   | 类型             | 说明                                                                                                                                                                       |
| --------------------- | -------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| skin                  | String         | 皮肤，black：时尚黑，red：喜庆红，blue：科技蓝，white：经典白，green：薄荷绿，golden：富贵金                                                                                                             |
| aloneWatchLayout      | String         | 普通直播观看页布局配置(普通:normal,竖屏:portrait)                                                                                                                                       |
| chat                  | DecorateChat   | 装修里聊天对象【详见[DecorateChat参数描述](https://git.polyv.net/help-center/document-center/-/blob/master/live/java/channelOperate.md?id=pf800d0c97d4311e7d769679c9cd6c8c6)】          |
| desc                  | DecorateDesc   | 装修中文直播介绍页对象【详见[DecorateDesc参数描述](https://git.polyv.net/help-center/document-center/-/blob/master/live/java/channelOperate.md?id=pf06d26b9bb35394e77071ce3677d10bb)】      |
| menus                 | Array          | 中文菜单列表对象【详见[DecorateMenus参数描述](https://git.polyv.net/help-center/document-center/-/blob/master/live/java/channelOperate.md?id=p9e2d8730f9fb672929817fc857253f0a)】        |
| player                | DecoratePlayer | 装修播放器对象【详见[DecoratePlayer参数描述](https://git.polyv.net/help-center/document-center/-/blob/master/live/java/channelOperate.md?id=p58599109f26136adfed4ebc46098c783)】        |
| pptMobileWatchLayout  | String         | 三分屏移动端观看布局,normal:常规直播,portrait:直播带货                                                                                                                                     |
| splash                | DecorateSplash | 装修引导页对象【详见[DecorateSplash参数描述](https://git.polyv.net/help-center/document-center/-/blob/master/live/java/channelOperate.md?id=p327f635a48515636aa685a13d29d6d29)】        |
| splashEnabled         | String         | 引导页开关，Y：开启，N：关闭                                                                                                                                                          |
| englishSettingEnabled | String         | 双语直播间开关，Y：开启，N：关闭                                                                                                                                                        |
| enMenus               | Array          | 英文菜单列表对象【详见[DecorateMenus参数描述](https://git.polyv.net/help-center/document-center/-/blob/master/live/java/channelOperate.md?id=p1cb81e1f1e91bbe574abcf53beb830de)】        |
| descEn                | DecorateDescEn | 模板-装修英文直播介绍页对象【详见[DecorateDescEn参数描述](https://git.polyv.net/help-center/document-center/-/blob/master/live/java/channelOperate.md?id=p6e9f52ab6811471a840de31807d589e0)】 |

[**DecorateChat参数描述**](#/channelOperate.md?id=pf800d0c97d4311e7d769679c9cd6c8c6)

| 参数名                    | 类型      | 说明                                  |
| ---------------------- | ------- | ----------------------------------- |
| baseLikes              | Integer | 累计点赞人数 (点赞基数)                       |
| chatOnlineNumberEnable | String  | 在线人数开关，Y：开启，N：关闭                    |
| emotionEnabled         | String  | 情绪直播间开关，情绪开关和点赞开关同时只能开启一个，Y：开启，N：关闭 |
| redPackEnabled         | String  | 红包开关，Y：开启，N：关闭                      |
| sendFlowersEnabled     | String  | 点赞开关，Y：开启，N：关闭                      |
| viewerSendImgEnabled   | String  | 发送图片开关，Y：开启，N：关闭                    |
| welcomeEnabled         | String  | 欢迎语开关，Y：开启，N：关闭                     |
| withdrawEnabled        | String  | 提现开关，Y：开启，N：关闭                      |

[**DecorateDesc参数描述**](#/channelOperate.md?id=pf06d26b9bb35394e77071ce3677d10bb)

| 参数名           | 类型     | 说明                 |
| ------------- | ------ | ------------------ |
| coverImageUrl | String | 暖场图片 -> 封面图片       |
| iconUrl       | String | 图标URL              |
| publisher     | String | 主持人名称，最大长度50       |
| title         | String | 标题 -> 直播名称，最大长度100 |

[**DecorateMenus参数描述**](#/channelOperate.md?id=p1cb81e1f1e91bbe574abcf53beb830de)

| 参数名     | 类型     | 说明                                                           |
| ------- | ------ | ------------------------------------------------------------ |
| content | String | 菜单内容                                                         |
| menuId  | String | 菜单ID                                                         |
| name    | String | 菜单名称                                                         |
| type    | String | 菜单类型 desc：直播介绍 chat：互动聊天 quiz：提问 qa：问答 invite：邀请海报 text：图文菜单 |

[**DecoratePlayer参数描述**](#/channelOperate.md?id=p58599109f26136adfed4ebc46098c783)

| 参数名              | 类型      | 说明                    |
| ---------------- | ------- | --------------------- |
| actualPV         | Integer | 实际累计观看次数 (真实次数)       |
| backgroundUrl    | String  | PC背景图片                |
| basePV           | Integer | 基础观看次数                |
| coverJumpUrl     | String  | 封面(暖场)跳转链接            |
| iconLink         | String  | 水印链接                  |
| iconPosition     | String  | 图标位置 (水印位置)           |
| iconUrl          | String  | 水印图片URL               |
| logoOpacity      | Float   | 水印不透明度，0：完全透明，1：完全不透明 |
| warmUpEnabled    | String  | 暖场开关，Y：开启，N：关闭        |
| warmUpImageUrl   | String  | 暖场图片地址 (直播封面图)        |
| watermarkEnabled | String  | 水印开关,Y：开启，N：关闭        |

[**DecorateSplash参数描述**](#/channelOperate.md?id=p327f635a48515636aa685a13d29d6d29)

| 参数名            | 类型     | 说明      |
| -------------- | ------ | ------- |
| splashImageUrl | String | 引导页图片地址 |

[**DecorateMenus参数描述**](#/channelOperate.md?id=p1cb81e1f1e91bbe574abcf53beb830de)

| 参数名     | 类型     | 说明                                                           |
| ------- | ------ | ------------------------------------------------------------ |
| content | String | 菜单内容                                                         |
| menuId  | String | 菜单ID                                                         |
| name    | String | 菜单名称                                                         |
| type    | String | 菜单类型 desc：直播介绍 chat：互动聊天 quiz：提问 qa：问答 invite：邀请海报 text：图文菜单 |

[**DecorateDescEn参数描述**](#/channelOperate.md?id=p6e9f52ab6811471a840de31807d589e0)

| 参数名       | 类型     | 说明             |
| --------- | ------ | -------------- |
| publisher | String | 主持人英文名称，最大长度50 |
| title     | String | 直播英文名称，最大长度100 |

\ <br>

***

\ <br>

### 40、修改频道装修设置

#### 描述

```
修改频道的页面装修设置
接口地址（仅做说明使用）：https://api.polyv.net/live/v4/channel/decorate/update
```

#### 调用约束

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

#### 单元测试

```java
	@Test
	public void testUpdateChannelDecorate() throws IOException, NoSuchAlgorithmException {
        LiveUpdateChannelDecorateRequest liveUpdateChannelDecorateRequest = new LiveUpdateChannelDecorateRequest();
        Boolean liveUpdateChannelDecorateResponse;
        try {
            String channelId = super.createChannel();
            liveUpdateChannelDecorateRequest.setChannelId(channelId);
            LiveUpdateChannelDecorateRequest.DecorateChat chat = new LiveUpdateChannelDecorateRequest.DecorateChat();
            chat.setBaseLikes(2000)
                    .setChatOnlineNumberEnable(LiveConstant.Flag.YES.getFlag())
                    .setRedPackEnabled(LiveConstant.Flag.YES.getFlag());
            List<LiveUpdateChannelDecorateRequest.DecorateMenus> menus = new ArrayList<>();
            LiveUpdateChannelDecorateRequest.DecorateMenus menu1 = new LiveUpdateChannelDecorateRequest.DecorateMenus();
            LiveUpdateChannelDecorateRequest.DecorateMenus menu2 = new LiveUpdateChannelDecorateRequest.DecorateMenus();
            menu1.setType(LiveConstant.MenuType.DESC.getType()).setName("直播介绍");
            menu2.setType(LiveConstant.MenuType.TEXT.getType()).setName("图文菜单");
            menus.add(menu1);
            menus.add(menu2);
            liveUpdateChannelDecorateRequest.setChat(chat)
                    .setEnglishSettingEnabled(LiveConstant.Flag.NO.getFlag())
                    .setSkin(LiveConstant.Skin.GOLDEN.getValue())
                    .setSplashEnabled(LiveConstant.Flag.YES.getFlag())
                    .setMenus(menus);
            liveUpdateChannelDecorateResponse = new LiveChannelOperateServiceImpl().updateChannelDecorate(
                    liveUpdateChannelDecorateRequest);
            Assert.assertTrue(liveUpdateChannelDecorateResponse);
            if (liveUpdateChannelDecorateResponse) {
                //to do something ......
                log.debug("测试修改频道装修设置成功");
            }
        } 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         | 频道号                                                                                                                                                                      |
| skin                  | false | String         | 皮肤，black：时尚黑，red：喜庆红，blue：科技蓝，white：经典白，green：薄荷绿，golden：富贵金                                                                                                             |
| chat                  | false | DecorateChat   | 装修里聊天对象【详见[DecorateChat参数描述](https://git.polyv.net/help-center/document-center/-/blob/master/live/java/channelOperate.md?id=p28c6303f689288b121fbc532051ee824)】          |
| desc                  | false | DecorateDesc   | 装修中文直播介绍页对象【详见[DecorateDesc参数描述](https://git.polyv.net/help-center/document-center/-/blob/master/live/java/channelOperate.md?id=p3374e073b09e845fd773413ce94a770d)】      |
| menus                 | false | Array          | 中文菜单列表对象【详见[DecorateMenus参数描述](https://git.polyv.net/help-center/document-center/-/blob/master/live/java/channelOperate.md?id=p04d357b59bc9c9860f9870187e1dd21a)】        |
| player                | false | DecoratePlayer | 装修播放器对象【详见[DecoratePlayer参数描述](https://git.polyv.net/help-center/document-center/-/blob/master/live/java/channelOperate.md?id=pf91e661c8d678819af1f2d45b41e6dce)】        |
| splash                | false | DecorateSplash | 装修引导页对象【详见[DecorateSplash参数描述](https://git.polyv.net/help-center/document-center/-/blob/master/live/java/channelOperate.md?id=p9aaa89848910352dc3b484018a680ecb)】        |
| splashEnabled         | false | String         | 引导页开关，Y：开启，N：关闭                                                                                                                                                          |
| englishSettingEnabled | false | String         | 双语直播间开关，Y：开启，N：关闭                                                                                                                                                        |
| enMenus               | false | Array          | 英文菜单列表对象【详见[DecorateMenus参数描述](https://git.polyv.net/help-center/document-center/-/blob/master/live/java/channelOperate.md?id=p22594c5addf61a3a22c495a4d4a1c894)】        |
| descEn                | false | DecorateDescEn | 模板-装修英文直播介绍页对象【详见[DecorateDescEn参数描述](https://git.polyv.net/help-center/document-center/-/blob/master/live/java/channelOperate.md?id=p8c678f975a6d0c57670727e4e53688e2)】 |

[**DecorateChat参数描述**](#/channelOperate.md?id=p28c6303f689288b121fbc532051ee824)

| 参数名                    | 必选    | 类型      | 说明                                  |
| ---------------------- | ----- | ------- | ----------------------------------- |
| baseLikes              | false | Integer | 累计点赞人数 (点赞基数)                       |
| chatOnlineNumberEnable | false | String  | 在线人数开关，Y：开启，N：关闭                    |
| emotionEnabled         | false | String  | 情绪直播间开关，情绪开关和点赞开关同时只能开启一个，Y：开启，N：关闭 |
| redPackEnabled         | false | String  | 红包开关，Y：开启，N：关闭                      |
| sendFlowersEnabled     | false | String  | 点赞开关，Y：开启，N：关闭                      |
| viewerSendImgEnabled   | false | String  | 发送图片开关，Y：开启，N：关闭                    |
| welcomeEnabled         | false | String  | 欢迎语开关，Y：开启，N：关闭                     |
| withdrawEnabled        | false | String  | 提现开关，Y：开启，N：关闭                      |

[**DecorateDesc参数描述**](#/channelOperate.md?id=p3374e073b09e845fd773413ce94a770d)

| 参数名       | 必选    | 类型     | 说明                 |
| --------- | ----- | ------ | ------------------ |
| iconUrl   | false | String | 图标URL              |
| publisher | false | String | 主持人名称，最大长度50       |
| title     | false | String | 标题 -> 直播名称，最大长度100 |

[**DecorateMenus参数描述**](#/channelOperate.md?id=p22594c5addf61a3a22c495a4d4a1c894)

| 参数名     | 必选    | 类型     | 说明                                                           |
| ------- | ----- | ------ | ------------------------------------------------------------ |
| content | false | String | 菜单内容                                                         |
| menuId  | false | String | 菜单ID                                                         |
| name    | true  | String | 菜单名称                                                         |
| type    | true  | String | 菜单类型 desc：直播介绍 chat：互动聊天 quiz：提问 qa：问答 invite：邀请海报 text：图文菜单 |

[**DecoratePlayer参数描述**](#/channelOperate.md?id=pf91e661c8d678819af1f2d45b41e6dce)

| 参数名              | 必选    | 类型      | 说明                    |
| ---------------- | ----- | ------- | --------------------- |
| actualPV         | false | Integer | 实际累计观看次数 (真实次数)       |
| backgroundUrl    | false | String  | PC背景图片                |
| basePV           | false | Integer | 基础观看次数                |
| coverJumpUrl     | false | String  | 封面(暖场)跳转链接            |
| iconLink         | false | String  | 水印链接                  |
| iconPosition     | false | String  | 图标位置 (水印位置)           |
| iconUrl          | false | String  | 水印图片URL               |
| logoOpacity      | false | Float   | 水印不透明度，0：完全透明，1：完全不透明 |
| warmUpEnabled    | false | String  | 暖场开关，Y：开启，N：关闭        |
| warmUpImageUrl   | false | String  | 暖场图片地址 (直播封面图)        |
| watermarkEnabled | false | String  | 水印开关,Y：开启，N：关闭        |

[**DecorateSplash参数描述**](#/channelOperate.md?id=p9aaa89848910352dc3b484018a680ecb)

| 参数名            | 必选    | 类型     | 说明      |
| -------------- | ----- | ------ | ------- |
| splashImageUrl | false | String | 引导页图片地址 |

[**DecorateMenus参数描述**](#/channelOperate.md?id=p22594c5addf61a3a22c495a4d4a1c894)

| 参数名     | 必选    | 类型     | 说明                                                           |
| ------- | ----- | ------ | ------------------------------------------------------------ |
| content | false | String | 菜单内容                                                         |
| menuId  | false | String | 菜单ID                                                         |
| name    | true  | String | 菜单名称                                                         |
| type    | true  | String | 菜单类型 desc：直播介绍 chat：互动聊天 quiz：提问 qa：问答 invite：邀请海报 text：图文菜单 |

[**DecorateDescEn参数描述**](#/channelOperate.md?id=p8c678f975a6d0c57670727e4e53688e2)

| 参数名       | 必选    | 类型     | 说明             |
| --------- | ----- | ------ | -------------- |
| publisher | false | String | 主持人英文名称，最大长度50 |
| title     | false | String | 直播英文名称，最大长度100 |

#### 返回对象描述

修改频道装修设置返回实体\ <br>

***

\ <br>

### 41、复制频道

#### 描述

```
通过一个频道复制出一个新的频道
接口地址（仅做说明使用）：https://api.polyv.net/live/v3/channel/basic/copy
```

#### 调用约束

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

#### 单元测试

```java
	@Test
	public void testCopyChannel() throws Exception {
        LiveChannelCopyRequest liveChannelCopyRequest = new LiveChannelCopyRequest();
        LiveChannelCopyResponse liveChannelCopyResponse;
        try {
            String channelId = super.getAloneNewChannelId();
            liveChannelCopyRequest.setChannelId(channelId).setName("sdk测试复制频道");
            liveChannelCopyResponse = new LiveChannelOperateServiceImpl().copyChannel(liveChannelCopyRequest);
            Assert.assertNotNull(liveChannelCopyResponse);
            if (liveChannelCopyResponse != null) {
                //to do something ......
                log.debug("测试复制频道成功 {}", JSON.toJSONString(liveChannelCopyResponse));
                //TODO 此处创建完成后删除了频道，正式使用需删除该语句
                super.deleteChannel(liveChannelCopyResponse.getChannelId());
            }
        } 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、请求正确，返回LiveChannelCopyResponse对象，B端依据此对象处理业务逻辑；

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

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

#### 请求入参描述

| 参数名        | 必选    | 类型      | 说明                                         |
| ---------- | ----- | ------- | ------------------------------------------ |
| channelId  | true  | String  | 需要复制频道的频道号                                 |
| name       | false | String  | 新的频道名称，默认为复制频道的频道名称                        |
| categoryId | false | Integer | 新的频道所属分类ID，默认为默认分类                         |
| startTime  | false | String  | 频道开始时间，格式：yyyy-MM-DD HH:mm:ss，默认为复制频道的开始时间 |

#### 返回对象描述

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

\ <br>

***

\ <br>

### 42、批量修改频道皮肤

#### 描述

```
批量修改频道装修皮肤
接口地址（仅做说明使用）：https://api.polyv.net/live/v4/channel/decorate/skin/update-batch
```

#### 调用约束

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

#### 单元测试

```java
	@Test
	public void testUpdateChannelSkin() throws IOException, NoSuchAlgorithmException {
        LiveUpdateChannelSkinRequest liveUpdateChannelSkinRequest = new LiveUpdateChannelSkinRequest();
        Boolean liveUpdateChannelSkinResponse;
        try {
            String channelIds = String.format("%s,%s", super.getAloneChannelId(), super.createChannel());
            liveUpdateChannelSkinRequest.setChannelIds(channelIds).setSkin("red");
            liveUpdateChannelSkinResponse = new LiveChannelOperateServiceImpl().updateChannelSkin(
                    liveUpdateChannelSkinRequest);
            Assert.assertTrue(liveUpdateChannelSkinResponse);
            if (liveUpdateChannelSkinResponse) {
                //to do something ......
                log.debug("测试批量修改频道皮肤成功");
            }
        } 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. ]

#### 请求入参描述

| 参数名        | 必选   | 类型     | 说明                                                           |
| ---------- | ---- | ------ | ------------------------------------------------------------ |
| channelIds | true | String | 用英文逗号隔开的频道号，如：10000,100001 最多10000个                          |
| skin       | true | String | 皮肤 black：时尚黑 red：喜庆红 blue：科技蓝 white：经典白 green：薄荷绿 golden：富贵金 |

#### 返回对象描述

批量修改频道皮肤返回实体\ <br>

***

\ <br>

### 43、获取频道关注公众号设置信息

#### 描述

```
查询关注公众号设置接口
接口地址（仅做说明使用）：https://api.polyv.net/live/v3/channel/promotion/list-channels-follow
```

#### 调用约束

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

#### 单元测试

```java
	@Test
	public void testListChannelsFollow() throws IOException, NoSuchAlgorithmException {
        LiveListChannelsFollowRequest liveListChannelsFollowRequest = new LiveListChannelsFollowRequest();
        LiveListChannelsFollowResponse liveListChannelsFollowResponse;
        try {
            String channelId = super.createChannel();
            liveListChannelsFollowRequest.setChannelIds(channelId);
            liveListChannelsFollowResponse = new LiveChannelOperateServiceImpl().listChannelsFollow(
                    liveListChannelsFollowRequest);
            Assert.assertNotNull(liveListChannelsFollowResponse);
            if (liveListChannelsFollowResponse != null) {
                //to do something ......
                log.debug("测试获取频道关注公众号设置信息成功 {}", JSON.toJSONString(liveListChannelsFollowResponse));
            }
        } 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、请求正确，返回LiveListChannelsFollowResponse对象，B端依据此对象处理业务逻辑；

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

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

#### 请求入参描述

| 参数名        | 必选   | 类型     | 说明             |
| ---------- | ---- | ------ | -------------- |
| channelIds | true | String | 频道号,多个频道用“,”分隔 |

#### 返回对象描述

| 参数名  | 类型    | 说明                                                                                                                                                                  |
| ---- | ----- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| list | Array | 关注公众号设置列表【详见[ChannelsFollow参数描述](https://git.polyv.net/help-center/document-center/-/blob/master/live/java/channelOperate.md?id=p5b1e4adc0855fde81c639f41e4fc91a1)】 |

[**ChannelsFollow参数描述**](#/channelOperate.md?id=p5b1e4adc0855fde81c639f41e4fc91a1)

| 参数名             | 类型     | 说明                |
| --------------- | ------ | ----------------- |
| channelId       | String | 频道号               |
| enabled         | String | 关注公众号功能开关，开启Y、关闭N |
| autoShowEnabled | String | 主动弹窗开关，开启Y、关闭N    |
| qrCodeUrl       | String | 二维码图片链接地址         |
| entranceText    | String | 入口文案              |
| tips            | String | 弹窗提示文案            |

\ <br>

***

\ <br>

### 44、修改频道关注公众号设置信息

#### 描述

```
更新关注公众号设置接口
接口地址（仅做说明使用）：https://api.polyv.net/live/v3/channel/promotion/update-channels-follow
```

#### 调用约束

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

#### 单元测试

```java
	@Test
	public void testUpdateChannelsFollow() throws IOException, NoSuchAlgorithmException {
        LiveUpdateChannelsFollowRequest liveUpdateChannelsFollowRequest = new LiveUpdateChannelsFollowRequest();
        Boolean liveUpdateChannelsFollowResponse;
        try {
            String channelId = super.createChannel();
            liveUpdateChannelsFollowRequest.setChannelIds(channelId);
            liveUpdateChannelsFollowRequest.setEnabled("Y");
            liveUpdateChannelsFollowRequest.setAutoShowEnabled("Y");
            liveUpdateChannelsFollowRequest.setEntranceText("welcome");
            liveUpdateChannelsFollowRequest.setTips("tips");
            liveUpdateChannelsFollowRequest.setQrCodeUrl(
                    "https://wwwimg.polyv.net/assets/dist/images/web3.0/c-footer/ft-wechat-qrcode.png");
            liveUpdateChannelsFollowResponse = new LiveChannelOperateServiceImpl().updateChannelsFollow(
                    liveUpdateChannelsFollowRequest);
            Assert.assertNotNull(liveUpdateChannelsFollowResponse);
            if (liveUpdateChannelsFollowResponse != null) {
                //to do something ......
                log.debug("测试修改频道关注公众号设置信息成功 {}", JSON.toJSONString(liveUpdateChannelsFollowResponse));
            }
        } 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. ]

#### 请求入参描述

| 参数名             | 必选    | 类型     | 说明                          |
| --------------- | ----- | ------ | --------------------------- |
| channelIds      | true  | String | 频道号，多个频道用“,”分隔              |
| qrCodeUrl       | true  | String | 图片链接地址                      |
| enabled         | false | String | 关注公众号功能开关，为空不进行修改 Y：开启 N：关闭 |
| autoShowEnabled | false | String | 主动弹窗开关，为空不进行修改 Y：开启 N：关闭    |
| entranceText    | false | String | 入口文案，最大8个字符、为空是不进行修改        |
| tips            | false | String | 弹窗提示文案，最大30个字符、为空是不进行修改     |

#### 返回对象描述

true为修改成功，false为返回失败\ <br>

***

\ <br>

### 45、批量删除频道多条聊天记录

#### 描述

```
根据聊天的id删除对应聊天记录
接口地址（仅做说明使用）：https://api.polyv.net/live/v3/channel/chat/remove-contents
```

#### 调用约束

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

#### 单元测试

```java
	@Test
	public void testRemoveChatContents() throws IOException, NoSuchAlgorithmException {
        LiveRemoveChatContentsRequest liveRemoveChatContentsRequest = new LiveRemoveChatContentsRequest();
        Boolean liveRemoveChatContentsResponse;
        try {
            String channelId = super.createChannel();
            liveRemoveChatContentsRequest.setChannelId(channelId);
            liveRemoveChatContentsRequest.setIds("c71c7240-86cd-11eb-a963-e9bab7dc4d86");
            liveRemoveChatContentsResponse = new LiveChannelOperateServiceImpl().removeChatContents(
                    liveRemoveChatContentsRequest);
            Assert.assertNotNull(liveRemoveChatContentsResponse);
            if (liveRemoveChatContentsResponse != null) {
                //to do something ......
                log.debug("测试批量删除频道多条聊天记录成功 {}", JSON.toJSONString(liveRemoveChatContentsResponse));
            }
        } 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 | 频道号                                      |
| ids       | true | String | 聊天记录对应的id(多个id使用英文逗号隔开)，该参数获取自【查询频道聊天记录】 |

#### 返回对象描述

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