Browse Source

#253 修改企业号发送消息的messageSend方法,增加返回值,方便客户端进行自行处理

master
Binary Wang 8 years ago
parent
commit
aded340ac5
4 changed files with 142 additions and 25 deletions
  1. +2
    -5
      weixin-java-cp/src/main/java/me/chanjar/weixin/cp/api/WxCpService.java
  2. +3
    -6
      weixin-java-cp/src/main/java/me/chanjar/weixin/cp/api/impl/AbstractWxCpServiceImpl.java
  3. +103
    -0
      weixin-java-cp/src/main/java/me/chanjar/weixin/cp/bean/WxCpMessageSendResult.java
  4. +34
    -14
      weixin-java-cp/src/test/java/me/chanjar/weixin/cp/api/WxCpMessageAPITest.java

+ 2
- 5
weixin-java-cp/src/main/java/me/chanjar/weixin/cp/api/WxCpService.java View File

@@ -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;

/**
* <pre>


+ 3
- 6
weixin-java-cp/src/main/java/me/chanjar/weixin/cp/api/impl/AbstractWxCpServiceImpl.java View File

@@ -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<H, P> 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


+ 103
- 0
weixin-java-cp/src/main/java/me/chanjar/weixin/cp/bean/WxCpMessageSendResult.java View File

@@ -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;

/**
* <pre>
* 消息发送结果对象类
* Created by Binary Wang on 2017-6-22.
* @author <a href="https://github.com/binarywang">Binary Wang</a>
* </pre>
*/
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<String> getInvalidUserList() {
return this.content2List(this.invalidUser);
}

private List<String> content2List(String content) {
if(StringUtils.isBlank(content)){
return Collections.emptyList();
}

return Splitter.on("|").splitToList(content);
}

public List<String> getInvalidPartyList() {
return this.content2List(this.invalidParty);
}

public List<String> getInvalidTagList() {
return this.content2List(this.invalidTag);
}
}

+ 34
- 14
weixin-java-cp/src/test/java/me/chanjar/weixin/cp/api/WxCpMessageAPITest.java View File

@@ -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;

@BeforeTest
public void setup() {
configStorage = (ApiTestModule.WxXmlCpInMemoryConfigStorage) this.wxService.getWxCpConfigStorage();
}

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超链接:<a href=\"http://www.baidu.com\">Hello World</a>");
this.wxService.messageSend(message1);
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超链接:<a href=\"http://www.baidu.com\">Hello World</a>");

WxCpMessage message2 = WxCpMessage
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超链接:<a href=\"http://www.baidu.com\">Hello World</a>")
.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());

}
}

Loading…
Cancel
Save