Beispiel #1
0
        /// <summary>
        /// 查询商品 非电商馆
        /// </summary>
        /// <param name="search"></param>
        /// <returns></returns>
        public ResultDTO <List <ComdtyList4SelCDTO> > SearchCommodity2Ext(ComdtySearch4SelCDTO search)
        {
            string appName    = APPSV.GetAppName(search.AppId ?? Guid.Empty);
            var    comdtyList = from c in Commodity.ObjectSet()
                                where c.IsDel == false && c.State == 0 && c.AppId == search.AppId && c.CommodityType == 0
                                orderby c.Name
                                select new ComdtyList4SelCDTO
            {
                Id      = c.Id,
                Name    = c.Name,
                Pic     = c.PicturesPath,
                Price   = c.Price,
                AppId   = c.AppId,
                Stock   = c.Stock,
                AppName = appName
            };

            if (!string.IsNullOrEmpty(search.CommodityName))
            {
                comdtyList = comdtyList.Where(o => o.Name.Contains(search.CommodityName));
            }

            List <ComdtyList4SelCDTO> comdtyList4SelCdtos = new List <ComdtyList4SelCDTO>();

            foreach (var comdty in comdtyList)
            {
                //获取加入的分类名称
                var temp1 = (from scc in CommodityCategory.ObjectSet()
                             join sc in Category.ObjectSet() on scc.CategoryId equals sc.Id
                             where scc.CommodityId == comdty.Id && scc.IsDel == false && scc.AppId == comdty.AppId
                             orderby scc.MaxSort
                             select sc);
                var cnames = "";
                foreach (var category in temp1)
                {
                    cnames += category.Name + "<br>";
                }
                comdty.CommodityCategory = cnames;

                comdtyList4SelCdtos.Add(comdty);
            }

            ResultDTO <List <ComdtyList4SelCDTO> > retInfo = new ResultDTO <List <ComdtyList4SelCDTO> >
            {
                ResultCode = comdtyList4SelCdtos.Count(),
                Data       = comdtyList4SelCdtos.Skip((search.PageIndex - 1) * search.PageSize)
                             .Take(search.PageSize)
                             .ToList()
            };

            return(retInfo);
        }
Beispiel #2
0
        /// <summary>
        /// 增加商品查询条件---分类、毛利率区间,价格区间
        /// </summary>
        /// <param name="input">输入查询实体</param>
        /// <param name="commodityQuery">查询对象</param>
        /// <returns></returns>
        private static IQueryable <Commodity> AddCommoditySelectWhere(ComdtySearch4SelCDTO input, IQueryable <Commodity> commodityQuery)
        {
            try
            {
                //根据分类查询
                if (!string.IsNullOrWhiteSpace(input.Categorys))
                {
                    List <Guid> listId = GetRecursiveCategoryId(input);


                    commodityQuery = (from scc in CommodityCategory.ObjectSet()
                                      join c in Commodity.ObjectSet() on scc.CommodityId equals c.Id
                                      where c.AppId == input.AppId && c.IsDel == false && c.State == 0 && c.CommodityType == 0 &&
                                      listId.Contains(scc.CategoryId)
                                      orderby scc.MaxSort
                                      select c).Distinct();
                }
                //毛利率区间
                if (!string.IsNullOrWhiteSpace(input.MinInterestRate) && !string.IsNullOrWhiteSpace(input.MaxInterestRate))
                {
                    //4、商品毛利率=(销售价-进货价)/销售价x100%
                    //获取商品信息,循环计算毛利率
                    decimal minInterestRate, maxInterestRate = 0;
                    decimal.TryParse(input.MinInterestRate, out minInterestRate);
                    decimal.TryParse(input.MaxInterestRate, out maxInterestRate);
                    commodityQuery = commodityQuery.Where(p => (((p.Price - p.CostPrice) / p.Price) * 100) >= minInterestRate && (((p.Price - p.CostPrice) / p.Price) * 100) <= maxInterestRate);
                }
                //价格区间
                if (!string.IsNullOrWhiteSpace(input.MinPrice) && !string.IsNullOrWhiteSpace(input.MaxPrice))
                {
                    decimal minPrice, maxPrice = 0;
                    decimal.TryParse(input.MinPrice, out minPrice);
                    decimal.TryParse(input.MaxPrice, out maxPrice);
                    commodityQuery = commodityQuery.Where(p => p.Price >= minPrice && p.Price <= maxPrice);
                }
            }
            catch (Exception ex)
            {
                LogHelper.Debug(string.Format("CommoditySVExt.AddCommoditySelectWhere:{0}", ex.ToString()));
            }
            return(commodityQuery);
        }
Beispiel #3
0
        /// <summary>
        /// 获取三层数据
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        private static List <Guid> GetRecursiveCategoryId(ComdtySearch4SelCDTO input)
        {
            List <Guid> list    = new List <Guid>();
            List <Guid> listId2 = new List <Guid>();

            input.Categorys.Split(',').ToList().ForEach(p =>
            {
                if (!string.IsNullOrWhiteSpace(p))
                {
                    Guid id = Guid.Parse(p);

                    list.Add(id);

                    var category = Category.ObjectSet().Where(n => n.AppId == input.AppId && n.IsDel == false && n.ParentId == id).FirstOrDefault();
                    if (category != null)
                    {
                        listId2.Add(category.Id);
                    }
                }
            });


            input.Categorys.Split(',').ToList().ForEach(p =>
            {
                if (!string.IsNullOrWhiteSpace(p))
                {
                    Guid id = Guid.Parse(p);
                    list.Add(id);

                    var category = Category.ObjectSet().Where(n => n.AppId == input.AppId && n.IsDel == false && n.ParentId == id).FirstOrDefault();
                    if (category != null)
                    {
                        list.Add(category.Id);
                    }
                }
            });
            return(list);
        }
Beispiel #4
0
        /// <summary>
        /// 查询商品 电商馆
        /// </summary>
        /// <param name="search"></param>
        /// <returns></returns>
        public ResultDTO <List <ComdtyList4SelCDTO> > SearchCommodityExt(ComdtySearch4SelCDTO search)
        {
            QueryPavilionAppParam query = new QueryPavilionAppParam
            {
                Id        = search.belongTo,
                pageIndex = 1,
                pageSize  = int.MaxValue
            };
            var eReturnInfo = ZPHSV.Instance.GetPavilionApp(query);

            JAP.Common.Loging.LogHelper.Debug("SearchCommodityExt eReturnInfo belongTo:" + query.Id);

            List <Guid> appIds = new List <Guid>();

            if (search.AppId != null && search.AppId != Guid.Empty)
            {
                appIds.Add(search.AppId.Value);
            }
            else
            {
                appIds.AddRange(eReturnInfo.Data.Select(t => t.appId));
            }
            if (!string.IsNullOrEmpty(search.AppName))
            {
                var matchAppNameAppIds = eReturnInfo.Data.Where(_ => _.appName.Contains(search.AppName)).Select(t => t.appId).ToList();
                appIds = appIds.Intersect(matchAppNameAppIds).ToList();
            }

            var commodityQuery = Commodity.ObjectSet().Where(c => !c.IsDel && c.State == 0);

            #region 增加商品查询条件---分类、毛利率区间,价格区间
            commodityQuery = AddCommoditySelectWhere(search, commodityQuery);

            #endregion


            if (appIds.Count == 1)
            {
                var appId = appIds[0];
                commodityQuery = commodityQuery.Where(c => c.AppId == appId);
            }
            else
            {
                commodityQuery = commodityQuery.Where(c => appIds.Contains(c.AppId));
            }
            if (!string.IsNullOrEmpty(search.CommodityName))
            {
                commodityQuery = commodityQuery.Where(c => c.Name.Contains(search.CommodityName));
            }
            var commodityList = commodityQuery
                                .OrderBy(_ => _.Name)
                                .Select(c => new ComdtyList4SelCDTO
            {
                Id    = c.Id,
                Name  = c.Name,
                Pic   = c.PicturesPath,
                Price = c.Price,
                AppId = c.AppId,
                Stock = c.Stock
            }).Skip((search.PageIndex - 1) * search.PageSize).Take(search.PageSize).ToList();

            var commodityIds = commodityList.Select(_ => _.Id).ToList();
            //var comCategories = CommodityCategory.ObjectSet().Where(_ => _.IsDel == false && commodityIds.Contains(_.CommodityId))
            //    .OrderBy(_ => _.MaxSort).ToList();
            var comCategories = (from comCategory in CommodityCategory.ObjectSet()
                                 join category in Category.ObjectSet() on comCategory.CategoryId equals category.Id
                                 where commodityIds.Contains(comCategory.CommodityId) && comCategory.IsDel == false && !category.IsDel
                                 orderby comCategory.MaxSort
                                 select new { category.Name, comCategory.AppId, comCategory.CommodityId });

            foreach (var comdty in commodityList)
            {
                // 获取AppName
                var a = eReturnInfo.Data.Where(t => t.appId == comdty.AppId).ToList();
                if (a.Count > 0)
                {
                    comdty.AppName = a[0].appName;
                }

                //获取加入的分类名称
                var currentComCategories = comCategories.Where(_ => /*_.AppId == comdty.AppId &&*/ _.CommodityId == comdty.Id).ToList();
                var cnames = "";
                foreach (var category in currentComCategories)
                {
                    cnames += category.Name + "<br>";
                }
                if (string.IsNullOrEmpty(cnames))
                {
                    cnames = "无分类";
                }
                comdty.CommodityCategory = cnames;
            }

            return(new ResultDTO <List <ComdtyList4SelCDTO> >
            {
                ResultCode = commodityQuery.Count(),
                Data = commodityList.OrderBy(_ => _.AppName).ToList()
            });


            /************************************************Old Code************************************************/
            //var comdtyList = from c in Commodity.ObjectSet()
            //                 where c.IsDel == false && c.State == 0 && ab.Contains(c.AppId)
            //                 orderby c.Name
            //                 select new ComdtyList4SelCDTO
            //                 {
            //                     Id = c.Id,
            //                     Name = c.Name,
            //                     Pic = c.PicturesPath,
            //                     Price = c.Price,
            //                     AppId = c.AppId,
            //                     Stock = c.Stock
            //                 };



            //List<ComdtyList4SelCDTO> comdtyList4SelCdtos = new List<ComdtyList4SelCDTO>();
            //foreach (var comdty in comdtyList)
            //{
            //    var a = eReturnInfo.Data.Where(t => t.appId == comdty.AppId).ToList();
            //    if (a.Count > 0)
            //    {
            //        comdty.AppName = a[0].appName;
            //    }
            //    //获取加入的分类名称
            //    var temp1 = (from scc in CommodityCategory.ObjectSet()
            //                 join sc in Category.ObjectSet() on scc.CategoryId equals sc.Id
            //                 where scc.CommodityId == comdty.Id && scc.IsDel == false && scc.AppId == comdty.AppId
            //                 orderby scc.MaxSort
            //                 select sc);
            //    var cnames = "";
            //    foreach (var category in temp1)
            //    {
            //        cnames += category.Name + "<br>";
            //    }
            //    comdty.CommodityCategory = cnames;

            //    comdtyList4SelCdtos.Add(comdty);
            //}
            //if (search.AppId != null)
            //{
            //    comdtyList4SelCdtos = comdtyList4SelCdtos.Where(o => o.AppId == search.AppId).ToList();
            //}
            //if (!string.IsNullOrEmpty(search.AppName))
            //{
            //    comdtyList4SelCdtos = comdtyList4SelCdtos.Where(o => o.AppName.Contains(search.AppName)).ToList();
            //}
            //if (!string.IsNullOrEmpty(search.CommodityName))
            //{
            //    comdtyList4SelCdtos = comdtyList4SelCdtos.Where(o => o.Name.Contains(search.CommodityName)).ToList();
            //}

            //ResultDTO<List<ComdtyList4SelCDTO>> retInfo = new ResultDTO<List<ComdtyList4SelCDTO>>
            //{
            //    ResultCode = comdtyList4SelCdtos.Count(),
            //    Data = comdtyList4SelCdtos.OrderBy(o => o.AppName)
            //            .Skip((search.PageIndex - 1) * search.PageSize)
            //            .Take(search.PageSize)
            //            .ToList()
            //};
            //return retInfo;
        }