public async Task <Result <string> > SaveMenus([FromBody] JObject objPara) { try { dynamic obj = objPara as dynamic; List <WxMenusShow> lstMenu = ComHelper.JsonDeserialize <List <WxMenusShow> >(obj.lstMenu.ToString()); logHelper.Debug("SaveMenus:获取到待保存的公众号菜单数据:" + lstMenu.JsonSerialize()); #region 保存菜单到公众号 var wxMenus = new PubMenus(); wxMenus.button = new List <PubMenu>(); foreach (var lv1 in lstMenu) { // 一级菜单 var wxMenuLv1 = new PubMenu(); wxMenuLv1.type = lv1.Type; wxMenuLv1.name = lv1.Name; wxMenuLv1.key = lv1.Key; wxMenuLv1.url = lv1.Url; wxMenuLv1.media_id = lv1.MediaId; wxMenuLv1.appid = lv1.Appid; wxMenuLv1.pagepath = lv1.Pagepath; if (lv1.SubButton != null && lv1.SubButton.Count > 0) { wxMenuLv1.sub_button = new List <PubMenu>(); foreach (var lv2 in lv1.SubButton) { // 二级菜单 var wxMenuLv2 = new PubMenu(); wxMenuLv2.type = lv2.Type; wxMenuLv2.name = lv2.Name; wxMenuLv2.key = lv2.Key; wxMenuLv2.url = lv2.Url; wxMenuLv2.media_id = lv2.MediaId; wxMenuLv2.appid = lv2.Appid; wxMenuLv2.pagepath = lv2.Pagepath; wxMenuLv1.sub_button.Add(wxMenuLv2); } } wxMenus.button.Add(wxMenuLv1); } logHelper.Debug("SaveMenus:获取到待提交公众号的菜单数据:" + wxMenus.JsonSerialize()); var apiRes = PubMenuApi.SaveMenu(wxMenus); logHelper.Debug("SaveMenus:保存公众号菜单结果:" + ComHelper.JsonSerialize(apiRes)); if (!apiRes.IsSuss) { var msg = "保存公众号菜单失败:错误代码:" + apiRes.errcode + " 原因:" + apiRes.errmsg; logHelper.Error("SaveMenus:" + msg); return(new Result <string> { Message = msg }); } #endregion #region 保存菜单到数据库 var dtNow = DateTime.Now; var lstIds = new List <int>(); var order = 1; var curUser = currentUser.UserName; foreach (var lv1 in lstMenu) { lv1.Level = 1; lv1.Order = order; if (!lv1.CreateTime.HasValue) { lv1.Creater = curUser; lv1.CreateTime = dtNow; } lv1.Updater = curUser; lv1.UpdateTime = dtNow; await repo.SaveAsync(lv1); lstIds.Add(lv1.Id); order++; if (lv1.SubButton != null && lv1.SubButton.Count > 0) { lv1.Type = ""; lv1.Key = ""; lv1.Url = ""; lv1.MediaId = ""; lv1.Appid = ""; lv1.Pagepath = ""; foreach (var lv2 in lv1.SubButton) { lv2.ParentId = lv1.Id; lv2.Level = 2; lv2.Order = order; if (!lv2.CreateTime.HasValue) { lv2.Creater = curUser; lv2.CreateTime = dtNow; } lv2.Updater = curUser; lv2.UpdateTime = dtNow; await repo.SaveAsync(lv2); lstIds.Add(lv2.Id); order++; } } } // 禁用掉停用的菜单 if (lstIds.Count > 0) { var strIds = string.Join(",", lstIds); var strSql = string.Format(" UPDATE WxMenus SET IsDel = 1, Updater = '{0}', UpdateTime = '{1}' WHERE Id NOT IN ({2}) ", currentUser.UserName, dtNow, strIds); await repo.ExecuteCommandAsync(strSql); } #endregion return(new Result <string> { IsSucc = true, Message = "保存微信公众号菜单列表成功!" }); } catch (Exception ex) { logHelper.Error("GetMenus:保存微信公众号菜单列表失败:" + ex.Message + " " + ex.StackTrace); } return(new Result <string> { Message = "保存微信公众号菜单列表失败!" }); }
public async Task <Result <string> > SyncMenus() { try { var apiRes = PubMenuApi.GetMenu(); logHelper.Debug("SyncMenus:同步微信菜单结果:" + apiRes.JsonSerialize()); if (!apiRes.IsSuss) { var msg = "同步微信菜单结果失败:错误代码:" + apiRes.errcode + " 原因:" + apiRes.errmsg; logHelper.Error("SaveMenus:" + msg); return(new Result <string> { Message = msg }); } // 保存菜单到数据库 var lstMenus = apiRes.menu.button; var order = 1; var dtNow = DateTime.Now; var lstIds = new List <int>(); var curUser = currentUser.UserName; for (int i = 0; i < lstMenus.Count; i++) { var lv1 = lstMenus[i]; // 一级菜单 var lv1Menu = new WxMenusShow(); lv1Menu.Level = 1; lv1Menu.Order = order; lv1Menu.Name = lv1.name; lv1Menu.Type = lv1.type; lv1Menu.Key = lv1.key; lv1Menu.Url = lv1.url; lv1Menu.MediaId = lv1.media_id; lv1Menu.Appid = lv1.appid; lv1Menu.Pagepath = lv1.pagepath; lv1Menu.Creater = curUser; lv1Menu.Updater = curUser; lv1Menu.CreateTime = dtNow; lv1Menu.UpdateTime = dtNow; await repo.SaveAsync(lv1Menu); lstIds.Add(lv1Menu.Id); order++; for (int j = 0; j < lv1.sub_button.Count; j++) { var lv2 = lv1.sub_button[j]; // 二级菜单 var lv2Menu = new WxMenusShow(); lv2Menu.ParentId = lv1Menu.Id; lv2Menu.Level = 2; lv2Menu.Order = order; lv2Menu.Name = lv2.name; lv2Menu.Type = lv2.type; lv2Menu.Key = lv2.key; lv2Menu.Url = lv2.url; lv2Menu.MediaId = lv2.media_id; lv2Menu.Appid = lv2.appid; lv2Menu.Pagepath = lv2.pagepath; lv2Menu.Creater = curUser; lv2Menu.Updater = curUser; lv2Menu.CreateTime = dtNow; lv2Menu.UpdateTime = dtNow; await repo.SaveAsync(lv2Menu); lstIds.Add(lv2Menu.Id); order++; } } // 禁用掉停用的菜单 if (lstIds.Count > 0) { var strIds = string.Join(",", lstIds); var strSql = string.Format(" UPDATE WxMenus SET IsDel = 1, Updater = '{0}', UpdateTime = '{1}' WHERE Id NOT IN ({2}) ", currentUser.UserName, dtNow, strIds); await repo.ExecuteCommandAsync(strSql); } return(new Result <string> { IsSucc = true, Message = "同步微信菜单结果成功!" }); } catch (Exception ex) { logHelper.Error("SyncMenus:同步微信菜单结果失败:" + ex.Message + " " + ex.StackTrace); } return(new Result <string> { Message = "同步微信菜单结果失败!" }); }