From a39bd3e417be9e2520084586f1c2693413e04a85 Mon Sep 17 00:00:00 2001 From: Wong <1960779692@qq.com> Date: Fri, 25 Mar 2022 09:21:27 +0000 Subject: [PATCH 1/3] =?UTF-8?q?:art:=20#2563=20=E3=80=90=E4=BC=81=E5=BE=AE?= =?UTF-8?q?=E5=BE=AE=E4=BF=A1=E3=80=91=E4=BC=98=E5=8C=96=E8=8E=B7=E5=8F=96?= =?UTF-8?q?=E5=BE=85=E5=88=86=E9=85=8D=E7=A6=BB=E8=81=8C=E6=88=90=E5=91=98?= =?UTF-8?q?=E5=88=97=E8=A1=A8=E7=9A=84=E6=8E=A5=E5=8F=A3=EF=BC=8C=E5=A2=9E?= =?UTF-8?q?=E5=8A=A0=E5=88=86=E9=A1=B5=E6=9F=A5=E8=AF=A2=E6=B8=B8=E6=A0=87?= =?UTF-8?q?=E5=8F=82=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cp/api/WxCpExternalContactService.java | 17 +++--- .../impl/WxCpExternalContactServiceImpl.java | 11 ++-- .../WxCpUserExternalUnassignList.java | 10 +++- .../cp/api/WxCpExternalContactTest.java | 54 +++++++++++++++++++ 4 files changed, 81 insertions(+), 11 deletions(-) create mode 100644 weixin-java-cp/src/test/java/me/chanjar/weixin/cp/api/WxCpExternalContactTest.java diff --git a/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/api/WxCpExternalContactService.java b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/api/WxCpExternalContactService.java index 8e04977ff4..ae6b59ed6b 100644 --- a/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/api/WxCpExternalContactService.java +++ b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/api/WxCpExternalContactService.java @@ -361,14 +361,19 @@ WxCpExternalContactBatchInfo getContactDetailBatch(String[] userIdList, String c List listFollowers() throws WxErrorException; /** - * 企业和第三方可通过此接口,获取所有离职成员的客户列表,并可进一步调用离职成员的外部联系人再分配接口将这些客户重新分配给其他企业成员。 + * 获取待分配的离职成员列表 + * 企业和第三方可通过此接口,获取所有离职成员的客户列表,并可进一步调用分配离职成员的客户接口将这些客户重新分配给其他企业成员。 * - * @param page the page - * @param pageSize the page size - * @return wx cp user external unassign list - * @throws WxErrorException the wx error exception + * 请求方式:POST(HTTPS) + * 请求地址:https://qyapi.weixin.qq.com/cgi-bin/externalcontact/get_unassigned_list?access_token=ACCESS_TOKEN + * + * @param pageId 分页查询,要查询页号,从0开始 + * @param cursor 分页查询游标,字符串类型,适用于数据量较大的情况,如果使用该参数则无需填写page_id,该参数由上一次调用返回 + * @param pageSize 每次返回的最大记录数,默认为1000,最大值为1000 + * @return + * @throws WxErrorException */ - WxCpUserExternalUnassignList listUnassignedList(Integer page, Integer pageSize) throws WxErrorException; + WxCpUserExternalUnassignList listUnassignedList(Integer pageId, String cursor, Integer pageSize) throws WxErrorException; /** * 企业可通过此接口,将已离职成员的外部联系人分配给另一个成员接替联系。 diff --git a/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/api/impl/WxCpExternalContactServiceImpl.java b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/api/impl/WxCpExternalContactServiceImpl.java index 3997f50768..def24cf8bd 100644 --- a/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/api/impl/WxCpExternalContactServiceImpl.java +++ b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/api/impl/WxCpExternalContactServiceImpl.java @@ -32,7 +32,7 @@ import static me.chanjar.weixin.cp.constant.WxCpApiPathConsts.ExternalContact.*; /** - * @author 曹祖鹏 & yuanqixun & Mr.Pan + * @author 曹祖鹏 & yuanqixun & Mr.Pan & Wang_Wong */ @RequiredArgsConstructor public class WxCpExternalContactServiceImpl implements WxCpExternalContactService { @@ -245,10 +245,13 @@ public List listFollowers() throws WxErrorException { } @Override - public WxCpUserExternalUnassignList listUnassignedList(Integer pageIndex, Integer pageSize) throws WxErrorException { + public WxCpUserExternalUnassignList listUnassignedList(Integer pageIndex, String cursor, Integer pageSize) throws WxErrorException { JsonObject json = new JsonObject(); - json.addProperty("page_id", pageIndex == null ? 0 : pageIndex); - json.addProperty("page_size", pageSize == null ? 100 : pageSize); + if(pageIndex != null){ + json.addProperty("page_id", pageIndex); + } + json.addProperty("cursor", StringUtils.isEmpty(cursor) ? "" : cursor); + json.addProperty("page_size", pageSize == null ? 1000 : pageSize); final String url = this.mainService.getWxCpConfigStorage().getApiUrl(LIST_UNASSIGNED_CONTACT); final String result = this.mainService.post(url, json.toString()); return WxCpUserExternalUnassignList.fromJson(result); diff --git a/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/bean/external/WxCpUserExternalUnassignList.java b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/bean/external/WxCpUserExternalUnassignList.java index 68d065a2d4..d273348363 100644 --- a/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/bean/external/WxCpUserExternalUnassignList.java +++ b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/bean/external/WxCpUserExternalUnassignList.java @@ -12,7 +12,7 @@ /** * 离职员工外部联系人列表 * - * @author yqx + * @author yqx & Wang_Wong * @date 2020/3/15 */ @Getter @@ -25,6 +25,9 @@ public class WxCpUserExternalUnassignList extends WxCpBaseResp { @SerializedName("is_last") private boolean isLast; + @SerializedName("next_cursor") + private String nextCursor; + @Getter @Setter public static class UnassignInfo implements Serializable { @@ -52,4 +55,9 @@ public static class UnassignInfo implements Serializable { public static WxCpUserExternalUnassignList fromJson(String json) { return WxCpGsonBuilder.create().fromJson(json, WxCpUserExternalUnassignList.class); } + + public String toJson() { + return WxCpGsonBuilder.create().toJson(this); + } + } diff --git a/weixin-java-cp/src/test/java/me/chanjar/weixin/cp/api/WxCpExternalContactTest.java b/weixin-java-cp/src/test/java/me/chanjar/weixin/cp/api/WxCpExternalContactTest.java new file mode 100644 index 0000000000..7fb1650dad --- /dev/null +++ b/weixin-java-cp/src/test/java/me/chanjar/weixin/cp/api/WxCpExternalContactTest.java @@ -0,0 +1,54 @@ +package me.chanjar.weixin.cp.api; + +import com.google.common.collect.Lists; +import com.google.inject.Inject; +import lombok.extern.slf4j.Slf4j; +import me.chanjar.weixin.common.error.WxErrorException; +import me.chanjar.weixin.cp.bean.WxCpBaseResp; +import me.chanjar.weixin.cp.bean.external.*; +import me.chanjar.weixin.cp.bean.external.contact.WxCpExternalContactBatchInfo; +import me.chanjar.weixin.cp.bean.external.contact.WxCpExternalContactInfo; +import me.chanjar.weixin.cp.bean.external.msg.Attachment; +import me.chanjar.weixin.cp.bean.external.msg.Image; +import me.chanjar.weixin.cp.bean.external.msg.Video; +import org.apache.commons.lang3.time.DateFormatUtils; +import org.testng.annotations.Guice; +import org.testng.annotations.Test; +import org.testng.collections.CollectionUtils; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.Date; +import java.util.List; + +import static org.testng.Assert.assertNotNull; + +/** + * 离职继承测试类 + * + * 官方文档: + * https://developer.work.weixin.qq.com/document/path/92124 + */ +@Slf4j +@Guice(modules = ApiTestModule.class) +public class WxCpExternalContactTest { + + @Inject + private WxCpService wxCpService; + @Inject + protected ApiTestModule.WxXmlCpInMemoryConfigStorage configStorage; + + @Test + public void testGetExternalContact() throws WxErrorException { + String externalUserId = this.configStorage.getExternalUserId(); + WxCpUserExternalUnassignList unassignList = this.wxCpService.getExternalContactService().listUnassignedList(null, null, 100); + log.info(unassignList.toJson()); + + // test str + String result = "{\"errcode\":0,\"errmsg\":\"ok\",\"info\":[{\"handover_userid\":\"zhangsan\",\"external_userid\":\"woAJ2GCAAAd4uL12hdfsdasassdDmAAAAA\",\"dimission_time\":1550838571},{\"handover_userid\":\"lisi\",\"external_userid\":\"wmAJ2GCAAAzLTI123ghsdfoGZNqqAAAA\",\"dimission_time\":1550661468}],\"is_last\":false,\"next_cursor\":\"aSfwejksvhToiMMfFeIGZZ\"}"; + WxCpUserExternalUnassignList json = WxCpUserExternalUnassignList.fromJson(result); + log.info(json.toJson()); + + } + +} From 9da280c08ec6a9cc12a89ce6c34c9cae9ff957c2 Mon Sep 17 00:00:00 2001 From: linlinjava Date: Tue, 29 Mar 2022 14:46:57 +0800 Subject: [PATCH 2/3] =?UTF-8?q?=E3=80=90=E5=BE=AE=E4=BF=A1=E5=B0=8F?= =?UTF-8?q?=E7=A8=8B=E5=BA=8F=E3=80=91=E5=B0=8F=E7=A8=8B=E5=BA=8F=E7=9B=B4?= =?UTF-8?q?=E6=92=AD=E6=8C=82=E4=BB=B6=E7=BB=84=E4=BB=B6=E5=95=86=E5=93=81?= =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E5=B9=B6=E6=8F=90=E5=AE=A1=E6=8E=A5=E5=8F=A3?= =?UTF-8?q?=E6=96=B0=E5=A2=9E=E5=AD=97=E6=AE=B5goodsKey?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cn/binarywang/wx/miniapp/bean/live/WxMaLiveGoodInfo.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/live/WxMaLiveGoodInfo.java b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/live/WxMaLiveGoodInfo.java index 4a63ff7a48..3ef043495a 100644 --- a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/live/WxMaLiveGoodInfo.java +++ b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/live/WxMaLiveGoodInfo.java @@ -4,6 +4,7 @@ import java.io.Serializable; import java.math.BigDecimal; +import java.util.List; /** * 直播商品信息 @@ -22,4 +23,8 @@ public class WxMaLiveGoodInfo implements Serializable { * 1, 2:表示是为api添加商品,否则是在MP添加商品 */ private String thirdPartyTag; + /** + * https://developers.weixin.qq.com/miniprogram/dev/platform-capabilities/industry/liveplayer/pendant.html + */ + private List goodsKey; } From e772948ae9e6fde1d4b60a22b01cd3648cbdf8af Mon Sep 17 00:00:00 2001 From: linlinjava Date: Tue, 29 Mar 2022 20:39:08 +0800 Subject: [PATCH 3/3] =?UTF-8?q?=E3=80=90=E5=BE=AE=E4=BF=A1=E5=B0=8F?= =?UTF-8?q?=E7=A8=8B=E5=BA=8F=E3=80=91=E5=B0=8F=E7=A8=8B=E5=BA=8F=E7=9B=B4?= =?UTF-8?q?=E6=92=AD=E7=9A=84=E7=9B=B4=E6=92=AD=E9=97=B4=E6=8E=A5=E5=8F=A3?= =?UTF-8?q?=E5=AE=8C=E5=96=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../wx/miniapp/api/WxMaLiveService.java | 187 ++++++++++++++++++ .../miniapp/api/impl/WxMaLiveServiceImpl.java | 171 +++++++++++++++- .../miniapp/constant/WxMaApiUrlConstants.java | 89 ++++++++- 3 files changed, 443 insertions(+), 4 deletions(-) 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 a90f4756b9..3b0ccc390a 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 @@ -4,6 +4,7 @@ import me.chanjar.weixin.common.error.WxErrorException; import java.util.List; +import java.util.Map; /** *
@@ -207,4 +208,190 @@ public interface WxMaLiveService {
    * @throws WxErrorException .
    */
   List getAssistantList(Integer roomId) throws WxErrorException;
+
+  /**
+   * 添加主播副号
+   * 

+ * 调用接口添加主播副号 + *

+ * 调用额度:10000次/一天 + *

+ * http请求方式:POST https://api.weixin.qq.com/wxaapi/broadcast/room/addsubanchor?access_token=ACCESS_TOKEN + *

+   * @param roomId 房间ID
+   * @param username 用户微信号
+   * @return 是否成功
+   * @throws WxErrorException .
+   */
+  boolean addSubanchor(Integer roomId, String username) throws WxErrorException;
+
+  /**
+   * 修改主播副号
+   * 

+ * 调用接口修改主播副号 + *

+ * 调用频率: 10000次/一天 + *

+ * http请求方式:POST https://api.weixin.qq.com/wxaapi/broadcast/room/modifyassistant?access_token=ACCESS_TOKEN + *

+   * @param roomId 房间ID
+   * @param username 小助手微信号
+   * @param username 用户微信号
+   * @return 是否成功
+   * @throws WxErrorException .
+   */
+  boolean modifySubanchor(Integer roomId, String username) throws WxErrorException;
+
+  /**
+   * 删除主播副号
+   * 

+ * 调用频率: 10000次/一天 + *

+ * http请求方式:POST https://api.weixin.qq.com/wxaapi/broadcast/room/deletesubanchor?access_token=ACCESS_TOKEN + *

+   * @param roomId 房间ID
+   * @return 是否成功
+   * @throws WxErrorException .
+   */
+  boolean deleteSubanchor(Integer roomId) throws WxErrorException;
+
+  /**
+   * 获取主播副号
+   * 

+ * 调用额度:10000次/一天 + *

+ * http请求方式:GET https://api.weixin.qq.com/wxaapi/broadcast/room/getsubanchor?access_token=ACCESS_TOKEN + *

+ * @param roomId 直播间id + * @return . + * @throws WxErrorException . + */ + String getSubanchor(Integer roomId) throws WxErrorException; + + /** + * 开启/关闭直播间官方收录 + *

+ * 调用额度:10000次/一天 + *

+ * http请求方式:POST https://api.weixin.qq.com/wxaapi/broadcast/room/updatefeedpublic?access_token=ACCESS_TOKEN + *

+   * @param roomId 房间ID
+   * @param isFeedsPublic 是否开启官方收录 【1: 开启,0:关闭】
+   * @return 是否成功
+   * @throws WxErrorException .
+   */
+  boolean updatefeedpublic(Integer roomId, Integer isFeedsPublic) throws WxErrorException;
+
+  /**
+   * 开启/关闭回放功能
+   * 

+ * 调用额度:10000次/一天 + *

+ * http请求方式:POST https://api.weixin.qq.com/wxaapi/broadcast/room/updatereplay?access_token=ACCESS_TOKEN + *

+   * @param roomId 房间ID
+   * @param closeReplay 是否关闭回放 【0:开启,1:关闭】
+   * @return 是否成功
+   * @throws WxErrorException .
+   */
+  boolean updatereplay(Integer roomId, Integer closeReplay) throws WxErrorException;
+
+  /**
+   * 开启/关闭客服功能
+   * 

+ * 调用额度:10000次/一天 + *

+ * http请求方式:POST https://api.weixin.qq.com/wxaapi/broadcast/room/updatekf?access_token=ACCESS_TOKEN + *

+   * @param roomId 房间ID
+   * @param closeKf 是否关闭客服 【0:开启,1:关闭】
+   * @return 是否成功
+   * @throws WxErrorException .
+   */
+  boolean updatekf(Integer roomId, Integer closeKf) throws WxErrorException;
+
+  /**
+   * 开启/关闭直播间全局禁言
+   * 

+ * 调用额度:10000次/一天 + *

+ * http请求方式:POST https://api.weixin.qq.com/wxaapi/broadcast/room/updatecomment?access_token=ACCESS_TOKEN + *

+   * @param roomId 房间ID
+   * @param banComment 1-禁言,0-取消禁言
+   * @return 是否成功
+   * @throws WxErrorException .
+   */
+  boolean updatecomment(Integer roomId, Integer banComment) throws WxErrorException;
+
+  /**
+   * 上下架商品
+   * 

+ * 调用额度:10000次/一天 + *

+ * http请求方式:POST https://api.weixin.qq.com/wxaapi/broadcast/goods/onsale?access_token=ACCESS_TOKEN + *

+   * @param roomId 房间ID
+   * @param goodsId 商品ID
+   * @param onSale 上下架 【0:下架,1:上架】
+   * @return 是否成功
+   * @throws WxErrorException .
+   */
+  boolean onsale(Integer roomId, Integer goodsId, Integer onSale) throws WxErrorException;
+
+  /**
+   * 删除直播间商品
+   * 

+ * 调用额度:10000次/一天 + *

+ * http请求方式:POST https://api.weixin.qq.com/wxaapi/broadcast/goods/deleteInRoom?access_token=ACCESS_TOKEN + *

+   * @param roomId 房间ID
+   * @param goodsId 商品ID
+   * @return 是否成功
+   * @throws WxErrorException .
+   */
+  boolean deleteInRoom(Integer roomId, Integer goodsId) throws WxErrorException;
+
+  /**
+   * 推送商品
+   * 

+ * 调用额度:10000次/一天 + *

+ * http请求方式:POST https://api.weixin.qq.com/wxaapi/broadcast/goods/push?access_token=ACCESS_TOKEN + *

+   * @param roomId 房间ID
+   * @param goodsId 商品ID
+   * @return 是否成功
+   * @throws WxErrorException .
+   */
+  boolean push(Integer roomId, Integer goodsId) throws WxErrorException;
+
+  /**
+   * 直播间商品排序
+   * 

+ * 调用额度:10000次/一天 + *

+ * http请求方式:POST https://api.weixin.qq.com/wxaapi/broadcast/goods/sort?access_token=ACCESS_TOKEN + *

+   * @param roomId 房间ID
+   * @param goods 商品ID列表, 例如: [{"goodsId":"123"}, {"goodsId":"234"}]
+   * @return 是否成功
+   * @throws WxErrorException .
+   */
+  boolean sort(Integer roomId, List> goods) throws WxErrorException;
+
+  /**
+   * 下载商品讲解视频
+   * 

+ * 调用额度:10000次/一天 + *

+ * http请求方式:GET https://api.weixin.qq.com/wxaapi/broadcast/goods/getVideo?access_token=ACCESS_TOKEN + *

+ * @param roomId 直播间id + * @param goodsId 商品ID + * @return . + * @throws WxErrorException . + */ + String getVideo(Integer roomId, Integer goodsId) 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 b71e58653e..abda4faa63 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 @@ -18,7 +18,6 @@ import java.util.List; import java.util.Map; -import static cn.binarywang.wx.miniapp.constant.WxMaApiUrlConstants.Broadcast.GET_LIVE_INFO; import static cn.binarywang.wx.miniapp.constant.WxMaApiUrlConstants.Broadcast.Room; /** @@ -152,7 +151,7 @@ private JsonObject getLiveInfo(Integer start, Integer limit, Map } map.put("start", start); map.put("limit", limit); - String responseContent = wxMaService.post(GET_LIVE_INFO, WxMaGsonBuilder.create().toJson(map)); + String responseContent = wxMaService.post(Room.GET_LIVE_INFO, WxMaGsonBuilder.create().toJson(map)); JsonObject jsonObject = GsonParser.parse(responseContent); if (jsonObject.get(ERR_CODE).getAsInt() != 0) { throw new WxErrorException(WxError.fromJson(responseContent, WxType.MiniApp)); @@ -231,4 +230,172 @@ public List getAssistantList(Integer roomId) thro return WxMaAssistantResult.fromJson(responseContent).getList(); } + @Override + public boolean addSubanchor(Integer roomId, String username) throws WxErrorException { + Map map = new HashMap<>(2); + map.put(ROOM_ID, roomId); + map.put("username", username); + String responseContent = this.wxMaService.post(Room.ADD_SUBANCHOR, WxMaGsonBuilder.create().toJson(map)); + JsonObject jsonObject = GsonParser.parse(responseContent); + if (jsonObject.get(ERR_CODE).getAsInt() != 0) { + throw new WxErrorException(WxError.fromJson(responseContent, WxType.MiniApp)); + } + return true; + } + + @Override + public boolean modifySubanchor(Integer roomId, String username) throws WxErrorException { + Map map = new HashMap<>(2); + map.put(ROOM_ID, roomId); + map.put("username", username); + String responseContent = this.wxMaService.post(Room.MODIFY_SUBANCHOR, WxMaGsonBuilder.create().toJson(map)); + JsonObject jsonObject = GsonParser.parse(responseContent); + if (jsonObject.get(ERR_CODE).getAsInt() != 0) { + throw new WxErrorException(WxError.fromJson(responseContent, WxType.MiniApp)); + } + return true; + } + + @Override + public boolean deleteSubanchor(Integer roomId) throws WxErrorException { + Map map = new HashMap<>(1); + map.put(ROOM_ID, roomId); + String responseContent = this.wxMaService.post(Room.DELETE_SUBANCHOR, WxMaGsonBuilder.create().toJson(map)); + JsonObject jsonObject = GsonParser.parse(responseContent); + if (jsonObject.get(ERR_CODE).getAsInt() != 0) { + throw new WxErrorException(WxError.fromJson(responseContent, WxType.MiniApp)); + } + return true; + } + + @Override + public String getSubanchor(Integer roomId) throws WxErrorException { + Map map = new HashMap<>(1); + map.put(ROOM_ID, roomId); + String responseContent = this.wxMaService.get(Room.GET_SUBANCHOR, WxMaGsonBuilder.create().toJson(map)); + JsonObject jsonObject = GsonParser.parse(responseContent); + if (jsonObject.get(ERR_CODE).getAsInt() != 0) { + throw new WxErrorException(WxError.fromJson(responseContent, WxType.MiniApp)); + } + return jsonObject.get("username").getAsString(); + } + + @Override + public boolean updatefeedpublic(Integer roomId, Integer isFeedsPublic) throws WxErrorException { + Map map = new HashMap<>(2); + map.put(ROOM_ID, roomId); + map.put("isFeedsPublic", isFeedsPublic); + String responseContent = this.wxMaService.post(Room.UPDATE_FEED_PUBLIC, WxMaGsonBuilder.create().toJson(map)); + JsonObject jsonObject = GsonParser.parse(responseContent); + if (jsonObject.get(ERR_CODE).getAsInt() != 0) { + throw new WxErrorException(WxError.fromJson(responseContent, WxType.MiniApp)); + } + return true; + } + + @Override + public boolean updatereplay(Integer roomId, Integer closeReplay) throws WxErrorException { + Map map = new HashMap<>(2); + map.put(ROOM_ID, roomId); + map.put("closeReplay", closeReplay); + String responseContent = this.wxMaService.post(Room.UPDATE_REPLAY, WxMaGsonBuilder.create().toJson(map)); + JsonObject jsonObject = GsonParser.parse(responseContent); + if (jsonObject.get(ERR_CODE).getAsInt() != 0) { + throw new WxErrorException(WxError.fromJson(responseContent, WxType.MiniApp)); + } + return true; + } + + @Override + public boolean updatekf(Integer roomId, Integer closeKf) throws WxErrorException { + Map map = new HashMap<>(2); + map.put(ROOM_ID, roomId); + map.put("closeKf", closeKf); + String responseContent = this.wxMaService.post(Room.UPDATE_KF, WxMaGsonBuilder.create().toJson(map)); + JsonObject jsonObject = GsonParser.parse(responseContent); + if (jsonObject.get(ERR_CODE).getAsInt() != 0) { + throw new WxErrorException(WxError.fromJson(responseContent, WxType.MiniApp)); + } + return true; + } + + @Override + public boolean updatecomment(Integer roomId, Integer banComment) throws WxErrorException { + Map map = new HashMap<>(2); + map.put(ROOM_ID, roomId); + map.put("banComment", banComment); + String responseContent = this.wxMaService.post(Room.UPDATE_COMMENT, WxMaGsonBuilder.create().toJson(map)); + JsonObject jsonObject = GsonParser.parse(responseContent); + if (jsonObject.get(ERR_CODE).getAsInt() != 0) { + throw new WxErrorException(WxError.fromJson(responseContent, WxType.MiniApp)); + } + return true; + } + + @Override + public boolean onsale(Integer roomId, Integer goodsId, Integer onSale) throws WxErrorException { + Map map = new HashMap<>(3); + map.put(ROOM_ID, roomId); + map.put("goodsId", goodsId); + map.put("onSale", onSale); + String responseContent = this.wxMaService.post(Room.ONSALE, WxMaGsonBuilder.create().toJson(map)); + JsonObject jsonObject = GsonParser.parse(responseContent); + if (jsonObject.get(ERR_CODE).getAsInt() != 0) { + throw new WxErrorException(WxError.fromJson(responseContent, WxType.MiniApp)); + } + return true; + } + + @Override + public boolean deleteInRoom(Integer roomId, Integer goodsId) throws WxErrorException { + Map map = new HashMap<>(2); + map.put(ROOM_ID, roomId); + map.put("goodsId", goodsId); + String responseContent = this.wxMaService.post(Room.DELETE_IN_ROOM, WxMaGsonBuilder.create().toJson(map)); + JsonObject jsonObject = GsonParser.parse(responseContent); + if (jsonObject.get(ERR_CODE).getAsInt() != 0) { + throw new WxErrorException(WxError.fromJson(responseContent, WxType.MiniApp)); + } + return true; + } + + @Override + public boolean push(Integer roomId, Integer goodsId) throws WxErrorException { + Map map = new HashMap<>(2); + map.put(ROOM_ID, roomId); + map.put("goodsId", goodsId); + String responseContent = this.wxMaService.post(Room.PUSH, WxMaGsonBuilder.create().toJson(map)); + JsonObject jsonObject = GsonParser.parse(responseContent); + if (jsonObject.get(ERR_CODE).getAsInt() != 0) { + throw new WxErrorException(WxError.fromJson(responseContent, WxType.MiniApp)); + } + return true; + } + + @Override + public boolean sort(Integer roomId, List> goods) throws WxErrorException { + Map map = new HashMap<>(2); + map.put(ROOM_ID, roomId); + map.put("goods", goods); + String responseContent = this.wxMaService.post(Room.SORT, WxMaGsonBuilder.create().toJson(map)); + JsonObject jsonObject = GsonParser.parse(responseContent); + if (jsonObject.get(ERR_CODE).getAsInt() != 0) { + throw new WxErrorException(WxError.fromJson(responseContent, WxType.MiniApp)); + } + return true; + } + + @Override + public String getVideo(Integer roomId, Integer goodsId) throws WxErrorException { + Map map = new HashMap<>(2); + map.put(ROOM_ID, roomId); + map.put("goodsId", goodsId); + String responseContent = this.wxMaService.get(Room.GET_VIDEO, WxMaGsonBuilder.create().toJson(map)); + JsonObject jsonObject = GsonParser.parse(responseContent); + if (jsonObject.get(ERR_CODE).getAsInt() != 0) { + throw new WxErrorException(WxError.fromJson(responseContent, WxType.MiniApp)); + } + return jsonObject.get("url").getAsString(); + } + } diff --git a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/constant/WxMaApiUrlConstants.java b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/constant/WxMaApiUrlConstants.java index 3fd6719f7c..4fd7ce1dbc 100644 --- a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/constant/WxMaApiUrlConstants.java +++ b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/constant/WxMaApiUrlConstants.java @@ -158,22 +158,107 @@ public interface Jsapi { } public interface Broadcast { - String GET_LIVE_INFO = "https://api.weixin.qq.com/wxa/business/getliveinfo"; - /** * 直播间管理相关接口 */ interface Room { + /** + * 创建直播间 + */ String CREATE_ROOM = "https://api.weixin.qq.com/wxaapi/broadcast/room/create"; + /** + * 获取直播间列表 + * 获取直播间回放 + */ + String GET_LIVE_INFO = "https://api.weixin.qq.com/wxa/business/getliveinfo"; + /** + * 直播间导入商品 + */ 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"; + /** + * 添加管理直播间小助手 + */ String ADD_ASSISTANT = "https://api.weixin.qq.com/wxaapi/broadcast/room/addassistant"; + /** + * 修改管理直播间小助手 + */ String MODIFY_ASSISTANT = "https://api.weixin.qq.com/wxaapi/broadcast/room/modifyassistant"; + /** + * 删除管理直播间小助手 + */ String REMOVE_ASSISTANT = "https://api.weixin.qq.com/wxaapi/broadcast/room/removeassistant"; + /** + * 查询管理直播间小助手 + */ String GET_ASSISTANT_LIST = "https://api.weixin.qq.com/wxaapi/broadcast/room/getassistantlist"; + /** + * 添加主播副号 + */ + String ADD_SUBANCHOR = "https://api.weixin.qq.com/wxaapi/broadcast/room/addsubanchor"; + /** + * 修改主播副号 + */ + String MODIFY_SUBANCHOR = "https://api.weixin.qq.com/wxaapi/broadcast/room/modifysubanchor"; + /** + * 删除主播副号 + */ + String DELETE_SUBANCHOR = "https://api.weixin.qq.com/wxaapi/broadcast/room/deletesubanchor"; + /** + * 获取主播副号 + */ + String GET_SUBANCHOR = "https://api.weixin.qq.com/wxaapi/broadcast/room/getsubanchor"; + /** + * 开启/关闭直播间官方收录 + */ + String UPDATE_FEED_PUBLIC = "https://api.weixin.qq.com/wxaapi/broadcast/room/updatefeedpublic"; + /** + * 开启/关闭回放功能 + */ + String UPDATE_REPLAY = "https://api.weixin.qq.com/wxaapi/broadcast/room/updatereplay"; + /** + * 开启/关闭客服功能 + */ + String UPDATE_KF = "https://api.weixin.qq.com/wxaapi/broadcast/room/updatekf"; + /** + * 开启/关闭直播间全局禁言 + */ + String UPDATE_COMMENT = "https://api.weixin.qq.com/wxaapi/broadcast/room/updatecomment"; + /** + * 上下架商品 + */ + String ONSALE = "https://api.weixin.qq.com/wxaapi/broadcast/goods/onsale"; + /** + * 删除商品 + */ + String DELETE_IN_ROOM = "https://api.weixin.qq.com/wxaapi/broadcast/goods/deleteInRoom"; + /** + * 推送商品 + */ + String PUSH = "https://api.weixin.qq.com/wxaapi/broadcast/goods/push"; + /** + * 商品排序 + */ + String SORT = "https://api.weixin.qq.com/wxaapi/broadcast/goods/sort"; + /** + * 下载商品讲解视频 + */ + String GET_VIDEO = "https://api.weixin.qq.com/wxaapi/broadcast/goods/getVideo"; } /**