public void Ok()
        {
            //input
            ProductSearchSetting productSearchSetting = new ProductSearchSetting()
            {
                Description = "e",
                MinPrice    = 100,
                MaxPrice    = 600,
                MinStock    = 10,
                MaxStock    = 50,
                CategoryID  = 2
            };

            //expected
            string expected =
                string.Format("description.Contains(\"{0}\") and stock > {1} and stock < {2} and price >= {3} and price <= {4} and categoryid = {5}"
                              , productSearchSetting.Description,
                              productSearchSetting.MinStock,
                              productSearchSetting.MaxStock,
                              productSearchSetting.MinPrice,
                              productSearchSetting.MaxPrice,
                              productSearchSetting.CategoryID
                              );

            string result = productSearchSetting.GetWhereLine();

            Assert.AreEqual(expected, result);
        }
Beispiel #2
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));
        }
Beispiel #3
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);
        }
        public async Task <IActionResult> SearchProduts([FromBody] ProductSearchSetting productSearchSetting)
        {
            var dto = await _productService.GetProductsAsync(productSearchSetting);

            return(Ok(dto));
        }
Beispiel #5
0
 /// <summary>
 /// 列表
 /// </summary>
 /// <param name="setting"></param>
 /// <returns></returns>
 public static IPageOfList<ProductInfo> List(ProductSearchSetting setting) {
     return ProductManage.List(setting);
 }
Beispiel #6
0
 public async Task <object> GetProductsAsync(ProductSearchSetting searchSetting)
 {
     return(await _dal.GetProductsAsync(searchSetting));
 }
Beispiel #7
0
 /// <summary>
 /// 列表
 /// </summary>
 /// <param name="setting"></param>
 /// <returns></returns>
 public static IPageOfList <ProductInfo> List(ProductSearchSetting setting)
 {
     return(ProductManage.List(setting));
 }