Exemplo n.º 1
0
        public static JObject MenuBuild(this List <Menu> menus, MenuConditionParameter menuCondition = null)
        {
            JObject root  = new JObject();
            JArray  array = new JArray();

            foreach (var menu in menus)
            {
                if (menu is ChildrenMenu)
                {
                    var    first    = menu.ToJObject();
                    JArray children = new JArray();
                    foreach (var child in menu.Children)
                    {
                        children.Add(child.ToJObject());
                    }

                    first["name"]       = menu.Name;
                    first["sub_button"] = children;
                    array.Add(first);
                }
                else
                {
                    array.Add(menu.ToJObject());
                }
            }

            root["button"] = array;
            if (menuCondition != null)
            {
                root["matchrule"] = MenuCondition(menuCondition);
            }

            return(root);
        }
Exemplo n.º 2
0
        /// <summary>
        /// 创建个性化菜单
        /// </summary>
        /// <param name="menus"></param>
        /// <param name="condition"></param>
        /// <param name="accessToken"></param>
        /// <returns></returns>
        public async Task <dynamic> CreateMenuAsync(List <Menu> menus, MenuConditionParameter condition,
                                                    string accessToken)
        {
            var menuNode = menus.MenuBuild(condition);
            var response = await _client.ExecutePostRequest(
                WeChatHelper.GetWeChatApiDomain("/cgi-bin/menu/addconditional"),
                new Dictionary <string, string>
            {
                {
                    WeChatConstant.AccessToken, accessToken
                }
            }, menuNode.ToString());

            JObject root = JObject.Parse(response);

            WeChatHelper.CheckResponseStatus(root);
            return(root.ToObject <dynamic>());
        }
Exemplo n.º 3
0
        private static JObject MenuCondition(MenuConditionParameter condition)
        {
            JObject rule = new JObject();

            if (string.IsNullOrEmpty(condition.City) == false)
            {
                rule["city"] = condition.City;
            }

            if (string.IsNullOrEmpty(condition.Country) == false)
            {
                rule["province"] = condition.Country;
            }

            if (string.IsNullOrEmpty(condition.Lanuage) == false)
            {
                rule["language"] = condition.Lanuage;
            }

            if (string.IsNullOrEmpty(condition.Province) == false)
            {
                rule["province"] = condition.Province;
            }

            if (string.IsNullOrEmpty(condition.Sex) == false)
            {
                rule["sex"] = condition.Sex;
            }

            if (string.IsNullOrEmpty(condition.ClientPlatform) == false)
            {
                rule["client_platform_type"] = condition.ClientPlatform;
            }

            if (string.IsNullOrEmpty(condition.TagId) == false)
            {
                rule["tag_id"] = condition.TagId;
            }

            return(rule);
        }