Example #1
0
        /// <summary>
        /// 带有分页的文章列表
        /// </summary>
        /// <param name="searchSetting"></param>
        /// <returns></returns>
        public static IPageOfList <ArticleInfo> List(ArticleSearchSetting searchSetting)
        {
            FastPaging fp = new FastPaging();

            fp.OverOrderBy = " A.PublishDateTime DESC";
            fp.PageIndex   = searchSetting.PageIndex;
            fp.PageSize    = searchSetting.PageSize;
            fp.QueryFields = "*";
            fp.TableName   = "Articles";
            fp.PrimaryKey  = "Id";
            fp.TableReName = "A";
            fp.WithOptions = " WITH(NOLOCK)";


            StringBuilder sbSQL = new StringBuilder();

            if (searchSetting.ColumnIds != null && searchSetting.ColumnIds.Length > 0)
            {
                //过滤栏目分类
                //跳过为0的值
                string temp = Enumerable.Range(0, searchSetting.ColumnIds.Length).Select(i => {
                    if (searchSetting.ColumnIds[i] > 0)
                    {
                        return(string.Format(" A.CategoryId = {0} ", searchSetting.ColumnIds[i]));
                    }
                    return(string.Empty);
                }).Aggregate((a, b) => a + " OR " + b);
                if (!string.IsNullOrEmpty(temp))
                {
                    sbSQL.AppendFormat(" AND ( {0} )", temp);
                }
            }
            if (searchSetting.TechIds != null && searchSetting.TechIds.Length > 0)
            {
                //过滤技术分类
                string temp = Enumerable.Range(0, searchSetting.TechIds.Length).Select(i =>
                {
                    if (searchSetting.TechIds[i] > 0)
                    {
                        return(string.Format(" A2C.CategoryId = {0} ", searchSetting.TechIds[i]));
                    }
                    return(string.Empty);
                }).Aggregate((a, b) => a + " OR " + b);
                if (!string.IsNullOrEmpty(temp))
                {
                    sbSQL.Append("  AND EXISTS(");
                    sbSQL.Append("      SELECT * FROM dbo.Article2Category AS A2C WITH(NOLOCK)");
                    sbSQL.Append("      WHERE A2C.[Type] = 'tech'");
                    sbSQL.Append("      AND A.Id = A2C.ArticleId");
                    sbSQL.AppendFormat("      AND ( {0} )", temp);
                    sbSQL.Append("  )");
                }
            }
            if (searchSetting.IndustryIds != null && searchSetting.IndustryIds.Length > 0)
            {
                //过滤行业分类
                string temp = Enumerable.Range(0, searchSetting.IndustryIds.Length).Select(i =>
                {
                    if (searchSetting.IndustryIds[i] > 0)
                    {
                        return(string.Format(" A2C.CategoryId = {0} ", searchSetting.IndustryIds[i]));
                    }
                    return(string.Empty);
                }).Aggregate((a, b) => a + " OR " + b);
                if (!string.IsNullOrEmpty(temp))
                {
                    sbSQL.Append("  AND EXISTS(");
                    sbSQL.Append("      SELECT * FROM dbo.Article2Category AS A2C WITH(NOLOCK)");
                    sbSQL.Append("      WHERE A2C.[Type] = 'industry'");
                    sbSQL.Append("      AND A.Id = A2C.ArticleId");
                    sbSQL.AppendFormat("      AND ( {0} )", temp);
                    sbSQL.Append("  )");
                }
            }
            if (!searchSetting.IsDeleted)
            {
                sbSQL.Append("  AND IsDeleted = 0");
            }
            fp.Condition = " 1 = 1 " + sbSQL.ToString();

            //throw new Exception(fp.Build2005());

            IList <ArticleInfo> list  = new List <ArticleInfo>();
            ArticleInfo         model = null;
            DataTable           dt    = SQLPlus.ExecuteDataTable(CommandType.Text, fp.Build2005());

            if (dt != null && dt.Rows.Count > 0)
            {
                foreach (DataRow dr in dt.Rows)
                {
                    model = GetByDataRow(dr);
                    if (model != null)
                    {
                        list.Add(model);
                    }
                }
            }
            int count = Convert.ToInt32(SQLPlus.ExecuteScalar(CommandType.Text, fp.BuildCountSQL()));

            return(new PageOfList <ArticleInfo>(list, searchSetting.PageIndex, searchSetting.PageSize, count));
        }
Example #2
0
        public static IPageOfList <ForumReplyInfo> ReplyList(ForumSearchSetting settings)
        {
            FastPaging fp = new FastPaging();

            fp.PageIndex   = settings.PageIndex;
            fp.PageSize    = settings.PageSize;
            fp.TableName   = "ForumReplies";
            fp.TableReName = "p";
            fp.PrimaryKey  = "ID";
            fp.QueryFields = "p.*";

            StringBuilder sbCondition = new StringBuilder();

            sbCondition.AppendFormat("  TopicId = @TopicId ");
            if (!settings.ShowDeleted)
            {
                sbCondition.Append("    AND IsDeleted = 0 ");
            }
            fp.Condition   = sbCondition.ToString();
            fp.OverOrderBy = "PostDateTime ASC";

            SqlParameter[] parms =
            {
                new SqlParameter("@TopicId", SqlDbType.Int),
            };
            parms[0].Value = settings.TopicId;

            IList <ForumReplyInfo> list  = new List <ForumReplyInfo>();
            ForumReplyInfo         model = null;
            DataTable dt = Goodspeed.Library.Data.SQLPlus.ExecuteDataTable(CommandType.Text, fp.Build2005(), parms);

            if (dt != null && dt.Rows.Count > 0)
            {
                foreach (DataRow dr in dt.Rows)
                {
                    model = GetReplyInfo(dr);
                    if (model != null)
                    {
                        list.Add(model);
                    }
                }
            }
            int count = ReplyListCount(settings);

            return(new PageOfList <ForumReplyInfo>(list, settings.PageIndex, settings.PageSize, count));
        }
Example #3
0
        public static IPageOfList <ArticleInfo> List(ArticleSearchSetting setting)
        {
            SqlParameter[] parms =
            {
                new SqlParameter("CID",         SqlDbType.Int),
                new SqlParameter("Title",       SqlDbType.NVarChar),
                new SqlParameter("PublishDate", SqlDbType.NVarChar)
            };
            parms[0].Value = setting.CategoryId;
            parms[1].Value = setting.Title;
            parms[2].Value = setting.PublishDate;

            FastPaging fp = new FastPaging();

            fp.PageIndex   = setting.PageIndex;
            fp.PageSize    = setting.PageSize;
            fp.Ascending   = false;
            fp.TableName   = "Articles";
            fp.TableReName = "p";
            fp.PrimaryKey  = "ID";
            fp.QueryFields = "p.*";
            fp.OverOrderBy = "IsTop DESC,Sort ASC,PublishDateTime DESC";
            StringBuilder sbCondition = new StringBuilder();

            sbCondition.Append(@"EXISTS(
		                            SELECT * FROM Categories AS AC WITH(NOLOCK) 
		                            WHERE (AC.ID = @CID OR CHARINDEX(','+CAST(@CID AS NVARCHAR(MAX))+',',','+AC.ParentIdList+',') >0)
		                            AND p.CategoryId = AC.ID
                                )");
            if (!setting.ShowDeleted)
            {
                sbCondition.Append("    AND IsDeleted = 0 /*获取未删除的*/");
            }
            if (!string.IsNullOrEmpty(setting.Title))
            {
                //虚拟服务器,没有启用全文索引
                //sbCondition.Append("    AND CONTAINS(Title,@Title)  ");

                sbCondition.Append("    AND Title LIKE '%'+@Title+'%'  ");
            }
            if (Regex.IsMatch(setting.PublishDate, @"^\d{4}-\d{1,2}-\d{1,2}$", RegexOptions.IgnoreCase))
            {
                sbCondition.Append("    AND CONVERT(VARCHAR(10),PublishDateTime,120) = @PublishDate");
            }
            if (setting.IsOnlyShowPublished)
            {
                //只显示发布的文章
                sbCondition.Append("    AND IsPublished = 1 ");
            }

            fp.Condition = sbCondition.ToString();
            IList <ArticleInfo> list  = new List <ArticleInfo>();
            ArticleInfo         model = null;
            DataTable           dt    = Goodspeed.Library.Data.SQLPlus.ExecuteDataTable(CommandType.Text, fp.Build2005(), parms);

            if (dt != null && dt.Rows.Count > 0)
            {
                foreach (DataRow dr in dt.Rows)
                {
                    model = Get(dr);
                    if (model != null)
                    {
                        list.Add(model);
                    }
                }
            }

            int count = Convert.ToInt32(Goodspeed.Library.Data.SQLPlus.ExecuteScalar(CommandType.Text, fp.BuildCountSQL(), parms));;

            return(new PageOfList <ArticleInfo>(list, setting.PageIndex, setting.PageSize, count));
        }
Example #4
0
        public static IPageOfList <UserInfo> List(int pageIndex, int pageSize)
        {
            FastPaging fp = new FastPaging();

            fp.PageIndex   = pageIndex;
            fp.PageSize    = pageSize;
            fp.Ascending   = false;
            fp.TableName   = "Users";
            fp.TableReName = "p";
            fp.PrimaryKey  = "ID";
            fp.QueryFields = "p.*";
            fp.OverOrderBy = "p.LastLoginDateTime DESC";


            IList <UserInfo> list  = new List <UserInfo>();
            UserInfo         model = null;
            DataTable        dt    = Goodspeed.Library.Data.SQLPlus.ExecuteDataTable(CommandType.Text, fp.Build2005());

            if (dt != null && dt.Rows.Count > 0)
            {
                foreach (DataRow dr in dt.Rows)
                {
                    model = Get(dr);
                    if (model != null)
                    {
                        list.Add(model);
                    }
                }
            }
            int count = CountForList();

            return(new PageOfList <UserInfo>(list, pageIndex, pageSize, count));
        }
Example #5
0
        public static IPageOfList <AttachmentInfo> List(SearchSetting setting)
        {
            FastPaging fp = new FastPaging();

            fp.PageIndex   = setting.PageIndex;
            fp.PageSize    = setting.PageSize;
            fp.Ascending   = false;
            fp.TableName   = "Attachments";
            fp.TableReName = "p";
            fp.PrimaryKey  = "ID";
            fp.QueryFields = "p.*";
            fp.WithOptions = " WITH(NOLOCK)";
            fp.OverOrderBy = " CreateDateTime DESC";
            if (!setting.ShowDeleted)
            {
                fp.Condition += " IsDeleted = 0";
            }
            IList <AttachmentInfo> list  = new List <AttachmentInfo>();
            AttachmentInfo         model = null;
            DataTable dt = Goodspeed.Library.Data.SQLPlus.ExecuteDataTable(CommandType.Text, fp.Build2005());

            if (dt != null && dt.Rows.Count > 0)
            {
                foreach (DataRow dr in dt.Rows)
                {
                    model = new AttachmentInfo()
                    {
                        Id             = dr.Field <int>("ID"),
                        Title          = dr.Field <string>("Title"),
                        CreateDateTime = dr.Field <DateTime>("CreateDateTime"),
                        FileType       = dr.Field <string>("FileType"),
                        Size           = dr.Field <int>("Size"),
                        Url            = dr.Field <string>("Url"),
                        IsDeleted      = dr.Field <bool>("IsDeleted")
                    };
                    list.Add(model);
                }
            }
            int count = Convert.ToInt32(Goodspeed.Library.Data.SQLPlus.ExecuteScalar(CommandType.Text, "SELECT COUNT(*) FROM Attachments"));

            return(new PageOfList <AttachmentInfo>(list, setting.PageIndex, setting.PageSize, count));
        }
Example #6
0
        /// <summary>
        /// 产品列表
        /// </summary>
        /// <param name="setting"></param>
        /// <returns></returns>
        public static IPageOfList <ProductInfo> List(ProductSearchSetting setting)
        {
            FastPaging fp = new FastPaging();

            fp.PageIndex   = setting.PageIndex;
            fp.PageSize    = setting.PageSize;
            fp.Ascending   = false;
            fp.TableName   = "Products";
            fp.TableReName = "p";
            fp.PrimaryKey  = "ID";
            fp.QueryFields = "p.*";
            fp.OverOrderBy = " Sort ASC,CreateDateTime ASC";
            StringBuilder sbCondition = new StringBuilder();

            sbCondition.Append("    1 = 1 ");
            if (setting.CategoryId > 0)
            {
                sbCondition.Append(@"   AND EXISTS(
		                            SELECT * FROM Categories AS AC WITH(NOLOCK) 
		                            WHERE (AC.ID = @CID OR CHARINDEX(','+CAST(@CID AS NVARCHAR(MAX))+',',','+AC.ParentIdList+',') >0)
		                            AND p.CategoryId = AC.ID
                                )");
            }
            if (!setting.ShowDeleted)
            {
                sbCondition.Append("    AND IsDeleted = 0 /*获取未删除的*/");
            }
            SqlParameter[] parms =
            {
                new SqlParameter("CID", SqlDbType.Int),
            };
            parms[0].Value = setting.CategoryId;


            fp.Condition = sbCondition.ToString();
            IList <ProductInfo> list  = new List <ProductInfo>();
            ProductInfo         model = null;
            DataTable           dt    = Goodspeed.Library.Data.SQLPlus.ExecuteDataTable(CommandType.Text, fp.Build2005(), parms);

            if (dt != null && dt.Rows.Count > 0)
            {
                foreach (DataRow dr in dt.Rows)
                {
                    model = GetByRow(dr);
                    if (model != null)
                    {
                        list.Add(model);
                    }
                }
            }
            int count = Convert.ToInt32(SQLPlus.ExecuteScalar(CommandType.Text, fp.BuildCountSQL(), parms));

            return(new PageOfList <ProductInfo>(list, setting.PageIndex, setting.PageSize, count));
        }