Example #1
0
        public SearchModel(string keyword, ThemeSortOption sort, int pageIndex, int pageSize)
        {
            Keyword = keyword;
            Sort = sort;
            PageIndex = pageIndex;
            PageSize = pageSize;

            int recordCount = 0;

            Themes = _themeRepository.SearchThemes(Keyword, sort, pageIndex, pageSize, ref recordCount);
            RecordCount = recordCount;

            //计算当前的页面地址
            StringBuilder sbUrlPattern = new StringBuilder();
            sbUrlPattern.Append("/search/");
            sbUrlPattern.Append("{1}/");
            sbUrlPattern.Append(keyword);
            sbUrlPattern.Append("/");
            sbUrlPattern.Append("{0}");
            UrlPatternWithoutSort = sbUrlPattern.ToString();
            UrlPatternWithoutPageIndex = string.Format(UrlPatternWithoutSort, "{0}", Sort.ToString().ToLower());
        }
 /// <summary>
 /// 获取符何指定过滤器条件的主题列表
 /// </summary>
 /// <param name="filter">过滤器</param>
 /// <param name="sort">排序方式</param>
 /// <param name="pageIndex">显示的页码,从1开始计数</param>
 /// <param name="pageSize">每页显示的记录数</param>
 /// <param name="recordCount">总记录数(ref)</param>
 /// <returns></returns>
 protected override List<SimpleThemeView> GetSimpleThemes(ThemesFilter filter, ThemeSortOption sort, int pageIndex, int pageSize, ref int recordCount)
 {
     List<SimpleThemeView> themes;
     string cacheKey = BuildCacheKey("GetSimpleThemes", filter.ToString(), sort.ToString(), pageIndex, pageSize);
     string cacheKeyOfRecordCount = BuildCacheKey("GetSimpleThemes", filter.ToString(), sort.ToString(), pageSize);
     if (_enableCache == false)
     {
         themes = base.GetSimpleThemes(filter, sort, pageIndex, pageSize, ref recordCount);
         _enableCache = true;
     }
     else
     {
         if (CacheHelper.Contains(cacheKeyOfRecordCount))
         {
             recordCount = CacheHelper.Get<int>(cacheKeyOfRecordCount);
         }
         if (CacheHelper.Contains(cacheKey))
         {
             themes = CacheHelper.Get<List<SimpleThemeView>>(cacheKey);
         }
         else
         {
             themes = base.GetSimpleThemes(filter, sort, pageIndex, pageSize, ref recordCount);
             CacheHelper.Set<List<SimpleThemeView>>(cacheKey, themes, _cacheTime);
             CacheHelper.Set<int>(cacheKeyOfRecordCount, recordCount, _cacheTime);
         }
     }
     return themes;
 }
 /// <summary>
 /// 获取符何指定过滤器条件的主题列表
 /// </summary>
 /// <param name="filter">过滤器</param>
 /// <param name="sort">排序方式</param>
 /// <param name="dispayNumber">提取条数</param>
 /// <returns></returns>
 protected override List<FullThemeView> GetFullThemes(ThemesFilter filter, ThemeSortOption sort, int dispayNumber)
 {
     List<FullThemeView> themes;
     string cacheKey = BuildCacheKey("GetFullThemes", filter.ToString(), sort.ToString(), dispayNumber);
     if (_enableCache == false)
     {
         themes = base.GetFullThemes(filter, sort, dispayNumber);
         _enableCache = true;
     }
     else
     {
         if (CacheHelper.Contains(cacheKey))
         {
             themes = CacheHelper.Get<List<FullThemeView>>(cacheKey);
         }
         else
         {
             themes = base.GetFullThemes(filter, sort, dispayNumber);
             CacheHelper.Set<List<FullThemeView>>(cacheKey, themes, _cacheTime);
         }
     }
     return themes;
 }
 /// <summary>
 /// 获取符何指定过滤器条件的主题列表
 /// </summary>
 /// <param name="filter">过滤器</param>
 /// <param name="sort">排序方式</param>
 /// <param name="pageIndex">显示的页码,从1开始计数</param>
 /// <param name="pageSize">每页显示的记录数</param>
 /// <param name="recordCount">总记录数(ref)</param>
 /// <returns></returns>
 protected virtual List<SimpleThemeView> GetSimpleThemes(ThemesFilter filter, ThemeSortOption sort, int pageIndex, int pageSize, ref int recordCount)
 {
     SqlParameter[] parameters = new SqlParameter[]
     {
         SqlParameterHelper.BuildParameter("@RecordNum",SqlDbType.Int, 4, ParameterDirection.InputOutput, recordCount),
         SqlParameterHelper.BuildInputParameter("@SelectList",SqlDbType.NVarChar,2000, SIMPLE_THEME_FIELDS),
         SqlParameterHelper.BuildInputParameter("@TableSource",SqlDbType.NVarChar,300, GetDataViewName(filter, sort)),
         SqlParameterHelper.BuildInputParameter("@SearchCondition",SqlDbType.NVarChar,2000, filter.ToString()),
         SqlParameterHelper.BuildInputParameter("@OrderExpression",SqlDbType.NVarChar,1000, GetSortExpression(sort)),
         SqlParameterHelper.BuildInputParameter("@PageSize",SqlDbType.Int,4,pageSize),
         SqlParameterHelper.BuildInputParameter("@PageIndex",SqlDbType.Int,4,pageIndex)
     };
     List<SimpleThemeView> themes = new List<SimpleThemeView>();
     using (IDataReader dataReader = SqlHelper.ExecuteReader(_connectionProvider.GetReadConnectionString(), CommandType.StoredProcedure, "PR_GetDataByPageIndex", parameters))
     {
         while (dataReader.Read())
         {
             themes.Add(BindSimpleThemeView(dataReader));
         }
     }
     recordCount = Convert.ToInt32(parameters[0].Value);
     return themes;
 }
 /// <summary>
 /// 获取排序子句,不带"Order By"前缀
 /// </summary>
 /// <param name="sort"></param>
 /// <returns></returns>
 protected virtual string GetSortExpression(ThemeSortOption sort)
 {
     switch (sort)
     {
         case ThemeSortOption.New:
             return "UpdateTime DESC";
         case ThemeSortOption.Popular:
             return "Downloads DESC";
         case ThemeSortOption.Rank_Of_Month:
             return "LastMonthDownloads DESC";
         case ThemeSortOption.Rank_Of_Week:
             return "LastWeekDownloads DESC";
         case ThemeSortOption.TagSort:
             return "TagSortNumber DESC,AddTime DESC";
         case ThemeSortOption.Recommended:
             return "CommendIndex DESC,AddTime DESC";
         case ThemeSortOption.Rating:
             return "CommendIndex DESC,RateScore DESC";
         default:
             return "ThemeId DESC";
     }
 }
 /// <summary>
 /// 获取符何指定过滤器条件的主题列表
 /// </summary>
 /// <param name="filter">过滤器</param>
 /// <param name="sort">排序方式</param>
 /// <param name="dispayNumber">提取条数</param>
 /// <returns></returns>
 protected virtual List<FullThemeView> GetFullThemes(ThemesFilter filter, ThemeSortOption sort, int dispayNumber)
 {
     List<FullThemeView> themes = new List<FullThemeView>();
     string sortExpression = GetSortExpression(sort);
     string cmdText = string.Format("SELECT top {3} * FROM {0} Where {1} {2}"
         , GetDataViewName(filter, sort)
         , filter.ToString()
         , sortExpression.Length > 0 ? " ORDER BY " + sortExpression : ""
         , dispayNumber
         );
     using (IDataReader reader = SqlHelper.ExecuteReader(_connectionProvider.GetReadConnectionString(), CommandType.Text, cmdText))
     {
         while (reader.Read())
         {
             themes.Add(BindFullThemeView(reader));
         }
     }
     return themes;
 }
 /// <summary>
 /// 获取符何指定过滤器条件的主题列表
 /// </summary>
 /// <param name="filter">过滤器</param>
 /// <param name="sort">排序方式</param>
 /// <param name="dispayNumber">提取条数</param>
 /// <returns></returns>
 protected List<SimpleThemeView> GetSimpleThemes(ThemesFilter filter, ThemeSortOption sort, int dispayNumber)
 {
     return GetSimpleThemes(GetDataViewName(filter, sort), filter.ToString(), GetSortExpression(sort), dispayNumber);
 }
Example #8
0
        public ListModel(int fw, int categoryId, string categoryName, string tagNames, ThemeSortOption sort, int pageIndex, int pageSize)
        {
            FrameworkVersion = fw;
            CategoryId = categoryId;
            CategoryName = categoryName;
            TagNames = tagNames;
            Sort = sort;
            PageIndex = pageIndex;
            PageSize = pageSize;

            ThemesFilter filter = _themeRepository.Filter;
            if (fw > 0)
            {
                filter.SupportIPhone4 = true;
            }
            if (CategoryId > 0)
            {
                filter.CategoryIds.Add(categoryId);
            }
            int recordCount = 0;
            if (!string.IsNullOrEmpty(tagNames))
            {
                List<List<string>> tagsFilter = new List<List<string>>();
                string[] arrAndTags = Regex.Split(tagNames, "-");
                foreach (string andTags in arrAndTags)
                {
                    List<string> tags = new List<string>();
                    string[] arrOrTags = andTags.Split(',');
                    foreach (string orTag in arrOrTags)
                    {
                        tags.Add(orTag);
                    }
                    tagsFilter.Add(tags);
                }
                Themes = _themeRepository.GetThemesByMultiTags(tagsFilter, filter, sort, pageIndex, pageSize, ref recordCount);
            }
            else
            {
                Themes = _themeRepository.GetThemesByFilter(filter, sort, pageIndex, pageSize, ref recordCount);
            }
            RecordCount = recordCount;

            //计算当前的页面地址
            StringBuilder sbUrlPattern = new StringBuilder();
            if (this.FrameworkVersion == 4)
            {
                sbUrlPattern.Append("/iphone-4-themes/");
            }
            else
            {
                sbUrlPattern.Append("/list/");
            }
            sbUrlPattern.Append("{1}");
            sbUrlPattern.Append("/");
            if (CategoryId > 0)
            {
                sbUrlPattern.AppendFormat("{0}_{1}/", CategoryName, CategoryId);
            }
            sbUrlPattern.Append("{0}");
            UrlPatternWithouTags = string.Format(sbUrlPattern.ToString(), pageIndex, Sort.ToString().ToLower()) + "/";
            if (!string.IsNullOrEmpty(TagNames))
            {
                sbUrlPattern.Append("/");
                sbUrlPattern.Append(tagNames);
            }
            UrlPatternWithoutSort = sbUrlPattern.ToString();
            UrlPatternWithoutPageIndex = string.Format(UrlPatternWithoutSort, "{0}", Sort.ToString().ToLower());
        }
 /// <summary>
 /// 根据过滤器和排序条件获取对应的视图名称
 /// </summary>
 /// <param name="filter">过滤器</param>
 /// <param name="sort">排序</param>
 /// <returns></returns>
 protected virtual string GetDataViewName(ThemesFilter filter, ThemeSortOption sort)
 {
     if (filter.TagIds.Count > 0 || sort == ThemeSortOption.TagSort)
     {
         return VIEW_TAGTHEME;
     }
     return VIEW_THEME;
 }
Example #10
0
        }

        /// <summary>
        /// 搜索主题
        /// </summary>
        /// <param name="keyword">主题名称关键字</param>
        /// <param name="sort">排序方式</param>
        /// <param name="pageIndex">显示的页码,从1开始计数</param>
        /// <param name="pageSize">每页显示的记录数</param>
        /// <param name="recordCount">总记录数(ref)</param>
        /// <returns></returns>
        public List<SimpleThemeView> SearchThemes(string keyword, ThemeSortOption sort, int pageIndex, int pageSize, ref int recordCount)
        {
            ThemesFilter filter = _filter.Clone();
            filter.SearchKeyword = keyword;
Example #11
0
 /// <summary>
 /// 根据过滤器获取所有主题(完整实体)
 /// </summary>
 /// <param name="filter">过滤器</param>
 /// <param name="sort">排序方式</param>
 /// <param name="pageIndex">显示的页码,从1开始计数</param>
 /// <param name="pageSize">每页显示的记录数</param>
 /// <param name="recordCount">总记录数(ref)</param>
 /// <returns></returns>
 public List<FullThemeView> GetFullThemesByFilter(ThemesFilter filter, ThemeSortOption sort, int pageIndex, int pageSize, ref int recordCount)
 {
     return GetFullThemes(filter, sort, pageIndex, pageSize, ref recordCount);
 }
Example #12
0
        }

        /// <summary>
        /// 根据分类id获取主题列表
        /// </summary>
        /// <param name="parentCategoryId">父级分类id</param>
        /// <param name="sort">排序方式</param>
        /// <param name="pageIndex">显示的页码,从1开始计数</param>
        /// <param name="pageSize">每页显示的记录数</param>
        /// <param name="recordCount">总记录数(ref)</param>
        /// <returns></returns>
        public List<SimpleThemeView> GetThemesByParentCategoryId(int parentCategoryId, ThemeSortOption sort, int pageIndex, int pageSize, ref int recordCount)
        {
            ThemesFilter filter = _filter.Clone();
            filter.ParentCategoryIds.Add(parentCategoryId);
Example #13
0
        }

        /// <summary>
        /// 根据分类id获取主题列表
        /// </summary>
        /// <param name="parentCategoryId">父级分类id</param>
        /// <param name="sort">排序方式</param>
        /// <param name="displayNumber">显示条数</param>
        /// <returns></returns>
        public List<SimpleThemeView> GetThemesByParentCategoryId(int parentCategoryId, ThemeSortOption sort, int displayNumber)
        {
            ThemesFilter filter = _filter.Clone();
            filter.ParentCategoryIds.Add(parentCategoryId);
Example #14
0
        }

        /// <summary>
        /// 根据多种组合的标签名称获取主题列表
        /// </summary>
        /// <param name="tags">组合的标签列表</param>
        /// <param name="filter">过滤器</param>
        /// <param name="sort">排序方式</param>
        /// <param name="pageIndex">显示的页码,从1开始计数</param>
        /// <param name="pageSize">每页显示的记录数</param>
        /// <param name="recordCount">总记录数(ref)</param>
        /// <returns></returns>
        public List<SimpleThemeView> GetThemesByMultiTags(List<List<string>> tags, ThemesFilter filter, ThemeSortOption sort, int pageIndex, int pageSize, ref int recordCount)
        {
            if (tags.Count > 0)
            {
                StringBuilder sbInnerSql = new StringBuilder();
                for (int i = 0; i < tags.Count; i++)
                {
                    if (i > 0)
                    {
                        sbInnerSql.Append(" INNER JOIN ");
                    }
                    sbInnerSql.AppendFormat("(SELECT ThemeId FROM dbo.View_TagTheme WHERE 1=1 {0} GROUP BY ThemeId) T{1}", SqlConditionBuilder.GetMultiQueryValues("TagName", tags[i]), i+1);
                    if (i > 0)
                    {
                        sbInnerSql.AppendFormat(" ON T{0}.ThemeId = T{1}.ThemeId", i, i+1);
                    }
                }
                string searchCondition = string.Format("{0} AND ThemeId in (SELECT T1.ThemeId FROM {1})", filter.ToString(), sbInnerSql.ToString());
                SqlParameter[] parameters = new SqlParameter[]
                {
                    SqlParameterHelper.BuildParameter("@RecordNum",SqlDbType.Int, 4, ParameterDirection.InputOutput, recordCount),
                    SqlParameterHelper.BuildInputParameter("@SelectList",SqlDbType.VarChar,2000, SIMPLE_THEME_FIELDS),
                    SqlParameterHelper.BuildInputParameter("@TableSource",SqlDbType.VarChar,300, "View_Theme"),
                    SqlParameterHelper.BuildInputParameter("@SearchCondition",SqlDbType.VarChar,2000, searchCondition),
                    SqlParameterHelper.BuildInputParameter("@OrderExpression",SqlDbType.VarChar,1000, GetSortExpression(sort)),
                    SqlParameterHelper.BuildInputParameter("@PageSize",SqlDbType.Int,4,pageSize),
                    SqlParameterHelper.BuildInputParameter("@PageIndex",SqlDbType.Int,4,pageIndex)
                };
                List<SimpleThemeView> themes = new List<SimpleThemeView>();
                using (IDataReader dataReader = SqlHelper.ExecuteReader(_connectionProvider.GetReadConnectionString(), CommandType.StoredProcedure, "PR_GetDataByPageIndex", parameters))
                {
                    while (dataReader.Read())
                    {
                        themes.Add(BindSimpleThemeView(dataReader));
                    }
                }
                recordCount = Convert.ToInt32(parameters[0].Value);
                return themes;
            }
Example #15
0
        }

        /// <summary>
        /// 根据过滤器获取所有主题
        /// </summary>
        /// <param name="filter">过滤器</param>
        /// <param name="sort">排序方式</param>
        /// <param name="displayNumber">显示条数</param>
        /// <returns></returns>
        public List<SimpleThemeView> GetThemesByFilter(ThemesFilter filter, ThemeSortOption sort, int displayNumber)
        {
Example #16
0
        }

        /// <summary>
        /// 获取主题列表
        /// </summary>
        /// <param name="sort">排序方式</param>
        /// <param name="pageIndex">显示的页码,从1开始计数</param>
        /// <param name="pageSize">每页显示的记录数</param>
        /// <param name="recordCount">总记录数(ref)</param>
        /// <returns></returns>
        public List<SimpleThemeView> GetThemes(ThemeSortOption sort, int pageIndex, int pageSize, ref int recordCount)
        {