/// <summary> /// 根据微信SiteCode获取相应的菜单 /// </summary> /// <param name="strSiteCode"></param> /// <returns></returns> public List <Menu> GetWeiXinMenuBySiteCode(string strSiteCode) { List <Menu> res = null; WXConfigDAL dal = new WXConfigDAL(); //WXConfig wxConfig = dal.GetWXConfigByID(strSiteCode); WXConfig wxConfig = dal.GetWXConfigBySiteCode(strSiteCode); if (wxConfig != null) { if (!string.IsNullOrEmpty(wxConfig.ID)) { StringBuilder sql = new StringBuilder(); sql.AppendFormat("SELECT * FROM [{0}]", TABLE_NAME); sql.AppendFormat(" WHERE WXConfigID=@WXConfigID"); sql.AppendFormat(" AND Enabled=1"); IList <System.Data.SqlClient.SqlParameter> paras = new List <System.Data.SqlClient.SqlParameter>() { new System.Data.SqlClient.SqlParameter("@WXConfigID", wxConfig.ID) }; DataSet ds = DbHelperSQL.Query(sql.ToString(), paras.ToArray()); res = ds.ConvertToList <Menu>(); } } return(res); }
/// <summary> /// 同步微信用户信息 /// </summary> public static void SyncWXUserBySiteCode(string siteCode) { if (!string.IsNullOrEmpty(siteCode)) { WXConfigDAL dal = new WXConfigDAL(); WXConfig wxConfig = dal.GetWXConfigBySiteCode(siteCode); if (wxConfig != null) { WeiXinCore.Models.WeiXinConfig weixinConfig = new WeiXinCore.Models.WeiXinConfig() { ID = wxConfig.WXID, Name = wxConfig.WXName, Token = wxConfig.WXToken, AppId = wxConfig.WXAppID, AppSecret = wxConfig.WXAppSecret }; WeiXinCore.WeiXin weixin = new WeiXinCore.WeiXin(weixinConfig); List <UserInfo> users = weixin.GetUserInfos(); if (users != null) { UserDAL dal2 = CreateInstance(); dal2.ClearUser(wxConfig.ID); foreach (UserInfo user in users) { User info = new User() { WXConfigID = wxConfig.ID, OpenID = user.OpenId, Subscribe = user.Subscribe, NickName = user.NickName, Sex = user.Sex, Language = user.Language, City = user.City, Province = user.Province, Country = user.Country, HeadImgUrl = user.Headimgurl, SubscribeTime = user.Subscribe_Time, }; dal2.Insert(info); } } } } }
/// <summary> /// 创建微信菜单 /// </summary> /// <param name="siteCode"></param> public static void CreateWeiXinMenu(string wxConfigID) { if (!string.IsNullOrEmpty(wxConfigID)) { WXConfigDAL dal = new WXConfigDAL(); WXConfig wxConfig = dal.GetWXConfigByID(wxConfigID); if (wxConfig != null) { WeiXinCore.Models.WeiXinConfig weixinConfig = new WeiXinCore.Models.WeiXinConfig() { ID = wxConfig.WXID, Name = wxConfig.WXName, Token = wxConfig.WXToken, AppId = wxConfig.WXAppID, AppSecret = wxConfig.WXAppSecret }; WeiXinCore.WeiXin weixin = new WeiXinCore.WeiXin(weixinConfig); MenuDAL dal2 = CreateInstance(); List <Menu> menus = dal2.GetWeiXinMenu(wxConfig.ID); MenuInfo menuInfo = new MenuInfo(); var buttons = from x in menus where x.MenuType.ToLower() == "button" orderby x.OrderNum ascending select x; foreach (Menu button in buttons) { if (!string.IsNullOrEmpty(button.ButtonType)) { switch (button.ButtonType.ToLower()) { case "view": string url = button.AccessLink; if (!string.IsNullOrEmpty(button.RedirectScope)) { url = WeiXinHelper.GenerateAuthorizeUrl(weixinConfig.AppId, HttpUtility.UrlEncode(url), button.RedirectScope, button.RedirectState); } menuInfo.Buttons.Add(new MenuViewBtton() { Name = button.ButtonName, Type = button.ButtonType, Url = url }); break; case "click": menuInfo.Buttons.Add(new MenuClickButton() { Name = button.ButtonName, Type = button.ButtonType, Key = button.ButtonKey }); break; default: menuInfo.Buttons.Add(new MenuEventButton() { Name = button.ButtonName, Type = button.ButtonType, Key = button.ButtonKey }); break; } } else { MenuSubButton subButton = new MenuSubButton() { Name = button.ButtonName }; var subButtons = from x in menus where x.MenuType.ToLower() == "sub_button" && x.ParentMenuID == button.ID orderby x.OrderNum ascending select x; foreach (Menu subButton1 in subButtons) { switch (subButton1.ButtonType.ToLower()) { case "view": string url = subButton1.AccessLink; if (!string.IsNullOrEmpty(subButton1.RedirectScope)) { url = WeiXinHelper.GenerateAuthorizeUrl(weixinConfig.AppId, HttpUtility.UrlEncode(url), subButton1.RedirectScope, subButton1.RedirectState); } subButton.SubButtons.Add(new MenuViewBtton() { Name = subButton1.ButtonName, Type = subButton1.ButtonType, Url = url }); break; case "click": subButton.SubButtons.Add(new MenuClickButton() { Name = subButton1.ButtonName, Type = subButton1.ButtonType, Key = subButton1.ButtonKey }); break; default: subButton.SubButtons.Add(new MenuEventButton() { Name = subButton1.ButtonName, Type = subButton1.ButtonType, Key = subButton1.ButtonKey }); break; } } menuInfo.Buttons.Add(subButton); } } string strJosn = menuInfo.ToJson(); weixin.CreateCustomMenu(menuInfo); } } }