Exemplo n.º 1
0
        public JsonResult ProductList(ShopBranchProductQuery query, int rows, int page)
        {
            query.ShopBranchProductStatus = 0;
            //查询商品
            var pageModel = ShopBranchApplication.GetShopBranchProducts(query);

            //查询门店SKU库存
            var           allSKU         = ProductManagerApplication.GetSKUByProducts(pageModel.Models.Select(p => p.Id));
            List <string> skuids         = allSKU.Select(p => p.Id).ToList();
            var           shopBranchSkus = ShopBranchApplication.GetSkusByIds(query.ShopBranchId.Value, skuids);

            var dataGrid = new DataGridModel <ProductModel>();

            dataGrid.total = pageModel.Total;
            dataGrid.rows  = pageModel.Models.Select(item =>
            {
                var cate = ShopCategoryApplication.GetCategoryByProductId(item.Id);
                return(new ProductModel()
                {
                    name = item.ProductName,
                    id = item.Id,
                    imgUrl = item.GetImage(ImageSize.Size_50),
                    categoryName = cate == null ? "" : cate.Name,
                    saleCounts = item.SaleCounts,
                    stock = shopBranchSkus.Where(e => e.ProductId == item.Id).Sum(s => s.Stock),
                    price = item.MinSalePrice,
                    MinPrice = allSKU.Where(s => s.ProductId == item.Id).Min(s => s.SalePrice),
                    MaxPrice = allSKU.Where(s => s.ProductId == item.Id).Max(s => s.SalePrice),
                    ProductType = item.ProductType,
                    shopBranchId = query.ShopBranchId.Value
                });
            }).ToList();
            return(Json(dataGrid));
        }
        /// <summary>
        /// 获取门店的月产品数量
        /// </summary>
        /// <param name="query"></param>
        /// <param name="startDate"></param>
        /// <param name="endDate"></param>
        /// <returns></returns>
        public static QueryPageModel <ProductInfo> GetShopBranchProductsMonth(ShopBranchProductQuery query, DateTime startDate, DateTime endDate)
        {
            QueryPageModel <ProductInfo> model = _shopBranchService.SearchProduct(query);
            OrderQuery orderQuery = new OrderQuery
            {
                ShopBranchId = query.shopBranchId,
                StartDate    = new DateTime?(startDate),
                EndDate      = new DateTime?(endDate.AddDays(-1.0))
            };
            List <OrderItem>   orderItemsByOrderId = OrderApplication.GetOrderItemsByOrderId((IEnumerable <long>)(from e in OrderApplication.GetOrdersNoPage(orderQuery) select e.Id));
            IEnumerable <long> pids = from e in model.Models select e.Id;
            var source = from o in orderItemsByOrderId
                         where pids.Contains <long>(o.ProductId)
                         group o by o.ProductId into e
                         select new { productId = e.Key, saleCount = e.Sum <OrderItem>((Func <OrderItem, long>)(p => p.Quantity)) };

            using (List <ProductInfo> .Enumerator enumerator = model.Models.GetEnumerator())
            {
                while (enumerator.MoveNext())
                {
                    ProductInfo p = enumerator.Current;
                    var         fAnonymousType0 = Enumerable.FirstOrDefault(source, e => e.productId == p.Id);
                    p.SaleCounts = fAnonymousType0 == null ? 0 : fAnonymousType0.saleCount;
                }
            }
            return(model);
        }
Exemplo n.º 3
0
        /// <summary>
        /// 获取商铺分类
        /// </summary>
        /// <param name="shopId"></param>
        /// <param name="pid"></param>
        /// <returns></returns>
        public JsonResult <Result <List <ShopCategory> > > GetShopCategory(long shopId, long pid = 0, long shopBranchId = 0)
        {
            var cate = ShopCategoryApplication.GetCategoryByParentId(pid, shopId);

            if (shopBranchId > 0)
            {
                //屏蔽没有商品的分类
                List <long> noshowcid = new List <long>();
                foreach (var item in cate)
                {
                    ShopBranchProductQuery query = new ShopBranchProductQuery();
                    query.PageSize                = 1;
                    query.PageNo                  = 1;
                    query.ShopId                  = shopId;
                    query.ShopBranchId            = shopBranchId;
                    query.ShopBranchProductStatus = ShopBranchSkuStatus.Normal;
                    query.ShopCategoryId          = item.Id;
                    //query.FilterVirtualProduct = true;//过滤虚拟商品
                    var _pros = ShopBranchApplication.GetShopBranchProducts(query);
                    if (_pros.Total <= 0)
                    {
                        noshowcid.Add(item.Id);
                    }
                }
                if (noshowcid.Count > 0)
                {
                    cate = cate.Where(d => !noshowcid.Contains(d.Id)).ToList();
                }
            }
            return(JsonResult(cate));
        }
        /// <summary>
        /// 门店商品查询
        /// </summary>
        /// <param name="query"></param>
        /// <returns></returns>
        public static QueryPageModel <ProductInfo> GetShopBranchProducts(ShopBranchProductQuery query)
        {
            var pageModel = _shopBranchService.SearchProduct(query);
            //TODO:补充门店销售数量
            var orders = OrderApplication.GetOrdersNoPage(new OrderQuery {
                ShopBranchId = query.shopBranchId
            });
            var orderItems        = OrderApplication.GetOrderItemsByOrderId(orders.Select(e => e.Id));
            var pids              = pageModel.Models.Select(e => e.Id);
            var productSaleCounts = orderItems.Where(e => pids.Contains(e.ProductId)).GroupBy(o => o.ProductId).Select(e => new { productId = e.Key, saleCount = e.Sum(p => p.Quantity) });

            foreach (var p in pageModel.Models)
            {
                var productCount = productSaleCounts.FirstOrDefault(e => e.productId == p.Id);
                if (productCount != null)
                {
                    p.SaleCounts = productCount.saleCount;
                }
                else
                {
                    p.SaleCounts = 0;//门店商品无销量则为0,不应用默认的商家商品销量
                }
            }
            return(pageModel);
        }
        /// <summary>
        /// 查询门店诊疗项目
        /// </summary>
        /// <param name="keywords"></param>
        /// <param name="cid"></param>
        /// <param name="pageNo"></param>
        /// <param name="pageSize"></param>
        /// <param name="branchProductStatus"></param>
        /// <returns></returns>
        public object GetShopBranchProducts(
            string keywords         = "", /* 搜索关键字 */
            long cid                = 0,  /* 分类ID */
            int pageNo              = 1,  /*页码*/
            int pageSize            = 10, /*每页显示数据量*/
            int branchProductStatus = 0
            )
        {
            CheckUserLogin();
            ShopBranchProductQuery query = new ShopBranchProductQuery
            {
                PageNo                  = pageNo,
                PageSize                = pageSize,
                KeyWords                = keywords,
                ShopId                  = CurrentShopBranch.ShopId,
                shopBranchId            = CurrentShopBranch.Id,
                ShopBranchProductStatus = (CommonModel.ShopBranchSkuStatus)branchProductStatus
            };

            if (cid > 0)
            {
                query.CategoryId = cid;
            }
            //查询诊疗项目
            var pageModel = ShopBranchApplication.GetShopBranchProducts(query);

            //查询门店SKU库存
            List <string> skuids = new List <string>();

            foreach (var p in pageModel.Models)
            {
                skuids.AddRange(p.SKUInfo.Select(e => e.Id));
            }
            var shopBranchSkus = ShopBranchApplication.GetSkusByIds(CurrentShopBranch.Id, skuids);
            //
            var product = pageModel.Models.ToList().Select(item =>
            {
                return(new
                {
                    id = item.Id,
                    name = item.ProductName,
                    price = item.MinSalePrice,
                    salesCount = item.SaleCounts,
                    img = Core.HimallIO.GetRomoteProductSizeImage(item.RelativePath, 1, (int)Himall.CommonModel.ImageSize.Size_350),
                    stock = shopBranchSkus.Where(e => e.ProductId == item.Id).Sum(s => s.Stock),
                    productCode = item.ProductCode
                });
            });
            var result = new
            {
                success  = true,
                products = product,
                skus     = shopBranchSkus,
                total    = pageModel.Total
            };

            return(Json(result));
        }
        public object GetShopBranchProducts(
            string keywords         = "", /* 搜索关键字 */
            long cid                = 0,  /* 分类ID */
            int pageNo              = 1,  /*页码*/
            int pageSize            = 10, /*每页显示数据量*/
            int branchProductStatus = 0
            )
        {
            CheckUserLogin();
            ShopBranchProductQuery query = new ShopBranchProductQuery
            {
                PageNo                  = pageNo,
                PageSize                = pageSize,
                KeyWords                = keywords,
                ShopId                  = CurrentShopBranch.ShopId,
                ShopBranchId            = CurrentShopBranch.Id,
                ShopBranchProductStatus = (CommonModel.ShopBranchSkuStatus)branchProductStatus,
                HasLadderProduct        = true
            };

            if (cid > 0)
            {
                query.ShopCategoryId = cid;
            }
            //查询商品
            var pageModel = ShopBranchApplication.GetShopBranchProducts(query);

            //查询门店SKU库存


            var           allSKU         = ProductManagerApplication.GetSKUByProducts(pageModel.Models.Select(p => p.Id));
            List <string> skuids         = allSKU.Select(p => p.Id).ToList();
            var           shopBranchSkus = ShopBranchApplication.GetSkusByIds(CurrentShopBranch.Id, skuids);

            var product = pageModel.Models.Select(item =>
            {
                return(new
                {
                    id = item.Id,
                    name = item.ProductName,
                    price = item.MinSalePrice,
                    salesCount = item.SaleCounts,
                    img = Core.MallIO.GetRomoteProductSizeImage(item.RelativePath, 1, (int)Mall.CommonModel.ImageSize.Size_350),
                    stock = shopBranchSkus.Where(e => e.ProductId == item.Id).Sum(s => s.Stock),
                    productCode = item.ProductCode
                });
            });
            var result = new
            {
                success  = true,
                products = product,
                skus     = shopBranchSkus,
                total    = pageModel.Total
            };

            return(result);
        }
Exemplo n.º 7
0
        /// <summary>
        /// 根据日期获取门店商品销量
        /// </summary>
        /// <param name="query"></param>
        /// <returns></returns>
        public static QueryPageModel <ProductInfo> GetShopBranchProductsMonth(ShopBranchProductQuery query, DateTime startDate, DateTime endDate)
        {
            var pageModel = Service.SearchProduct(query);

            //var pids = pageModel.Models.Select(p => p.Id).ToList();
            //var saleCount = Service.GetProductSaleCount(query.ShopBranchId.Value, pids, startDate, endDate);
            //pageModel.Models.ForEach(product =>
            //{
            //    product.SaleCounts = saleCount.ContainsKey(product.Id) ? saleCount[product.Id] : 0;
            //});
            return(pageModel);
        }
Exemplo n.º 8
0
        /// <summary>
        /// 门店商品查询
        /// </summary>
        /// <param name="query"></param>
        /// <returns></returns>
        public static QueryPageModel <ProductInfo> GetShopBranchProducts(ShopBranchProductQuery query)
        {
            var pageModel = Service.SearchProduct(query);

            //补充数据
            foreach (var p in pageModel.Models)
            {
                //补充门店销售数量
                p.SaleCounts = OrderApplication.GetSaleCount(shopBranchId: query.ShopBranchId, productId: p.Id);
            }
            return(pageModel);
        }
Exemplo n.º 9
0
        public JsonResult ShopBranchProductIds(long shopbranchId)
        {
            ShopBranchProductQuery query = new ShopBranchProductQuery()
            {
                ShopBranchId            = shopbranchId,
                ShopBranchProductStatus = 0,
                PageSize = 10000
            };
            //查询商品
            var pageModel = ShopBranchApplication.GetShopBranchProducts(query);

            var ids = pageModel.Models.Select(item => item.Id);

            return(Json(ids));
        }
Exemplo n.º 10
0
        public JsonResult ProductList(ShopBranchProductQuery query)
        {
            query.ShopBranchProductStatus = 0;
            query.OrderKey = 2;
            //查询商品
            var pageModel = ShopBranchApplication.GetShopBranchProducts(query);

            //查询门店SKU库存
            var           allSKU         = ProductManagerApplication.GetSKUByProducts(pageModel.Models.Select(p => p.Id));
            List <string> skuids         = allSKU.Select(p => p.Id).ToList();
            var           shopBranchSkus = ShopBranchApplication.GetSkusByIds(query.ShopBranchId.Value, skuids);

            var dataGrid = new DataGridModel <ProductModel>();

            dataGrid.total = pageModel.Total;
            dataGrid.rows  = pageModel.Models.Select(item =>
            {
                var cate = ShopCategoryApplication.GetCategoryByProductId(item.Id);
                return(new ProductModel()
                {
                    Name = item.ProductName,
                    Id = item.Id,
                    Image = item.GetImage(ImageSize.Size_50),
                    CategoryName = cate == null ? "" : cate.Name,
                    SaleCount = item.SaleCounts,
                    Stock = shopBranchSkus.Where(e => e.ProductId == item.Id).Sum(s => s.Stock),
                    Price = item.MinSalePrice,
                    MinPrice = allSKU.Where(s => s.ProductId == item.Id).Min(s => s.SalePrice),
                    MaxPrice = allSKU.Where(s => s.ProductId == item.Id).Max(s => s.SalePrice),
                    Url = "",
                    PublishTime = item.AddedDate.ToString("yyyy-MM-dd HH:mm"),
                    SaleState = (int)item.SaleStatus,
                    CategoryId = item.CategoryId,
                    ProductCode = item.ProductCode,
                    ProductType = item.ProductType
                });
            }).ToList();
            return(Json(dataGrid));
        }
Exemplo n.º 11
0
        /// <summary>
        /// 门店首页获取诊疗项目列表
        /// </summary>
        /// <param name="pageSize"></param>
        /// <param name="pageNo"></param>
        /// <param name="shopCategoryId">诊所一级分类</param>
        /// <param name="shopId">诊所ID</param>
        /// <param name="shopBranchId">门店ID</param>
        /// <returns></returns>
        public object GetProductList(int pageSize, int pageNo, string shopCategoryId, string shopId, string shopBranchId)
        {
            ShopBranchProductQuery query = new ShopBranchProductQuery();

            query.PageSize = pageSize;
            query.PageNo   = pageNo;
            //query.ShopCategoryId = TypeHelper.ObjectToInt(shopCategoryId, 0);
            query.ShopId                  = TypeHelper.ObjectToInt(shopId, 0);
            query.shopBranchId            = TypeHelper.ObjectToInt(shopBranchId, 0);
            query.ShopBranchProductStatus = ShopBranchSkuStatus.Normal;

            if (query.ShopId <= 0)
            {
                return(Json(new { Success = false, Message = "无法定位到诊所!" }));
            }

            //if (query.ShopCategoryId <= 0)
            //    return Json(new { Success = false, Message = "无法定位到诊所分类!" });
            if (TypeHelper.ObjectToInt(shopCategoryId, 0) > 0)
            {
                query.ShopCategoryId = TypeHelper.ObjectToInt(shopCategoryId);
            }

            if (query.shopBranchId <= 0)
            {
                return(Json(new { Success = false, Message = "无法定位到门店!" }));
            }

            var pageModel = ShopBranchApplication.GetShopBranchProducts(query);

            if (pageModel.Models != null && pageModel.Models.Count > 0)
            {
                #region 处理诊疗项目 官方自营店会员折扣价,各活动价等。
                var flashSalePriceList      = LimitTimeApplication.GetPriceByProducrIds(pageModel.Models.Select(p => p.Id).ToList());
                var fightGroupSalePriceList = FightGroupApplication.GetActiveByProductIds(pageModel.Models.Select(p => p.Id).ToArray());
                if (CurrentUser != null)
                {
                    var shopInfo = ShopApplication.GetShop(query.ShopId.Value);
                    if (shopInfo != null && shopInfo.IsSelf)//当前诊所是否是官方自营店
                    {
                        decimal discount = 1M;
                        discount = CurrentUser.MemberDiscount;
                        foreach (var item in pageModel.Models)
                        {
                            item.MinSalePrice = Math.Round(item.MinSalePrice * discount, 2);
                        }
                    }
                }
                foreach (var item in pageModel.Models)
                {
                    var flashSale      = flashSalePriceList.Any(p => p.ProductId == item.Id);
                    var fightGroupSale = fightGroupSalePriceList.Any(p => p.ProductId == item.Id);

                    if (flashSale && !fightGroupSale)
                    {
                        item.MinSalePrice = TypeHelper.ObjectToDecimal(flashSalePriceList.FirstOrDefault(p => p.ProductId == item.Id).MinPrice.ToString("f2"));
                    }
                    else if (!flashSale && fightGroupSale)
                    {
                        item.MinSalePrice = TypeHelper.ObjectToDecimal(fightGroupSalePriceList.FirstOrDefault(p => p.ProductId == item.Id).MiniGroupPrice.ToString("f2"));
                    }
                }
                #endregion
            }

            var productlist = pageModel.Models.ToList().Select(item =>
            {
                return(new
                {
                    Id = item.Id,
                    ProductName = item.ProductName,
                    MeasureUnit = item.MeasureUnit,
                    MinSalePrice = item.MinSalePrice.ToString("f2"),
                    SaleCounts = item.SaleCounts,                                                                                             //销量统计没有考虑预约单支付完成。
                    RelativePath = Core.HimallIO.GetRomoteProductSizeImage(item.RelativePath, 1, (int)Himall.CommonModel.ImageSize.Size_350), //150-350
                });
            });
            var result = new
            {
                Success     = true,
                ProductList = productlist,
                total       = pageModel.Total
            };

            return(Json(result));
        }
Exemplo n.º 12
0
        public QueryPageModel <ProductInfo> SearchProduct(ShopBranchProductQuery productQueryModel)
        {
            var products = Context.ProductInfo.Where(item => true);

            //过滤已删除的商品
            products = products.Where(item => item.IsDeleted == false);

            if (productQueryModel.Ids != null && productQueryModel.Ids.Count() > 0)//条件 编号
            {
                products = products.Where(item => productQueryModel.Ids.Contains(item.Id));
            }

            if (!string.IsNullOrWhiteSpace(productQueryModel.ProductCode))
            {
                products = products.Where(item => item.ProductCode == productQueryModel.ProductCode);
            }

            if (productQueryModel.ShopId.HasValue)//过滤店铺
            {
                products = products.Where(item => item.ShopId == productQueryModel.ShopId);
                if (productQueryModel.IsOverSafeStock.HasValue)
                {
                    List <long> pids = products.Select(e => e.Id).ToList();
                    if (productQueryModel.IsOverSafeStock.Value)
                    {
                        pids = Context.SKUInfo.Where(e => e.SafeStock.Value >= e.Stock && pids.Contains(e.ProductId)).Select(e => e.ProductId).ToList();
                    }
                    else
                    {
                        pids = Context.SKUInfo.Where(e => e.SafeStock.Value < e.Stock && pids.Contains(e.ProductId)).Select(e => e.ProductId).ToList();
                    }
                    products = products.Where(e => pids.Contains(e.Id));
                }
            }
            if (productQueryModel.AuditStatus != null)//条件 审核状态
            {
                products = products.Where(item => productQueryModel.AuditStatus.Contains(item.AuditStatus));
            }

            if (productQueryModel.SaleStatus.HasValue)
            {
                products = products.Where(item => item.SaleStatus == productQueryModel.SaleStatus);
            }

            if (productQueryModel.CategoryId.HasValue)//条件 分类编号
            {
                products = products.Where(item => ("|" + item.CategoryPath + "|").Contains("|" + productQueryModel.CategoryId.Value + "|"));
            }

            if (productQueryModel.NotIncludedInDraft)
            {
                products = products.Where(item => item.SaleStatus != ProductInfo.ProductSaleStatus.InDraft);
            }

            if (productQueryModel.StartDate.HasValue)//添加日期筛选
            {
                products = products.Where(item => item.AddedDate >= productQueryModel.StartDate);
            }
            if (productQueryModel.EndDate.HasValue)//添加日期筛选
            {
                var end = productQueryModel.EndDate.Value.Date.AddDays(1);
                products = products.Where(item => item.AddedDate < end);
            }
            if (!string.IsNullOrWhiteSpace(productQueryModel.KeyWords))// 条件 关键字
            {
                products = products.Where(item => item.ProductName.Contains(productQueryModel.KeyWords));
            }

            if (!string.IsNullOrWhiteSpace(productQueryModel.ShopName))//查询商家关键字
            {
                var shopIds = Context.ShopInfo.FindBy(item => item.ShopName.Contains(productQueryModel.ShopName)).Select(item => item.Id);
                products = products.Where(item => shopIds.Contains(item.ShopId));
            }
            if (productQueryModel.IsLimitTimeBuy)
            {
                var limits = Context.LimitTimeMarketInfo.Where(l => l.AuditStatus == LimitTimeMarketInfo.LimitTimeMarketAuditStatus.Ongoing).Select(l => l.ProductId);
                products = products.Where(p => !limits.Contains(p.Id));
            }
            if (productQueryModel.shopBranchId.HasValue && productQueryModel.shopBranchId.Value != 0)
            {//过滤门店已选商品
                var pid = Context.ShopBranchSkusInfo.Where(e => e.ShopBranchId == productQueryModel.shopBranchId.Value).Select(item => item.ProductId).Distinct();
                products = products.Where(e => pid.Any(id => id == e.Id));
            }
            if (productQueryModel.ShopBranchProductStatus.HasValue)
            {//门店商品状态
                var pid = Context.ShopBranchSkusInfo.Where(e => e.ShopBranchId == productQueryModel.shopBranchId.Value && e.Status == productQueryModel.ShopBranchProductStatus.Value).Select(item => item.ProductId).Distinct();
                products = products.Where(e => pid.Any(id => id == e.Id));
            }

            long shopCateogryId = productQueryModel.ShopCategoryId.GetValueOrDefault();

            var proorder = products.GetOrderBy(d => d.OrderByDescending(o => o.Id));

            switch (productQueryModel.OrderKey)
            {
            case 2:
                if (!productQueryModel.OrderType)
                {
                    proorder = products.GetOrderBy(d => d.OrderByDescending(o => o.AddedDate));
                }
                else
                {
                    proorder = products.GetOrderBy(d => d.OrderBy(o => o.AddedDate));
                }
                break;

            case 3:
                if (!productQueryModel.OrderType)
                {
                    proorder = products.GetOrderBy(d => d.OrderByDescending(o => o.SaleCounts));
                }
                else
                {
                    proorder = products.GetOrderBy(d => d.OrderBy(o => o.SaleCounts));
                }
                break;

            default:
                if (!productQueryModel.OrderType)
                {
                    proorder = products.GetOrderBy(d => d.OrderByDescending(o => o.Id));
                }
                else
                {
                    proorder = products.GetOrderBy(d => d.OrderBy(o => o.Id));
                }
                break;
            }

            //店铺分类
            IEnumerable <long> productIds = new long[] { };

            if (productQueryModel.ShopCategoryId.HasValue)
            {
                productIds = Context.ProductShopCategoryInfo
                             .Where(
                    item => item.ShopCategoryInfo.Id == shopCateogryId ||
                    item.ShopCategoryInfo.ParentCategoryId == shopCateogryId).Select(item => item.ProductId);
            }

            int total = products.Count();

            products = products.Where(item => (shopCateogryId == 0 || productIds.Contains(item.Id)));
            products = products.GetPage(out total, proorder, productQueryModel.PageNo, productQueryModel.PageSize);

            QueryPageModel <ProductInfo> pageModel = new QueryPageModel <ProductInfo>()
            {
                Total  = total,
                Models = products.ToList()
            };

            return(pageModel);
        }
Exemplo n.º 13
0
        /// <summary>
        /// 根据商品查找门店
        /// </summary>
        /// <param name="fromLatLng"></param>
        /// <param name="productId"></param>
        /// <param name="shopId"></param>
        /// <param name="pageNo"></param>
        /// <param name="pageSize"></param>
        /// <returns></returns>
        public JsonResult <Result <dynamic> > GetStoresByProduct(string fromLatLng, long productId, long?shopId = null, int pageNo = 1, int pageSize = 10)
        {
            CheckOpenStore();
            ShopBranchQuery query = new ShopBranchQuery();

            query.PageNo   = pageNo;
            query.PageSize = pageSize;
            query.Status   = ShopBranchStatus.Normal;
            query.ShopBranchProductStatus = ShopBranchSkuStatus.Normal;
            query.ProductIds = new long[] { productId };
            query.CityId     = -1;
            query.FromLatLng = fromLatLng;
            query.OrderKey   = 2;
            query.OrderType  = true;
            //query.FilterVirtualProduct = true;
            if (query.FromLatLng.Split(',').Length != 2)
            {
                throw new HimallException("无法获取您的当前位置,请确认是否开启定位服务!");
            }

            string address = "", province = "", city = "", district = "", street = "";
            string currentPosition = string.Empty;//当前详情地址,优先顺序:建筑、社区、街道
            Region cityInfo        = new Region();

            if (shopId.HasValue)//如果传入了商家ID,则只取商家下门店
            {
                query.ShopId = shopId.Value;
                if (query.ShopId <= 0)
                {
                    throw new HimallException("无法定位到商家!");
                }
            }
            else//否则取用户同城门店
            {
                var addressObj = ShopbranchHelper.GetAddressByLatLng(query.FromLatLng, ref address, ref province, ref city, ref district, ref street);
                if (string.IsNullOrWhiteSpace(city))
                {
                    throw new HimallException("无法定位到城市!");
                }
                cityInfo = RegionApplication.GetRegionByName(city, Region.RegionLevel.City);
                if (cityInfo != null)
                {
                    query.CityId = cityInfo.Id;
                }
                //处理当前地址

                currentPosition = street;
            }
            var shopBranchs = ShopBranchApplication.StoreByProductNearShopBranchs(query);
            //组装首页数据
            //补充门店活动数据
            var homepageBranchs = ProcessBranchHomePageData(shopBranchs.Models);

            AutoMapper.Mapper.CreateMap <HomePageShopBranch, HomeGetStoreListModel>();
            var  homeStores = AutoMapper.Mapper.Map <List <HomePageShopBranch>, List <HomeGetStoreListModel> >(homepageBranchs);
            long userId     = 0;

            if (CurrentUser != null)
            {
                //如果已登陆取购物车数据
                //memberCartInfo = CartApplication.GetShopBranchCart(CurrentUser.Id);
                userId = CurrentUser.Id;
            }

            var cartItemCount = ShopBranchApplication.GetShopBranchCartItemCount(userId, homeStores.Select(e => e.ShopBranch.Id).ToList());

            foreach (var item in homeStores)
            {
                //商品
                ShopBranchProductQuery proquery = new ShopBranchProductQuery();
                proquery.PageSize                = 4;
                proquery.PageNo                  = 1;
                proquery.OrderKey                = 3;
                proquery.ShopBranchId            = item.ShopBranch.Id;
                proquery.ShopBranchProductStatus = ShopBranchSkuStatus.Normal;
                //proquery.FilterVirtualProduct = true;
                var pageModel = ShopBranchApplication.GetShopBranchProducts(proquery);
                if (productId > 0)
                {
                    var product = pageModel.Models.FirstOrDefault(n => n.Id == productId);
                    pageModel.Models.Remove(product);
                    var models = pageModel.Models.OrderByDescending(p => p.SaleCounts).ThenByDescending(p => p.Id).Take(3).ToList();
                    if (null != product)
                    {
                        models.Insert(0, product);
                    }
                    pageModel.Models = models;
                }
                var dtNow = DateTime.Now;
                //var saleCountByMonth = OrderApplication.GetSaleCount(dtNow.AddDays(-30).Date, dtNow, shopBranchId: proquery.ShopBranchId.Value);
                item.SaleCount        = OrderApplication.GetSaleCount(shopBranchId: proquery.ShopBranchId.Value);
                item.SaleCountByMonth = ShopBranchApplication.GetShopBranchSaleCount(item.ShopBranch.Id, dtNow.AddDays(-30).Date, dtNow);
                item.ShowProducts     = pageModel.Models.Select(p => new HomeGetStoreListProductModel
                {
                    Id           = p.Id,
                    DefaultImage = HimallIO.GetRomoteProductSizeImage(p.ImagePath, 1, ImageSize.Size_150.GetHashCode()),
                    MinSalePrice = p.MinSalePrice,
                    ProductName  = p.ProductName,
                    HasSKU       = p.HasSKU,
                    MarketPrice  = p.MarketPrice
                }).ToList();
                item.ProductCount = pageModel.Total;
                if (cartItemCount != null)
                {
                    item.CartQuantity = cartItemCount.ContainsKey(item.ShopBranch.Id) ? cartItemCount[item.ShopBranch.Id] : 0;
                }

                //评分
                item.CommentScore = ShopBranchApplication.GetServiceMark(item.ShopBranch.Id).ComprehensiveMark;
            }
            return(JsonResult <dynamic>(new
            {
                Total = shopBranchs.Total,
                CityInfo = new { Id = cityInfo.Id, Name = cityInfo.Name },
                CurrentAddress = currentPosition,
                Stores = homeStores,
                ProductSaleCountOnOff = SiteSettingApplication.SiteSettings.ProductSaleCountOnOff == 1
            }));
        }
Exemplo n.º 14
0
        /// <summary>
        /// 门店列表
        /// </summary>
        /// <returns></returns>
        public JsonResult <Result <dynamic> > GetStoreList(string fromLatLng, string keyWords = "", long?tagsId = null, long?shopId = null, int pageNo = 1, int pageSize = 10)
        {
            //TODO:FG 异常查询 MysqlExecuted:226,耗时:1567.4137毫秒
            CheckOpenStore();
            ShopBranchQuery query = new ShopBranchQuery();

            query.PageNo                  = pageNo;
            query.PageSize                = pageSize;
            query.Status                  = ShopBranchStatus.Normal;
            query.ShopBranchName          = keyWords.Trim();
            query.ShopBranchTagId         = tagsId;
            query.CityId                  = -1;
            query.FromLatLng              = fromLatLng;
            query.OrderKey                = 2;
            query.OrderType               = true;
            query.ShopBranchProductStatus = ShopBranchSkuStatus.Normal;
            if (query.FromLatLng.Split(',').Length != 2)
            {
                throw new HimallException("无法获取您的当前位置,请确认是否开启定位服务!");
            }
            if (shopId.HasValue)
            {
                //var shop = ShopApplication.GetShopInfo(shopId.Value);
                var isFreeze = ShopApplication.IsFreezeShop(shopId.Value);
                if (isFreeze)
                {
                    return(Json(ErrorResult <dynamic>(msg: "此店铺已冻结")));
                }
                else
                {
                    var isExpired = ShopApplication.IsExpiredShop(shopId.Value);
                    if (isExpired)
                    {
                        return(Json(ErrorResult <dynamic>(msg: "此店铺已过期")));
                    }
                }
            }
            string address = "", province = "", city = "", district = "", street = "";
            string currentPosition = string.Empty;//当前详情地址,优先顺序:建筑、社区、街道
            Region cityInfo        = new Region();

            if (shopId.HasValue)//如果传入了商家ID,则只取商家下门店
            {
                query.ShopId = shopId.Value;
                if (query.ShopId <= 0)
                {
                    throw new HimallException("无法定位到商家!");
                }
            }
            else//否则取用户同城门店
            {
                var addressObj = ShopbranchHelper.GetAddressByLatLng(query.FromLatLng, ref address, ref province, ref city, ref district, ref street);
                if (string.IsNullOrWhiteSpace(city))
                {
                    city = province;
                }
                if (string.IsNullOrWhiteSpace(city))
                {
                    throw new HimallException("无法定位到城市!");
                }
                cityInfo = RegionApplication.GetRegionByName(city, Region.RegionLevel.City);
                if (cityInfo == null)
                {
                    throw new HimallException("无法定位到城市!");
                }
                if (cityInfo != null)
                {
                    query.CityId = cityInfo.Id;
                }
                //处理当前地址
                currentPosition = street;
            }
            var shopBranchs = ShopBranchApplication.SearchNearShopBranchs(query);
            //组装首页数据
            //补充门店活动数据
            var homepageBranchs = ProcessBranchHomePageData(shopBranchs.Models);

            AutoMapper.Mapper.CreateMap <HomePageShopBranch, HomeGetStoreListModel>();
            var  homeStores = AutoMapper.Mapper.Map <List <HomePageShopBranch>, List <HomeGetStoreListModel> >(homepageBranchs);
            long userId     = 0;

            if (CurrentUser != null)
            {//如果已登陆取购物车数据
                //memberCartInfo = CartApplication.GetShopBranchCart(CurrentUser.Id);
                userId = CurrentUser.Id;
            }
            //统一处理门店购物车数量
            var cartItemCount = ShopBranchApplication.GetShopBranchCartItemCount(userId, homeStores.Select(e => e.ShopBranch.Id).ToList());

            foreach (var item in homeStores)
            {
                //商品
                ShopBranchProductQuery proquery = new ShopBranchProductQuery();
                proquery.PageSize = 4;
                proquery.PageNo   = 1;
                proquery.OrderKey = 3;
                if (!string.IsNullOrWhiteSpace(keyWords))
                {
                    proquery.KeyWords = keyWords;
                }
                proquery.ShopBranchId            = item.ShopBranch.Id;
                proquery.ShopBranchProductStatus = ShopBranchSkuStatus.Normal;
                //proquery.FilterVirtualProduct = true;
                var pageModel = ShopBranchApplication.GetShopBranchProducts(proquery);
                var dtNow     = DateTime.Now;
                //var saleCountByMonth = OrderApplication.GetSaleCount(dtNow.AddDays(-30).Date, dtNow, shopBranchId: proquery.ShopBranchId.Value);
                item.SaleCount        = OrderApplication.GetSaleCount(shopBranchId: proquery.ShopBranchId.Value);
                item.SaleCountByMonth = ShopBranchApplication.GetShopBranchSaleCount(item.ShopBranch.Id, dtNow.AddDays(-30).Date, dtNow);
                item.ShowProducts     = pageModel.Models.Select(p =>
                {
                    var comcount = CommentApplication.GetProductHighCommentCount(productId: p.Id, shopBranchId: proquery.ShopBranchId.Value);
                    return(new HomeGetStoreListProductModel
                    {
                        Id = p.Id,
                        DefaultImage = HimallIO.GetRomoteProductSizeImage(p.ImagePath, 1, ImageSize.Size_150.GetHashCode()),
                        MinSalePrice = p.MinSalePrice,
                        ProductName = p.ProductName,
                        HasSKU = p.HasSKU,
                        MarketPrice = p.MarketPrice,
                        SaleCount = Himall.Core.Helper.TypeHelper.ObjectToInt(p.VirtualSaleCounts) + OrderApplication.GetSaleCount(dtNow.AddDays(-30).Date, dtNow, shopBranchId: proquery.ShopBranchId.Value, productId: p.Id),
                        HighCommentCount = comcount,
                    });
                }).ToList();
                item.ProductCount = pageModel.Total;
                if (cartItemCount != null)
                {
                    item.CartQuantity = cartItemCount.ContainsKey(item.ShopBranch.Id) ? cartItemCount[item.ShopBranch.Id] : 0;
                }
                //评分
                item.CommentScore = ShopBranchApplication.GetServiceMark(item.ShopBranch.Id).ComprehensiveMark;
            }
            return(JsonResult <dynamic>(new
            {
                Total = shopBranchs.Total,
                CityInfo = new { Id = cityInfo.Id, Name = cityInfo.Name },
                CurrentAddress = currentPosition,
                Stores = homeStores,
                ProductSaleCountOnOff = SiteSettingApplication.SiteSettings.ProductSaleCountOnOff == 1
            }));
        }
Exemplo n.º 15
0
        public JsonResult ProductList(int pageSize, int pageNo, string shopCategoryId, string shopId, string shopBranchId)
        {
            bool isOpenStore = SiteSettingApplication.GetSiteSettings() != null && SiteSettingApplication.GetSiteSettings().IsOpenStore;

            if (!isOpenStore)
            {
                throw new Core.HimallException("门店未授权!");
            }
            ShopBranchProductQuery query = new ShopBranchProductQuery();

            query.PageSize                = pageSize;
            query.PageNo                  = pageNo;
            query.ShopId                  = TypeHelper.ObjectToInt(shopId, 0);
            query.shopBranchId            = TypeHelper.ObjectToInt(shopBranchId, 0);
            query.ShopBranchProductStatus = ShopBranchSkuStatus.Normal;

            if (query.ShopId <= 0)
            {
                return(Json(new { Success = false, Message = "无法定位到商家!" }, JsonRequestBehavior.AllowGet));
            }

            if (TypeHelper.ObjectToInt(shopCategoryId, 0) > 0)
            {
                query.ShopCategoryId = TypeHelper.ObjectToInt(shopCategoryId);
            }

            if (query.shopBranchId <= 0)
            {
                return(Json(new { Success = false, Message = "无法定位到门店!" }, JsonRequestBehavior.AllowGet));
            }

            var pageModel = ShopBranchApplication.GetShopBranchProducts(query);

            if (pageModel.Models != null && pageModel.Models.Count > 0)
            {
                #region 处理商品 官方自营店会员折扣价,各活动价等。
                var flashSalePriceList      = _iLimitTimeBuyService.GetPriceByProducrIds(pageModel.Models.Select(p => p.Id).ToList());
                var fightGroupSalePriceList = FightGroupApplication.GetActiveByProductIds(pageModel.Models.Select(p => p.Id).ToArray());

                if (CurrentUser != null)
                {
                    var shopInfo = ShopApplication.GetShop(query.ShopId.Value);
                    if (shopInfo != null && shopInfo.IsSelf)//当前商家是否是官方自营店
                    {
                        decimal discount = 1M;
                        discount = CurrentUser.MemberDiscount;
                        foreach (var item in pageModel.Models)
                        {
                            item.MinSalePrice = Math.Round(item.MinSalePrice * discount, 2);
                        }
                    }
                }

                foreach (var item in pageModel.Models)
                {
                    var flashSale      = flashSalePriceList.Any(p => p.ProductId == item.Id);
                    var fightGroupSale = fightGroupSalePriceList.Any(p => p.ProductId == item.Id);

                    if (flashSale && !fightGroupSale)
                    {
                        item.MinSalePrice = TypeHelper.ObjectToDecimal(flashSalePriceList.FirstOrDefault(p => p.ProductId == item.Id).MinPrice.ToString("f2"));
                    }
                    else if (!flashSale && fightGroupSale)
                    {
                        item.MinSalePrice = TypeHelper.ObjectToDecimal(fightGroupSalePriceList.FirstOrDefault(p => p.ProductId == item.Id).MiniGroupPrice.ToString("f2"));
                    }
                }
                #endregion
            }
            var product = pageModel.Models.ToList().Select(item =>
            {
                return(new
                {
                    Id = item.Id,
                    ProductName = item.ProductName,
                    MeasureUnit = item.MeasureUnit,
                    MinSalePrice = item.MinSalePrice.ToString("f2"),
                    SaleCounts = item.SaleCounts,//销量统计没有考虑订单支付完成。
                    RelativePath = Core.HimallIO.GetRomoteProductSizeImage(item.RelativePath, 1, (int)Himall.CommonModel.ImageSize.Size_350),
                });
            });
            return(Json(new { Success = true, Models = product, Total = pageModel.Total }, JsonRequestBehavior.AllowGet));
        }