# 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>


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://polyv.gitbook.io/document/docs/live/java/channeloperate.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
