コード例 #1
0
 /// <summary>
 /// 根据不同条件分页获取问题列表(用于前台)
 /// </summary>
 /// <remarks>
 /// 缓存周期:常用对象集合,不用维护即时性
 /// </remarks>
 /// <param name="tenantTypeId">租户类型id</param>
 /// <param name="tagName">标签</param>
 /// <param name="status">问题状态</param>
 /// <param name="isEssential">是否精华</param>
 /// <param name="sortBy">排序条件</param>
 /// <param name="pageSize">分页大小</param>
 /// <param name="pageIndex">页码</param>
 /// <returns>问题分页列表</returns>
 public PagingDataSet <AskQuestion> GetQuestions(string tenantTypeId, string tagName, QuestionStatus?status, bool?isEssential, SortBy_AskQuestion sortBy, int pageSize, int pageIndex)
 {
     return(askQuestionRepository.GetQuestions(tenantTypeId, tagName, status, isEssential, sortBy, pageSize, pageIndex));
 }
コード例 #2
0
        /// <summary>
        /// 根据不同条件分页获取问题列表(用于前台)
        /// </summary>
        /// <param name="tenantTypeId">租户类型id</param>
        /// <param name="tagName">标签</param>
        /// <param name="status">问题状态</param>
        /// <param name="isEssential">是否精华</param>
        /// <param name="sortBy">排序条件</param>
        /// <param name="pageSize">分页大小</param>
        /// <param name="pageIndex">页码</param>
        /// <returns>问题分页列表</returns>
        public Tunynet.PagingDataSet <AskQuestion> GetQuestions(string tenantTypeId, string tagName, QuestionStatus?status, bool?isEssential, SortBy_AskQuestion sortBy, int pageSize, int pageIndex)
        {
            return(GetPagingEntities(pageSize, pageIndex, CachingExpirationType.UsualObjectCollection,
                                     () =>
            {
                StringBuilder cacheKey = new StringBuilder();
                cacheKey.AppendFormat("GetQuestions::tenantTypeId-{0}:tagName-{1}:status-{2}:isEssential-{3}:sortBy-{4}", tenantTypeId, tagName, status, isEssential, sortBy);
                return cacheKey.ToString();
            },
                                     () =>
            {
                var sql = Sql.Builder.Select("spb_AskQuestions.*").From("spb_AskQuestions");
                var whereSql = Sql.Builder.Where("spb_AskQuestions.Status<>@0", QuestionStatus.Canceled);
                var orderSql = Sql.Builder;

                //过滤审核条件
                switch (this.PubliclyAuditStatus)
                {
                case PubliclyAuditStatus.Again:
                case PubliclyAuditStatus.Fail:
                case PubliclyAuditStatus.Pending:
                case PubliclyAuditStatus.Success:
                    whereSql.Where("spb_AskQuestions.AuditStatus=@0", this.PubliclyAuditStatus);
                    break;

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

                default:
                    break;
                }

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

                if (status.HasValue)
                {
                    whereSql.Where("spb_AskQuestions.Status=@0", status.Value);
                }

                if (isEssential.HasValue)
                {
                    whereSql.Where("spb_AskQuestions.IsEssential=@0", isEssential.Value);
                }

                if (!string.IsNullOrEmpty(tagName))
                {
                    sql.InnerJoin("tn_ItemsInTags").On("spb_AskQuestions.QuestionId = tn_ItemsInTags.ItemId");
                    whereSql.Where("tn_ItemsInTags.TenantTypeId = @0", TenantTypeIds.Instance().AskQuestion())
                    .Where("tn_ItemsInTags.TagName=@0", tagName);
                }

                switch (sortBy)
                {
                case SortBy_AskQuestion.AnswerCount:
                    orderSql.OrderBy("spb_AskQuestions.AnswerCount desc");
                    break;

                case SortBy_AskQuestion.StageHitTimes:
                    CountService countService = new CountService(TenantTypeIds.Instance().AskQuestion());
                    string countTableName = countService.GetTableName_Counts();
                    StageCountTypeManager stageCountTypeManager = StageCountTypeManager.Instance(TenantTypeIds.Instance().AskQuestion());
                    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("QuestionId = c.ObjectId");
                    orderSql.OrderBy("c.StatisticsCount desc");
                    break;

                case SortBy_AskQuestion.Reward:
                    whereSql.Where("spb_AskQuestions.Reward > 0");
                    orderSql.OrderBy("spb_AskQuestions.Reward desc");
                    break;

                default:
                    orderSql.OrderBy("spb_AskQuestions.QuestionId desc");
                    break;
                }

                sql.Append(whereSql).Append(orderSql);
                return sql;
            }));
        }
コード例 #3
0
 /// <summary>
 /// 根据不同条件获取前n条的问题列表(用于前台)
 /// </summary>
 /// <remarks>
 /// 缓存周期:常用对象集合,不用维护即时性
 /// </remarks>
 /// <param name="tenantTypeId">租户类型id</param>
 /// <param name="topNumber">前多少条</param>
 /// <param name="status">问题状态</param>
 /// <param name="isEssential">是否精华</param>
 /// <param name="sortBy">排序条件</param>
 /// <returns>问题列表</returns>
 public IEnumerable <AskQuestion> GetTopQuestions(string tenantTypeId, int topNumber, QuestionStatus?status, bool?isEssential, SortBy_AskQuestion sortBy)
 {
     return(askQuestionRepository.GetTopQuestions(tenantTypeId, topNumber, status, isEssential, sortBy));
 }