Beispiel #1
0
        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 = "保存微信公众号菜单列表失败!"
            });
        }
Beispiel #2
0
        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 = "同步微信菜单结果失败!"
            });
        }