/// <summary>
        /// 根据城市ID获取县区数据列表
        /// </summary>
        /// <param name="cityId">
        /// The city id.
        /// </param>
        /// <returns>
        /// 返回查询结果
        /// </returns>
        public static IList<County> GetCountiesByCityID(int cityId)
        {
            if (cityId < 1)
            {
                return new List<County>();
            }

            var mongoDbStore = new MongoDbStore<County>("Counties");
            var queries = mongoDbStore.List(c => c.CityID == cityId);
            if (queries == null)
            {
                return new List<County>();
            }

            return queries.ToList();
        }
        /// <summary>
        /// The generate limited buy area.
        /// </summary>
        /// <returns>
        /// The <see cref="string"/>.
        /// </returns>
        private string GenerateLimitedBuyArea()
        {
            int pageCount;

            var mongoDbHelperForProvince = new MongoDbStore<Province>("Provinces");
            var mongoDbHelperForCity = new MongoDbStore<City>("Cities");
            var mongoDbHelperForCounty = new MongoDbStore<County>("Counties");

            var provinces = mongoDbHelperForProvince.List(1, 34, province => province.ID != 0, out pageCount);
            var cities = mongoDbHelperForCity.List(1, 346, city => city.ID != 0, out pageCount);
            var counties = mongoDbHelperForCounty.List(1, 2976, county => county.ID != 0, out pageCount);

            var province1 = new List<string> { "北京", "上海", "天津", "重庆", "河北" };
            var province2 = new List<string> { "山西", "河南", "辽宁", "吉林", "黑龙江" };
            var province3 = new List<string> { "内蒙古", "江苏", "山东", "安徽", "浙江" };
            var province4 = new List<string> { "福建", "湖北", "湖南", "广东", "广西" };
            var province5 = new List<string> { "江西", "四川", "海南", "贵州", "云南" };
            var province6 = new List<string> { "西藏", "陕西", "甘肃", "青海", "宁夏" };
            var province7 = new List<string> { "新疆", "台湾", "香港", "澳门" };

            var stringBuilder = new StringBuilder();

            stringBuilder.Append("<div class='smc'>");

            #region Generate Province One Html

            stringBuilder.Append("<div class='item'>");

            for (var i = 0; i < 5; i++)
            {
                var provinceName = province1[i];
                if (string.IsNullOrEmpty(provinceName))
                {
                    continue;
                }

                stringBuilder.Append(
                    i < 2
                        ? "<div class='i-item' data-widget='area'>"
                        : "<div class='i-item right' data-widget='area'>");

                var province = provinces.Find(item => item.Name == provinceName);
                if (province != null)
                {
                    stringBuilder.Append(string.Format("<div class='province' title='{0}'>", provinceName));
                    stringBuilder.Append(string.Format("<div data-widget='area-check' data-id='{0}' class='input selected'>", province.ID));
                    stringBuilder.Append("<span>√</span>");
                    stringBuilder.Append("</div>");
                    stringBuilder.Append(string.Format("{0} (<span class='red' data-widget='area-num'>0</span>)<em></em>", provinceName));
                    stringBuilder.Append("</div>");

                    var cityList = cities.Where(item => item.ProvinceID == province.ID).ToList();
                    if (cityList.Count > 0)
                    {
                        if (cityList.Count == 1)
                        {
                            var countyList = counties.Where(item => item.CityID == cityList[0].ID);

                            stringBuilder.Append("<div class='city'><ul>");
                            foreach (var county in countyList)
                            {
                                stringBuilder.Append(string.Format("<li title='{0}'>", county.Name));
                                stringBuilder.Append(
                                    string.Format(
                                        "<input checked='checked' data-widget='area-list' autocomplete='off' data-id='{0}' type='checkbox'>{1}",
                                        county.ID,
                                        county.Name));
                                stringBuilder.Append(string.Format("</li>"));
                            }

                            stringBuilder.Append("</ul></div>");
                        }
                        else
                        {
                            stringBuilder.Append("<div class='city'><ul>");
                            foreach (var city in cityList)
                            {
                                stringBuilder.Append(string.Format("<li title='{0}'>", city.Name));
                                stringBuilder.Append(string.Format("<input checked='checked' data-widget='area-list' autocomplete='off' data-id='{0}' type='checkbox'>{1}", city.ID, city.Name));
                                stringBuilder.Append(string.Format("</li>"));
                            }

                            stringBuilder.Append("</ul></div>");
                        }
                    }
                }

                stringBuilder.Append("</div>");
            }

            stringBuilder.Append("</div>");

            #endregion

            stringBuilder.AppendLine();

            #region Generate Province Two Html

            stringBuilder.Append("<div class='item'>");

            for (var i = 0; i < 5; i++)
            {
                var provinceName = province2[i];
                if (string.IsNullOrEmpty(provinceName))
                {
                    continue;
                }

                stringBuilder.Append(
                    i < 2
                        ? "<div class='i-item' data-widget='area'>"
                        : "<div class='i-item right' data-widget='area'>");

                var province = provinces.Find(item => item.Name == provinceName);
                if (province != null)
                {
                    stringBuilder.Append(string.Format("<div class='province' title='{0}'>", provinceName));
                    stringBuilder.Append(string.Format("<div data-widget='area-check' data-id='{0}' class='input selected'>", province.ID));
                    stringBuilder.Append("<span>√</span>");
                    stringBuilder.Append("</div>");
                    stringBuilder.Append(string.Format("{0} (<span class='red' data-widget='area-num'>0</span>)<em></em>", provinceName));
                    stringBuilder.Append("</div>");

                    var cityList = cities.Where(item => item.ProvinceID == province.ID).ToList();
                    if (cityList.Count > 0)
                    {
                        stringBuilder.Append("<div class='city'><ul>");
                        foreach (var city in cityList)
                        {
                            stringBuilder.Append(string.Format("<li title='{0}'>", city.Name));
                            stringBuilder.Append(string.Format("<input checked='checked' data-widget='area-list' autocomplete='off' data-id='{0}' type='checkbox'>{1}", city.ID, city.Name));
                            stringBuilder.Append(string.Format("</li>"));
                        }

                        stringBuilder.Append("</ul></div>");
                    }
                }

                stringBuilder.Append("</div>");
            }

            stringBuilder.Append("</div>");

            #endregion

            stringBuilder.AppendLine();

            #region Generate Province Three Html

            stringBuilder.Append("<div class='item'>");

            for (var i = 0; i < 5; i++)
            {
                var provinceName = province3[i];
                if (string.IsNullOrEmpty(provinceName))
                {
                    continue;
                }

                stringBuilder.Append(
                    i < 2
                        ? "<div class='i-item' data-widget='area'>"
                        : "<div class='i-item right' data-widget='area'>");

                var province = provinces.Find(item => item.Name == provinceName);
                if (province != null)
                {
                    stringBuilder.Append(string.Format("<div class='province' title='{0}'>", provinceName));
                    stringBuilder.Append(string.Format("<div data-widget='area-check' data-id='{0}' class='input selected'>", province.ID));
                    stringBuilder.Append("<span>√</span>");
                    stringBuilder.Append("</div>");
                    stringBuilder.Append(string.Format("{0} (<span class='red' data-widget='area-num'>0</span>)<em></em>", provinceName));
                    stringBuilder.Append("</div>");

                    var cityList = cities.Where(item => item.ProvinceID == province.ID).ToList();
                    if (cityList.Count > 0)
                    {
                        stringBuilder.Append("<div class='city'><ul>");
                        foreach (var city in cityList)
                        {
                            stringBuilder.Append(string.Format("<li title='{0}'>", city.Name));
                            stringBuilder.Append(string.Format("<input checked='checked' data-widget='area-list' autocomplete='off' data-id='{0}' type='checkbox'>{1}", city.ID, city.Name));
                            stringBuilder.Append(string.Format("</li>"));
                        }

                        stringBuilder.Append("</ul></div>");
                    }
                }

                stringBuilder.Append("</div>");
            }

            stringBuilder.Append("</div>");

            #endregion

            stringBuilder.AppendLine();

            #region Generate Province Four Html

            stringBuilder.Append("<div class='item'>");

            for (var i = 0; i < 5; i++)
            {
                var provinceName = province4[i];
                if (string.IsNullOrEmpty(provinceName))
                {
                    continue;
                }

                stringBuilder.Append(
                    i < 2
                        ? "<div class='i-item' data-widget='area'>"
                        : "<div class='i-item right' data-widget='area'>");

                var province = provinces.Find(item => item.Name == provinceName);
                if (province != null)
                {
                    stringBuilder.Append(string.Format("<div class='province' title='{0}'>", provinceName));
                    stringBuilder.Append(string.Format("<div data-widget='area-check' data-id='{0}' class='input selected'>", province.ID));
                    stringBuilder.Append("<span>√</span>");
                    stringBuilder.Append("</div>");
                    stringBuilder.Append(string.Format("{0} (<span class='red' data-widget='area-num'>0</span>)<em></em>", provinceName));
                    stringBuilder.Append("</div>");

                    var cityList = cities.Where(item => item.ProvinceID == province.ID).ToList();
                    if (cityList.Count > 0)
                    {
                        stringBuilder.Append("<div class='city'><ul>");
                        foreach (var city in cityList)
                        {
                            stringBuilder.Append(string.Format("<li title='{0}'>", city.Name));
                            stringBuilder.Append(string.Format("<input checked='checked' data-widget='area-list' autocomplete='off' data-id='{0}' type='checkbox'>{1}", city.ID, city.Name));
                            stringBuilder.Append(string.Format("</li>"));
                        }

                        stringBuilder.Append("</ul></div>");
                    }
                }

                stringBuilder.Append("</div>");
            }

            stringBuilder.Append("</div>");

            #endregion

            stringBuilder.AppendLine();

            #region Generate Province Five Html

            stringBuilder.Append("<div class='item'>");

            for (var i = 0; i < 5; i++)
            {
                var provinceName = province5[i];
                if (string.IsNullOrEmpty(provinceName))
                {
                    continue;
                }

                stringBuilder.Append(
                    i < 2
                        ? "<div class='i-item' data-widget='area'>"
                        : "<div class='i-item right' data-widget='area'>");

                var province = provinces.Find(item => item.Name == provinceName);
                if (province != null)
                {
                    stringBuilder.Append(string.Format("<div class='province' title='{0}'>", provinceName));
                    stringBuilder.Append(string.Format("<div data-widget='area-check' data-id='{0}' class='input selected'>", province.ID));
                    stringBuilder.Append("<span>√</span>");
                    stringBuilder.Append("</div>");
                    stringBuilder.Append(string.Format("{0} (<span class='red' data-widget='area-num'>0</span>)<em></em>", provinceName));
                    stringBuilder.Append("</div>");

                    var cityList = cities.Where(item => item.ProvinceID == province.ID).ToList();
                    if (cityList.Count > 0)
                    {
                        stringBuilder.Append("<div class='city'><ul>");
                        foreach (var city in cityList)
                        {
                            stringBuilder.Append(string.Format("<li title='{0}'>", city.Name));
                            stringBuilder.Append(string.Format("<input checked='checked' data-widget='area-list' autocomplete='off' data-id='{0}' type='checkbox'>{1}", city.ID, city.Name));
                            stringBuilder.Append(string.Format("</li>"));
                        }

                        stringBuilder.Append("</ul></div>");
                    }
                }

                stringBuilder.Append("</div>");
            }

            stringBuilder.Append("</div>");

            #endregion

            stringBuilder.AppendLine();

            #region Generate Province Six Html

            stringBuilder.Append("<div class='item'>");

            for (var i = 0; i < 5; i++)
            {
                var provinceName = province6[i];
                if (string.IsNullOrEmpty(provinceName))
                {
                    continue;
                }

                stringBuilder.Append(
                    i < 2
                        ? "<div class='i-item' data-widget='area'>"
                        : "<div class='i-item right' data-widget='area'>");

                var province = provinces.Find(item => item.Name == provinceName);
                if (province != null)
                {
                    stringBuilder.Append(string.Format("<div class='province' title='{0}'>", provinceName));
                    stringBuilder.Append(string.Format("<div data-widget='area-check' data-id='{0}' class='input selected'>", province.ID));
                    stringBuilder.Append("<span>√</span>");
                    stringBuilder.Append("</div>");
                    stringBuilder.Append(string.Format("{0} (<span class='red' data-widget='area-num'>0</span>)<em></em>", provinceName));
                    stringBuilder.Append("</div>");

                    var cityList = cities.Where(item => item.ProvinceID == province.ID).ToList();
                    if (cityList.Count > 0)
                    {
                        stringBuilder.Append("<div class='city'><ul>");
                        foreach (var city in cityList)
                        {
                            stringBuilder.Append(string.Format("<li title='{0}'>", city.Name));
                            stringBuilder.Append(string.Format("<input checked='checked' data-widget='area-list' autocomplete='off' data-id='{0}' type='checkbox'>{1}", city.ID, city.Name));
                            stringBuilder.Append(string.Format("</li>"));
                        }

                        stringBuilder.Append("</ul></div>");
                    }
                }

                stringBuilder.Append("</div>");
            }

            stringBuilder.Append("</div>");

            #endregion

            stringBuilder.AppendLine();

            #region Generate Province Seven Html

            stringBuilder.Append("<div class='item'>");

            for (var i = 0; i < 4; i++)
            {
                var provinceName = province7[i];
                if (string.IsNullOrEmpty(provinceName))
                {
                    continue;
                }

                stringBuilder.Append(
                    i < 2
                        ? "<div class='i-item' data-widget='area'>"
                        : "<div class='i-item right' data-widget='area'>");

                var province = provinces.Find(item => item.Name == provinceName);
                if (province != null)
                {
                    stringBuilder.Append(string.Format("<div class='province' title='{0}'>", provinceName));
                    stringBuilder.Append(string.Format("<div data-widget='area-check' data-id='{0}' class='input selected'>", province.ID));
                    stringBuilder.Append("<span>√</span>");
                    stringBuilder.Append("</div>");
                    stringBuilder.Append(string.Format("{0} (<span class='red' data-widget='area-num'>0</span>)<em></em>", provinceName));
                    stringBuilder.Append("</div>");

                    var cityList = cities.Where(item => item.ProvinceID == province.ID).ToList();
                    if (cityList.Count > 0)
                    {
                        stringBuilder.Append("<div class='city'><ul>");
                        foreach (var city in cityList)
                        {
                            stringBuilder.Append(string.Format("<li title='{0}'>", city.Name));
                            stringBuilder.Append(string.Format("<input checked='checked' data-widget='area-list' autocomplete='off' data-id='{0}' type='checkbox'>{1}", city.ID, city.Name));
                            stringBuilder.Append(string.Format("</li>"));
                        }

                        stringBuilder.Append("</ul></div>");
                    }
                }

                stringBuilder.Append("</div>");
            }

            stringBuilder.Append("</div>");

            #endregion

            stringBuilder.Append("</div>");

            return stringBuilder.ToString();
        }
        /// <summary>
        /// The query cities.
        /// </summary>
        /// <param name="provinceID">
        /// The Province ID.
        /// </param>
        /// <returns>
        /// The <see cref="JsonResult"/>.
        /// </returns>
        public static IList<City> QueryCities(int provinceID)
        {
            var mongoDbHelper = new MongoDbStore<City>("Cities");

            var list = mongoDbHelper.List(c => c.ProvinceID == provinceID);
            if (list == null)
            {
                return new List<City>();
            }

            return list.ToList();
        }
 /// <summary>
 /// The get resource.
 /// </summary>
 public static IList<System_Resources> GetResource()
 {
     var mongoDbStore = new MongoDbStore<System_Resources>("Resources");
     var list = mongoDbStore.List(i => i.Key.Contains("picture"));
     return list;
 }
        /// <summary>
        /// The query provinces.
        /// </summary>
        /// <returns>
        /// The <see cref="JsonResult"/>.
        /// </returns>
        public static IList<Province> QueryProvinces()
        {
            var mongoDbHelper = new MongoDbStore<Province>("Provinces");
            var list = mongoDbHelper.List(p => p.ID != 0);

            return list == null ? new List<Province>() : list.ToList();
        }
        /// <summary>
        /// The query counties.
        /// </summary>
        /// <param name="cityID">
        /// The city id.
        /// </param>
        /// <returns>
        /// The <see cref="JsonResult"/>.
        /// </returns>
        public JsonResult QueryCounties(string cityID)
        {
            var mongoDbHelper = new MongoDbStore<County>("Counties");

            int pageCount;
            var list = mongoDbHelper.List(1, 2976, county => county.ID != 0, out pageCount);
            if (list == null)
            {
                return this.Json(null);
            }

            var result = list.Where(item => item.CityID == Convert.ToInt32(cityID));
            return this.Json(result, JsonRequestBehavior.AllowGet);
        }
        /// <summary>
        /// The validate right.
        /// </summary>
        /// <param name="resourceKey">
        /// The resource key.
        /// </param>
        /// <param name="permissions">
        /// The permissions.
        /// </param>
        /// <returns>
        /// The <see cref="bool"/>.
        /// </returns>
        public bool ValidateRight(string resourceKey, string permissions)
        {
            if (string.IsNullOrWhiteSpace(permissions) || string.IsNullOrWhiteSpace(resourceKey))
            {
                return false;
            }

            try
            {
                var resources = new MongoDbStore<System_Resources>("Resources");
                var list = resources.List(i => i.ID > 0);
                var resource = list.FirstOrDefault(item => item.Key == resourceKey);

                if (resource == null || resource.Code == null)
                {
                    return true;
                }

                return resource.Position <= permissions.Length && permissions.Substring(resource.Position, 1).Equals("1");
            }
            catch (Exception exception)
            {
                LogUtils.SystemTrace(
                    string.Format("判断权限出错了,ResourceKey = {0},错误信息:{1}", resourceKey, exception.Message),
                    "ValidateRight",
                    Category.Fatal,
                    "",
                    10,
                    "判断权限");
                throw;
            }
        }