/// <summary> /// 获取微信菜单 /// </summary> /// <param name="context"></param> /// <returns></returns> private string QueryWeixinMenu(HttpContext context) { List <WeixinMenu> list; list = bllWeixin.GetList <WeixinMenu>(string.Format("UserID='{0}'", currentUserInfo.UserID)); list = list.OrderBy(p => p.MenuSort).ToList(); List <WeixinMenu> showList = new List <WeixinMenu>(); MySpider.MyCategories m = new MySpider.MyCategories(); foreach (ListItem item in m.GetCateListItem(m.GetCommCateModelList <WeixinMenu>("MenuID", "PreID", "NodeName", list), 0)) { try { WeixinMenu tmpModel = list.Where(p => p.MenuID.ToString().Equals(item.Value)).ToList()[0]; tmpModel.NodeName = item.Text; showList.Add(tmpModel); } catch { } } int totalCount = showList.Count; return(Common.JSONHelper.ObjectToJson( new { total = totalCount, rows = showList })); }
public async Task CreateMenuAsyncTest() { var menu = WeixinMenu.Create(); var menuItem = new MenuItem("会员事务"); menuItem.AddMenuItem(new ViewButton(Client.MakeOAuth("http://weixin.ecard.chihank.com//test", WeiXinOAuthType.Base, "123"), "修改基础资料")); menuItem.AddMenuItem(new ViewButton("http://weixin.3ecard.net", "修改交易密码")); menuItem.AddMenuItem(new ViewButton("http://weixin.3ecard.net", "加盟商户")); menu.AddMenuItem(menuItem); menuItem = new MenuItem("会员交易"); menuItem.AddMenuItem(new ViewButton("http://weixin.3ecard.net", "实时交易")); menuItem.AddMenuItem(new ViewButton("http://weixin.3ecard.net", "交易记录")); menu.AddMenuItem(menuItem); await Client.UpdateMenuAsync(menu); }
public async Task MenuTest() { MPClient client = MakeMPClient(); var menuItem = new MenuItem("text"); menuItem.AddMenuItem(new MenuButton("test1", "text")); menuItem.AddMenuItem(new MenuButton("test1", "text")); menuItem.AddMenuItem(new MediaButton("JdW_0g3R89AYK57-MXDpN83i_RngLTz_spquCwFY45E", "media1")); var menu = WeixinMenu.Create(); menu.AddMenuItem(menuItem); await client.UpdateMenuAsync(menu); }
public void AddMenuItemTest() { var menu = WeixinMenu.Create(); menu.AddMenuItem(new MenuButton("test1", "text")); menu.AddMenuItem(new MenuButton("test1", "text")); menu.AddMenuItem(new MenuButton("test1", "text")); try { menu.AddMenuItem(new MenuButton("test1", "text")); Assert.Fail("the max items count in root menu is 3"); } catch (Exception) { } Assert.AreEqual(3, menu.Items.Count()); }
private string EditWeixinMenu(HttpContext context) { string jsonData = context.Request["JsonData"]; WeixinMenu menuInfo = ZentCloud.Common.JSONHelper.JsonToModel <WeixinMenu>(jsonData); WeixinMenu oldMenuInfo = bllWeixin.Get <WeixinMenu>(string.Format("MenuID={0} And UserID='{1}'", menuInfo.MenuID, currentUserInfo.UserID)); if (menuInfo.PreID == 0)//上级是顶级菜单 { if (bllWeixin.GetCount <WeixinMenu>(string.Format("UserID='{0}'and PreID=0", currentUserInfo.UserID)) >= 3 && (oldMenuInfo.PreID != 0) && (oldMenuInfo.PreID != menuInfo.PreID)) { return("一级菜单最多只能设置3个"); } } else { var topMenu = bllWeixin.Get <WeixinMenu>(string.Format("MenuID='{0}'", menuInfo.PreID)); if (topMenu != null) { if (topMenu.PreID != 0) { return("只能设置二级菜单"); } } if (bllWeixin.GetCount <WeixinMenu>(string.Format("UserID='{0}'and PreID='{1}'", currentUserInfo.UserID, menuInfo.PreID)) >= 5 && (oldMenuInfo.PreID != menuInfo.PreID)) { return("最多可以设置5个二级菜单"); } WeixinMenu lastSecondMenu = bllWeixin.Get <WeixinMenu>(string.Format("PreID='{0}' order by MenuSort DESC", menuInfo.PreID)); if (lastSecondMenu != null) { menuInfo.MenuSort = oldMenuInfo.MenuSort; } else { menuInfo.MenuSort = 1; } } bool result = bllWeixin.Update(menuInfo); return(result.ToString().ToLower()); }
public void ProcessRequest(HttpContext context) { // 调用接口获取access_token var accessToken = WeixinUtil.GetAccessToken(AppId, AppSecret); if (null == accessToken || null == accessToken.Access_token || string.IsNullOrEmpty(accessToken.Access_token)) return; // 调用接口创建菜单 var weixinMenu = new WeixinMenu(); var menu = weixinMenu.GetMenu(); var result = weixinMenu.CreateMenu(menu, accessToken.Access_token); // 判断菜单创建结果 if (0 == result) { Logger.Write(new LogEntity { Title = "菜单创建", Content = "菜单创建成功", Sevenrity = Sevenrity.Info }); Logger.ShutDown(); } else { Logger.Write(new LogEntity { Title = "菜单创建", Content = "菜单创建失败", Sevenrity = Sevenrity.Info }); Logger.ShutDown(); } }
public void ProcessRequest(HttpContext context) { //获取access_token string access_Token = WechatCommon.IsExistAccess_Token(); if (!string.IsNullOrEmpty(access_Token) && access_Token != "error") { #region 除原菜单 string url = string.Format("https://api.weixin.qq.com/cgi-bin/menu/delete?access_token={0}", access_Token); //HTTP get 请求 WebRequestPostOrGet(url, ""); #endregion #region 创建菜单 url = string.Format("https://api.weixin.qq.com/cgi-bin/menu/create?access_token={0}", access_Token); List <Menu> menus = new List <Menu>(); List <WechatMenuInfo> topMenuList = WechatMenuBLL.ReadRootList(); //subbuttons.Clear(); foreach (var topmenu in topMenuList) { List <SubButton> subbuttons = new List <SubButton>(); foreach (var submenu in WechatMenuBLL.ReadChildList(topmenu.Id)) { //if (submenu.Type == "click") //{ // subbuttons.Add(new SubButton { name = submenu.Name, type = submenu.Type, key = submenu.Key }); //} //else //{ subbuttons.Add(new SubButton { name = submenu.Name, type = submenu.Type, url = submenu.Url, key = submenu.Key }); //} } //if (subbuttons.Count > 0) //{//如果有二级菜单 // menus.Add(new Menu { name = topmenu.Name, sub_button = subbuttons.ToArray<Button>() }); //} //else //{ menus.Add(new Menu { name = topmenu.Name, type = topmenu.Type, key = topmenu.Key, url = topmenu.Url, sub_button = subbuttons.ToArray <Button>() }); //} } #region // menus.Add( // new Menu() // { // name = "微商城", // sub_button = new SubButton[] // { // new SubButton() // { // name = "首页", // url = "http://dzwz18.ncms5.hnjing.net/mobile", // type = "view" // }, // new SubButton() // { // name = "分类", // url = "http://dzwz18.ncms5.hnjing.net/Mobile/ProductClass.html", // type = "view" // } // } // }); // menus.Add( // new Menu() // { // name = "个人中心", // sub_button = new SubButton[] // { // new SubButton() // { // name = "登录", // url = "http://dzwz18.ncms5.hnjing.net/Mobile/User/login.html", // type = "view" // }, // new SubButton() // { // name = "注册", // url = "http://dzwz18.ncms5.hnjing.net/Mobile/User/Register.html", // type = "view" // }, // new SubButton() // { // name = "我的竞网", // url = "http://dzwz18.ncms5.hnjing.net/Mobile/User/index.html", // type = "view" // } // } // }); // menus.Add( //new Menu() //{ // name = "用户服务", // sub_button = new SubButton[] // { // new SubButton() // { // name = "购物车", // url = "http://dzwz18.ncms5.hnjing.net/Mobile/cart.html", // type = "view" // }, // new SubButton() // { // name = "找回密码", // url = "http://dzwz18.ncms5.hnjing.net/Mobile/User/FindPasswordInit.html", // type = "view" // }, // new SubButton() // { // name = "男装搜索", // key="男装", // type = "click" // } // } //}); #endregion WeixinMenu weixinMenu = new WeixinMenu() { button = menus }; //参数 string param = JsonConvert.SerializeObject(weixinMenu); byte[] bs = Encoding.UTF8.GetBytes(param); //参数转化为ascii码 HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create(url); //创建request req.Method = "POST"; //确定传值的方式,此处为post方式传值 req.ContentType = "application/x-www-form-urlencoded;charset=utf-8"; req.ContentLength = bs.Length; using (Stream reqStream = req.GetRequestStream()) { reqStream.Write(bs, 0, bs.Length); } string responseString = string.Empty; using (HttpWebResponse myResponse = (HttpWebResponse)req.GetResponse()) { StreamReader sr = new StreamReader(myResponse.GetResponseStream(), Encoding.UTF8); responseString = sr.ReadToEnd(); } ReturnMsg msg = JsonConvert.DeserializeObject <ReturnMsg>(responseString); if (msg.errcode != "0") { //context.Response.Write("系统忙,请稍后重试"); context.Response.Write("error|" + msg.errcode + ":" + msg.errmsg); context.Response.End(); } else { context.Response.Write("ok|自定义菜单成功"); context.Response.End(); } #endregion } }
/// <summary> /// 接受请求的网站是UTF-8编码,Http Post请求参数也需要用UTF-8编码 /// HttpUtility.UrlEncode(merId, myEncoding) /// </summary> /// <param name="url">访问地址,不带参数</param> /// <param name="para">参数字符串</param> /// <returns></returns> public static string HtmlFromUrl(string url, string type, string aid) { String sResult = ""; try { List <Button> menus = new List <Button>(); List <WEC_MENU> listObj = new List <WEC_MENU>(); WEC_MENU conf = new WEC_MENU(); conf.PID = "0"; conf.AID = Convert.ToDecimal(aid ); listObj = BLLTable <WEC_MENU> .Select(new WEC_MENU(), conf); foreach (WEC_MENU me in listObj) { if (me.STATUS == 1) { continue; } Menu m = new Menu(); m.name = me.MENU_NAME; conf.PID = me.ID; List <WEC_MENU> listObj2 = new List <WEC_MENU>(); listObj2 = BLLTable <WEC_MENU> .Select(new WEC_MENU(), conf); foreach (WEC_MENU me2 in listObj2) { if (me2.STATUS == 1) { continue; } SubButton sub_btn = new SubButton(); sub_btn.type = me2.MENU_TYPE; sub_btn.name = me2.MENU_NAME; if (me2.MENU_TYPE.Equals("click")) { WEC_REQUEST conf2 = new WEC_REQUEST(); conf2.TID = Convert.ToDecimal(me2.MENU_KEY); sub_btn.key = BLLTable <WEC_REQUEST> .GetRowData(new WEC_REQUEST(), conf2).KEYWORD; sub_btn.url = ""; } else if (me2.MENU_TYPE.Equals("view")) { sub_btn.key = ""; sub_btn.url = me2.URL; } m.sub_button.Add(sub_btn); } if (m.sub_button.Count == 0) { SubButton sub = new SubButton(); sub.name = me.MENU_NAME; // sub.key = me.MENU_KEY; sub.type = me.MENU_TYPE; // sub.url = me.URL; if (me.MENU_TYPE.Equals("click")) { WEC_REQUEST conf2 = new WEC_REQUEST(); conf2.TID = Convert.ToDecimal(me.MENU_KEY); sub.key = BLLTable <WEC_REQUEST> .GetRowData(new WEC_REQUEST(), conf2).KEYWORD; sub.url = ""; } else if (me.MENU_TYPE.Equals("view")) { sub.key = ""; sub.url = me.URL; } menus.Add(sub); } else { menus.Add(m); } } //menus.Add( // new Menu() // { // name = "求职招聘", // sub_button = new SubButton[] // { // new SubButton() // { // name = "求职", // key = "menu_qiuzhi", // type = "click" // }, // new SubButton() // { // name = "招聘", // key = "menu_zhaopin", // type = "click" // } // } // }); WeixinMenu weixinMenu = new WeixinMenu() { button = menus }; JavaScriptSerializer jss = new JavaScriptSerializer(); string menusString = jss.Serialize(weixinMenu); // byte[] postBytes = Encoding.UTF8.GetBytes(menusString); // HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(url); // request.Method = "POST"; // request.ContentType = "application/x-www-form-urlencoded"; // request.ContentLength = postBytes.Length; // using (Stream reqStream = request.GetRequestStream()) // { // reqStream.Write(postBytes, 0, postBytes.Length); // } // HttpWebResponse response = (HttpWebResponse)request.GetResponse(); // System.IO.Stream responseStream = response.GetResponseStream(); // System.IO.StreamReader sr = new System.IO.StreamReader(responseStream, System.Text.Encoding.GetEncoding("utf-8")); // string responseText = sr.ReadToEnd(); // sr.Close(); // sr.Dispose(); // responseStream.Close(); // string jsonData = responseText; // //MenuResult menuResult = jss.Deserialize<MenuResult>(jsonData); // //return url + "\n" + menuResult.Errcode + "\n" + menuResult.Errmsg; // return url; //ASCIIEncoding encoding = new ASCIIEncoding(); return(httpForm(menusString, url, type)); } catch (Exception e) { sResult = e.Message; return(sResult); } }
/// <summary> /// 菜单排序 /// </summary> /// <param name="context"></param> /// <returns></returns> private string MoveMenu(HttpContext context) { int menuID = int.Parse(context.Request["MenuID"]); //步骤ID string direction = context.Request["Direction"]; //移动方向 up:上 down: 下 WeixinMenu targetMenu = bllWeixin.Get <WeixinMenu>(string.Format("MenuID={0}", menuID)); //要移动的菜单 int index = 0; //菜单所在同级的顺序 #region 移动一级菜单 if (targetMenu.PreID.ToString().Equals("0")) //移动的是一级菜单 { List <WeixinMenu> firstLevelMenu = bllWeixin.GetList <WeixinMenu>(string.Format("UserID='{0}' and PreID=0", currentUserInfo.UserID)); //一级菜单 firstLevelMenu = firstLevelMenu.OrderBy(p => p.MenuSort).ToList(); //修改menusort for (int i = 0; i < firstLevelMenu.Count; i++) { if (firstLevelMenu[i].MenuID == targetMenu.MenuID) { index = i; break; } } int tagetMenuSort = (int)firstLevelMenu[index].MenuSort; if (direction.Equals("up")) //一级菜单上移 { if (index == 0) //一级菜单已经最靠前 { return("选中菜单已经排最前"); } else//一级菜单不是最靠前 { //交换排序 int preMenuSort = (int)firstLevelMenu[index - 1].MenuSort;//上一条一级菜单排序 firstLevelMenu[index].MenuSort = preMenuSort; firstLevelMenu[index - 1].MenuSort = tagetMenuSort; if (bllWeixin.Update(firstLevelMenu[index]) && bllWeixin.Update(firstLevelMenu[index - 1])) { return("true"); } else { return("操作失败"); } } } else//一级菜单下移 { if (firstLevelMenu[firstLevelMenu.Count - 1].MenuID == targetMenu.MenuID)//一级菜单已经最靠后 { return("选中菜单已经排最后"); } else//一级菜单不是最靠后 { //交换排序 int nextMenuSort = (int)firstLevelMenu[index + 1].MenuSort;//下一条一级菜单排序 firstLevelMenu[index].MenuSort = nextMenuSort; firstLevelMenu[index + 1].MenuSort = tagetMenuSort; if (bllWeixin.Update(firstLevelMenu[index]) && bllWeixin.Update(firstLevelMenu[index + 1])) { return("true"); } else { return("操作失败"); } } } } #endregion #region 移动二级菜单 else//移动的是二级菜单 { List <WeixinMenu> secondLevelMenu = bllWeixin.GetList <WeixinMenu>(string.Format("UserID='{0}' and PreID={1}", currentUserInfo.UserID, targetMenu.PreID));//二级菜单 secondLevelMenu = secondLevelMenu.OrderBy(p => p.MenuSort).ToList(); //修改menusort for (int i = 0; i < secondLevelMenu.Count; i++) { if (secondLevelMenu[i].MenuID == targetMenu.MenuID) { index = i; break; } } int tagetMenuSort = (int)secondLevelMenu[index].MenuSort; if (direction.Equals("up")) //二级菜单上移 { if (index == 0) //二级菜单已经最靠前 { return("选中菜单已经排最前"); } else//二级菜单不是最靠前 { //交换排序 int preMenuSort = (int)secondLevelMenu[index - 1].MenuSort;//上一条二级菜单排序 secondLevelMenu[index].MenuSort = preMenuSort; secondLevelMenu[index - 1].MenuSort = tagetMenuSort; if (bllWeixin.Update(secondLevelMenu[index]) && bllWeixin.Update(secondLevelMenu[index - 1])) { return("true"); } else { return("操作失败"); } } } else//二级菜单下移 { if (secondLevelMenu[secondLevelMenu.Count - 1].MenuID == targetMenu.MenuID)//一级菜单已经最靠后 { return("选中菜单已经排最后"); } else//二级菜单不是最靠后 { //交换排序 int nextMenuSort = (int)secondLevelMenu[index + 1].MenuSort;//下一条二级菜单排序 secondLevelMenu[index].MenuSort = nextMenuSort; secondLevelMenu[index + 1].MenuSort = tagetMenuSort; if (bllWeixin.Update(secondLevelMenu[index]) && bllWeixin.Update(secondLevelMenu[index + 1])) { return("true"); } else { return("操作失败"); } } } } #endregion }
/// <summary> /// 添加微信自定义菜单 /// </summary> /// <param name="context"></param> /// <returns></returns> private string AddWeixinMenu(HttpContext context) { string jsonData = context.Request["JsonData"]; WeixinMenu menuInfo = ZentCloud.Common.JSONHelper.JsonToModel <WeixinMenu>(jsonData); if (menuInfo.PreID == 0)//添加的是一级菜单 { if (bllWeixin.GetCount <WeixinMenu>(string.Format("UserID='{0}'and PreID=0", currentUserInfo.UserID)) >= 3) { return("最多可以添加3个一级菜单"); } } else//添加是二级菜单 { //var parentmenu = weixinBll.Get<WeixinMenu>(string.Format("MenuID='{0}'",menuInfo.PreID)); var topMenu = bllWeixin.Get <WeixinMenu>(string.Format("MenuID='{0}'", menuInfo.PreID)); if (topMenu != null) { if (topMenu.PreID != 0) { return("只能添加二级菜单"); } } if (bllWeixin.GetCount <WeixinMenu>(string.Format("UserID='{0}'and PreID='{1}'", currentUserInfo.UserID, menuInfo.PreID)) >= 5) { return("最多可以添加5个二级菜单"); } } if (menuInfo.PreID == 0)//添加一级菜单 { List <WeixinMenu> firstLevelMenu = bllWeixin.GetList <WeixinMenu>(string.Format("UserID='{0}' And PreID=0", currentUserInfo.UserID)).OrderBy(p => p.MenuSort).ToList(); if (firstLevelMenu.Count == 0) { menuInfo.MenuSort = 1; } else { menuInfo.MenuSort = firstLevelMenu[firstLevelMenu.Count - 1].MenuSort + 1; } } else//添加二级菜单 { List <WeixinMenu> secondLevelMenu = bllWeixin.GetList <WeixinMenu>(string.Format("UserID='{0}' And PreID={1}", currentUserInfo.UserID, menuInfo.PreID)).OrderBy(p => p.MenuSort).ToList(); if (secondLevelMenu.Count == 0) { menuInfo.MenuSort = 1; } else { menuInfo.MenuSort = secondLevelMenu[secondLevelMenu.Count - 1].MenuSort + 1; } } menuInfo.MenuID = long.Parse(bllWeixin.GetGUID(ZentCloud.BLLJIMP.TransacType.WeixinMenuAdd)); menuInfo.UserID = currentUserInfo.UserID; bool result = bllWeixin.Add(menuInfo); return(result.ToString().ToLower()); }
/// <summary> /// 接受请求的网站是UTF-8编码,Http Post请求参数也需要用UTF-8编码 /// HttpUtility.UrlEncode(merId, myEncoding) /// </summary> /// <param name="url">访问地址,不带参数</param> /// <param name="para">参数字符串</param> /// <returns></returns> public static string HtmlFromUrl(string url, string type, string aid) { String sResult = ""; try { List<Button> menus = new List<Button>(); List<WEC_MENU> listObj = new List<WEC_MENU>(); WEC_MENU conf = new WEC_MENU(); conf.PID = "0"; conf.AID = Convert.ToDecimal(aid ); listObj = BLLTable<WEC_MENU>.Select(new WEC_MENU(), conf); foreach (WEC_MENU me in listObj) { if (me.STATUS == 1) { continue; } Menu m = new Menu(); m.name = me.MENU_NAME; conf.PID = me.ID; List<WEC_MENU> listObj2 = new List<WEC_MENU>(); listObj2 = BLLTable<WEC_MENU>.Select(new WEC_MENU(), conf); foreach (WEC_MENU me2 in listObj2) { if (me2.STATUS == 1) { continue; } SubButton sub_btn = new SubButton(); sub_btn.type = me2.MENU_TYPE; sub_btn.name = me2.MENU_NAME; if (me2.MENU_TYPE.Equals("click")) { WEC_REQUEST conf2 = new WEC_REQUEST(); conf2.TID = Convert.ToDecimal(me2.MENU_KEY); sub_btn.key = BLLTable<WEC_REQUEST>.GetRowData(new WEC_REQUEST(),conf2).KEYWORD; sub_btn.url = ""; } else if (me2.MENU_TYPE.Equals("view")) { sub_btn.key = ""; sub_btn.url = me2.URL; } m.sub_button.Add(sub_btn); } if (m.sub_button.Count == 0) { SubButton sub = new SubButton(); sub.name = me.MENU_NAME; // sub.key = me.MENU_KEY; sub.type = me.MENU_TYPE; // sub.url = me.URL; if (me.MENU_TYPE.Equals("click")) { WEC_REQUEST conf2 = new WEC_REQUEST(); conf2.TID = Convert.ToDecimal(me.MENU_KEY); sub.key = BLLTable<WEC_REQUEST>.GetRowData(new WEC_REQUEST(), conf2).KEYWORD; sub.url = ""; } else if (me.MENU_TYPE.Equals("view")) { sub.key = ""; sub.url = me.URL; } menus.Add(sub); } else { menus.Add(m); } } //menus.Add( // new Menu() // { // name = "求职招聘", // sub_button = new SubButton[] // { // new SubButton() // { // name = "求职", // key = "menu_qiuzhi", // type = "click" // }, // new SubButton() // { // name = "招聘", // key = "menu_zhaopin", // type = "click" // } // } // }); WeixinMenu weixinMenu = new WeixinMenu() { button = menus }; JavaScriptSerializer jss = new JavaScriptSerializer(); string menusString = jss.Serialize(weixinMenu); // byte[] postBytes = Encoding.UTF8.GetBytes(menusString); // HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(url); // request.Method = "POST"; // request.ContentType = "application/x-www-form-urlencoded"; // request.ContentLength = postBytes.Length; // using (Stream reqStream = request.GetRequestStream()) // { // reqStream.Write(postBytes, 0, postBytes.Length); // } // HttpWebResponse response = (HttpWebResponse)request.GetResponse(); // System.IO.Stream responseStream = response.GetResponseStream(); // System.IO.StreamReader sr = new System.IO.StreamReader(responseStream, System.Text.Encoding.GetEncoding("utf-8")); // string responseText = sr.ReadToEnd(); // sr.Close(); // sr.Dispose(); // responseStream.Close(); // string jsonData = responseText; // //MenuResult menuResult = jss.Deserialize<MenuResult>(jsonData); // //return url + "\n" + menuResult.Errcode + "\n" + menuResult.Errmsg; // return url; //ASCIIEncoding encoding = new ASCIIEncoding(); return httpForm(menusString,url,type); } catch (Exception e) { sResult = e.Message; return sResult; } }