public void SetTest() { var topMenu1 = new CustomMenuTopButton("菜单1"); var topMenu2 = new CustomMenuTopButton("菜单2"); var topMenu3 = new CustomMenuKeyButton("菜单3", CustomMenuType.PicSysphoto, "test"); topMenu1.AppendChildMenus(new CustomMenuButton[] { new CustomMenuKeyButton("ScancodePush",CustomMenuType.ScancodePush, "test"), new CustomMenuKeyButton("ScancodeWaitmsg",CustomMenuType.ScancodeWaitmsg, "test"), }); topMenu2.AppendChildMenus(new CustomMenuButton[] { new CustomMenuKeyButton("Click",CustomMenuType.Click, "test"), new CustomMenuViewButton("View", "http://cn.bing.com/"), new CustomMenuKeyButton("LocationSelect",CustomMenuType.LocationSelect, "test"), new CustomMenuKeyButton("PicPhotoOrAlbum",CustomMenuType.PicPhotoOrAlbum, "test"), new CustomMenuKeyButton("PicSysphoto",CustomMenuType.PicSysphoto, "test"), new CustomMenuKeyButton("PicWeixin",CustomMenuType.PicWeixin, "test") }); Assert.AreEqual(5, topMenu2.Childs.Length); Assert.AreEqual("View", topMenu2.Childs.First().Name); _customMenuService.Set(new CustomMenuButtonBase[] { topMenu1, topMenu2, topMenu3 }); }
private static CustomMenuButtonBase GetMenuItemByWeiXin(JObject obj) { var name = obj.Value <string>("name"); var typeString = obj.Value <string>("type"); var customMenuType = string.IsNullOrWhiteSpace(typeString) ? null : new CustomMenuType?(CustomMenuTypeMappings.Single(i => i.Value.Equals(typeString)).Key); var subButtons = (JArray)obj["sub_button"]; if (!customMenuType.HasValue) { var menu = new CustomMenuTopButton(name); menu.AppendChildMenus(subButtons.Select(token => GetMenuItemByWeiXin((JObject)token)).OfType <CustomMenuButton>().ToArray()); return(menu); } var type = customMenuType.Value; switch (type) { case CustomMenuType.Click: case CustomMenuType.ScancodePush: case CustomMenuType.ScancodeWaitmsg: case CustomMenuType.PicSysphoto: case CustomMenuType.PicPhotoOrAlbum: case CustomMenuType.PicWeixin: case CustomMenuType.LocationSelect: { return(new CustomMenuKeyButton(name, type, obj.Value <string>("key"))); } case CustomMenuType.View: { return(new CustomMenuViewButton(name, obj.Value <string>("url"))); } case CustomMenuType.MediaId: case CustomMenuType.ViewLimited: { return(new CustomMenuMediaButton(name, type, obj.Value <string>("media_id"))); } default: throw new NotSupportedException("不支持的类型:" + type); } }
private static CustomMenuButtonBase GetMenuItemByWeiXin(JObject obj) { var name = obj.Value<string>("name"); var typeString = obj.Value<string>("type"); var customMenuType = string.IsNullOrWhiteSpace(typeString) ? null : new CustomMenuType?(CustomMenuTypeMappings.Single(i => i.Value.Equals(typeString)).Key); var subButtons = (JArray)obj["sub_button"]; if (!customMenuType.HasValue) { var menu = new CustomMenuTopButton(name); menu.AppendChildMenus(subButtons.Select(token => GetMenuItemByWeiXin((JObject)token)).OfType<CustomMenuButton>().ToArray()); return menu; } var type = customMenuType.Value; switch (type) { case CustomMenuType.Click: case CustomMenuType.ScancodePush: case CustomMenuType.ScancodeWaitmsg: case CustomMenuType.PicSysphoto: case CustomMenuType.PicPhotoOrAlbum: case CustomMenuType.PicWeixin: case CustomMenuType.LocationSelect: { return new CustomMenuKeyButton(name, type, obj.Value<string>("key")); } case CustomMenuType.View: { return new CustomMenuViewButton(name, obj.Value<string>("url")); } case CustomMenuType.MediaId: case CustomMenuType.ViewLimited: { return new CustomMenuMediaButton(name, type, obj.Value<string>("media_id")); } default: throw new NotSupportedException("不支持的类型:" + type); } }
public void SetPersonaliseBySexTest() { var menu1 = new CustomMenuTopButton("男生可见"); menu1.AppendChildMenus(new CustomMenuKeyButton("ScancodePush", CustomMenuType.ScancodePush, "test"), new CustomMenuKeyButton("ScancodeWaitmsg", CustomMenuType.ScancodeWaitmsg, "test")); var menu2 = new CustomMenuTopButton("女生可见"); menu2.AppendChildMenus(new CustomMenuKeyButton("ScancodePush", CustomMenuType.ScancodePush, "test"), new CustomMenuKeyButton("ScancodeWaitmsg", CustomMenuType.ScancodeWaitmsg, "test")); var result = _customMenuService.Set(new CustomMenuButtonBase[] { menu1 }, new CustomMeunMatchRule { Sex = SexEnum.Male }); Assert.IsTrue(result.HasValue); result = _customMenuService.Set(new CustomMenuButtonBase[] { menu2 }, new CustomMeunMatchRule { Sex = SexEnum.Female }); Assert.IsTrue(result.HasValue); Assert.AreEqual(menu1.Name, _customMenuService.GetList(OpenId).First().Name); }