/// <summary>
        /// 保存微信菜单信息到DB
        /// </summary>
        /// <param name="strName"></param>
        /// <param name="parentCode"></param>
        /// <param name="strCode"></param>
        /// <param name="iOrder"></param>
        /// <param name="btn"></param>
        /// <param name="strUrl"></param>
        /// <param name="iAppId"></param>
        /// <returns></returns>
        private int SaveMenu(string strName, int parentCode, string strCode, int iOrder, BaseButton btn, string strUrl, int iAppId)
        {
            var strType = "";

            if (btn is SingleButton)
            {
                var button = btn as SingleButton;
                strType = button.type;

                switch (button.type)
                {
                case "view":
                    strUrl = (btn as SingleViewButton).url;
                    break;

                case "pic_weixin":
                default:
                    dynamic dd = button;
                    strCode = dd.key;
                    break;
                }
            }

            var bt = new ButtonReturnType()
            {
                ResponseMsgType = "News",
                Content         = "",
                Button          = new MenuButton()
                {
                    key  = strCode,
                    name = strName,
                    type = strType,
                    url  = strUrl
                }
            };

            var entity = new Category()
            {
                AppId         = iAppId,
                CategoryCode  = strCode,
                CategoryName  = strName,
                CategoryOrder = iOrder,
                ParentCode    = parentCode,
                Function      = Newtonsoft.Json.JsonConvert.SerializeObject(bt),
                CategoryDesc  = strUrl,
                IsAdmin       = false,
                IsDeleted     = false
            };

            _categoryService.Repository.Insert(entity);

            return(entity.Id);
        }
예제 #2
0
        public void Update()
        {
            var service = new CategoryService();

            var categories = service.Repository.Entities.AsEnumerable().Where(x => x.Id != 57 && !x.Function.IsNullOrEmpty() && x.AppId != 18).ToList();

            categories.ForEach(category =>
            {
                var btn = JsonHelper.FromJson <MenuButton>(category.Function);
                var buttonReturnType = new ButtonReturnType {
                    Button = btn, Content = null, ResponseMsgType = null
                };

                category.Function = JsonConvert.SerializeObject(buttonReturnType, Formatting.Indented);

                service.Repository.Update(category);
            });

            Assert.IsTrue(categories.Count > 0);
        }
        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);
        }