mirror of
https://gitee.com/binary/weixin-java-tools.git
synced 2025-04-05 17:38:05 +08:00
#1099 优化客服消息接口菜单消息实现
This commit is contained in:
parent
09b726fd0b
commit
b3462243e5
@ -32,10 +32,10 @@ public class WxMpKefuMessage implements Serializable {
|
|||||||
private String mpNewsMediaId;
|
private String mpNewsMediaId;
|
||||||
private String miniProgramAppId;
|
private String miniProgramAppId;
|
||||||
private String miniProgramPagePath;
|
private String miniProgramPagePath;
|
||||||
private List<WxArticle> articles = new ArrayList<>();
|
|
||||||
|
|
||||||
private String headContent;
|
private String headContent;
|
||||||
private String tailContent;
|
private String tailContent;
|
||||||
|
private List<WxArticle> articles = new ArrayList<>();
|
||||||
|
private List<WxMsgMenu> list = new ArrayList<>();
|
||||||
/**
|
/**
|
||||||
* 菜单消息里的菜单内容.
|
* 菜单消息里的菜单内容.
|
||||||
* 请使用逗号分割的形式将id和content连起来放在数组的里面
|
* 请使用逗号分割的形式将id和content连起来放在数组的里面
|
||||||
@ -145,4 +145,10 @@ public class WxMpKefuMessage implements Serializable {
|
|||||||
private String url;
|
private String url;
|
||||||
private String picUrl;
|
private String picUrl;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Data
|
||||||
|
public static class WxMsgMenu implements Serializable {
|
||||||
|
private String id;
|
||||||
|
private String content;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -3,30 +3,37 @@ package me.chanjar.weixin.mp.builder.kefu;
|
|||||||
import me.chanjar.weixin.common.api.WxConsts;
|
import me.chanjar.weixin.common.api.WxConsts;
|
||||||
import me.chanjar.weixin.mp.bean.kefu.WxMpKefuMessage;
|
import me.chanjar.weixin.mp.bean.kefu.WxMpKefuMessage;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Collections;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 卡券消息builder
|
* 菜单消息builder
|
||||||
* <pre>
|
* <pre>
|
||||||
* 用法: WxMpKefuMessage m = WxMpKefuMessage.WXCARD().cardId(...).toUser(...).build();
|
* 用法:
|
||||||
|
* WxMpKefuMessage m = WxMpKefuMessage.MSGMENU().addList(lists).headContent(headContent).tailContent(tailContent).toUser(...).build();
|
||||||
* </pre>
|
* </pre>
|
||||||
*
|
*
|
||||||
* @author <a href="https://github.com/binarywang">Binary Wang</a>
|
* @author billytomato
|
||||||
*/
|
*/
|
||||||
public final class WxMsgMenuBuilder extends BaseBuilder<WxMsgMenuBuilder> {
|
public final class WxMsgMenuBuilder extends BaseBuilder<WxMsgMenuBuilder> {
|
||||||
|
private List<WxMpKefuMessage.WxMsgMenu> list = new ArrayList<>();
|
||||||
private String headContent;
|
private String headContent;
|
||||||
private String tailContent;
|
private String tailContent;
|
||||||
private String[] msgMenuList;
|
|
||||||
|
|
||||||
public WxMsgMenuBuilder() {
|
public WxMsgMenuBuilder() {
|
||||||
this.msgType = WxConsts.KefuMsgType.MSGMENU;
|
this.msgType = WxConsts.KefuMsgType.MSGMENU;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
public WxMsgMenuBuilder addList(WxMpKefuMessage.WxMsgMenu... list) {
|
||||||
public WxMpKefuMessage build() {
|
Collections.addAll(this.list, list);
|
||||||
WxMpKefuMessage m = super.build();
|
return this;
|
||||||
m.setHeadContent(this.headContent);
|
}
|
||||||
m.setMsgMenuList(this.msgMenuList);
|
|
||||||
m.setTailContent(this.tailContent);
|
public WxMsgMenuBuilder list(List<WxMpKefuMessage.WxMsgMenu> list) {
|
||||||
return m;
|
this.list = list;
|
||||||
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
public WxMsgMenuBuilder headContent(String headContent) {
|
public WxMsgMenuBuilder headContent(String headContent) {
|
||||||
@ -39,8 +46,12 @@ public final class WxMsgMenuBuilder extends BaseBuilder<WxMsgMenuBuilder> {
|
|||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
public WxMsgMenuBuilder msgMenuList(String... msgMenuList) {
|
@Override
|
||||||
this.msgMenuList = msgMenuList;
|
public WxMpKefuMessage build() {
|
||||||
return this;
|
WxMpKefuMessage m = super.build();
|
||||||
|
m.setHeadContent(this.headContent);
|
||||||
|
m.setTailContent(this.tailContent);
|
||||||
|
m.setList(this.list);
|
||||||
|
return m;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -81,19 +81,18 @@ public class WxMpKefuMessageGsonAdapter implements JsonSerializer<WxMpKefuMessag
|
|||||||
messageJson.add("miniprogrampage", miniProgramPage);
|
messageJson.add("miniprogrampage", miniProgramPage);
|
||||||
break;
|
break;
|
||||||
case KefuMsgType.MSGMENU: {
|
case KefuMsgType.MSGMENU: {
|
||||||
JsonObject msgMenu = new JsonObject();
|
JsonObject msgmenuJsonObject = new JsonObject();
|
||||||
JsonArray array = new JsonArray();
|
JsonArray listJsonArray = new JsonArray();
|
||||||
for (String s : message.getMsgMenuList()) {
|
for (WxMpKefuMessage.WxMsgMenu list : message.getList()) {
|
||||||
JsonObject innerJson = new JsonObject();
|
JsonObject listJson = new JsonObject();
|
||||||
final String[] split = s.split(",");
|
listJson.addProperty("id", list.getId());
|
||||||
innerJson.addProperty("id", split[0]);
|
listJson.addProperty("content", list.getContent());
|
||||||
innerJson.addProperty("content", split[1]);
|
listJsonArray.add(listJson);
|
||||||
array.add(innerJson);
|
}
|
||||||
}
|
msgmenuJsonObject.addProperty("head_content",message.getHeadContent());
|
||||||
msgMenu.addProperty("head_content", message.getHeadContent());
|
msgmenuJsonObject.add("list", listJsonArray);
|
||||||
msgMenu.add("list", array);
|
msgmenuJsonObject.addProperty("tail_content",message.getTailContent());
|
||||||
msgMenu.addProperty("tail_content", message.getTailContent());
|
messageJson.add("msgmenu", msgmenuJsonObject);
|
||||||
messageJson.add("msgmenu", msgMenu);
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
default: {
|
default: {
|
||||||
|
@ -156,15 +156,24 @@ public class WxMpKefuMessageTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void testMsgMenuBuild() {
|
public void testMsgMenuBuild() {
|
||||||
|
|
||||||
|
WxMpKefuMessage.WxMsgMenu wxMsgMenu1=new WxMpKefuMessage.WxMsgMenu();
|
||||||
|
wxMsgMenu1.setId("101");
|
||||||
|
wxMsgMenu1.setContent("msgmenu1");
|
||||||
|
|
||||||
|
WxMpKefuMessage.WxMsgMenu wxMsgMenu2=new WxMpKefuMessage.WxMsgMenu();
|
||||||
|
wxMsgMenu2.setId("102");
|
||||||
|
wxMsgMenu2.setContent("msgmenu2");
|
||||||
|
|
||||||
WxMpKefuMessage reply = WxMpKefuMessage.MSGMENU()
|
WxMpKefuMessage reply = WxMpKefuMessage.MSGMENU()
|
||||||
.toUser("OPENID")
|
.toUser("OPENID")
|
||||||
.msgMenuList("101,满意", "102,不满意")
|
.addList(wxMsgMenu1).addList(wxMsgMenu2)
|
||||||
.headContent("您对本次服务是否满意呢?")
|
.headContent("head_content")
|
||||||
.tailContent("欢迎再次光临")
|
.tailContent("tail_content")
|
||||||
.build();
|
.build();
|
||||||
|
|
||||||
assertThat(reply.toJson())
|
Assert.assertEquals(reply.toJson(),
|
||||||
.isEqualTo("{\"touser\":\"OPENID\",\"msgtype\":\"msgmenu\",\"msgmenu\":{\"head_content\":\"您对本次服务是否满意呢?\",\"list\":[{\"id\":\"101\",\"content\":\"满意\"},{\"id\":\"102\",\"content\":\"不满意\"}],\"tail_content\":\"欢迎再次光临\"}}");
|
"{\"touser\":\"OPENID\",\"msgtype\":\"msgmenu\",\"msgmenu\":{\"head_content\":\"head_content\",\"list\":[{\"id\":\"101\",\"content\":\"msgmenu1\"},{\"id\":\"102\",\"content\":\"msgmenu2\"}],\"tail_content\":\"tail_content\"}}");
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user