Parcourir la source

:new: #2837 【企业微信】增加撤回应用消息的接口

oldmanl il y a 2 ans
Parent
commit
791ec8d2db

+ 12 - 0
weixin-java-cp/src/main/java/me/chanjar/weixin/cp/api/WxCpMessageService.java

@@ -65,4 +65,16 @@ public interface WxCpMessageService {
    */
   WxCpSchoolContactMessageSendResult sendSchoolContactMessage(WxCpSchoolContactMessage message) throws WxErrorException;
 
+  /**
+   * <pre>
+   * 撤回应用消息
+   *
+   * 请求地址: https://qyapi.weixin.qq.com/cgi-bin/message/recall?access_token=ACCESS_TOKEN
+   * 文档地址: https://developer.work.weixin.qq.com/document/path/94867
+   * </pre>
+   * @param msgId 消息id
+   * @throws WxErrorException
+   */
+  void recall(String msgId) throws WxErrorException;
+
 }

+ 9 - 0
weixin-java-cp/src/main/java/me/chanjar/weixin/cp/api/impl/WxCpMessageServiceImpl.java

@@ -1,6 +1,7 @@
 package me.chanjar.weixin.cp.api.impl;
 
 import com.google.common.collect.ImmutableMap;
+import com.google.gson.JsonObject;
 import lombok.RequiredArgsConstructor;
 import me.chanjar.weixin.common.error.WxErrorException;
 import me.chanjar.weixin.cp.api.WxCpMessageService;
@@ -56,4 +57,12 @@ public class WxCpMessageServiceImpl implements WxCpMessageService {
       .getApiUrl(Message.EXTERNAL_CONTACT_MESSAGE_SEND), message.toJson()));
   }
 
+  @Override
+  public void recall(String msgId) throws WxErrorException {
+    JsonObject jsonObject = new JsonObject();
+    jsonObject.addProperty("msgid", msgId);
+    String apiUrl = this.cpService.getWxCpConfigStorage().getApiUrl(Message.MESSAGE_RECALL);
+    this.cpService.post(apiUrl, jsonObject.toString());
+  }
+
 }

+ 6 - 0
weixin-java-cp/src/main/java/me/chanjar/weixin/cp/constant/WxCpApiPathConsts.java

@@ -84,6 +84,12 @@ public interface WxCpApiPathConsts {
      */
     String EXTERNAL_CONTACT_MESSAGE_SEND = "/cgi-bin/externalcontact/message/send";
 
+    /**
+     * 撤回应用消息
+     * https://developer.work.weixin.qq.com/document/path/94867
+     */
+    String MESSAGE_RECALL = "/cgi-bin/message/recall";
+
   }
 
   /**

+ 12 - 0
weixin-java-cp/src/test/java/me/chanjar/weixin/cp/api/impl/WxCpMessageServiceImplTest.java

@@ -41,6 +41,8 @@ public class WxCpMessageServiceImplTest {
   private Runner mockRunner;
   private ApiTestModule.WxXmlCpInMemoryConfigStorage configStorage;
 
+  private WxCpMessageSendResult wxCpMessageSendResult;
+
   /**
    * Sets .
    */
@@ -96,6 +98,7 @@ public class WxCpMessageServiceImplTest {
 
     WxCpMessageSendResult messageSendResult = this.wxService.getMessageService().send(message);
     assertNotNull(messageSendResult);
+    wxCpMessageSendResult = messageSendResult;
     System.out.println(messageSendResult);
     System.out.println(messageSendResult.getInvalidPartyList());
     System.out.println(messageSendResult.getInvalidUserList());
@@ -222,4 +225,13 @@ public class WxCpMessageServiceImplTest {
     assertThat(statistics.getStatistics()).isNotNull();
   }
 
+  /**
+   * Test message recall
+   * @throws WxErrorException
+   */
+  @Test(dependsOnMethods = "testSendMessage1")
+  public void testRecall() throws WxErrorException {
+    this.wxService.getMessageService().recall(wxCpMessageSendResult.getMsgId());
+  }
+
 }