|
|
@@ -1,7 +1,6 @@ |
|
|
|
package me.chanjar.weixin.mp.util.json; |
|
|
|
|
|
|
|
import com.google.gson.*; |
|
|
|
import me.chanjar.weixin.common.api.WxConsts; |
|
|
|
import me.chanjar.weixin.common.api.WxConsts.KefuMsgType; |
|
|
|
import me.chanjar.weixin.mp.bean.kefu.WxMpKefuMessage; |
|
|
|
import org.apache.commons.lang3.StringUtils; |
|
|
@@ -16,77 +15,90 @@ public class WxMpKefuMessageGsonAdapter implements JsonSerializer<WxMpKefuMessag |
|
|
|
messageJson.addProperty("touser", message.getToUser()); |
|
|
|
messageJson.addProperty("msgtype", message.getMsgType()); |
|
|
|
|
|
|
|
if (WxConsts.KefuMsgType.TEXT.equals(message.getMsgType())) { |
|
|
|
JsonObject text = new JsonObject(); |
|
|
|
text.addProperty("content", message.getContent()); |
|
|
|
messageJson.add("text", text); |
|
|
|
} |
|
|
|
|
|
|
|
if (WxConsts.KefuMsgType.IMAGE.equals(message.getMsgType())) { |
|
|
|
JsonObject image = new JsonObject(); |
|
|
|
image.addProperty("media_id", message.getMediaId()); |
|
|
|
messageJson.add("image", image); |
|
|
|
} |
|
|
|
|
|
|
|
if (WxConsts.KefuMsgType.VOICE.equals(message.getMsgType())) { |
|
|
|
JsonObject voice = new JsonObject(); |
|
|
|
voice.addProperty("media_id", message.getMediaId()); |
|
|
|
messageJson.add("voice", voice); |
|
|
|
} |
|
|
|
|
|
|
|
if (WxConsts.KefuMsgType.VIDEO.equals(message.getMsgType())) { |
|
|
|
JsonObject video = new JsonObject(); |
|
|
|
video.addProperty("media_id", message.getMediaId()); |
|
|
|
video.addProperty("thumb_media_id", message.getThumbMediaId()); |
|
|
|
video.addProperty("title", message.getTitle()); |
|
|
|
video.addProperty("description", message.getDescription()); |
|
|
|
messageJson.add("video", video); |
|
|
|
} |
|
|
|
|
|
|
|
if (WxConsts.KefuMsgType.MUSIC.equals(message.getMsgType())) { |
|
|
|
JsonObject music = new JsonObject(); |
|
|
|
music.addProperty("title", message.getTitle()); |
|
|
|
music.addProperty("description", message.getDescription()); |
|
|
|
music.addProperty("thumb_media_id", message.getThumbMediaId()); |
|
|
|
music.addProperty("musicurl", message.getMusicUrl()); |
|
|
|
music.addProperty("hqmusicurl", message.getHqMusicUrl()); |
|
|
|
messageJson.add("music", music); |
|
|
|
} |
|
|
|
|
|
|
|
if (WxConsts.KefuMsgType.NEWS.equals(message.getMsgType())) { |
|
|
|
JsonObject newsJsonObject = new JsonObject(); |
|
|
|
JsonArray articleJsonArray = new JsonArray(); |
|
|
|
for (WxMpKefuMessage.WxArticle article : message.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()); |
|
|
|
articleJsonArray.add(articleJson); |
|
|
|
switch (message.getMsgType()) { |
|
|
|
case KefuMsgType.TEXT: |
|
|
|
JsonObject text = new JsonObject(); |
|
|
|
text.addProperty("content", message.getContent()); |
|
|
|
messageJson.add("text", text); |
|
|
|
break; |
|
|
|
case KefuMsgType.IMAGE: |
|
|
|
JsonObject image = new JsonObject(); |
|
|
|
image.addProperty("media_id", message.getMediaId()); |
|
|
|
messageJson.add("image", image); |
|
|
|
break; |
|
|
|
case KefuMsgType.VOICE: |
|
|
|
JsonObject voice = new JsonObject(); |
|
|
|
voice.addProperty("media_id", message.getMediaId()); |
|
|
|
messageJson.add("voice", voice); |
|
|
|
break; |
|
|
|
case KefuMsgType.VIDEO: |
|
|
|
JsonObject video = new JsonObject(); |
|
|
|
video.addProperty("media_id", message.getMediaId()); |
|
|
|
video.addProperty("thumb_media_id", message.getThumbMediaId()); |
|
|
|
video.addProperty("title", message.getTitle()); |
|
|
|
video.addProperty("description", message.getDescription()); |
|
|
|
messageJson.add("video", video); |
|
|
|
break; |
|
|
|
case KefuMsgType.MUSIC: |
|
|
|
JsonObject music = new JsonObject(); |
|
|
|
music.addProperty("title", message.getTitle()); |
|
|
|
music.addProperty("description", message.getDescription()); |
|
|
|
music.addProperty("thumb_media_id", message.getThumbMediaId()); |
|
|
|
music.addProperty("musicurl", message.getMusicUrl()); |
|
|
|
music.addProperty("hqmusicurl", message.getHqMusicUrl()); |
|
|
|
messageJson.add("music", music); |
|
|
|
break; |
|
|
|
case KefuMsgType.NEWS: |
|
|
|
JsonObject newsJsonObject = new JsonObject(); |
|
|
|
JsonArray articleJsonArray = new JsonArray(); |
|
|
|
for (WxMpKefuMessage.WxArticle article : message.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()); |
|
|
|
articleJsonArray.add(articleJson); |
|
|
|
} |
|
|
|
newsJsonObject.add("articles", articleJsonArray); |
|
|
|
messageJson.add("news", newsJsonObject); |
|
|
|
break; |
|
|
|
case KefuMsgType.MPNEWS: |
|
|
|
JsonObject json = new JsonObject(); |
|
|
|
json.addProperty("media_id", message.getMpNewsMediaId()); |
|
|
|
messageJson.add("mpnews", json); |
|
|
|
break; |
|
|
|
case KefuMsgType.WXCARD: |
|
|
|
JsonObject wxcard = new JsonObject(); |
|
|
|
wxcard.addProperty("card_id", message.getCardId()); |
|
|
|
messageJson.add("wxcard", wxcard); |
|
|
|
break; |
|
|
|
case KefuMsgType.MINIPROGRAMPAGE: |
|
|
|
JsonObject miniProgramPage = new JsonObject(); |
|
|
|
miniProgramPage.addProperty("title", message.getTitle()); |
|
|
|
miniProgramPage.addProperty("appid", message.getMiniProgramAppId()); |
|
|
|
miniProgramPage.addProperty("pagepath", message.getMiniProgramPagePath()); |
|
|
|
miniProgramPage.addProperty("thumb_media_id", message.getThumbMediaId()); |
|
|
|
messageJson.add("miniprogrampage", miniProgramPage); |
|
|
|
break; |
|
|
|
case KefuMsgType.MSGMENU: { |
|
|
|
JsonObject msgMenu = new JsonObject(); |
|
|
|
JsonArray array = new JsonArray(); |
|
|
|
for (String s : message.getMsgMenuList()) { |
|
|
|
JsonObject innerJson = new JsonObject(); |
|
|
|
final String[] split = s.split(","); |
|
|
|
innerJson.addProperty("id", split[0]); |
|
|
|
innerJson.addProperty("content", split[1]); |
|
|
|
array.add(innerJson); |
|
|
|
} |
|
|
|
msgMenu.addProperty("head_content", message.getHeadContent()); |
|
|
|
msgMenu.add("list", array); |
|
|
|
msgMenu.addProperty("tail_content", message.getTailContent()); |
|
|
|
messageJson.add("msgmenu", msgMenu); |
|
|
|
break; |
|
|
|
} |
|
|
|
default: { |
|
|
|
throw new RuntimeException("非法消息类型,暂不支持"); |
|
|
|
} |
|
|
|
newsJsonObject.add("articles", articleJsonArray); |
|
|
|
messageJson.add("news", newsJsonObject); |
|
|
|
} |
|
|
|
|
|
|
|
if (WxConsts.KefuMsgType.MPNEWS.equals(message.getMsgType())) { |
|
|
|
JsonObject json = new JsonObject(); |
|
|
|
json.addProperty("media_id", message.getMpNewsMediaId()); |
|
|
|
messageJson.add("mpnews", json); |
|
|
|
} |
|
|
|
|
|
|
|
if (WxConsts.KefuMsgType.WXCARD.equals(message.getMsgType())) { |
|
|
|
JsonObject wxcard = new JsonObject(); |
|
|
|
wxcard.addProperty("card_id", message.getCardId()); |
|
|
|
messageJson.add("wxcard", wxcard); |
|
|
|
} |
|
|
|
|
|
|
|
if (KefuMsgType.MINIPROGRAMPAGE.equals(message.getMsgType())) { |
|
|
|
JsonObject miniProgramPage = new JsonObject(); |
|
|
|
miniProgramPage.addProperty("title", message.getTitle()); |
|
|
|
miniProgramPage.addProperty("appid", message.getMiniProgramAppId()); |
|
|
|
miniProgramPage.addProperty("pagepath", message.getMiniProgramPagePath()); |
|
|
|
miniProgramPage.addProperty("thumb_media_id", message.getThumbMediaId()); |
|
|
|
messageJson.add("miniprogrampage", miniProgramPage); |
|
|
|
} |
|
|
|
|
|
|
|
if (StringUtils.isNotBlank(message.getKfAccount())) { |
|
|
|