diff --git a/weixin-java-common/src/main/java/me/chanjar/weixin/common/api/WxConsts.java b/weixin-java-common/src/main/java/me/chanjar/weixin/common/api/WxConsts.java index 99acd4f86..1e953d080 100644 --- a/weixin-java-common/src/main/java/me/chanjar/weixin/common/api/WxConsts.java +++ b/weixin-java-common/src/main/java/me/chanjar/weixin/common/api/WxConsts.java @@ -121,31 +121,6 @@ public class WxConsts { public static final String MINIPROGRAM_NOTICE = "miniprogram_notice"; } - /** - * 群机器人的消息类型. - */ - public static class GroupRobotMsgType { - /** - * 文本消息. - */ - public static final String TEXT = "text"; - - /** - * 图片消息. - */ - public static final String IMAGE = "image"; - - /** - * markdown消息. - */ - public static final String MARKDOWN = "markdown"; - - /** - * 图文消息(点击跳转到外链). - */ - public static final String NEWS = "news"; - } - /** * 表示是否是保密消息,0表示否,1表示是,默认0. */ diff --git a/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/api/WxCpChatService.java b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/api/WxCpChatService.java index 462ec7507..9c825d891 100644 --- a/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/api/WxCpChatService.java +++ b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/api/WxCpChatService.java @@ -1,7 +1,7 @@ package me.chanjar.weixin.cp.api; import me.chanjar.weixin.common.error.WxErrorException; -import me.chanjar.weixin.cp.bean.WxCpAppChatMessage; +import me.chanjar.weixin.cp.bean.message.WxCpAppChatMessage; import me.chanjar.weixin.cp.bean.WxCpChat; import java.util.List; diff --git a/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/api/WxCpMessageService.java b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/api/WxCpMessageService.java index d8a6cc2a7..2c5d82f59 100644 --- a/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/api/WxCpMessageService.java +++ b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/api/WxCpMessageService.java @@ -1,8 +1,9 @@ package me.chanjar.weixin.cp.api; import me.chanjar.weixin.common.error.WxErrorException; -import me.chanjar.weixin.cp.bean.WxCpMessage; -import me.chanjar.weixin.cp.bean.WxCpMessageSendResult; +import me.chanjar.weixin.cp.bean.message.WxCpLinkedCorpMessage; +import me.chanjar.weixin.cp.bean.message.WxCpMessage; +import me.chanjar.weixin.cp.bean.message.WxCpMessageSendResult; /** * 消息推送接口. @@ -14,12 +15,26 @@ public interface WxCpMessageService { /** *
* 发送消息 - * 详情请见: http://qydev.weixin.qq.com/wiki/index.php?title=%E5%8F%91%E9%80%81%E6%8E%A5%E5%8F%A3%E8%AF%B4%E6%98%8E + * 详情请见: https://work.weixin.qq.com/api/doc/90000/90135/90236 ** * @param message 要发送的消息对象 * @return the wx cp message send result * @throws WxErrorException the wx error exception */ - WxCpMessageSendResult messageSend(WxCpMessage message) throws WxErrorException; + WxCpMessageSendResult send(WxCpMessage message) throws WxErrorException; + + /** + *
+ * 互联企业的应用支持推送文本、图片、视频、文件、图文等类型。 + * + * 请求地址:https://qyapi.weixin.qq.com/cgi-bin/linkedcorp/message/send?access_token=ACCESS_TOKEN + * 文章地址:https://work.weixin.qq.com/api/doc/90000/90135/90250 + *+ * + * @param message 要发送的消息对象 + * @return the wx cp message send result + * @throws WxErrorException the wx error exception + */ + WxCpMessageSendResult sendLinkedCorpMessage(WxCpLinkedCorpMessage message) throws WxErrorException; } 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 7c1d4857b..3378f8862 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,8 +8,6 @@ import me.chanjar.weixin.common.util.http.MediaUploadRequestExecutor; import me.chanjar.weixin.common.util.http.RequestExecutor; import me.chanjar.weixin.common.util.http.RequestHttp; import me.chanjar.weixin.cp.bean.WxCpMaJsCode2SessionResult; -import me.chanjar.weixin.cp.bean.WxCpMessage; -import me.chanjar.weixin.cp.bean.WxCpMessageSendResult; import me.chanjar.weixin.cp.bean.WxCpProviderToken; import me.chanjar.weixin.cp.config.WxCpConfigStorage; diff --git a/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/api/impl/WxCpChatServiceImpl.java b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/api/impl/WxCpChatServiceImpl.java index 10af36afe..7783422af 100644 --- a/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/api/impl/WxCpChatServiceImpl.java +++ b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/api/impl/WxCpChatServiceImpl.java @@ -6,7 +6,7 @@ import me.chanjar.weixin.common.util.json.GsonParser; import me.chanjar.weixin.common.util.json.WxGsonBuilder; import me.chanjar.weixin.cp.api.WxCpChatService; import me.chanjar.weixin.cp.api.WxCpService; -import me.chanjar.weixin.cp.bean.WxCpAppChatMessage; +import me.chanjar.weixin.cp.bean.message.WxCpAppChatMessage; import me.chanjar.weixin.cp.bean.WxCpChat; import me.chanjar.weixin.cp.util.json.WxCpGsonBuilder; import org.apache.commons.lang3.StringUtils; diff --git a/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/api/impl/WxCpGroupRobotServiceImpl.java b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/api/impl/WxCpGroupRobotServiceImpl.java index ed4d8a108..c5e71f5f2 100644 --- a/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/api/impl/WxCpGroupRobotServiceImpl.java +++ b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/api/impl/WxCpGroupRobotServiceImpl.java @@ -1,17 +1,19 @@ package me.chanjar.weixin.cp.api.impl; import lombok.RequiredArgsConstructor; -import me.chanjar.weixin.common.api.WxConsts; import me.chanjar.weixin.common.error.WxErrorException; import me.chanjar.weixin.cp.api.WxCpGroupRobotService; import me.chanjar.weixin.cp.api.WxCpService; -import me.chanjar.weixin.cp.bean.WxCpGroupRobotMessage; import me.chanjar.weixin.cp.bean.article.NewArticle; +import me.chanjar.weixin.cp.bean.message.WxCpGroupRobotMessage; import me.chanjar.weixin.cp.config.WxCpConfigStorage; import me.chanjar.weixin.cp.constant.WxCpApiPathConsts; import java.util.List; +import static me.chanjar.weixin.cp.constant.WxCpConsts.GroupRobotMsgType; +import static me.chanjar.weixin.cp.constant.WxCpConsts.GroupRobotMsgType.*; + /** * 微信群机器人消息发送api 实现 * @@ -30,7 +32,7 @@ public class WxCpGroupRobotServiceImpl implements WxCpGroupRobotService { @Override public void sendText(String content, List
+ * 请使用. + * {@link LinkedCorpMsgType#TEXT} + * {@link LinkedCorpMsgType#IMAGE} + * {@link LinkedCorpMsgType#VIDEO} + * {@link LinkedCorpMsgType#NEWS} + * {@link LinkedCorpMsgType#MPNEWS} + * {@link LinkedCorpMsgType#MARKDOWN} + * {@link LinkedCorpMsgType#MINIPROGRAM_NOTICE} + *+ * + * @param msgType 消息类型 + */ + public void setMsgType(String msgType) { + this.msgType = msgType; + } + + public String toJson() { + JsonObject messageJson = new JsonObject(); + + if (ArrayUtils.isNotEmpty(this.getToUsers())) { + messageJson.add("touser", WxGsonBuilder.create().toJsonTree(this.getToUsers())); + } + + if (ArrayUtils.isNotEmpty(this.getToParties())) { + messageJson.add("toparty", WxGsonBuilder.create().toJsonTree(this.getToParties())); + } + + if (ArrayUtils.isNotEmpty(this.getToTags())) { + messageJson.add("totag", WxGsonBuilder.create().toJsonTree(this.getToTags())); + } + + if (this.getIsToAll() != null) { + messageJson.addProperty("toall", this.getIsToAll() ? 1 : 0); + } + messageJson.addProperty("msgtype", this.getMsgType()); + + if (this.getAgentId() != null) { + messageJson.addProperty("agentid", this.getAgentId()); + } + + this.handleMsgType(messageJson); + + if (this.getIsSafe() != null) { + messageJson.addProperty("safe", this.getIsSafe() ? 1 : 0); + } + + return messageJson.toString(); + } + + private void handleMsgType(JsonObject messageJson) { + switch (this.getMsgType()) { + case TEXT: { + JsonObject text = new JsonObject(); + text.addProperty("content", this.getContent()); + messageJson.add("text", text); + break; + } + case MARKDOWN: { + JsonObject text = new JsonObject(); + text.addProperty("content", this.getContent()); + messageJson.add("markdown", text); + break; + } + case TEXTCARD: { + JsonObject text = new JsonObject(); + text.addProperty("title", this.getTitle()); + text.addProperty("description", this.getDescription()); + text.addProperty("url", this.getUrl()); + text.addProperty("btntxt", this.getBtnTxt()); + messageJson.add("textcard", text); + break; + } + case IMAGE: { + JsonObject image = new JsonObject(); + image.addProperty("media_id", this.getMediaId()); + messageJson.add("image", image); + break; + } + case FILE: { + JsonObject image = new JsonObject(); + image.addProperty("media_id", this.getMediaId()); + messageJson.add("file", image); + break; + } + case VIDEO: { + JsonObject video = new JsonObject(); + video.addProperty("media_id", this.getMediaId()); + video.addProperty("title", this.getTitle()); + video.addProperty("description", this.getDescription()); + messageJson.add("video", video); + break; + } + case NEWS: { + JsonObject newsJsonObject = new JsonObject(); + JsonArray articleJsonArray = new JsonArray(); + for (NewArticle article : this.getArticles()) { + JsonObject articleJson = new JsonObject(); + articleJson.addProperty("title", article.getTitle()); + articleJson.addProperty("description", article.getDescription()); + articleJson.addProperty("url", article.getUrl()); + articleJson.addProperty("picurl", article.getPicUrl()); + articleJson.addProperty("btntxt", article.getBtnText()); + articleJsonArray.add(articleJson); + } + newsJsonObject.add("articles", articleJsonArray); + messageJson.add("news", newsJsonObject); + break; + } + case MPNEWS: { + JsonObject newsJsonObject = new JsonObject(); + if (this.getMediaId() != null) { + newsJsonObject.addProperty("media_id", this.getMediaId()); + } else { + JsonArray articleJsonArray = new JsonArray(); + for (MpnewsArticle article : this.getMpNewsArticles()) { + JsonObject articleJson = new JsonObject(); + articleJson.addProperty("title", article.getTitle()); + articleJson.addProperty("thumb_media_id", article.getThumbMediaId()); + articleJson.addProperty("author", article.getAuthor()); + articleJson.addProperty("content_source_url", article.getContentSourceUrl()); + articleJson.addProperty("content", article.getContent()); + articleJson.addProperty("digest", article.getDigest()); + if (article.getShowCoverPic() != null) { + articleJson.addProperty("show_cover_pic", article.getShowCoverPic()); + } + articleJsonArray.add(articleJson); + } + + newsJsonObject.add("articles", articleJsonArray); + } + messageJson.add("mpnews", newsJsonObject); + break; + } + case MINIPROGRAM_NOTICE: { + JsonObject notice = new JsonObject(); + notice.addProperty("appid", this.getAppId()); + notice.addProperty("page", this.getPage()); + notice.addProperty("title", this.getTitle()); + notice.addProperty("description", this.getDescription()); + notice.addProperty("emphasis_first_item", this.getEmphasisFirstItem()); + JsonArray content = new JsonArray(); + for (Map.Entry
diff --git a/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/bean/messagebuilder/MiniProgramNoticeMsgBuilder.java b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/bean/messagebuilder/MiniProgramNoticeMsgBuilder.java index cf44c0f0f..928ea3863 100644 --- a/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/bean/messagebuilder/MiniProgramNoticeMsgBuilder.java +++ b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/bean/messagebuilder/MiniProgramNoticeMsgBuilder.java @@ -1,7 +1,7 @@ package me.chanjar.weixin.cp.bean.messagebuilder; import me.chanjar.weixin.common.api.WxConsts; -import me.chanjar.weixin.cp.bean.WxCpMessage; +import me.chanjar.weixin.cp.bean.message.WxCpMessage; import java.util.Map; diff --git a/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/bean/messagebuilder/MpnewsBuilder.java b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/bean/messagebuilder/MpnewsBuilder.java index 75739803f..bc1467e14 100644 --- a/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/bean/messagebuilder/MpnewsBuilder.java +++ b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/bean/messagebuilder/MpnewsBuilder.java @@ -1,7 +1,7 @@ package me.chanjar.weixin.cp.bean.messagebuilder; import me.chanjar.weixin.common.api.WxConsts; -import me.chanjar.weixin.cp.bean.WxCpMessage; +import me.chanjar.weixin.cp.bean.message.WxCpMessage; import me.chanjar.weixin.cp.bean.article.MpnewsArticle; import java.util.ArrayList; diff --git a/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/bean/messagebuilder/NewsBuilder.java b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/bean/messagebuilder/NewsBuilder.java index 9d0d2f603..ef661e6ed 100644 --- a/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/bean/messagebuilder/NewsBuilder.java +++ b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/bean/messagebuilder/NewsBuilder.java @@ -1,7 +1,7 @@ package me.chanjar.weixin.cp.bean.messagebuilder; import me.chanjar.weixin.common.api.WxConsts; -import me.chanjar.weixin.cp.bean.WxCpMessage; +import me.chanjar.weixin.cp.bean.message.WxCpMessage; import me.chanjar.weixin.cp.bean.article.NewArticle; import java.util.ArrayList; diff --git a/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/bean/messagebuilder/TaskCardBuilder.java b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/bean/messagebuilder/TaskCardBuilder.java index 3c2d77924..57a77503b 100644 --- a/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/bean/messagebuilder/TaskCardBuilder.java +++ b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/bean/messagebuilder/TaskCardBuilder.java @@ -1,7 +1,7 @@ package me.chanjar.weixin.cp.bean.messagebuilder; import me.chanjar.weixin.common.api.WxConsts; -import me.chanjar.weixin.cp.bean.WxCpMessage; +import me.chanjar.weixin.cp.bean.message.WxCpMessage; import me.chanjar.weixin.cp.bean.taskcard.TaskCardButton; import java.util.List; diff --git a/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/bean/messagebuilder/TextBuilder.java b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/bean/messagebuilder/TextBuilder.java index 5079b5f84..e072b9a79 100644 --- a/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/bean/messagebuilder/TextBuilder.java +++ b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/bean/messagebuilder/TextBuilder.java @@ -1,7 +1,7 @@ package me.chanjar.weixin.cp.bean.messagebuilder; import me.chanjar.weixin.common.api.WxConsts; -import me.chanjar.weixin.cp.bean.WxCpMessage; +import me.chanjar.weixin.cp.bean.message.WxCpMessage; /** * 文本消息builder diff --git a/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/bean/messagebuilder/TextCardBuilder.java b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/bean/messagebuilder/TextCardBuilder.java index 6cae763d1..306187ee4 100644 --- a/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/bean/messagebuilder/TextCardBuilder.java +++ b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/bean/messagebuilder/TextCardBuilder.java @@ -1,7 +1,7 @@ package me.chanjar.weixin.cp.bean.messagebuilder; import me.chanjar.weixin.common.api.WxConsts; -import me.chanjar.weixin.cp.bean.WxCpMessage; +import me.chanjar.weixin.cp.bean.message.WxCpMessage; /** *diff --git a/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/bean/messagebuilder/VideoBuilder.java b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/bean/messagebuilder/VideoBuilder.java index 8d4739940..2c7fab5c8 100644 --- a/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/bean/messagebuilder/VideoBuilder.java +++ b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/bean/messagebuilder/VideoBuilder.java @@ -1,7 +1,7 @@ package me.chanjar.weixin.cp.bean.messagebuilder; import me.chanjar.weixin.common.api.WxConsts; -import me.chanjar.weixin.cp.bean.WxCpMessage; +import me.chanjar.weixin.cp.bean.message.WxCpMessage; /** * 视频消息builder diff --git a/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/bean/messagebuilder/VoiceBuilder.java b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/bean/messagebuilder/VoiceBuilder.java index 33c36abcb..0e0b9f828 100644 --- a/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/bean/messagebuilder/VoiceBuilder.java +++ b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/bean/messagebuilder/VoiceBuilder.java @@ -1,7 +1,7 @@ package me.chanjar.weixin.cp.bean.messagebuilder; import me.chanjar.weixin.common.api.WxConsts; -import me.chanjar.weixin.cp.bean.WxCpMessage; +import me.chanjar.weixin.cp.bean.message.WxCpMessage; /** * 语音消息builder diff --git a/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/bean/outxmlbuilder/BaseBuilder.java b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/bean/outxmlbuilder/BaseBuilder.java index 303ed3c46..90495a463 100644 --- a/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/bean/outxmlbuilder/BaseBuilder.java +++ b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/bean/outxmlbuilder/BaseBuilder.java @@ -1,6 +1,6 @@ package me.chanjar.weixin.cp.bean.outxmlbuilder; -import me.chanjar.weixin.cp.bean.WxCpXmlOutMessage; +import me.chanjar.weixin.cp.bean.message.WxCpXmlOutMessage; public abstract class BaseBuilder{ diff --git a/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/bean/outxmlbuilder/ImageBuilder.java b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/bean/outxmlbuilder/ImageBuilder.java index f8cd25f44..ded7e157e 100644 --- a/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/bean/outxmlbuilder/ImageBuilder.java +++ b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/bean/outxmlbuilder/ImageBuilder.java @@ -1,6 +1,6 @@ package me.chanjar.weixin.cp.bean.outxmlbuilder; -import me.chanjar.weixin.cp.bean.WxCpXmlOutImageMessage; +import me.chanjar.weixin.cp.bean.message.WxCpXmlOutImageMessage; /** * 图片消息builder diff --git a/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/bean/outxmlbuilder/NewsBuilder.java b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/bean/outxmlbuilder/NewsBuilder.java index 5a67056ab..190ab1c97 100644 --- a/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/bean/outxmlbuilder/NewsBuilder.java +++ b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/bean/outxmlbuilder/NewsBuilder.java @@ -1,7 +1,7 @@ package me.chanjar.weixin.cp.bean.outxmlbuilder; -import me.chanjar.weixin.cp.bean.WxCpXmlOutNewsMessage; -import me.chanjar.weixin.cp.bean.WxCpXmlOutNewsMessage.Item; +import me.chanjar.weixin.cp.bean.message.WxCpXmlOutNewsMessage; +import me.chanjar.weixin.cp.bean.message.WxCpXmlOutNewsMessage.Item; import java.util.ArrayList; import java.util.Collections; diff --git a/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/bean/outxmlbuilder/TextBuilder.java b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/bean/outxmlbuilder/TextBuilder.java index dcdb58ca4..6a7086845 100644 --- a/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/bean/outxmlbuilder/TextBuilder.java +++ b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/bean/outxmlbuilder/TextBuilder.java @@ -1,6 +1,6 @@ package me.chanjar.weixin.cp.bean.outxmlbuilder; -import me.chanjar.weixin.cp.bean.WxCpXmlOutTextMessage; +import me.chanjar.weixin.cp.bean.message.WxCpXmlOutTextMessage; /** * 文本消息builder diff --git a/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/bean/outxmlbuilder/VideoBuilder.java b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/bean/outxmlbuilder/VideoBuilder.java index 7eb38ec1a..e823da746 100644 --- a/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/bean/outxmlbuilder/VideoBuilder.java +++ b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/bean/outxmlbuilder/VideoBuilder.java @@ -1,6 +1,6 @@ package me.chanjar.weixin.cp.bean.outxmlbuilder; -import me.chanjar.weixin.cp.bean.WxCpXmlOutVideoMessage; +import me.chanjar.weixin.cp.bean.message.WxCpXmlOutVideoMessage; /** * 视频消息builder diff --git a/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/bean/outxmlbuilder/VoiceBuilder.java b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/bean/outxmlbuilder/VoiceBuilder.java index 8bc13d9fe..2d1466124 100644 --- a/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/bean/outxmlbuilder/VoiceBuilder.java +++ b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/bean/outxmlbuilder/VoiceBuilder.java @@ -1,6 +1,6 @@ package me.chanjar.weixin.cp.bean.outxmlbuilder; -import me.chanjar.weixin.cp.bean.WxCpXmlOutVoiceMessage; +import me.chanjar.weixin.cp.bean.message.WxCpXmlOutVoiceMessage; /** * 语音消息builder diff --git a/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/constant/WxCpConsts.java b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/constant/WxCpConsts.java index a69b8ea2e..5e536efa9 100644 --- a/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/constant/WxCpConsts.java +++ b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/constant/WxCpConsts.java @@ -166,6 +166,75 @@ public class WxCpConsts { } + /** + * 互联企业发送应用消息的消息类型. + */ + public static class LinkedCorpMsgType { + /** + * 文本消息. + */ + public static final String TEXT = "text"; + /** + * 图片消息. + */ + public static final String IMAGE = "image"; + /** + * 视频消息. + */ + public static final String VIDEO = "video"; + /** + * 图文消息(点击跳转到外链). + */ + public static final String NEWS = "news"; + /** + * 图文消息(点击跳转到图文消息页面). + */ + public static final String MPNEWS = "mpnews"; + /** + * markdown消息. + * (目前仅支持markdown语法的子集,微工作台(原企业号)不支持展示markdown消息) + */ + public static final String MARKDOWN = "markdown"; + /** + * 发送文件. + */ + public static final String FILE = "file"; + /** + * 文本卡片消息. + */ + public static final String TEXTCARD = "textcard"; + + /** + * 小程序通知消息. + */ + public static final String MINIPROGRAM_NOTICE = "miniprogram_notice"; + } + + /** + * 群机器人的消息类型. + */ + public static class GroupRobotMsgType { + /** + * 文本消息. + */ + public static final String TEXT = "text"; + + /** + * 图片消息. + */ + public static final String IMAGE = "image"; + + /** + * markdown消息. + */ + public static final String MARKDOWN = "markdown"; + + /** + * 图文消息(点击跳转到外链). + */ + public static final String NEWS = "news"; + } + /** * 应用推送消息的消息类型. */ diff --git a/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/message/WxCpMessageHandler.java b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/message/WxCpMessageHandler.java index 22074d6e7..68e38d3bb 100644 --- a/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/message/WxCpMessageHandler.java +++ b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/message/WxCpMessageHandler.java @@ -3,8 +3,8 @@ package me.chanjar.weixin.cp.message; import me.chanjar.weixin.common.error.WxErrorException; import me.chanjar.weixin.common.session.WxSessionManager; import me.chanjar.weixin.cp.api.WxCpService; -import me.chanjar.weixin.cp.bean.WxCpXmlMessage; -import me.chanjar.weixin.cp.bean.WxCpXmlOutMessage; +import me.chanjar.weixin.cp.bean.message.WxCpXmlMessage; +import me.chanjar.weixin.cp.bean.message.WxCpXmlOutMessage; import java.util.Map; diff --git a/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/message/WxCpMessageInterceptor.java b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/message/WxCpMessageInterceptor.java index ab4c658e4..5bcca55ee 100644 --- a/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/message/WxCpMessageInterceptor.java +++ b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/message/WxCpMessageInterceptor.java @@ -3,7 +3,7 @@ package me.chanjar.weixin.cp.message; import me.chanjar.weixin.common.error.WxErrorException; import me.chanjar.weixin.common.session.WxSessionManager; import me.chanjar.weixin.cp.api.WxCpService; -import me.chanjar.weixin.cp.bean.WxCpXmlMessage; +import me.chanjar.weixin.cp.bean.message.WxCpXmlMessage; import java.util.Map; diff --git a/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/message/WxCpMessageMatcher.java b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/message/WxCpMessageMatcher.java index 1bf36705b..42db8f5dd 100644 --- a/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/message/WxCpMessageMatcher.java +++ b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/message/WxCpMessageMatcher.java @@ -1,6 +1,6 @@ package me.chanjar.weixin.cp.message; -import me.chanjar.weixin.cp.bean.WxCpXmlMessage; +import me.chanjar.weixin.cp.bean.message.WxCpXmlMessage; /** * 消息匹配器,用在消息路由的时候 diff --git a/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/message/WxCpMessageRouter.java b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/message/WxCpMessageRouter.java index b5424be03..bf1ad6e5f 100644 --- a/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/message/WxCpMessageRouter.java +++ b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/message/WxCpMessageRouter.java @@ -18,8 +18,8 @@ import me.chanjar.weixin.common.session.InternalSessionManager; import me.chanjar.weixin.common.session.WxSessionManager; import me.chanjar.weixin.common.util.LogExceptionHandler; import me.chanjar.weixin.cp.api.WxCpService; -import me.chanjar.weixin.cp.bean.WxCpXmlMessage; -import me.chanjar.weixin.cp.bean.WxCpXmlOutMessage; +import me.chanjar.weixin.cp.bean.message.WxCpXmlMessage; +import me.chanjar.weixin.cp.bean.message.WxCpXmlOutMessage; /** * diff --git a/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/message/WxCpMessageRouterRule.java b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/message/WxCpMessageRouterRule.java index 8f3766a16..3c7b5c66f 100644 --- a/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/message/WxCpMessageRouterRule.java +++ b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/message/WxCpMessageRouterRule.java @@ -4,8 +4,8 @@ import me.chanjar.weixin.common.api.WxErrorExceptionHandler; import me.chanjar.weixin.common.error.WxErrorException; import me.chanjar.weixin.common.session.WxSessionManager; import me.chanjar.weixin.cp.api.WxCpService; -import me.chanjar.weixin.cp.bean.WxCpXmlMessage; -import me.chanjar.weixin.cp.bean.WxCpXmlOutMessage; +import me.chanjar.weixin.cp.bean.message.WxCpXmlMessage; +import me.chanjar.weixin.cp.bean.message.WxCpXmlOutMessage; import org.apache.commons.lang3.StringUtils; import java.util.ArrayList; diff --git a/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/util/xml/XStreamTransformer.java b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/util/xml/XStreamTransformer.java index 3c6174c9d..ea9023111 100644 --- a/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/util/xml/XStreamTransformer.java +++ b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/util/xml/XStreamTransformer.java @@ -1,135 +1,135 @@ -package me.chanjar.weixin.cp.util.xml; - -import java.io.InputStream; -import java.util.HashMap; -import java.util.Map; - -import com.thoughtworks.xstream.XStream; -import me.chanjar.weixin.common.util.xml.XStreamInitializer; -import me.chanjar.weixin.cp.bean.WxCpTpXmlMessage; -import me.chanjar.weixin.cp.bean.WxCpTpXmlPackage; -import me.chanjar.weixin.cp.bean.WxCpXmlMessage; -import me.chanjar.weixin.cp.bean.WxCpXmlOutImageMessage; -import me.chanjar.weixin.cp.bean.WxCpXmlOutMessage; -import me.chanjar.weixin.cp.bean.WxCpXmlOutNewsMessage; -import me.chanjar.weixin.cp.bean.WxCpXmlOutTextMessage; -import me.chanjar.weixin.cp.bean.WxCpXmlOutVideoMessage; -import me.chanjar.weixin.cp.bean.WxCpXmlOutVoiceMessage; - -public class XStreamTransformer { - - protected static final MapCLASS_2_XSTREAM_INSTANCE = configXStreamInstance(); - - /** - * xml -> pojo - */ - @SuppressWarnings("unchecked") - public static T fromXml(Class clazz, String xml) { - T object = (T) CLASS_2_XSTREAM_INSTANCE.get(clazz).fromXML(xml); - return object; - } - - @SuppressWarnings("unchecked") - public static T fromXml(Class clazz, InputStream is) { - T object = (T) CLASS_2_XSTREAM_INSTANCE.get(clazz).fromXML(is); - return object; - } - - /** - * 注册扩展消息的解析器. - * - * @param clz 类型 - * @param xStream xml解析器 - */ - public static void register(Class clz, XStream xStream) { - CLASS_2_XSTREAM_INSTANCE.put(clz, xStream); - } - - /** - * pojo -> xml. - */ - public static String toXml(Class clazz, T object) { - return CLASS_2_XSTREAM_INSTANCE.get(clazz).toXML(object); - } - - private static Map configXStreamInstance() { - Map map = new HashMap<>(); - map.put(WxCpXmlMessage.class, configWxCpXmlMessage()); - map.put(WxCpXmlOutNewsMessage.class, configWxCpXmlOutNewsMessage()); - map.put(WxCpXmlOutTextMessage.class, configWxCpXmlOutTextMessage()); - map.put(WxCpXmlOutImageMessage.class, configWxCpXmlOutImageMessage()); - map.put(WxCpXmlOutVideoMessage.class, configWxCpXmlOutVideoMessage()); - map.put(WxCpXmlOutVoiceMessage.class, configWxCpXmlOutVoiceMessage()); - map.put(WxCpTpXmlPackage.class, configWxCpTpXmlPackage()); - map.put(WxCpTpXmlMessage.class, configWxCpTpXmlMessage()); - return map; - } - - private static XStream configWxCpXmlMessage() { - XStream xstream = XStreamInitializer.getInstance(); - - xstream.processAnnotations(WxCpXmlMessage.class); - xstream.processAnnotations(WxCpXmlMessage.ScanCodeInfo.class); - xstream.processAnnotations(WxCpXmlMessage.SendPicsInfo.class); - xstream.processAnnotations(WxCpXmlMessage.SendPicsInfo.Item.class); - xstream.processAnnotations(WxCpXmlMessage.SendLocationInfo.class); - return xstream; - } - - private static XStream configWxCpXmlOutImageMessage() { - XStream xstream = XStreamInitializer.getInstance(); - - xstream.processAnnotations(WxCpXmlOutMessage.class); - xstream.processAnnotations(WxCpXmlOutImageMessage.class); - return xstream; - } - - private static XStream configWxCpXmlOutNewsMessage() { - XStream xstream = XStreamInitializer.getInstance(); - - xstream.processAnnotations(WxCpXmlOutMessage.class); - xstream.processAnnotations(WxCpXmlOutNewsMessage.class); - xstream.processAnnotations(WxCpXmlOutNewsMessage.Item.class); - return xstream; - } - - private static XStream configWxCpXmlOutTextMessage() { - XStream xstream = XStreamInitializer.getInstance(); - - xstream.processAnnotations(WxCpXmlOutMessage.class); - xstream.processAnnotations(WxCpXmlOutTextMessage.class); - return xstream; - } - - private static XStream configWxCpXmlOutVideoMessage() { - XStream xstream = XStreamInitializer.getInstance(); - - xstream.processAnnotations(WxCpXmlOutMessage.class); - xstream.processAnnotations(WxCpXmlOutVideoMessage.class); - xstream.processAnnotations(WxCpXmlOutVideoMessage.Video.class); - return xstream; - } - - private static XStream configWxCpXmlOutVoiceMessage() { - XStream xstream = XStreamInitializer.getInstance(); - - xstream.processAnnotations(WxCpXmlOutMessage.class); - xstream.processAnnotations(WxCpXmlOutVoiceMessage.class); - return xstream; - } - - private static XStream configWxCpTpXmlPackage() { - XStream xstream = XStreamInitializer.getInstance(); - xstream.processAnnotations(WxCpTpXmlPackage.class); - - return xstream; - } - - private static XStream configWxCpTpXmlMessage() { - XStream xstream = XStreamInitializer.getInstance(); - xstream.processAnnotations(WxCpTpXmlMessage.class); - - return xstream; - } - -} +package me.chanjar.weixin.cp.util.xml; + +import java.io.InputStream; +import java.util.HashMap; +import java.util.Map; + +import com.thoughtworks.xstream.XStream; +import me.chanjar.weixin.common.util.xml.XStreamInitializer; +import me.chanjar.weixin.cp.bean.message.WxCpTpXmlMessage; +import me.chanjar.weixin.cp.bean.WxCpTpXmlPackage; +import me.chanjar.weixin.cp.bean.message.WxCpXmlMessage; +import me.chanjar.weixin.cp.bean.message.WxCpXmlOutImageMessage; +import me.chanjar.weixin.cp.bean.message.WxCpXmlOutMessage; +import me.chanjar.weixin.cp.bean.message.WxCpXmlOutNewsMessage; +import me.chanjar.weixin.cp.bean.message.WxCpXmlOutTextMessage; +import me.chanjar.weixin.cp.bean.message.WxCpXmlOutVideoMessage; +import me.chanjar.weixin.cp.bean.message.WxCpXmlOutVoiceMessage; + +public class XStreamTransformer { + + protected static final Map CLASS_2_XSTREAM_INSTANCE = configXStreamInstance(); + + /** + * xml -> pojo + */ + @SuppressWarnings("unchecked") + public static T fromXml(Class clazz, String xml) { + T object = (T) CLASS_2_XSTREAM_INSTANCE.get(clazz).fromXML(xml); + return object; + } + + @SuppressWarnings("unchecked") + public static T fromXml(Class clazz, InputStream is) { + T object = (T) CLASS_2_XSTREAM_INSTANCE.get(clazz).fromXML(is); + return object; + } + + /** + * 注册扩展消息的解析器. + * + * @param clz 类型 + * @param xStream xml解析器 + */ + public static void register(Class clz, XStream xStream) { + CLASS_2_XSTREAM_INSTANCE.put(clz, xStream); + } + + /** + * pojo -> xml. + */ + public static String toXml(Class clazz, T object) { + return CLASS_2_XSTREAM_INSTANCE.get(clazz).toXML(object); + } + + private static Map configXStreamInstance() { + Map map = new HashMap<>(); + map.put(WxCpXmlMessage.class, configWxCpXmlMessage()); + map.put(WxCpXmlOutNewsMessage.class, configWxCpXmlOutNewsMessage()); + map.put(WxCpXmlOutTextMessage.class, configWxCpXmlOutTextMessage()); + map.put(WxCpXmlOutImageMessage.class, configWxCpXmlOutImageMessage()); + map.put(WxCpXmlOutVideoMessage.class, configWxCpXmlOutVideoMessage()); + map.put(WxCpXmlOutVoiceMessage.class, configWxCpXmlOutVoiceMessage()); + map.put(WxCpTpXmlPackage.class, configWxCpTpXmlPackage()); + map.put(WxCpTpXmlMessage.class, configWxCpTpXmlMessage()); + return map; + } + + private static XStream configWxCpXmlMessage() { + XStream xstream = XStreamInitializer.getInstance(); + + xstream.processAnnotations(WxCpXmlMessage.class); + xstream.processAnnotations(WxCpXmlMessage.ScanCodeInfo.class); + xstream.processAnnotations(WxCpXmlMessage.SendPicsInfo.class); + xstream.processAnnotations(WxCpXmlMessage.SendPicsInfo.Item.class); + xstream.processAnnotations(WxCpXmlMessage.SendLocationInfo.class); + return xstream; + } + + private static XStream configWxCpXmlOutImageMessage() { + XStream xstream = XStreamInitializer.getInstance(); + + xstream.processAnnotations(WxCpXmlOutMessage.class); + xstream.processAnnotations(WxCpXmlOutImageMessage.class); + return xstream; + } + + private static XStream configWxCpXmlOutNewsMessage() { + XStream xstream = XStreamInitializer.getInstance(); + + xstream.processAnnotations(WxCpXmlOutMessage.class); + xstream.processAnnotations(WxCpXmlOutNewsMessage.class); + xstream.processAnnotations(WxCpXmlOutNewsMessage.Item.class); + return xstream; + } + + private static XStream configWxCpXmlOutTextMessage() { + XStream xstream = XStreamInitializer.getInstance(); + + xstream.processAnnotations(WxCpXmlOutMessage.class); + xstream.processAnnotations(WxCpXmlOutTextMessage.class); + return xstream; + } + + private static XStream configWxCpXmlOutVideoMessage() { + XStream xstream = XStreamInitializer.getInstance(); + + xstream.processAnnotations(WxCpXmlOutMessage.class); + xstream.processAnnotations(WxCpXmlOutVideoMessage.class); + xstream.processAnnotations(WxCpXmlOutVideoMessage.Video.class); + return xstream; + } + + private static XStream configWxCpXmlOutVoiceMessage() { + XStream xstream = XStreamInitializer.getInstance(); + + xstream.processAnnotations(WxCpXmlOutMessage.class); + xstream.processAnnotations(WxCpXmlOutVoiceMessage.class); + return xstream; + } + + private static XStream configWxCpTpXmlPackage() { + XStream xstream = XStreamInitializer.getInstance(); + xstream.processAnnotations(WxCpTpXmlPackage.class); + + return xstream; + } + + private static XStream configWxCpTpXmlMessage() { + XStream xstream = XStreamInitializer.getInstance(); + xstream.processAnnotations(WxCpTpXmlMessage.class); + + return xstream; + } + +} diff --git a/weixin-java-cp/src/test/java/me/chanjar/weixin/cp/api/WxCpMessageRouterTest.java b/weixin-java-cp/src/test/java/me/chanjar/weixin/cp/api/WxCpMessageRouterTest.java index a21348895..112e9f8c3 100644 --- a/weixin-java-cp/src/test/java/me/chanjar/weixin/cp/api/WxCpMessageRouterTest.java +++ b/weixin-java-cp/src/test/java/me/chanjar/weixin/cp/api/WxCpMessageRouterTest.java @@ -6,8 +6,8 @@ import me.chanjar.weixin.common.session.WxSessionManager; import me.chanjar.weixin.cp.message.WxCpMessageHandler; import me.chanjar.weixin.cp.message.WxCpMessageMatcher; import me.chanjar.weixin.cp.message.WxCpMessageRouter; -import me.chanjar.weixin.cp.bean.WxCpXmlMessage; -import me.chanjar.weixin.cp.bean.WxCpXmlOutMessage; +import me.chanjar.weixin.cp.bean.message.WxCpXmlMessage; +import me.chanjar.weixin.cp.bean.message.WxCpXmlOutMessage; import org.testng.Assert; import org.testng.annotations.DataProvider; import org.testng.annotations.Test; diff --git a/weixin-java-cp/src/test/java/me/chanjar/weixin/cp/api/impl/WxCpChatServiceImplTest.java b/weixin-java-cp/src/test/java/me/chanjar/weixin/cp/api/impl/WxCpChatServiceImplTest.java index 0056b88f7..56df47e36 100644 --- a/weixin-java-cp/src/test/java/me/chanjar/weixin/cp/api/impl/WxCpChatServiceImplTest.java +++ b/weixin-java-cp/src/test/java/me/chanjar/weixin/cp/api/impl/WxCpChatServiceImplTest.java @@ -11,7 +11,7 @@ import me.chanjar.weixin.common.error.WxErrorException; import me.chanjar.weixin.cp.constant.WxCpConsts.AppChatMsgType; import me.chanjar.weixin.cp.api.ApiTestModule; import me.chanjar.weixin.cp.api.WxCpService; -import me.chanjar.weixin.cp.bean.WxCpAppChatMessage; +import me.chanjar.weixin.cp.bean.message.WxCpAppChatMessage; import me.chanjar.weixin.cp.bean.WxCpChat; import me.chanjar.weixin.cp.bean.article.MpnewsArticle; import me.chanjar.weixin.cp.bean.article.NewArticle; diff --git a/weixin-java-cp/src/test/java/me/chanjar/weixin/cp/api/impl/WxCpGroupRobotServiceImplTest.java b/weixin-java-cp/src/test/java/me/chanjar/weixin/cp/api/impl/WxCpGroupRobotServiceImplTest.java index b697efd53..40597fa24 100644 --- a/weixin-java-cp/src/test/java/me/chanjar/weixin/cp/api/impl/WxCpGroupRobotServiceImplTest.java +++ b/weixin-java-cp/src/test/java/me/chanjar/weixin/cp/api/impl/WxCpGroupRobotServiceImplTest.java @@ -16,8 +16,6 @@ import java.io.InputStream; import java.util.stream.Collectors; import java.util.stream.Stream; -import static org.testng.Assert.*; - /** * 微信群机器人消息发送api 单元测试 * @@ -62,7 +60,8 @@ public class WxCpGroupRobotServiceImplTest { @Test public void testSendNews() throws WxErrorException { - NewArticle article = new NewArticle("图文消息测试","hello world","http://www.baidu.com","http://res.mail.qq.com/node/ww/wwopenmng/images/independent/doc/test_pic_msg1.png"); + NewArticle article = new NewArticle("图文消息测试", "hello world", "http://www.baidu.com", + "http://res.mail.qq.com/node/ww/wwopenmng/images/independent/doc/test_pic_msg1.png", null); robotService.sendNews(Stream.of(article).collect(Collectors.toList())); } } diff --git a/weixin-java-cp/src/test/java/me/chanjar/weixin/cp/api/impl/WxCpMessageServiceImplTest.java b/weixin-java-cp/src/test/java/me/chanjar/weixin/cp/api/impl/WxCpMessageServiceImplTest.java index 5b273bda9..8f02df1fc 100644 --- a/weixin-java-cp/src/test/java/me/chanjar/weixin/cp/api/impl/WxCpMessageServiceImplTest.java +++ b/weixin-java-cp/src/test/java/me/chanjar/weixin/cp/api/impl/WxCpMessageServiceImplTest.java @@ -9,8 +9,9 @@ import me.chanjar.weixin.common.error.WxErrorException; import me.chanjar.weixin.cp.api.ApiTestModule; import me.chanjar.weixin.cp.api.ApiTestModuleWithMockServer; import me.chanjar.weixin.cp.api.WxCpService; -import me.chanjar.weixin.cp.bean.WxCpMessage; -import me.chanjar.weixin.cp.bean.WxCpMessageSendResult; +import me.chanjar.weixin.cp.bean.message.WxCpLinkedCorpMessage; +import me.chanjar.weixin.cp.bean.message.WxCpMessage; +import me.chanjar.weixin.cp.bean.message.WxCpMessageSendResult; import org.testng.annotations.AfterTest; import org.testng.annotations.BeforeTest; import org.testng.annotations.Guice; @@ -57,7 +58,7 @@ public class WxCpMessageServiceImplTest { message.setToUser(configStorage.getUserId()); message.setContent("欢迎欢迎,热烈欢迎\n换行测试\n超链接:Hello World"); - WxCpMessageSendResult messageSendResult = this.wxService.getMessageService().messageSend(message); + WxCpMessageSendResult messageSendResult = this.wxService.getMessageService().send(message); assertNotNull(messageSendResult); System.out.println(messageSendResult); System.out.println(messageSendResult.getInvalidPartyList()); @@ -74,7 +75,7 @@ public class WxCpMessageServiceImplTest { .content("欢迎欢迎,热烈欢迎\n换行测试\n超链接:Hello World") .build(); - WxCpMessageSendResult messageSendResult = this.wxService.getMessageService().messageSend(message); + WxCpMessageSendResult messageSendResult = this.wxService.getMessageService().send(message); assertNotNull(messageSendResult); System.out.println(messageSendResult); System.out.println(messageSendResult.getInvalidPartyList()); @@ -102,7 +103,7 @@ public class WxCpMessageServiceImplTest { " >如需修改会议信息,请点击:[修改会议信息](https://work.weixin.qq.com)") .build(); - WxCpMessageSendResult messageSendResult = this.wxService.getMessageService().messageSend(message); + WxCpMessageSendResult messageSendResult = this.wxService.getMessageService().send(message); assertNotNull(messageSendResult); System.out.println(messageSendResult); System.out.println(messageSendResult.getInvalidPartyList()); @@ -121,7 +122,7 @@ public class WxCpMessageServiceImplTest { .title("领奖通知") .build(); - WxCpMessageSendResult messageSendResult = this.wxService.getMessageService().messageSend(message); + WxCpMessageSendResult messageSendResult = this.wxService.getMessageService().send(message); assertNotNull(messageSendResult); System.out.println(messageSendResult); System.out.println(messageSendResult.getInvalidPartyList()); @@ -144,11 +145,20 @@ public class WxCpMessageServiceImplTest { "会议时间", "2018年8月1日 09:00-09:30")) .build(); - WxCpMessageSendResult messageSendResult = this.wxService.getMessageService().messageSend(message); + WxCpMessageSendResult messageSendResult = this.wxService.getMessageService().send(message); assertNotNull(messageSendResult); System.out.println(messageSendResult); System.out.println(messageSendResult.getInvalidPartyList()); System.out.println(messageSendResult.getInvalidUserList()); System.out.println(messageSendResult.getInvalidTagList()); } + + @Test + public void testLinkedCorpMessageSend() throws WxErrorException { + this.wxService.getMessageService().sendLinkedCorpMessage(WxCpLinkedCorpMessage.builder() + .msgType(WxConsts.KefuMsgType.TEXT) + .toUsers(new String[]{configStorage.getUserId()}) + .content("欢迎欢迎,热烈欢迎\n换行测试\n超链接:Hello World") + .build()); + } } diff --git a/weixin-java-cp/src/test/java/me/chanjar/weixin/cp/api/impl/WxCpTaskCardServiceImplTest.java b/weixin-java-cp/src/test/java/me/chanjar/weixin/cp/api/impl/WxCpTaskCardServiceImplTest.java index 4cfa51300..1bdcb9e24 100644 --- a/weixin-java-cp/src/test/java/me/chanjar/weixin/cp/api/impl/WxCpTaskCardServiceImplTest.java +++ b/weixin-java-cp/src/test/java/me/chanjar/weixin/cp/api/impl/WxCpTaskCardServiceImplTest.java @@ -4,8 +4,8 @@ import com.google.inject.Inject; import me.chanjar.weixin.common.error.WxErrorException; import me.chanjar.weixin.cp.api.ApiTestModule; import me.chanjar.weixin.cp.api.WxCpService; -import me.chanjar.weixin.cp.bean.WxCpMessage; -import me.chanjar.weixin.cp.bean.WxCpMessageSendResult; +import me.chanjar.weixin.cp.bean.message.WxCpMessage; +import me.chanjar.weixin.cp.bean.message.WxCpMessageSendResult; import me.chanjar.weixin.cp.bean.taskcard.TaskCardButton; import org.testng.annotations.Guice; import org.testng.annotations.Test; @@ -49,7 +49,7 @@ public class WxCpTaskCardServiceImplTest { .buttons(Arrays.asList(btn1, btn2)) .build(); - WxCpMessageSendResult messageSendResult = this.wxCpService.getMessageService().messageSend(message); + WxCpMessageSendResult messageSendResult = this.wxCpService.getMessageService().send(message); assertNotNull(messageSendResult); System.out.println(messageSendResult); System.out.println(messageSendResult.getInvalidPartyList()); diff --git a/weixin-java-cp/src/test/java/me/chanjar/weixin/cp/bean/message/WxCpLinkedCorpMessageTest.java b/weixin-java-cp/src/test/java/me/chanjar/weixin/cp/bean/message/WxCpLinkedCorpMessageTest.java new file mode 100644 index 000000000..d692d0fc9 --- /dev/null +++ b/weixin-java-cp/src/test/java/me/chanjar/weixin/cp/bean/message/WxCpLinkedCorpMessageTest.java @@ -0,0 +1,374 @@ +package me.chanjar.weixin.cp.bean.message; + +import com.google.common.collect.ImmutableMap; +import com.google.common.collect.Lists; +import me.chanjar.weixin.common.api.WxConsts; +import me.chanjar.weixin.common.util.json.GsonParser; +import me.chanjar.weixin.cp.bean.article.MpnewsArticle; +import me.chanjar.weixin.cp.bean.article.NewArticle; +import org.testng.annotations.Test; + +import static me.chanjar.weixin.common.api.WxConsts.*; +import static org.assertj.core.api.Assertions.assertThat; + +/** + * 测试用例中的json参考 https://work.weixin.qq.com/api/doc/90000/90135/90250 + * + * @author Binary Wang + * @date 2020-08-30 + */ +public class WxCpLinkedCorpMessageTest { + + @Test + public void testToJson_text() { + WxCpLinkedCorpMessage message = WxCpLinkedCorpMessage.builder() + .msgType(KefuMsgType.TEXT) + .toUsers(new String[]{"userid1", "userid2", "CorpId1/userid1", "CorpId2/userid2"}) + .toParties(new String[]{"partyid1", "partyid2", "LinkedId1/partyid1", "LinkedId2/partyid2"}) + .toTags(new String[]{"tagid1", "tagid2"}) + .agentId(1) + .isToAll(false) + .isSafe(false) + .content("你的快递已到,请携带工卡前往邮件中心领取。\n出发前可查看邮件中心视频实况,聪明避开排队。") + .build(); + + final String json = message.toJson(); + String expectedJson = "{\n" + + " \"touser\" : [\"userid1\",\"userid2\",\"CorpId1/userid1\",\"CorpId2/userid2\"],\n" + + " \"toparty\" : [\"partyid1\",\"partyid2\",\"LinkedId1/partyid1\",\"LinkedId2/partyid2\"],\n" + + " \"totag\" : [\"tagid1\",\"tagid2\"],\n" + + " \"toall\" : 0,\n" + + " \"msgtype\" : \"text\",\n" + + " \"agentid\" : 1,\n" + + " \"text\" : {\n" + + " \"content\" : \"你的快递已到,请携带工卡前往邮件中心领取。\\n出发前可查看邮件中心视频实况,聪明避开排队。\"\n" + + " },\n" + + " \"safe\":0\n" + + "}"; + + assertThat(json).isEqualTo(GsonParser.parse(expectedJson).toString()); + } + + @Test + public void testToJson_image() { + WxCpLinkedCorpMessage message = WxCpLinkedCorpMessage.builder() + .msgType(KefuMsgType.IMAGE) + .toUsers(new String[]{"userid1", "userid2", "CorpId1/userid1", "CorpId2/userid2"}) + .toParties(new String[]{"partyid1", "partyid2", "LinkedId1/partyid1", "LinkedId2/partyid2"}) + .toTags(new String[]{"tagid1", "tagid2"}) + .agentId(1) + .isToAll(false) + .isSafe(false) + .mediaId("MEDIA_ID") + .build(); + + final String json = message.toJson(); + String expectedJson = "{\n" + + " \"touser\" : [\"userid1\",\"userid2\",\"CorpId1/userid1\",\"CorpId2/userid2\"],\n" + + " \"toparty\" : [\"partyid1\",\"partyid2\",\"LinkedId1/partyid1\",\"LinkedId2/partyid2\"],\n" + + " \"totag\" : [\"tagid1\",\"tagid2\"],\n" + + " \"toall\" : 0,\n" + + " \"msgtype\" : \"image\",\n" + + " \"agentid\" : 1,\n" + + " \"image\" : {\n" + + " \"media_id\" : \"MEDIA_ID\"\n" + + " },\n" + + " \"safe\":0\n" + + "}"; + + assertThat(json).isEqualTo(GsonParser.parse(expectedJson).toString()); + } + + @Test + public void testToJson_video() { + WxCpLinkedCorpMessage message = WxCpLinkedCorpMessage.builder() + .msgType(KefuMsgType.VIDEO) + .toUsers(new String[]{"userid1", "userid2", "CorpId1/userid1", "CorpId2/userid2"}) + .toParties(new String[]{"partyid1", "partyid2", "LinkedId1/partyid1", "LinkedId2/partyid2"}) + .toTags(new String[]{"tagid1", "tagid2"}) + .agentId(1) + .isToAll(false) + .isSafe(false) + .mediaId("MEDIA_ID") + .title("Title") + .description("Description") + .build(); + + final String json = message.toJson(); + String expectedJson = "{\n" + + " \"touser\" : [\"userid1\",\"userid2\",\"CorpId1/userid1\",\"CorpId2/userid2\"],\n" + + " \"toparty\" : [\"partyid1\",\"partyid2\",\"LinkedId1/partyid1\",\"LinkedId2/partyid2\"],\n" + + " \"totag\" : [\"tagid1\",\"tagid2\"],\n" + + " \"toall\" : 0,\n" + + " \"msgtype\" : \"video\",\n" + + " \"agentid\" : 1,\n" + + " \"video\" : {\n" + + " \"media_id\" : \"MEDIA_ID\",\n" + + " \"title\" : \"Title\",\n" + + " \"description\" : \"Description\"\n" + + " },\n" + + " \"safe\":0\n" + + "}\n"; + + assertThat(json).isEqualTo(GsonParser.parse(expectedJson).toString()); + } + + @Test + public void testToJson_file() { + WxCpLinkedCorpMessage message = WxCpLinkedCorpMessage.builder() + .msgType(KefuMsgType.FILE) + .toUsers(new String[]{"userid1", "userid2", "CorpId1/userid1", "CorpId2/userid2"}) + .toParties(new String[]{"partyid1", "partyid2", "LinkedId1/partyid1", "LinkedId2/partyid2"}) + .toTags(new String[]{"tagid1", "tagid2"}) + .agentId(1) + .isToAll(false) + .isSafe(false) + .mediaId("1Yv-zXfHjSjU-7LH-GwtYqDGS-zz6w22KmWAT5COgP7o") + .build(); + + final String json = message.toJson(); + String expectedJson = "{\n" + + " \"touser\" : [\"userid1\",\"userid2\",\"CorpId1/userid1\",\"CorpId2/userid2\"],\n" + + " \"toparty\" : [\"partyid1\",\"partyid2\",\"LinkedId1/partyid1\",\"LinkedId2/partyid2\"],\n" + + " \"totag\" : [\"tagid1\",\"tagid2\"],\n" + + " \"toall\" : 0,\n" + + " \"msgtype\" : \"file\",\n" + + " \"agentid\" : 1,\n" + + " \"file\" : {\n" + + " \"media_id\" : \"1Yv-zXfHjSjU-7LH-GwtYqDGS-zz6w22KmWAT5COgP7o\"\n" + + " },\n" + + " \"safe\":0\n" + + "}\n"; + + assertThat(json).isEqualTo(GsonParser.parse(expectedJson).toString()); + } + + @Test + public void testToJson_textCard() { + WxCpLinkedCorpMessage message = WxCpLinkedCorpMessage.builder() + .msgType(KefuMsgType.TEXTCARD) + .toUsers(new String[]{"userid1", "userid2", "CorpId1/userid1", "CorpId2/userid2"}) + .toParties(new String[]{"partyid1", "partyid2", "LinkedId1/partyid1", "LinkedId2/partyid2"}) + .toTags(new String[]{"tagid1", "tagid2"}) + .agentId(1) + .isToAll(false) + .title("领奖通知") + .description(" 2016年9月26日恭喜你抽中iPhone 7一台,领奖码:xxxx请于2016年10月10日前联系行政同事领取") + .url("URL") + .btnTxt("更多") + .build(); + + final String json = message.toJson(); + String expectedJson = "{\n" + + " \"touser\" : [\"userid1\",\"userid2\",\"CorpId1/userid1\",\"CorpId2/userid2\"],\n" + + " \"toparty\" : [\"partyid1\",\"partyid2\",\"LinkedId1/partyid1\",\"LinkedId2/partyid2\"],\n" + + " \"totag\" : [\"tagid1\",\"tagid2\"],\n" + + " \"toall\" : 0,\n" + + " \"msgtype\" : \"textcard\",\n" + + " \"agentid\" : 1,\n" + + " \"textcard\" : {\n" + + " \"title\" : \"领奖通知\",\n" + + " \"description\" : \"2016年9月26日恭喜你抽中iPhone 7一台,领奖码:xxxx请于2016年10月10日前联系行政同事领取\",\n" + + " \"url\" : \"URL\",\n" + + " \"btntxt\":\"更多\"\n" + + " }\n" + + "}\n"; + + assertThat(json).isEqualTo(GsonParser.parse(expectedJson).toString()); + } + + @Test + public void testToJson_news() { + WxCpLinkedCorpMessage message = WxCpLinkedCorpMessage.builder() + .msgType(KefuMsgType.NEWS) + .toUsers(new String[]{"userid1", "userid2", "CorpId1/userid1", "CorpId2/userid2"}) + .toParties(new String[]{"partyid1", "partyid2", "LinkedId1/partyid1", "LinkedId2/partyid2"}) + .toTags(new String[]{"tagid1", "tagid2"}) + .agentId(1) + .isToAll(false) + .articles(Lists.newArrayList(NewArticle.builder() + .title("中秋节礼品领取") + .description("今年中秋节公司有豪礼相送") + .url("URL") + .picUrl("http://res.mail.qq.com/node/ww/wwopenmng/images/independent/doc/test_pic_msg1.png") + .btnText("更多") + .build())) + .build(); + + final String json = message.toJson(); + String expectedJson = "{\n" + + " \"touser\" : [\"userid1\",\"userid2\",\"CorpId1/userid1\",\"CorpId2/userid2\"],\n" + + " \"toparty\" : [\"partyid1\",\"partyid2\",\"LinkedId1/partyid1\",\"LinkedId2/partyid2\"],\n" + + " \"totag\" : [\"tagid1\",\"tagid2\"],\n" + + " \"toall\" : 0,\n" + + " \"msgtype\" : \"news\",\n" + + " \"agentid\" : 1,\n" + + " \"news\" : {\n" + + " \"articles\" : [\n" + + " {\n" + + " \"title\" : \"中秋节礼品领取\",\n" + + " \"description\" : \"今年中秋节公司有豪礼相送\",\n" + + " \"url\" : \"URL\",\n" + + " \"picurl\" : \"http://res.mail.qq.com/node/ww/wwopenmng/images/independent/doc/test_pic_msg1.png\",\n" + + " \"btntxt\":\"更多\"\n" + + " }\n" + + " ]\n" + + " }\n" + + "}\n"; + + assertThat(json).isEqualTo(GsonParser.parse(expectedJson).toString()); + } + + + @Test + public void testToJson_mpnews() { + WxCpLinkedCorpMessage message = WxCpLinkedCorpMessage.builder() + .msgType(KefuMsgType.MPNEWS) + .toUsers(new String[]{"userid1", "userid2", "CorpId1/userid1", "CorpId2/userid2"}) + .toParties(new String[]{"partyid1", "partyid2", "LinkedId1/partyid1", "LinkedId2/partyid2"}) + .toTags(new String[]{"tagid1", "tagid2"}) + .agentId(1) + .isToAll(false) + .isSafe(false) + .mpNewsArticles(Lists.newArrayList(MpnewsArticle.newBuilder() + .title("Title") + .thumbMediaId("MEDIA_ID") + .author("Author") + .contentSourceUrl("URL") + .content("Content") + .digest("Digest description") + .build())) + .build(); + + final String json = message.toJson(); + String expectedJson = "{\n" + + " \"touser\" : [\"userid1\",\"userid2\",\"CorpId1/userid1\",\"CorpId2/userid2\"],\n" + + " \"toparty\" : [\"partyid1\",\"partyid2\",\"LinkedId1/partyid1\",\"LinkedId2/partyid2\"],\n" + + " \"totag\" : [\"tagid1\",\"tagid2\"],\n" + + " \"toall\" : 0,\n" + + " \"msgtype\" : \"mpnews\",\n" + + " \"agentid\" : 1,\n" + + " \"mpnews\" : {\n" + + " \"articles\":[\n" + + " {\n" + + " \"title\": \"Title\", \n" + + " \"thumb_media_id\": \"MEDIA_ID\",\n" + + " \"author\": \"Author\",\n" + + " \"content_source_url\": \"URL\",\n" + + " \"content\": \"Content\",\n" + + " \"digest\": \"Digest description\"\n" + + " }\n" + + " ]\n" + + " },\n" + + " \"safe\":0\n" + + "}\n"; + + assertThat(json).isEqualTo(GsonParser.parse(expectedJson).toString()); + } + + @Test + public void testToJson_markdown() { + WxCpLinkedCorpMessage message = WxCpLinkedCorpMessage.builder() + .msgType(KefuMsgType.MARKDOWN) + .toUsers(new String[]{"userid1", "userid2", "CorpId1/userid1", "CorpId2/userid2"}) + .toParties(new String[]{"partyid1", "partyid2", "LinkedId1/partyid1", "LinkedId2/partyid2"}) + .toTags(new String[]{"tagid1", "tagid2"}) + .agentId(1) + .isToAll(false) + .content("您的会议室已经预定,稍后会同步到`邮箱`\n" + + " >**事项详情**\n" + + " >事 项:开会\n" + + " >组织者:@miglioguan\n" + + " >参与者:@miglioguan、@kunliu、@jamdeezhou、@kanexiong、@kisonwang\n" + + " >\n" + + " >会议室:广州TIT 1楼 301\n" + + " >日 期:2018年5月18日\n" + + " >时 间:上午9:00-11:00\n" + + " >\n" + + " >请准时参加会议。\n" + + " >\n" + + " >如需修改会议信息,请点击:[修改会议信息](https://work.weixin.qq.com)") + .build(); + + final String json = message.toJson(); + String expectedJson = "{\n" + + " \"touser\" : [\"userid1\",\"userid2\",\"CorpId1/userid1\",\"CorpId2/userid2\"],\n" + + " \"toparty\" : [\"partyid1\",\"partyid2\",\"LinkedId1/partyid1\",\"LinkedId2/partyid2\"],\n" + + " \"totag\" : [\"tagid1\",\"tagid2\"],\n" + + " \"toall\" : 0,\n" + + " \"msgtype\" : \"markdown\",\n" + + " \"agentid\" : 1,\n" + + " \"markdown\": {\n" + + " \"content\": \"您的会议室已经预定,稍后会同步到`邮箱`\n" + + " >**事项详情**\n" + + " >事 项:开会\n" + + " >组织者:@miglioguan\n" + + " >参与者:@miglioguan、@kunliu、@jamdeezhou、@kanexiong、@kisonwang\n" + + " >\n" + + " >会议室:广州TIT 1楼 301\n" + + " >日 期:2018年5月18日\n" + + " >时 间:上午9:00-11:00\n" + + " >\n" + + " >请准时参加会议。\n" + + " >\n" + + " >如需修改会议信息,请点击:[修改会议信息](https://work.weixin.qq.com)\"\n" + + " }\n" + + "}\n"; + + assertThat(json).isEqualTo(GsonParser.parse(expectedJson).toString()); + } + + @Test + public void testToJson_miniProgramNotice() { + WxCpLinkedCorpMessage message = WxCpLinkedCorpMessage.builder() + .msgType(KefuMsgType.MINIPROGRAM_NOTICE) + .toUsers(new String[]{"userid1", "userid2", "CorpId1/userid1", "CorpId2/userid2"}) + .toParties(new String[]{"partyid1", "partyid2", "LinkedId1/partyid1", "LinkedId2/partyid2"}) + .toTags(new String[]{"tagid1", "tagid2"}) + .emphasisFirstItem(true) + .description("4月27日 16:16") + .title("会议室预订成功通知") + .appId("wx123123123123123") + .page("pages/index?userid=zhangsan&orderid=123123123") + .contentItems(ImmutableMap.of("会议室","402", + "会议地点","广州TIT-402会议室", + "会议时间","2018年8月1日 09:00-09:30", + "参与人员","周剑轩")) + .build(); + + final String json = message.toJson(); + String expectedJson = "{\n" + + " \"touser\" : [\"userid1\",\"userid2\",\"CorpId1/userid1\",\"CorpId2/userid2\"],\n" + + " \"toparty\" : [\"partyid1\",\"partyid2\",\"LinkedId1/partyid1\",\"LinkedId2/partyid2\"],\n" + + " \"totag\" : [\"tagid1\",\"tagid2\"],\n" + + " \"msgtype\" : \"miniprogram_notice\",\n" + + " \"miniprogram_notice\" : {\n" + + " \"appid\": \"wx123123123123123\",\n" + + " \"page\": \"pages/index?userid=zhangsan&orderid=123123123\",\n" + + " \"title\": \"会议室预订成功通知\",\n" + + " \"description\": \"4月27日 16:16\",\n" + + " \"emphasis_first_item\": true,\n" + + " \"content_item\": [\n" + + " {\n" + + " \"key\": \"会议室\",\n" + + " \"value\": \"402\"\n" + + " },\n" + + " {\n" + + " \"key\": \"会议地点\",\n" + + " \"value\": \"广州TIT-402会议室\"\n" + + " },\n" + + " {\n" + + " \"key\": \"会议时间\",\n" + + " \"value\": \"2018年8月1日 09:00-09:30\"\n" + + " },\n" + + " {\n" + + " \"key\": \"参与人员\",\n" + + " \"value\": \"周剑轩\"\n" + + " }\n" + + " ]\n" + + " }\n" + + "}\n"; + + assertThat(json).isEqualTo(GsonParser.parse(expectedJson).toString()); + } +} diff --git a/weixin-java-cp/src/test/java/me/chanjar/weixin/cp/bean/WxCpMessageTest.java b/weixin-java-cp/src/test/java/me/chanjar/weixin/cp/bean/message/WxCpMessageTest.java similarity index 98% rename from weixin-java-cp/src/test/java/me/chanjar/weixin/cp/bean/WxCpMessageTest.java rename to weixin-java-cp/src/test/java/me/chanjar/weixin/cp/bean/message/WxCpMessageTest.java index c54211758..3f7859116 100644 --- a/weixin-java-cp/src/test/java/me/chanjar/weixin/cp/bean/WxCpMessageTest.java +++ b/weixin-java-cp/src/test/java/me/chanjar/weixin/cp/bean/message/WxCpMessageTest.java @@ -1,7 +1,8 @@ -package me.chanjar.weixin.cp.bean; +package me.chanjar.weixin.cp.bean.message; import me.chanjar.weixin.cp.bean.article.MpnewsArticle; import me.chanjar.weixin.cp.bean.article.NewArticle; +import me.chanjar.weixin.cp.bean.message.WxCpMessage; import me.chanjar.weixin.cp.bean.taskcard.TaskCardButton; import org.testng.annotations.Test; diff --git a/weixin-java-cp/src/test/java/me/chanjar/weixin/cp/bean/WxCpXmlMessageTest.java b/weixin-java-cp/src/test/java/me/chanjar/weixin/cp/bean/message/WxCpXmlMessageTest.java similarity index 99% rename from weixin-java-cp/src/test/java/me/chanjar/weixin/cp/bean/WxCpXmlMessageTest.java rename to weixin-java-cp/src/test/java/me/chanjar/weixin/cp/bean/message/WxCpXmlMessageTest.java index 0a9f17a62..044e364b6 100644 --- a/weixin-java-cp/src/test/java/me/chanjar/weixin/cp/bean/WxCpXmlMessageTest.java +++ b/weixin-java-cp/src/test/java/me/chanjar/weixin/cp/bean/message/WxCpXmlMessageTest.java @@ -1,6 +1,7 @@ -package me.chanjar.weixin.cp.bean; +package me.chanjar.weixin.cp.bean.message; import me.chanjar.weixin.common.api.WxConsts; +import me.chanjar.weixin.cp.bean.message.WxCpXmlMessage; import me.chanjar.weixin.cp.constant.WxCpConsts; import me.chanjar.weixin.cp.util.xml.XStreamTransformer; import org.testng.annotations.Test; diff --git a/weixin-java-cp/src/test/java/me/chanjar/weixin/cp/bean/WxCpXmlOutImageMessageTest.java b/weixin-java-cp/src/test/java/me/chanjar/weixin/cp/bean/message/WxCpXmlOutImageMessageTest.java similarity index 89% rename from weixin-java-cp/src/test/java/me/chanjar/weixin/cp/bean/WxCpXmlOutImageMessageTest.java rename to weixin-java-cp/src/test/java/me/chanjar/weixin/cp/bean/message/WxCpXmlOutImageMessageTest.java index 87c9454c9..0ecbec67d 100644 --- a/weixin-java-cp/src/test/java/me/chanjar/weixin/cp/bean/WxCpXmlOutImageMessageTest.java +++ b/weixin-java-cp/src/test/java/me/chanjar/weixin/cp/bean/message/WxCpXmlOutImageMessageTest.java @@ -1,5 +1,7 @@ -package me.chanjar.weixin.cp.bean; +package me.chanjar.weixin.cp.bean.message; +import me.chanjar.weixin.cp.bean.message.WxCpXmlOutImageMessage; +import me.chanjar.weixin.cp.bean.message.WxCpXmlOutMessage; import org.testng.Assert; import org.testng.annotations.Test; diff --git a/weixin-java-cp/src/test/java/me/chanjar/weixin/cp/bean/WxCpXmlOutNewsMessageTest.java b/weixin-java-cp/src/test/java/me/chanjar/weixin/cp/bean/message/WxCpXmlOutNewsMessageTest.java similarity index 95% rename from weixin-java-cp/src/test/java/me/chanjar/weixin/cp/bean/WxCpXmlOutNewsMessageTest.java rename to weixin-java-cp/src/test/java/me/chanjar/weixin/cp/bean/message/WxCpXmlOutNewsMessageTest.java index 128bc9a4c..b0d3efabd 100644 --- a/weixin-java-cp/src/test/java/me/chanjar/weixin/cp/bean/WxCpXmlOutNewsMessageTest.java +++ b/weixin-java-cp/src/test/java/me/chanjar/weixin/cp/bean/message/WxCpXmlOutNewsMessageTest.java @@ -1,5 +1,7 @@ -package me.chanjar.weixin.cp.bean; +package me.chanjar.weixin.cp.bean.message; +import me.chanjar.weixin.cp.bean.message.WxCpXmlOutMessage; +import me.chanjar.weixin.cp.bean.message.WxCpXmlOutNewsMessage; import org.testng.Assert; import org.testng.annotations.Test; diff --git a/weixin-java-cp/src/test/java/me/chanjar/weixin/cp/bean/WxCpXmlOutTextMessageTest.java b/weixin-java-cp/src/test/java/me/chanjar/weixin/cp/bean/message/WxCpXmlOutTextMessageTest.java similarity index 89% rename from weixin-java-cp/src/test/java/me/chanjar/weixin/cp/bean/WxCpXmlOutTextMessageTest.java rename to weixin-java-cp/src/test/java/me/chanjar/weixin/cp/bean/message/WxCpXmlOutTextMessageTest.java index fd09ed6b9..68945f826 100644 --- a/weixin-java-cp/src/test/java/me/chanjar/weixin/cp/bean/WxCpXmlOutTextMessageTest.java +++ b/weixin-java-cp/src/test/java/me/chanjar/weixin/cp/bean/message/WxCpXmlOutTextMessageTest.java @@ -1,5 +1,7 @@ -package me.chanjar.weixin.cp.bean; +package me.chanjar.weixin.cp.bean.message; +import me.chanjar.weixin.cp.bean.message.WxCpXmlOutMessage; +import me.chanjar.weixin.cp.bean.message.WxCpXmlOutTextMessage; import org.testng.Assert; import org.testng.annotations.Test; diff --git a/weixin-java-cp/src/test/java/me/chanjar/weixin/cp/bean/WxCpXmlOutVideoMessageTest.java b/weixin-java-cp/src/test/java/me/chanjar/weixin/cp/bean/message/WxCpXmlOutVideoMessageTest.java similarity index 91% rename from weixin-java-cp/src/test/java/me/chanjar/weixin/cp/bean/WxCpXmlOutVideoMessageTest.java rename to weixin-java-cp/src/test/java/me/chanjar/weixin/cp/bean/message/WxCpXmlOutVideoMessageTest.java index c5551dec0..7077ceeed 100644 --- a/weixin-java-cp/src/test/java/me/chanjar/weixin/cp/bean/WxCpXmlOutVideoMessageTest.java +++ b/weixin-java-cp/src/test/java/me/chanjar/weixin/cp/bean/message/WxCpXmlOutVideoMessageTest.java @@ -1,5 +1,7 @@ -package me.chanjar.weixin.cp.bean; +package me.chanjar.weixin.cp.bean.message; +import me.chanjar.weixin.cp.bean.message.WxCpXmlOutMessage; +import me.chanjar.weixin.cp.bean.message.WxCpXmlOutVideoMessage; import org.testng.Assert; import org.testng.annotations.Test; diff --git a/weixin-java-cp/src/test/java/me/chanjar/weixin/cp/bean/WxCpXmlOutVoiceMessageTest.java b/weixin-java-cp/src/test/java/me/chanjar/weixin/cp/bean/message/WxCpXmlOutVoiceMessageTest.java similarity index 89% rename from weixin-java-cp/src/test/java/me/chanjar/weixin/cp/bean/WxCpXmlOutVoiceMessageTest.java rename to weixin-java-cp/src/test/java/me/chanjar/weixin/cp/bean/message/WxCpXmlOutVoiceMessageTest.java index a3c9688c4..9c0348600 100644 --- a/weixin-java-cp/src/test/java/me/chanjar/weixin/cp/bean/WxCpXmlOutVoiceMessageTest.java +++ b/weixin-java-cp/src/test/java/me/chanjar/weixin/cp/bean/message/WxCpXmlOutVoiceMessageTest.java @@ -1,5 +1,7 @@ -package me.chanjar.weixin.cp.bean; +package me.chanjar.weixin.cp.bean.message; +import me.chanjar.weixin.cp.bean.message.WxCpXmlOutMessage; +import me.chanjar.weixin.cp.bean.message.WxCpXmlOutVoiceMessage; import org.testng.Assert; import org.testng.annotations.Test; diff --git a/weixin-java-cp/src/test/java/me/chanjar/weixin/cp/demo/WxCpDemoServer.java b/weixin-java-cp/src/test/java/me/chanjar/weixin/cp/demo/WxCpDemoServer.java index df656a68a..2067e03eb 100644 --- a/weixin-java-cp/src/test/java/me/chanjar/weixin/cp/demo/WxCpDemoServer.java +++ b/weixin-java-cp/src/test/java/me/chanjar/weixin/cp/demo/WxCpDemoServer.java @@ -13,9 +13,9 @@ import me.chanjar.weixin.common.session.WxSessionManager; import me.chanjar.weixin.cp.constant.WxCpConsts; import me.chanjar.weixin.cp.api.WxCpService; import me.chanjar.weixin.cp.api.impl.WxCpServiceImpl; -import me.chanjar.weixin.cp.bean.WxCpXmlMessage; -import me.chanjar.weixin.cp.bean.WxCpXmlOutMessage; -import me.chanjar.weixin.cp.bean.WxCpXmlOutTextMessage; +import me.chanjar.weixin.cp.bean.message.WxCpXmlMessage; +import me.chanjar.weixin.cp.bean.message.WxCpXmlOutMessage; +import me.chanjar.weixin.cp.bean.message.WxCpXmlOutTextMessage; import me.chanjar.weixin.cp.config.WxCpConfigStorage; import me.chanjar.weixin.cp.message.WxCpMessageHandler; import me.chanjar.weixin.cp.message.WxCpMessageRouter; diff --git a/weixin-java-cp/src/test/java/me/chanjar/weixin/cp/demo/WxCpEndpointServlet.java b/weixin-java-cp/src/test/java/me/chanjar/weixin/cp/demo/WxCpEndpointServlet.java index 291cef403..3f48c3213 100644 --- a/weixin-java-cp/src/test/java/me/chanjar/weixin/cp/demo/WxCpEndpointServlet.java +++ b/weixin-java-cp/src/test/java/me/chanjar/weixin/cp/demo/WxCpEndpointServlet.java @@ -3,8 +3,8 @@ package me.chanjar.weixin.cp.demo; import me.chanjar.weixin.cp.config.WxCpConfigStorage; import me.chanjar.weixin.cp.message.WxCpMessageRouter; import me.chanjar.weixin.cp.api.WxCpService; -import me.chanjar.weixin.cp.bean.WxCpXmlMessage; -import me.chanjar.weixin.cp.bean.WxCpXmlOutMessage; +import me.chanjar.weixin.cp.bean.message.WxCpXmlMessage; +import me.chanjar.weixin.cp.bean.message.WxCpXmlOutMessage; import me.chanjar.weixin.cp.util.crypto.WxCpCryptUtil; import org.apache.commons.lang3.StringUtils; diff --git a/weixin-java-cp/src/test/resources/moco/message.json b/weixin-java-cp/src/test/resources/moco/message.json index 3714ad5db..b6b333c11 100644 --- a/weixin-java-cp/src/test/resources/moco/message.json +++ b/weixin-java-cp/src/test/resources/moco/message.json @@ -14,5 +14,13 @@ "response": { "text": "{\"errcode\":0,\"errmsg\":\"ok\",\"invaliduser\":\"\"}" } + }, + { + "request": { + "uri": "/cgi-bin/linkedcorp/message/send" + }, + "response": { + "text": "{\"errcode\":0,\"errmsg\":\"ok\",\"invaliduser\":\"\"}" + } } ] diff --git a/weixin-java-cp/src/test/resources/testng.xml b/weixin-java-cp/src/test/resources/testng.xml index 563928bdf..cfccea89b 100644 --- a/weixin-java-cp/src/test/resources/testng.xml +++ b/weixin-java-cp/src/test/resources/testng.xml @@ -12,13 +12,13 @@- - - - - - - + + + + + + +