Beispiel #1
0
 /// <summary>
 /// 获取词条排行分页集合
 /// </summary>
 /// <returns>词条分页列表</returns>
 public PagingDataSet <WikiPage> Gets(string keyWord, string tenantTypeId, long?ownerId = null, bool ignoreAudit = false, long?categoryId = null, string tagName = null, bool?isEssential = null, SortBy_WikiPage sortBy = SortBy_WikiPage.DateCreated_Desc, int pageSize = 20, int pageIndex = 1)
 {
     return(wikiPageRepository.Gets(keyWord, tenantTypeId, ownerId, ignoreAudit, categoryId, tagName, isEssential, sortBy, pageSize, pageIndex));
 }
Beispiel #2
0
        /// <summary>
        /// 增加用于首页的词条列表
        /// </summary>
        /// <returns></returns>
        public ActionResult _WikiIndex(int pageSize, int pageIndex, SortBy_WikiPage sortBy_WikiPage)
        {
            PagingDataSet <WikiPage> wikiPages = wikiService.Gets(TenantTypeIds.Instance().Wiki(), null, false, null, string.Empty, null, sortBy_WikiPage, pageSize, pageIndex);

            return(View(wikiPages));
        }
Beispiel #3
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="tenantTypeId"></param>
        /// <param name="topNumber"></param>
        /// <param name="categoryId"></param>
        /// <param name="isEssential"></param>
        /// <param name="sortBy"></param>
        /// <returns></returns>
        public IEnumerable <WikiPage> GetTopsForExtractEntry(string tenantTypeId, int topNumber, long?categoryId, bool?isEssential, SortBy_WikiPage sortBy)
        {
            IEnumerable <WikiPage> wikis  = wikiPageRepository.GetTops(tenantTypeId, topNumber, categoryId, isEssential, sortBy);
            IEnumerable <WikiPage> iwikis = wikis as IEnumerable <WikiPage>;

            return(iwikis);
        }
Beispiel #4
0
 /// <summary>
 /// 获取词条的排行数据
 /// </summary>
 /// <param name="tenantTypeId">租户类型Id</param>
 /// <param name="topNumber">前多少条</param>
 /// <param name="categoryId">类别Id</param>
 /// <param name="isEssential">是否精华</param>
 /// <param name="sortBy">词条排序依据</param>
 /// <returns>词条列表</returns>
 public IEnumerable <WikiPage> GetTops(string tenantTypeId, int topNumber, long?categoryId, bool?isEssential, SortBy_WikiPage sortBy)
 {
     return(wikiPageRepository.GetTops(tenantTypeId, topNumber, categoryId, isEssential, sortBy));
 }
Beispiel #5
0
        public static string _WikiIndex(this SiteUrls siteUrls, int pageSize, int pageIndex, SortBy_WikiPage sortBy_WikiPage)
        {
            RouteValueDictionary routeValueDictionary = new RouteValueDictionary();

            routeValueDictionary.Add("pageSize", pageSize);
            routeValueDictionary.Add("pageIndex", pageIndex);
            routeValueDictionary.Add("sortBy_WikiPage", sortBy_WikiPage);
            return(CachedUrlHelper.Action("_WikiIndex", "ChannelWiki", WikiAreaName, routeValueDictionary));
        }
Beispiel #6
0
        /// <summary>
        /// 获取词条排行分页集合
        /// </summary>
        /// <param name="tenantTypeId">租户类型Id</param>
        /// <param name="ignoreAudit">是否忽略审核状态</param>
        /// <param name="ownerId">所有者id</param>
        /// <param name="categoryId">类别Id</param>
        /// <param name="tagName">标签名称</param>
        /// <param name="isEssential">是否精华</param>
        /// <param name="sortBy">帖子排序依据</param>
        /// <param name="pageSize">分页大小</param>
        /// <param name="pageIndex">页码</param>
        /// <returns>词条分页列表</returns>
        public PagingDataSet <WikiPage> Gets(string keyWord, string tenantTypeId, long?ownerId, bool ignoreAudit, long?categoryId, string tagName, bool?isEssential, SortBy_WikiPage sortBy = SortBy_WikiPage.DateCreated_Desc, int pageSize = 20, int pageIndex = 1)
        {
            var sql      = Sql.Builder.Select("spb_WikiPages.*").From("spb_WikiPages");
            var whereSql = Sql.Builder.Where("spb_WikiPages.IsLogicalDelete=0");
            var orderSql = Sql.Builder;

            if (!string.IsNullOrEmpty(tenantTypeId))
            {
                whereSql.Where("spb_WikiPages.TenantTypeId=@0", tenantTypeId);
            }
            if (!string.IsNullOrEmpty(keyWord))
            {
                whereSql.Where("spb_WikiPages.Title like @0", "%" + keyWord + "%");
            }
            if (ownerId.HasValue)
            {
                whereSql.Where("spb_WikiPages.OwnerId=@0", ownerId.Value);
            }

            if (categoryId.HasValue && categoryId > 0)
            {
                sql.InnerJoin("tn_ItemsInCategories").On("spb_WikiPages.PageId=tn_ItemsInCategories.ItemId");
                whereSql.Where("tn_ItemsInCategories.CategoryId=@0", categoryId.Value);
            }

            if (!string.IsNullOrEmpty(tagName))
            {
                whereSql.Where("spb_WikiPages.PageId in ( select ItemId from tn_ItemsInTags where tn_ItemsInTags.TenantTypeId = @0 and tn_ItemsInTags.TagName=@1 )", TenantTypeIds.Instance().WikiPage(), tagName);
            }

            if (!ignoreAudit)
            {
                switch (this.PubliclyAuditStatus)
                {
                case PubliclyAuditStatus.Again:
                case PubliclyAuditStatus.Fail:
                case PubliclyAuditStatus.Pending:
                case PubliclyAuditStatus.Success:
                    whereSql.Where("spb_WikiPages.AuditStatus=@0", this.PubliclyAuditStatus);
                    break;

                case PubliclyAuditStatus.Again_GreaterThanOrEqual:
                case PubliclyAuditStatus.Pending_GreaterThanOrEqual:
                    whereSql.Where("spb_WikiPages.AuditStatus>@0", this.PubliclyAuditStatus);
                    break;

                default:
                    break;
                }
            }
            if (isEssential.HasValue)
            {
                whereSql.Where("spb_WikiPages.IsEssential=@0", isEssential.Value);
            }

            CountService countService   = new CountService(TenantTypeIds.Instance().WikiPage());
            string       countTableName = countService.GetTableName_Counts();

            switch (sortBy)
            {
            case SortBy_WikiPage.DateCreated_Desc:
                orderSql.OrderBy("spb_WikiPages.PageId desc");
                break;

            case SortBy_WikiPage.StageHitTimes:
                StageCountTypeManager stageCountTypeManager = StageCountTypeManager.Instance(TenantTypeIds.Instance().WikiPage());
                int    stageCountDays = stageCountTypeManager.GetMaxDayCount(CountTypes.Instance().HitTimes());
                string stageCountType = stageCountTypeManager.GetStageCountType(CountTypes.Instance().HitTimes(), stageCountDays);
                sql.LeftJoin(string.Format("(select * from {0} WHERE ({0}.CountType = '{1}')) c", countTableName, stageCountType))
                .On("PageId = c.ObjectId");
                orderSql.OrderBy("c.StatisticsCount desc");
                break;

            default:
                orderSql.OrderBy("spb_WikiPages.PageId desc");
                break;
            }

            sql.Append(whereSql).Append(orderSql);
            return(GetPagingEntities(pageSize, pageIndex, sql));
        }
Beispiel #7
0
        /// <summary>
        /// 获取词条的排行数据
        /// </summary>
        /// <param name="tenantTypeId">租户类型Id</param>
        /// <param name="topNumber">前多少条</param>
        /// <param name="categoryId">类别Id</param>
        /// <param name="isEssential">是否精华</param>
        /// <param name="sortBy">词条排序依据</param>
        /// <returns>词条列表</returns>
        public IEnumerable <WikiPage> GetTops(string tenantTypeId, int topNumber, long?categoryId, bool?isEssential, SortBy_WikiPage sortBy)
        {
            return(GetTopEntities(topNumber, CachingExpirationType.UsualObjectCollection,
                                  () =>
            {
                StringBuilder cacheKey = new StringBuilder();
                cacheKey.AppendFormat("WikiTops::TenantTypeId-{0}:CategoryId-{1}:IsEssential-{2}:SortBy-{3}", tenantTypeId, categoryId, isEssential, sortBy);
                return cacheKey.ToString();
            },
                                  () =>
            {
                var sql = Sql.Builder.Select("spb_WikiPages.*")
                          .From("spb_WikiPages");

                var whereSql = Sql.Builder.Where("spb_WikiPages.IsLogicalDelete=0");

                if (!string.IsNullOrEmpty(tenantTypeId))
                {
                    whereSql.Where("spb_WikiPages.TenantTypeId=@0", tenantTypeId);
                }

                if (categoryId.HasValue && categoryId > 0)
                {
                    sql.InnerJoin("tn_ItemsInCategories").On("spb_WikiPages.PageId=tn_ItemsInCategories.ItemId");
                    whereSql.Where("tn_ItemsInCategories.CategoryId=@0", categoryId.Value);
                }

                switch (this.PubliclyAuditStatus)
                {
                case PubliclyAuditStatus.Again:
                case PubliclyAuditStatus.Fail:
                case PubliclyAuditStatus.Pending:
                case PubliclyAuditStatus.Success:
                    whereSql.Where("spb_WikiPages.AuditStatus=@0", this.PubliclyAuditStatus);
                    break;

                case PubliclyAuditStatus.Again_GreaterThanOrEqual:
                case PubliclyAuditStatus.Pending_GreaterThanOrEqual:
                    whereSql.Where("spb_WikiPages.AuditStatus>@0", this.PubliclyAuditStatus);
                    break;

                default:
                    break;
                }
                if (isEssential.HasValue)
                {
                    whereSql.Where("spb_WikiPages.IsEssential=@0", isEssential);
                }

                var orderSql = Sql.Builder;

                CountService countService = new CountService(TenantTypeIds.Instance().WikiPage());
                string countTableName = countService.GetTableName_Counts();
                switch (sortBy)
                {
                case SortBy_WikiPage.DateCreated_Desc:
                    orderSql.OrderBy("spb_WikiPages.PageId desc");
                    break;

                case SortBy_WikiPage.StageHitTimes:
                    StageCountTypeManager stageCountTypeManager = StageCountTypeManager.Instance(TenantTypeIds.Instance().WikiPage());
                    int stageCountDays = stageCountTypeManager.GetMaxDayCount(CountTypes.Instance().HitTimes());
                    string stageCountType = stageCountTypeManager.GetStageCountType(CountTypes.Instance().HitTimes(), stageCountDays);
                    sql.LeftJoin(string.Format("(select * from {0} WHERE ({0}.CountType = '{1}')) c", countTableName, stageCountType))
                    .On("PageId = c.ObjectId");
                    orderSql.OrderBy("c.StatisticsCount desc");
                    break;

                default:
                    orderSql.OrderBy("spb_WikiPages.PageId desc");
                    break;
                }
                return sql.Append(whereSql).Append(orderSql);
            }));
        }