diff --git a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/WxMaLiveService.java b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/WxMaLiveService.java index c013958ee4..3047c9a3b2 100644 --- a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/WxMaLiveService.java +++ b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/WxMaLiveService.java @@ -18,6 +18,10 @@ public interface WxMaLiveService { String GET_LIVE_INFO = "https://api.weixin.qq.com/wxa/business/getliveinfo"; String CREATE_ROOM = "https://api.weixin.qq.com/wxaapi/broadcast/room/create"; String ADD_GOODS = "https://api.weixin.qq.com/wxaapi/broadcast/room/addgoods"; + String DELETE_ROOM = "https://api.weixin.qq.com/wxaapi/broadcast/room/deleteroom"; + String EDIT_ROOM = "https://api.weixin.qq.com/wxaapi/broadcast/room/editroom"; + String GET_PUSH_URL = "https://api.weixin.qq.com/wxaapi/broadcast/room/getpushurl"; + String GET_SHARED_CODE = "https://api.weixin.qq.com/wxaapi/broadcast/room/getsharedcode"; /** * 创建直播间 @@ -33,6 +37,61 @@ public interface WxMaLiveService { */ Integer createRoom(WxMaLiveRoomInfo roomInfo) throws WxErrorException; + /** + * 删除直播间 + *
+   * 调用额度:10000次/一天
+   * 文档地址:https://developers.weixin.qq.com/miniprogram/dev/framework/liveplayer/studio-api.html#5
+   * http请求方式:POST https://api.weixin.qq.com/wxaapi/broadcast/room/deleteroom?access_token=ACCESS_TOKEN
+   * 
+ * + * @param roomId 直播间id + * @return . + * @throws WxErrorException . + */ + boolean deleteRoom(Integer roomId) throws WxErrorException; + + /** + * 编辑直播间 + *
+   * 调用此接口编辑直播间,调用额度:10000次/一天
+   * 文档地址:https://developers.weixin.qq.com/miniprogram/dev/framework/liveplayer/studio-api.html#6
+   * http请求方式:POST https://api.weixin.qq.com/wxaapi/broadcast/room/editroom?access_token=ACCESS_TOKEN
+   * 
+ * + * @param roomInfo 直播间信息 + * @return . + * @throws WxErrorException . + */ + boolean editRoom(WxMaLiveRoomInfo roomInfo) throws WxErrorException; + + /** + * 获取直播间推流地址 + *
+   * 调用额度:10000次/一天
+   * 文档地址:https://developers.weixin.qq.com/miniprogram/dev/framework/liveplayer/studio-api.html#7
+   * http请求方式:GET https://api.weixin.qq.com/wxaapi/broadcast/room/getpushurl?access_token=ACCESS_TOKEN
+   * 
+ * + * @param roomId 直播间id + * @return . + * @throws WxErrorException . + */ + String getPushUrl(Integer roomId) throws WxErrorException; + + /** + * 获取直播间分享二维码 + *
+   * 调用额度:10000次/一天
+   * 文档地址:https://developers.weixin.qq.com/miniprogram/dev/framework/liveplayer/studio-api.html#8
+   * http请求方式:GET https://api.weixin.qq.com/wxaapi/broadcast/room/getsharedcode?access_token=ACCESS_TOKEN
+   * 
+ * + * @param roomId 直播间id + * @return . + * @throws WxErrorException . + */ + String getSharedCode(Integer roomId, String params) throws WxErrorException; /** * 获取直播房间列表.(分页) * diff --git a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/impl/WxMaLiveServiceImpl.java b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/impl/WxMaLiveServiceImpl.java index c2bbc97e32..84aaab708f 100644 --- a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/impl/WxMaLiveServiceImpl.java +++ b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/impl/WxMaLiveServiceImpl.java @@ -5,6 +5,7 @@ import cn.binarywang.wx.miniapp.bean.live.WxMaLiveResult; import cn.binarywang.wx.miniapp.bean.live.WxMaLiveRoomInfo; import cn.binarywang.wx.miniapp.util.json.WxMaGsonBuilder; +import com.google.common.base.Joiner; import com.google.gson.JsonObject; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; @@ -40,6 +41,55 @@ public Integer createRoom(WxMaLiveRoomInfo roomInfo) throws WxErrorException { return jsonObject.get("roomId").getAsInt(); } + @Override + public boolean deleteRoom(Integer roomId) throws WxErrorException { + Map map = new HashMap<>(2); + map.put("id", roomId); + String responseContent = this.wxMaService.post(DELETE_ROOM, WxMaGsonBuilder.create().toJson(map)); + JsonObject jsonObject = GsonParser.parse(responseContent); + if (jsonObject.get("errcode").getAsInt() != 0) { + throw new WxErrorException(WxError.fromJson(responseContent, WxType.MiniApp)); + } + return true; + } + + @Override + public boolean editRoom(WxMaLiveRoomInfo roomInfo) throws WxErrorException { + String responseContent = this.wxMaService.post(EDIT_ROOM, WxMaGsonBuilder.create().toJson(roomInfo)); + JsonObject jsonObject = GsonParser.parse(responseContent); + if (jsonObject.get("errcode").getAsInt() != 0) { + throw new WxErrorException(WxError.fromJson(responseContent, WxType.MiniApp)); + } + return true; + } + + @Override + public String getPushUrl(Integer roomId) throws WxErrorException { + Map map = new HashMap<>(2); + map.put("roomId", roomId); + String responseContent = this.wxMaService.get(GET_PUSH_URL, Joiner.on("&").withKeyValueSeparator("=").join(map)); + JsonObject jsonObject = GsonParser.parse(responseContent); + if (jsonObject.get("errcode").getAsInt() != 0) { + throw new WxErrorException(WxError.fromJson(responseContent, WxType.MiniApp)); + } + return jsonObject.get("pushAddr").getAsString(); + } + + @Override + public String getSharedCode(Integer roomId, String params) throws WxErrorException { + Map map = new HashMap<>(2); + map.put("roomId", roomId); + if (null != params) { + map.put("params", params); + } + String responseContent = this.wxMaService.get(GET_SHARED_CODE, Joiner.on("&").withKeyValueSeparator("=").join(map)); + JsonObject jsonObject = GsonParser.parse(responseContent); + if (jsonObject.get("errcode").getAsInt() != 0) { + throw new WxErrorException(WxError.fromJson(responseContent, WxType.MiniApp)); + } + return jsonObject.get("cdnUrl").getAsString(); + } + @Override public WxMaLiveResult getLiveInfo(Integer start, Integer limit) throws WxErrorException { JsonObject jsonObject = getLiveInfo(start, limit, null); diff --git a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/live/WxMaLiveRoomInfo.java b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/live/WxMaLiveRoomInfo.java index c393d5dbd5..97f30f4377 100644 --- a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/live/WxMaLiveRoomInfo.java +++ b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/live/WxMaLiveRoomInfo.java @@ -11,6 +11,10 @@ public class WxMaLiveRoomInfo implements Serializable { private static final long serialVersionUID = 7745775280267417154L; + /** + * 直播间ID + */ + private Integer id; /** * 直播间名字,最短3个汉字,最长17个汉字,1个汉字相当于2个字符 **/ @@ -39,6 +43,10 @@ public class WxMaLiveRoomInfo implements Serializable { * 主播副号微信号,如果未实名认证,需要先前往“小程序直播”小程序进行实名验证, 小程序二维码链接:https://res.wx.qq.com/op_res/BbVNeczA1XudfjVqCVoKgfuWe7e3aUhokktRVOqf_F0IqS6kYR--atCpVNUUC3zr **/ private String subAnchorWechat; + /** + * 创建者微信号,不传入则此直播间所有成员可见。传入则此房间仅创建者、管理员、超管、直播间主播可见 + **/ + private String createrWechat; /** * 分享图,填入mediaID(mediaID获取后,三天内有效);图片mediaID的获取,请参考以下文档: https://developers.weixin.qq.com/doc/offiaccount/Asset_Management/New_temporary_materials.html;直播间分享图,图片规则:建议像素800*640,大小不超过1M; **/ diff --git a/weixin-java-miniapp/src/test/java/cn/binarywang/wx/miniapp/api/impl/WxMaLiveServiceImplTest.java b/weixin-java-miniapp/src/test/java/cn/binarywang/wx/miniapp/api/impl/WxMaLiveServiceImplTest.java index d93a540b2b..1d43b50bee 100644 --- a/weixin-java-miniapp/src/test/java/cn/binarywang/wx/miniapp/api/impl/WxMaLiveServiceImplTest.java +++ b/weixin-java-miniapp/src/test/java/cn/binarywang/wx/miniapp/api/impl/WxMaLiveServiceImplTest.java @@ -37,12 +37,13 @@ public void createRoom() throws Exception { roomInfo.setName("订阅通知直播间"); roomInfo.setCoverImg(mediaUpload.getMediaId()); Calendar c = Calendar.getInstance(); - c.set(2020, Calendar.SEPTEMBER, 10, 8, 0); + c.set(2020, Calendar.DECEMBER, 10, 8, 0); roomInfo.setStartTime(c.getTimeInMillis() / 1000); - c.set(2020, Calendar.SEPTEMBER, 10, 12, 0); + c.set(2020, Calendar.DECEMBER, 10, 12, 0); roomInfo.setEndTime(c.getTimeInMillis() / 1000); roomInfo.setAnchorName("鹏军_专业小程序开发"); roomInfo.setAnchorWechat("pengjun939961241"); + roomInfo.setCreaterWechat("pengjun939961241"); roomInfo.setShareImg(mediaUpload.getMediaId()); roomInfo.setType(1); roomInfo.setScreenType(1); @@ -53,6 +54,48 @@ public void createRoom() throws Exception { System.out.println(roomId); } + @Test + public void deletRoom() throws Exception { + this.wxService.getLiveService().deleteRoom(29); + } + + @Test + public void editRoom() throws Exception { + //上传临时素材 +// WxMediaUploadResult mediaUpload = this.wxService.getMediaService().uploadMedia("image", new File("E:\\1.png")); + + WxMaLiveRoomInfo roomInfo = new WxMaLiveRoomInfo(); + roomInfo.setId(39); + roomInfo.setName("修改订阅通知直播间"); + roomInfo.setCoverImg("http://mmbiz.qpic.cn/mmbiz_png/omYktZNGamuBLBYlP2FjpIL2AHoiayH8HXeZRibtXDMesHn5aevEaM4etUVwfnX1HHqrXBDY3KPgT8MIlqbtqX8Q/0"); + Calendar c = Calendar.getInstance(); + c.set(2021, Calendar.SEPTEMBER, 10, 8, 0); + roomInfo.setStartTime(c.getTimeInMillis() / 1000); + c.set(2021, Calendar.SEPTEMBER, 10, 12, 0); + roomInfo.setEndTime(c.getTimeInMillis() / 1000); + roomInfo.setAnchorName("鹏军_专业小程序开发"); + roomInfo.setAnchorWechat("pengjun939961241"); + roomInfo.setShareImg("http://mmbiz.qpic.cn/mmbiz_png/omYktZNGamuBLBYlP2FjpIL2AHoiayH8HXeZRibtXDMesHn5aevEaM4etUVwfnX1HHqrXBDY3KPgT8MIlqbtqX8Q/0"); + roomInfo.setType(1); + roomInfo.setScreenType(1); + roomInfo.setCloseLike(0); + roomInfo.setCloseGoods(0); + roomInfo.setCloseComment(0); + boolean editRoom = this.wxService.getLiveService().editRoom(roomInfo); + System.out.println(editRoom); + } + @Test + public void getPushUrl() throws Exception { + String result = this.wxService.getLiveService().getPushUrl(39); + System.out.println(result); + } + + @Test + public void getSharedCode() throws Exception { + String result = this.wxService.getLiveService().getSharedCode(39, null); + System.out.println(result); + } + @Test public void getLiveInfo() throws Exception { WxMaLiveResult list = this.wxService.getLiveService().getLiveInfo(0, 10);