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

This commit is contained in:
Binary Wang 2017-06-22 15:23:19 +08:00
parent c7ffff0a9c
commit aded340ac5
4 changed files with 142 additions and 25 deletions

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>

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

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);
}
}

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