diff --git a/broker/src/main/java/io/moquette/persistence/MemoryMessagesStore.java b/broker/src/main/java/io/moquette/persistence/MemoryMessagesStore.java index 80a52b8b..857928f8 100755 --- a/broker/src/main/java/io/moquette/persistence/MemoryMessagesStore.java +++ b/broker/src/main/java/io/moquette/persistence/MemoryMessagesStore.java @@ -4484,7 +4484,7 @@ public class MemoryMessagesStore implements IMessagesStore { } else if(modifyType == Modify_Channel_Menu) { OutputGetChannelInfo.OutputMenuList outputMenuButtons = GsonUtil.gson.fromJson(value, OutputGetChannelInfo.OutputMenuList.class); if (!outputMenuButtons.isEmpty()) { - for (OutputGetChannelInfo.OutputMenu outputMenuButton : outputMenuButtons) { + for (PojoChannelMenu outputMenuButton : outputMenuButtons) { newInfoBuilder.addMenu(outputMenuButton.toPbInfo()); } } diff --git a/common/src/main/java/cn/wildfirechat/pojos/InputCreateChannel.java b/common/src/main/java/cn/wildfirechat/pojos/InputCreateChannel.java index 13c9fc3b..49c1112f 100755 --- a/common/src/main/java/cn/wildfirechat/pojos/InputCreateChannel.java +++ b/common/src/main/java/cn/wildfirechat/pojos/InputCreateChannel.java @@ -12,6 +12,9 @@ package cn.wildfirechat.pojos; import cn.wildfirechat.proto.WFCMessage; import io.netty.util.internal.StringUtil; +import java.util.ArrayList; +import java.util.List; + public class InputCreateChannel { private String owner; private String name; @@ -24,6 +27,7 @@ public class InputCreateChannel { private int state; private String extra; private long updateDt; + public List menus; public WFCMessage.ChannelInfo toProtoChannelInfo() { WFCMessage.ChannelInfo.Builder builder = WFCMessage.ChannelInfo.newBuilder().setOwner(owner); @@ -48,6 +52,12 @@ public class InputCreateChannel { else builder = builder.setUpdateDt(System.currentTimeMillis()); + if (menus != null && !menus.isEmpty()) { + for (PojoChannelMenu menu : menus) { + builder.addMenu(menu.toPbInfo()); + } + } + return builder.build(); } diff --git a/common/src/main/java/cn/wildfirechat/pojos/OutputGetChannelInfo.java b/common/src/main/java/cn/wildfirechat/pojos/OutputGetChannelInfo.java index 7f4304b9..f3042bf7 100755 --- a/common/src/main/java/cn/wildfirechat/pojos/OutputGetChannelInfo.java +++ b/common/src/main/java/cn/wildfirechat/pojos/OutputGetChannelInfo.java @@ -16,61 +16,7 @@ import java.util.ArrayList; import java.util.List; public class OutputGetChannelInfo { - public static class OutputMenu { - public String menuId; - public String type; - public String name; - public String key; - public String url; - public String mediaId; - public String articleId; - public String appId; - public String appPage; - public String extra; - public List subMenus; - - public static OutputMenu fromPbInfo(WFCMessage.ChannelMenu channelMenuMenu) { - OutputMenu out = new OutputMenu(); - out.menuId = channelMenuMenu.getMenuId(); - out.type = channelMenuMenu.getType(); - out.name = channelMenuMenu.getName(); - out.key = channelMenuMenu.getKey(); - out.url = channelMenuMenu.getUrl(); - out.mediaId = channelMenuMenu.getMediaId(); - out.articleId = channelMenuMenu.getArticleId(); - out.appId = channelMenuMenu.getAppId(); - out.appPage = channelMenuMenu.getAppPage(); - out.extra = channelMenuMenu.getExtra(); - if (channelMenuMenu.getSubMenuCount() > 0) { - out.subMenus = new ArrayList<>(); - for (WFCMessage.ChannelMenu menuMenu : channelMenuMenu.getSubMenuList()) { - out.subMenus.add(fromPbInfo(menuMenu)); - } - } - return out; - } - - public WFCMessage.ChannelMenu.Builder toPbInfo() { - WFCMessage.ChannelMenu.Builder builder = WFCMessage.ChannelMenu.newBuilder(); - builder.setType(type); - builder.setName(name); - if (!StringUtil.isNullOrEmpty(menuId)) builder.setMenuId(menuId); - if (!StringUtil.isNullOrEmpty(key)) builder.setKey(key); - if (!StringUtil.isNullOrEmpty(url)) builder.setUrl(url); - if (!StringUtil.isNullOrEmpty(mediaId)) builder.setMediaId(mediaId); - if (!StringUtil.isNullOrEmpty(articleId)) builder.setArticleId(articleId); - if (!StringUtil.isNullOrEmpty(appId)) builder.setAppId(appId); - if (!StringUtil.isNullOrEmpty(appPage)) builder.setAppPage(appPage); - if (!StringUtil.isNullOrEmpty(extra)) builder.setExtra(extra); - if (subMenus != null && !subMenus.isEmpty()) { - subMenus.forEach(menuMenu -> builder.addSubMenu(menuMenu.toPbInfo())); - } - return builder; - } - } - - public static class OutputMenuList extends ArrayList { - + public static class OutputMenuList extends ArrayList { } private String channelId; @@ -85,7 +31,7 @@ public class OutputGetChannelInfo { private String callback; private int automatic; private String secret; - public List menus; + public List menus; public String getChannelId() { return channelId; @@ -200,7 +146,7 @@ public class OutputGetChannelInfo { if (channelInfo.getMenuCount() > 0) { out.menus = new ArrayList<>(); for (WFCMessage.ChannelMenu channelMenuMenu : channelInfo.getMenuList()) { - out.menus.add(OutputMenu.fromPbInfo(channelMenuMenu)); + out.menus.add(PojoChannelMenu.fromPbInfo(channelMenuMenu)); } } return out; diff --git a/common/src/main/java/cn/wildfirechat/pojos/PojoChannelMenu.java b/common/src/main/java/cn/wildfirechat/pojos/PojoChannelMenu.java new file mode 100644 index 00000000..f5b1b87f --- /dev/null +++ b/common/src/main/java/cn/wildfirechat/pojos/PojoChannelMenu.java @@ -0,0 +1,60 @@ +package cn.wildfirechat.pojos; + +import cn.wildfirechat.proto.WFCMessage; +import io.netty.util.internal.StringUtil; + +import java.util.ArrayList; +import java.util.List; + +public class PojoChannelMenu { + public String menuId; + public String type; + public String name; + public String key; + public String url; + public String mediaId; + public String articleId; + public String appId; + public String appPage; + public String extra; + public List subMenus; + + public static PojoChannelMenu fromPbInfo(WFCMessage.ChannelMenu channelMenuMenu) { + PojoChannelMenu out = new PojoChannelMenu(); + out.menuId = channelMenuMenu.getMenuId(); + out.type = channelMenuMenu.getType(); + out.name = channelMenuMenu.getName(); + out.key = channelMenuMenu.getKey(); + out.url = channelMenuMenu.getUrl(); + out.mediaId = channelMenuMenu.getMediaId(); + out.articleId = channelMenuMenu.getArticleId(); + out.appId = channelMenuMenu.getAppId(); + out.appPage = channelMenuMenu.getAppPage(); + out.extra = channelMenuMenu.getExtra(); + if (channelMenuMenu.getSubMenuCount() > 0) { + out.subMenus = new ArrayList<>(); + for (WFCMessage.ChannelMenu menuMenu : channelMenuMenu.getSubMenuList()) { + out.subMenus.add(fromPbInfo(menuMenu)); + } + } + return out; + } + + public WFCMessage.ChannelMenu.Builder toPbInfo() { + WFCMessage.ChannelMenu.Builder builder = WFCMessage.ChannelMenu.newBuilder(); + builder.setType(type); + builder.setName(name); + if (!StringUtil.isNullOrEmpty(menuId)) builder.setMenuId(menuId); + if (!StringUtil.isNullOrEmpty(key)) builder.setKey(key); + if (!StringUtil.isNullOrEmpty(url)) builder.setUrl(url); + if (!StringUtil.isNullOrEmpty(mediaId)) builder.setMediaId(mediaId); + if (!StringUtil.isNullOrEmpty(articleId)) builder.setArticleId(articleId); + if (!StringUtil.isNullOrEmpty(appId)) builder.setAppId(appId); + if (!StringUtil.isNullOrEmpty(appPage)) builder.setAppPage(appPage); + if (!StringUtil.isNullOrEmpty(extra)) builder.setExtra(extra); + if (subMenus != null && !subMenus.isEmpty()) { + subMenus.forEach(menuMenu -> builder.addSubMenu(menuMenu.toPbInfo())); + } + return builder; + } +} diff --git a/sdk/src/main/java/cn/wildfirechat/sdk/ChannelServiceApi.java b/sdk/src/main/java/cn/wildfirechat/sdk/ChannelServiceApi.java index 636075bd..60c55ba1 100644 --- a/sdk/src/main/java/cn/wildfirechat/sdk/ChannelServiceApi.java +++ b/sdk/src/main/java/cn/wildfirechat/sdk/ChannelServiceApi.java @@ -51,7 +51,7 @@ public class ChannelServiceApi { return channelHttpUtils.httpJsonPost(path, null, OutputGetChannelInfo.class); } - public IMResult modifyChannelMenu(List menus) throws Exception { + public IMResult modifyChannelMenu(List menus) throws Exception { String menuStr = new Gson().toJson(menus); return modifyChannelInfo(ProtoConstants.ModifyChannelInfoType.Modify_Channel_Menu, menuStr); } diff --git a/sdk/src/main/java/cn/wildfirechat/sdk/Main.java b/sdk/src/main/java/cn/wildfirechat/sdk/Main.java index 14d05371..d370d9b3 100644 --- a/sdk/src/main/java/cn/wildfirechat/sdk/Main.java +++ b/sdk/src/main/java/cn/wildfirechat/sdk/Main.java @@ -1974,8 +1974,8 @@ public class Main { System.exit(-1); } - List menus = new ArrayList<>(); - OutputGetChannelInfo.OutputMenu menu1 = new OutputGetChannelInfo.OutputMenu(); + List menus = new ArrayList<>(); + PojoChannelMenu menu1 = new PojoChannelMenu(); menu1.menuId = UUID.randomUUID().toString(); menu1.type = "view"; menu1.name = "一级菜单1"; @@ -1983,7 +1983,7 @@ public class Main { menu1.url = "http://www.baidu.com"; menus.add(menu1); - OutputGetChannelInfo.OutputMenu menu2 = new OutputGetChannelInfo.OutputMenu(); + PojoChannelMenu menu2 = new PojoChannelMenu(); menu2.menuId = UUID.randomUUID().toString(); menu2.type = "view"; menu2.name = "一级菜单2"; @@ -1992,7 +1992,7 @@ public class Main { menu2.subMenus = new ArrayList<>(); menus.add(menu2); - OutputGetChannelInfo.OutputMenu menu21 = new OutputGetChannelInfo.OutputMenu(); + PojoChannelMenu menu21 = new PojoChannelMenu(); menu21.menuId = UUID.randomUUID().toString(); menu21.type = "click"; menu21.name = "二级菜单21";