From aded340ac52a0d7405c28face4db9d215e4c644f Mon Sep 17 00:00:00 2001 From: Binary Wang Date: Thu, 22 Jun 2017 15:23:19 +0800 Subject: [PATCH] =?UTF-8?q?#253=20=E4=BF=AE=E6=94=B9=E4=BC=81=E4=B8=9A?= =?UTF-8?q?=E5=8F=B7=E5=8F=91=E9=80=81=E6=B6=88=E6=81=AF=E7=9A=84messageSe?= =?UTF-8?q?nd=E6=96=B9=E6=B3=95=EF=BC=8C=E5=A2=9E=E5=8A=A0=E8=BF=94?= =?UTF-8?q?=E5=9B=9E=E5=80=BC=EF=BC=8C=E6=96=B9=E4=BE=BF=E5=AE=A2=E6=88=B7?= =?UTF-8?q?=E7=AB=AF=E8=BF=9B=E8=A1=8C=E8=87=AA=E8=A1=8C=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../me/chanjar/weixin/cp/api/WxCpService.java | 7 +- .../cp/api/impl/AbstractWxCpServiceImpl.java | 9 +- .../weixin/cp/bean/WxCpMessageSendResult.java | 103 ++++++++++++++++++ .../weixin/cp/api/WxCpMessageAPITest.java | 48 +++++--- 4 files changed, 142 insertions(+), 25 deletions(-) create mode 100644 weixin-java-cp/src/main/java/me/chanjar/weixin/cp/bean/WxCpMessageSendResult.java diff --git a/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/api/WxCpService.java b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/api/WxCpService.java index 6e30ce55e..444fa98de 100644 --- a/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/api/WxCpService.java +++ b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/api/WxCpService.java @@ -8,10 +8,7 @@ import me.chanjar.weixin.common.session.WxSession; import me.chanjar.weixin.common.session.WxSessionManager; import me.chanjar.weixin.common.util.http.MediaUploadRequestExecutor; import me.chanjar.weixin.common.util.http.RequestExecutor; -import me.chanjar.weixin.cp.bean.WxCpDepart; -import me.chanjar.weixin.cp.bean.WxCpMessage; -import me.chanjar.weixin.cp.bean.WxCpTag; -import me.chanjar.weixin.cp.bean.WxCpUser; +import me.chanjar.weixin.cp.bean.*; import java.io.File; import java.io.IOException; @@ -141,7 +138,7 @@ public interface WxCpService { * * @param message 要发送的消息对象 */ - void messageSend(WxCpMessage message) throws WxErrorException; + WxCpMessageSendResult messageSend(WxCpMessage message) throws WxErrorException; /** *
diff --git a/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/api/impl/AbstractWxCpServiceImpl.java b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/api/impl/AbstractWxCpServiceImpl.java
index 463125b46..497832b36 100644
--- a/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/api/impl/AbstractWxCpServiceImpl.java
+++ b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/api/impl/AbstractWxCpServiceImpl.java
@@ -17,10 +17,7 @@ import me.chanjar.weixin.common.util.http.*;
 import me.chanjar.weixin.common.util.json.GsonHelper;
 import me.chanjar.weixin.cp.api.WxCpConfigStorage;
 import me.chanjar.weixin.cp.api.WxCpService;
-import me.chanjar.weixin.cp.bean.WxCpDepart;
-import me.chanjar.weixin.cp.bean.WxCpMessage;
-import me.chanjar.weixin.cp.bean.WxCpTag;
-import me.chanjar.weixin.cp.bean.WxCpUser;
+import me.chanjar.weixin.cp.bean.*;
 import me.chanjar.weixin.cp.util.json.WxCpGsonBuilder;
 import org.apache.commons.lang3.StringUtils;
 import org.slf4j.Logger;
@@ -131,9 +128,9 @@ public abstract class AbstractWxCpServiceImpl implements WxCpService, Requ
   }
 
   @Override
-  public void messageSend(WxCpMessage message) throws WxErrorException {
+  public WxCpMessageSendResult messageSend(WxCpMessage message) throws WxErrorException {
     String url = "https://qyapi.weixin.qq.com/cgi-bin/message/send";
-    post(url, message.toJson());
+    return WxCpMessageSendResult.fromJson(this.post(url, message.toJson()));
   }
 
   @Override
diff --git a/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/bean/WxCpMessageSendResult.java b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/bean/WxCpMessageSendResult.java
new file mode 100644
index 000000000..6989c4988
--- /dev/null
+++ b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/bean/WxCpMessageSendResult.java
@@ -0,0 +1,103 @@
+package me.chanjar.weixin.cp.bean;
+
+import com.google.common.base.Splitter;
+import com.google.gson.annotations.SerializedName;
+import me.chanjar.weixin.common.util.ToStringUtils;
+import me.chanjar.weixin.cp.util.json.WxCpGsonBuilder;
+import org.apache.commons.lang3.StringUtils;
+
+import java.util.Collections;
+import java.util.List;
+
+/**
+ * 
+ * 消息发送结果对象类
+ * Created by Binary Wang on 2017-6-22.
+ * @author Binary Wang
+ * 
+ */ +public class WxCpMessageSendResult { + @Override + public String toString() { + return ToStringUtils.toSimpleString(this); + } + + public static WxCpMessageSendResult fromJson(String json) { + return WxCpGsonBuilder.INSTANCE.create().fromJson(json, WxCpMessageSendResult.class); + } + + @SerializedName("errcode") + private Integer errCode; + + @SerializedName("errmsg") + private String errMsg; + + @SerializedName("invaliduser") + private String invalidUser; + + @SerializedName("invalidparty") + private String invalidParty; + + @SerializedName("invalidtag") + private String invalidTag; + + public Integer getErrCode() { + return this.errCode; + } + + public void setErrCode(Integer errCode) { + this.errCode = errCode; + } + + public String getErrMsg() { + return this.errMsg; + } + + public void setErrMsg(String errMsg) { + this.errMsg = errMsg; + } + + public String getInvalidUser() { + return this.invalidUser; + } + + public void setInvalidUser(String invalidUser) { + this.invalidUser = invalidUser; + } + + public String getInvalidParty() { + return this.invalidParty; + } + + public void setInvalidParty(String invalidParty) { + this.invalidParty = invalidParty; + } + + public String getInvalidTag() { + return this.invalidTag; + } + + public void setInvalidTag(String invalidTag) { + this.invalidTag = invalidTag; + } + + public List getInvalidUserList() { + return this.content2List(this.invalidUser); + } + + private List content2List(String content) { + if(StringUtils.isBlank(content)){ + return Collections.emptyList(); + } + + return Splitter.on("|").splitToList(content); + } + + public List getInvalidPartyList() { + return this.content2List(this.invalidParty); + } + + public List getInvalidTagList() { + return this.content2List(this.invalidTag); + } +} diff --git a/weixin-java-cp/src/test/java/me/chanjar/weixin/cp/api/WxCpMessageAPITest.java b/weixin-java-cp/src/test/java/me/chanjar/weixin/cp/api/WxCpMessageAPITest.java index 8b52ca826..ece6d5348 100644 --- a/weixin-java-cp/src/test/java/me/chanjar/weixin/cp/api/WxCpMessageAPITest.java +++ b/weixin-java-cp/src/test/java/me/chanjar/weixin/cp/api/WxCpMessageAPITest.java @@ -5,38 +5,58 @@ import me.chanjar.weixin.common.api.WxConsts; import me.chanjar.weixin.common.exception.WxErrorException; import me.chanjar.weixin.cp.api.impl.WxCpServiceImpl; import me.chanjar.weixin.cp.bean.WxCpMessage; -import org.testng.annotations.Guice; -import org.testng.annotations.Test; +import me.chanjar.weixin.cp.bean.WxCpMessageSendResult; +import org.testng.annotations.*; + +import static org.testng.Assert.*; /*** * 测试发送消息 * @author Daniel Qian * */ -@Test(groups = "customMessageAPI", dependsOnGroups = "baseAPI") +@Test(groups = "customMessageAPI") @Guice(modules = ApiTestModule.class) public class WxCpMessageAPITest { @Inject protected WxCpServiceImpl wxService; + private ApiTestModule.WxXmlCpInMemoryConfigStorage configStorage; - public void testSendCustomMessage() throws WxErrorException { - ApiTestModule.WxXmlCpInMemoryConfigStorage configStorage = (ApiTestModule.WxXmlCpInMemoryConfigStorage) this.wxService.getWxCpConfigStorage(); - WxCpMessage message1 = new WxCpMessage(); - message1.setAgentId(configStorage.getAgentId()); - message1.setMsgType(WxConsts.CUSTOM_MSG_TEXT); - message1.setToUser(configStorage.getUserId()); - message1.setContent("欢迎欢迎,热烈欢迎\n换行测试\n超链接:Hello World"); - this.wxService.messageSend(message1); + @BeforeTest + public void setup() { + configStorage = (ApiTestModule.WxXmlCpInMemoryConfigStorage) this.wxService.getWxCpConfigStorage(); + } - WxCpMessage message2 = WxCpMessage + public void testSendMessage() throws WxErrorException { + WxCpMessage message = new WxCpMessage(); + message.setAgentId(configStorage.getAgentId()); + message.setMsgType(WxConsts.CUSTOM_MSG_TEXT); + message.setToUser(configStorage.getUserId()); + message.setContent("欢迎欢迎,热烈欢迎\n换行测试\n超链接:Hello World"); + + WxCpMessageSendResult messageSendResult = this.wxService.messageSend(message); + assertNotNull(messageSendResult); + System.out.println(messageSendResult); + System.out.println(messageSendResult.getInvalidPartyList()); + System.out.println(messageSendResult.getInvalidUserList()); + System.out.println(messageSendResult.getInvalidTagList()); + } + + public void testSendMessage1() throws WxErrorException { + WxCpMessage message = WxCpMessage .TEXT() .agentId(configStorage.getAgentId()) .toUser(configStorage.getUserId()) .content("欢迎欢迎,热烈欢迎\n换行测试\n超链接:Hello World") .build(); - this.wxService.messageSend(message2); + + WxCpMessageSendResult messageSendResult = this.wxService.messageSend(message); + assertNotNull(messageSendResult); + System.out.println(messageSendResult); + System.out.println(messageSendResult.getInvalidPartyList()); + System.out.println(messageSendResult.getInvalidUserList()); + System.out.println(messageSendResult.getInvalidTagList()); } - }