Пример #1
0
        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);
        }