public ActionResult GetListTree(string appid) { int appResult = default(int); if (int.TryParse(appid, out appResult)) { List <Category> lstCate = CommonService.lstCategory.FindAll(x => x.AppId == appResult && x.IsDeleted == false).ToList(); List <Category> menuButtons = lstCate.Where(b => b.ParentCode == 0).OrderBy(b => b.CategoryOrder).ToList(); List <CategoryButtonView> btnList = new List <CategoryButtonView>(); foreach (var button in menuButtons) { var btnFunc = JsonHelper.FromJson <ButtonReturnType>(button.Function); CategoryButtonView btn = new CategoryButtonView() { Id = button.Id, name = button.CategoryName, key = ConvertCategoryCodeToAutpReplyId(button.CategoryCode), type = btnFunc.Button.type, url = btnFunc.Button.url, }; List <Category> subButtons = lstCate.Where(b => b.ParentCode == button.Id).OrderBy(b => b.CategoryOrder).ToList(); foreach (var subBtn in subButtons) { var subBtnFunc = JsonHelper.FromJson <ButtonReturnType>(subBtn.Function); CategoryButtonView subButton = new CategoryButtonView() { Id = subBtn.Id, name = subBtn.CategoryName, key = ConvertCategoryCodeToAutpReplyId(subBtn.CategoryCode), type = subBtnFunc.Button.type, url = subBtnFunc.Button.url, }; btn.children.Add(subButton); } btnList.Add(btn); } return(Json(new { menu = btnList }, JsonRequestBehavior.AllowGet)); } else { return(ErrorNotification("app id is wrong")); } }
private int DoInsertCategory(CategoryButtonView btn, int appId, int order, int parentId = 0) { bool hasChildren = btn.children != null && btn.children.Count > 0; AppMenuView btnView = new AppMenuView(); if (btn.Id != 0) { btnView = (AppMenuView)btnView.ConvertAPIModel(_BaseService.Repository.GetByKey(btn.Id)); } btnView.Id = btn.Id; btnView.AppId = appId; btnView.ParentCode = parentId; btnView.CategoryName = btn.name; btnView.CategoryOrder = order + 1; btnView.CreatedDate = DateTime.Now; btnView.CreatedUserID = User.Identity.Name; ButtonReturnType btnFunc = new ButtonReturnType() { Button = new MenuButton() { name = btn.name, type = hasChildren ? string.Empty : btn.type, url = hasChildren ? string.Empty : btn.url, } }; if ("click".Equals(btnFunc.Button.type)) { var key = btn.key; if (!string.IsNullOrEmpty(btn.key)) { key = btn.key.Split(':')[0]; } btnView.CategoryCode = string.Format("{0}:::{1}", key, btn.name); btnView.CategoryDesc = btnView.CategoryCode; btnFunc.Button.key = btnView.CategoryCode; } else { btnView.CategoryCode = string.Empty; btnView.CategoryDesc = btn.url; } btnView.ButtonReturnType = btnFunc; btnView.Function = JsonHelper.ToJson(btnFunc); if (btnView.Id != 0) { _BaseService.UpdateView(btnView); } else { _BaseService.InsertView(btnView); } //跳转到新闻列表需要后台手动创建url,其本质是view,在同步至微信服务器时转换为view if ("view-news-list".Equals(btn.type)) { btnView.ButtonReturnType.Button.url = CommonService.GetSysConfig("WeChatUrl", "http://wechat.innoprise.cn/").Trim('/') + "/News/ArticleInfo/List?wechatid=" + appId + "&strSubCate=" + btnView.Id; var obj = _menuService.Repository.GetByKey(btnView.Id); obj.Function = JsonHelper.ToJson(btnView.ButtonReturnType); btnView.CategoryDesc = btnView.ButtonReturnType.Button.url; _menuService.Repository.Update(obj, new List <string>() { "Function", "CategoryDesc" }); } return(btnView.Id); }