/// <summary> /// 取诊疗项目SKU /// </summary> /// <param name="pid"></param> /// <returns></returns> public object GetProductSku(long pid) { CheckUserLogin(); var sku = ProductManagerApplication.GetSKU(pid); return(Json(new { success = true, sku = sku })); }
/// <summary> /// 获取评价 /// </summary> /// <param name="query"></param> /// <returns></returns> public JsonResult <Result <dynamic> > GetComments([FromUri] ProductCommentQuery query) { if (query.PageNo == 0) { query.PageNo = 1; } if (query.PageSize == 0) { query.PageSize = 5; } var data = CommentApplication.GetProductComments(query); AutoMapper.Mapper.CreateMap <ProductComment, HomeGetCommentListModel>(); var datalist = Mapper.Map <List <ProductComment>, List <HomeGetCommentListModel> >(data.Models); var users = MemberApplication.GetMembers(datalist.Select(d => d.UserId).ToList()); var products = ProductManagerApplication.GetAllProductByIds(datalist.Select(d => d.ProductId).ToList()); //补充数据信息 foreach (var item in datalist) { var u = users.FirstOrDefault(d => d.Id == item.UserId); var product = products.FirstOrDefault(d => d.Id == item.ProductId); if (u != null) { item.UserPhoto = Himall.Core.HimallIO.GetRomoteImagePath(u.Photo); } if (product != null) { item.ProductName = product.ProductName; } //规格 var sku = ProductManagerApplication.GetSKU(item.SkuId); if (sku != null) { List <string> skucs = new List <string>(); if (!string.IsNullOrWhiteSpace(sku.Color)) { skucs.Add(sku.Color); } if (!string.IsNullOrWhiteSpace(sku.Size)) { skucs.Add(sku.Size); } if (!string.IsNullOrWhiteSpace(sku.Version)) { skucs.Add(sku.Version); } item.SKU = string.Join("+", skucs); } foreach (var pitem in item.Images) { pitem.CommentImage = HimallIO.GetRomoteImagePath(pitem.CommentImage); } } return(JsonResult <dynamic>(new { total = data.Total, rows = datalist })); }
/// <summary> /// 是否可允许自提门店 /// </summary> /// <param name="shopId">商家ID</param> /// <returns></returns> public object GetIsSelfDelivery(long shopId, long productId, string fromLatLng = "") { if (shopId <= 0) { return(Json(new { Message = "请传入合法商家ID", IsSelfDelivery = 0 })); } if (!(fromLatLng.Split(',').Length == 2)) { return(Json(new { Message = "请传入合法经纬度", IsSelfDelivery = 0 })); } var query = new CommonModel.ShopBranchQuery() { ShopId = shopId, Status = CommonModel.ShopBranchStatus.Normal }; string address = "", province = "", city = "", district = "", street = ""; ShopbranchHelper.GetAddressByLatLng(fromLatLng, ref address, ref province, ref city, ref district, ref street); if (string.IsNullOrWhiteSpace(city)) { return(Json(new { Message = "无法获取当前城市", IsSelfDelivery = 0 })); } Region cityInfo = RegionApplication.GetRegionByName(city, Region.RegionLevel.City); if (cityInfo == null) { return(Json(new { Message = "获取当前城市异常", IsSelfDelivery = 0 })); } query.CityId = cityInfo.Id; query.ProductIds = new long[] { productId }; var shopBranch = ShopBranchApplication.GetShopBranchsAll(query).Models; //获取该商品所在商家下,且与用户同城内门店,且门店有该商品 var skuInfos = ProductManagerApplication.GetSKU(productId); //获取该商品的sku //门店SKU内会有默认的SKU if (!skuInfos.Exists(p => p.Id == string.Format("{0}_0_0_0", productId))) { skuInfos.Add(new DTO.SKU() { Id = string.Format("{0}_0_0_0", productId) }); } var shopBranchSkus = ShopBranchApplication.GetSkus(query.ShopId, shopBranch.Select(p => p.Id));//门店商品SKU //门店商品SKU,只要有一个sku有库存即可 shopBranch.ForEach(p => p.Enabled = skuInfos.Where(skuInfo => shopBranchSkus.Where(sbSku => sbSku.ShopBranchId == p.Id && sbSku.Stock > 0 && sbSku.SkuId == skuInfo.Id).Count() > 0).Count() > 0 ); return(Json(new { Message = "", IsSelfDelivery = shopBranch.Where(p => p.Enabled).Count() > 0 ? 1 : 0 }));//至少有一个能够自提的门店,才可显示图标 }
void CheckSkuIdIsValid(string skuId, long shopBranchId) { long productId = 0; long.TryParse(skuId.Split('_')[0], out productId); if (productId == 0) { throw new Himall.Core.InvalidPropertyException("SKUId无效"); } var skuItem = ProductManagerApplication.GetSKU(skuId); if (skuItem == null) { throw new Himall.Core.InvalidPropertyException("SKUId无效"); } }
public object GetUpdateCartItem(string skuId, int count, long shopBranchId) { CheckUserLogin(); CheckSkuIdIsValid(skuId, shopBranchId); //判断库存 var sku = ProductManagerApplication.GetSKU(skuId); if (sku == null) { throw new MallException("错误的SKU"); } //if (count > sku.Stock) //{ // throw new MallException("库存不足"); //} var shopBranch = ShopBranchApplication.GetShopBranchById(shopBranchId); if (shopBranch == null) { throw new MallException("错误的门店id"); } var shopBranchSkuList = ShopBranchApplication.GetSkusByIds(shopBranchId, new List <string> { skuId }); if (shopBranchSkuList == null || shopBranchSkuList.Count == 0) { throw new MallException("门店没有该商品"); } if (shopBranchSkuList[0].Status == ShopBranchSkuStatus.InStock) { throw new MallException("此商品已下架"); } var sbsku = shopBranchSkuList.FirstOrDefault(); if (sbsku.Stock < count) { throw new MallException("门店库存不足"); } long memberId = CurrentUser.Id; CartApplication.UpdateShopBranchCart(skuId, count, memberId, shopBranchId); return(Json("")); }
public bool CheckSkuId(string skuId) { bool status = true; long productId = 0; long.TryParse(skuId.Split('_')[0], out productId); if (productId == 0) { status = false; } var skuItem = ProductManagerApplication.GetSKU(skuId); if (skuItem == null) { status = false; } var sku = ProductManagerApplication.GetSKU(skuId); if (sku == null) { status = false; } return(status); }
public void AddToCart(string skuId, int count, long memberId, long shopBranchId) { CheckSkuIdIsValid(skuId, shopBranchId); //判断库存 var sku = ProductManagerApplication.GetSKU(skuId); if (sku == null) { throw new HimallException("错误的SKU"); } if (count > sku.Stock) { throw new HimallException("库存不足"); } var shopBranch = ShopBranchApplication.GetShopBranchById(shopBranchId); if (shopBranch == null) { throw new HimallException("错误的门店id"); } var shopBranchSkuList = ShopBranchApplication.GetSkusByIds(shopBranchId, new List <string> { skuId }); if (shopBranchSkuList == null || shopBranchSkuList.Count == 0) { throw new HimallException("门店没有该商品"); } if (shopBranchSkuList[0].Status == ShopBranchSkuStatus.InStock) { throw new HimallException("此商品已下架"); } if (memberId > 0) { CartApplication.AddToShopBranchCart(skuId, count, memberId, shopBranchId); } else { string cartInfo = WebHelper.GetCookie(CookieKeysCollection.HIMALL_CART_BRANCH); if (!string.IsNullOrWhiteSpace(cartInfo)) { string[] cartItems = cartInfo.Split(','); string newCartInfo = string.Empty; bool exist = false; foreach (string cartItem in cartItems) { var cartItemParts = cartItem.Split(':'); if (cartItemParts[0] == skuId && cartItemParts[2] == shopBranchId.ToString()) { newCartInfo += "," + skuId + ":" + (int.Parse(cartItemParts[1]) + count) + ":" + shopBranchId; exist = true; } else { newCartInfo += "," + cartItem; } } if (!exist) { newCartInfo += "," + skuId + ":" + count + ":" + shopBranchId; } if (!string.IsNullOrWhiteSpace(newCartInfo)) { newCartInfo = newCartInfo.Substring(1); } WebHelper.SetCookie(CookieKeysCollection.HIMALL_CART_BRANCH, newCartInfo); } else { WebHelper.SetCookie(CookieKeysCollection.HIMALL_CART_BRANCH, string.Format("{0}:{1}:{2}", skuId, count, shopBranchId)); } } }
public void AddToCart(string skuId, int count, long memberId) { CheckSkuIdIsValid(skuId); //判断库存 var sku = ProductManagerApplication.GetSKU(skuId); if (sku == null) { throw new HimallException("错误的SKU"); } if (count > sku.Stock) { throw new HimallException("库存不足"); } #region 商品限购判断 var prouctInfo = ProductManagerApplication.GetProduct(sku.ProductId); if (prouctInfo != null && prouctInfo.MaxBuyCount > 0 && !prouctInfo.IsOpenLadder)//商品有限购数量 { var carInfo = CartApplication.GetCart(memberId); if (carInfo != null) { var quantity = carInfo.Items.Where(p => p.ProductId == sku.ProductId).Sum(d => d.Quantity); //当前用户该商品已加入购物车数量 if (count + quantity > prouctInfo.MaxBuyCount) //已有数量+新数量 { throw new HimallException(string.Format("每个ID限购{0}件", prouctInfo.MaxBuyCount)); } } } #endregion if (memberId > 0) { CartApplication.AddToCart(skuId, count, memberId); } else { string cartInfo = WebHelper.GetCookie(CookieKeysCollection.HIMALL_CART); if (!string.IsNullOrWhiteSpace(cartInfo)) { string[] cartItems = cartInfo.Split(','); string newCartInfo = string.Empty; bool exist = false; foreach (string cartItem in cartItems) { var cartItemParts = cartItem.Split(':'); if (cartItemParts[0] == skuId) { newCartInfo += "," + skuId + ":" + (int.Parse(cartItemParts[1]) + count); exist = true; } else { newCartInfo += "," + cartItem; } } if (!exist) { newCartInfo += "," + skuId + ":" + count; } if (!string.IsNullOrWhiteSpace(newCartInfo)) { newCartInfo = newCartInfo.Substring(1); } WebHelper.SetCookie(CookieKeysCollection.HIMALL_CART, newCartInfo); } else { WebHelper.SetCookie(CookieKeysCollection.HIMALL_CART, string.Format("{0}:{1}", skuId, count)); } } }
private List <CartProductModel> PackageCartProducts(Mall.Entities.ShoppingCartInfo cart, decimal prodPrice, decimal discount, IProductService productService, IShopService shopService, IShopBranchService shopBranchService, IVShopService vshopService, ITypeService typeservice, bool isBranch = false) { List <CartProductModel> products = new List <CartProductModel>(); var limitProducts = LimitTimeApplication.GetPriceByProducrIds(cart.Items.Select(e => e.ProductId).ToList());//限时购价格 var groupCart = cart.Items.Where(item => item.ShopBranchId == 0).Select(c => { var cItem = new Mall.Entities.ShoppingCartItem(); var skuInfo = productService.GetSku(c.SkuId); if (skuInfo != null) { cItem = c; } return(cItem); }).GroupBy(i => i.ProductId).ToList(); foreach (var item in cart.Items) { var product = ProductManagerApplication.GetProduct(item.ProductId); var shop = shopService.GetShop(product.ShopId); DTO.ShopBranch shopbranch = null; Entities.ShopBranchSkuInfo shopbranchsku = null; if (item.ShopBranchId > 0) { shopbranch = ShopBranchApplication.GetShopBranchById(item.ShopBranchId); shopbranchsku = shopBranchService.GetSkusByIds(item.ShopBranchId, new List <string> { item.SkuId }).FirstOrDefault(); } if (null != shop) { var vshop = vshopService.GetVShopByShopId(shop.Id); var sku = ProductManagerApplication.GetSKU(item.SkuId); if (sku == null) { continue; } //处理限时购、会员折扣价格 var prod = limitProducts.FirstOrDefault(e => e.ProductId == item.ProductId); prodPrice = sku.SalePrice; if (prod != null && !isBranch) { prodPrice = prod.MinPrice; } else { if (shop.IsSelf) {//官方自营店才计算会员折扣 prodPrice = sku.SalePrice * discount; } } #region 阶梯价--张宇枫 //阶梯价 if (product.IsOpenLadder) { var quantity = groupCart.Where(i => i.Key == item.ProductId).ToList().Sum(cartitem => cartitem.Sum(i => i.Quantity)); prodPrice = ProductManagerApplication.GetProductLadderPrice(item.ProductId, quantity); if (shop.IsSelf) { prodPrice = prodPrice * discount; } } #endregion Entities.TypeInfo typeInfo = typeservice.GetType(product.TypeId); string colorAlias = (typeInfo == null || string.IsNullOrEmpty(typeInfo.ColorAlias)) ? SpecificationType.Color.ToDescription() : typeInfo.ColorAlias; string sizeAlias = (typeInfo == null || string.IsNullOrEmpty(typeInfo.SizeAlias)) ? SpecificationType.Size.ToDescription() : typeInfo.SizeAlias; string versionAlias = (typeInfo == null || string.IsNullOrEmpty(typeInfo.VersionAlias)) ? SpecificationType.Version.ToDescription() : typeInfo.VersionAlias; if (product != null) { colorAlias = !string.IsNullOrWhiteSpace(product.ColorAlias) ? product.ColorAlias : colorAlias; sizeAlias = !string.IsNullOrWhiteSpace(product.SizeAlias) ? product.SizeAlias : sizeAlias; versionAlias = !string.IsNullOrWhiteSpace(product.VersionAlias) ? product.VersionAlias : versionAlias; } if (sku != null) { #region 正在参加限时抢购商品在购物车失效 TDO:ZYF var isLimit = false; //门店商品,在参加限时购,也可以正常购买 var limit = LimitTimeApplication.GetLimitTimeMarketItemByProductId(item.ProductId); if (limit != null && !isBranch) { isLimit = limit.Status == Entities.FlashSaleInfo.FlashSaleStatus.Ongoing; } #endregion var _tmp = new CartProductModel { CartItemId = item.Id.ToString(), SkuId = item.SkuId, Id = product.Id.ToString(), ImgUrl = Core.MallIO.GetRomoteProductSizeImage(product.RelativePath, 1, (int)Mall.CommonModel.ImageSize.Size_150), Name = product.ProductName, Price = prodPrice.ToString("F2"), Count = item.Quantity.ToString(), ShopId = shop.Id.ToString(), Size = sku.Size, Color = sku.Color, Version = sku.Version, VShopId = vshop == null ? "0" : vshop.Id.ToString(), ShopName = shop.ShopName, ShopLogo = vshop == null ? "" : Core.MallIO.GetRomoteImagePath(vshop.StrLogo), Url = Core.MallIO.GetRomoteImagePath("/m-IOS/product/detail/") + item.ProductId, ProductStatus = isLimit ? 0 : (sku.Stock <= 0 ? ProductInfo.ProductSaleStatus.InStock.GetHashCode() : product.SaleStatus.GetHashCode()), Status = isLimit ? 1 : ProductManagerApplication.GetProductShowStatus(product, sku, shopbranch == null ? 1 : item.Quantity, shopbranch, shopbranchsku),// 0:正常;1:已失效;2:库存不足;3:已下架; ColorAlias = colorAlias, SizeAlias = sizeAlias, VersionAlias = versionAlias, AddTime = item.AddTime, ShopBranchId = item.ShopBranchId, ShopBranchName = null == shopbranch ? "" : shopbranch.ShopBranchName, ShopBranchLogo = null == shopbranch ? "" : Core.MallIO.GetRomoteImagePath(shopbranch.ShopImages) }; products.Add(_tmp); } } } return(products); }
public JsonResult GetBranchCartProducts(long shopBranchId) { var branchCartHelper = new BranchCartHelper(); long userId = 0; //会员折扣 decimal discount = 1.0M;//默认折扣为1(没有折扣) if (CurrentUser != null) { userId = CurrentUser.Id; discount = CurrentUser.MemberDiscount; } var cart = branchCartHelper.GetCart(userId, shopBranchId); //var shopBranch = _iShopBranchService.GetShopBranchById(shopBranchId); var shopBranch = ShopBranchApplication.GetShopBranchById(shopBranchId); Dictionary <long, long> buyedCounts = null; if (userId > 0) { buyedCounts = new Dictionary <long, long>(); buyedCounts = OrderApplication.GetProductBuyCount(userId, cart.Items.Select(x => x.ProductId)); } decimal prodPrice = 0.0M;//优惠价格 var shopBranchSkuList = _iShopBranchService.GetSkusByIds(shopBranchId, cart.Items.Select(x => x.SkuId).ToList()); var products = cart.Items.Select(item => { var product = _iProductService.GetProduct(item.ProductId); var shopbranchsku = shopBranchSkuList.FirstOrDefault(x => x.SkuId == item.SkuId); long stock = shopbranchsku == null ? 0 : shopbranchsku.Stock; if (stock > product.MaxBuyCount && product.MaxBuyCount != 0) { stock = product.MaxBuyCount; } if (product.MaxBuyCount > 0 && buyedCounts != null && buyedCounts.ContainsKey(item.ProductId)) { long buynum = buyedCounts[item.ProductId]; stock = stock - buynum; } var shop = _iShopService.GetShop(product.ShopId); //Entities.SKUInfo sku = null; string skuDetails = ""; if (null != shop) { var vshop = _iVShopService.GetVShopByShopId(shop.Id); //sku = _iProductService.GetSku(item.SkuId); DTO.SKU sku = ProductManagerApplication.GetSKU(item.SkuId); if (sku == null) { return(null); } prodPrice = sku.SalePrice; if (shop.IsSelf) {//官方自营店才计算会员折扣 prodPrice = sku.SalePrice * discount; } var typeInfo = TypeApplication.GetProductType(product.TypeId); skuDetails = ""; if (!string.IsNullOrWhiteSpace(sku.Size)) { skuDetails += sku.Size + " "; } if (!string.IsNullOrWhiteSpace(sku.Color)) { skuDetails += sku.Color + " "; } if (!string.IsNullOrWhiteSpace(sku.Version)) { skuDetails += sku.Version + " "; } return(new { bId = shopBranchId, cartItemId = item.Id, skuId = item.SkuId, id = product.Id, name = product.ProductName, price = prodPrice, count = item.Quantity, stock = shopbranchsku == null ? 0 : stock, //阶梯价商品在门店购物车自动下架 //status = product.IsOpenLadder ? 1 : (shopbranchsku == null ? 1 : (shopbranchsku.Status == ShopBranchSkuStatus.Normal) ? (item.Quantity > stock ? 2 : 0) : 1),//0:正常;1:冻结;2:库存不足 status = ProductManagerApplication.GetProductShowStatus(product, sku, 1, shopBranch, shopbranchsku),//0:正常;1:冻结;2:库存不足;3:已下架; skuDetails = skuDetails, AddTime = item.AddTime }); } else { return(null); } }).Where(d => d != null).OrderBy(s => s.status).ThenByDescending(o => o.AddTime); var cartModel = new { products = products, amount = products.Where(x => x.status == 0).Sum(item => item.price * item.count), totalCount = products.Where(x => x.status == 0).Sum(item => item.count), DeliveFee = shopBranch.DeliveFee, DeliveTotalFee = shopBranch.DeliveTotalFee, FreeMailFee = shopBranch.FreeMailFee, IsFreeMail = shopBranch.IsFreeMail, shopBranchStatus = (int)shopBranch.Status }; return(SuccessResult <dynamic>(data: cartModel)); }
/// <summary> /// 立即购买方式提交的订单 /// </summary> /// <param name="value">数据</param> private object SubmitOrderById(OrderSubmitOrderModel value) { string skuIds = value.skuIds; string counts = value.counts; long recieveAddressId = value.recieveAddressId; string couponIds = value.couponIds; int integral = value.integral; bool isCashOnDelivery = value.isCashOnDelivery; int invoiceType = value.invoiceType; string invoiceTitle = value.invoiceTitle; string invoiceContext = value.invoiceContext; //end string orderRemarks = string.Empty;//value.orderRemarks;//订单备注 OrderCreateModel model = new OrderCreateModel(); var orderService = ServiceProvider.Instance <IOrderService> .Create; var productService = ServiceProvider.Instance <IProductService> .Create; var skuIdArr = skuIds.Split(',').Select(item => item.ToString()); var countArr = counts.Split(',').Select(item => int.Parse(item)); model.CouponIdsStr = CouponApplication.ConvertUsedCoupon(couponIds); IEnumerable <long> orderIds; model.PlatformType = PlatformType.WeiXinSmallProg; model.CurrentUser = CurrentUser; model.ReceiveAddressId = recieveAddressId; model.SkuIds = skuIdArr; model.Counts = countArr; model.Integral = integral; model.IsCashOnDelivery = isCashOnDelivery; model.Invoice = (InvoiceType)invoiceType; model.InvoiceContext = invoiceContext; model.InvoiceTitle = invoiceTitle; model.formId = value.formId; model.Capital = value.Capital; CommonModel.OrderShop[] OrderShops = Newtonsoft.Json.JsonConvert.DeserializeObject <OrderShop[]>(value.jsonOrderShops); CommonModel.VirtualProductItem[] VirtualProductItems = Newtonsoft.Json.JsonConvert.DeserializeObject <VirtualProductItem[]>(value.VirtualProductItems); model.OrderShops = OrderShops;//用户APP选择门店自提时用到,2.5版本未支持门店自提 model.OrderRemarks = OrderShops.Select(p => p.Remark).ToArray(); //end if (value.isStore) { model.IsShopbranchOrder = true; } model.IsVirtual = value.ProductType == 1; if (model.IsVirtual && skuIdArr.Count() > 0) { var skuInfo = ProductManagerApplication.GetSKU(skuIdArr.FirstOrDefault()); if (skuInfo != null) { var virtualProductInfo = ProductManagerApplication.GetVirtualProductInfoByProductId(skuInfo.ProductId); if (virtualProductInfo != null && virtualProductInfo.ValidityType && DateTime.Now > virtualProductInfo.EndDate.Value) { return(Json(ErrorResult <dynamic>("该虚拟商品已过期,不支持下单"))); } } } try { //处理限时购 if (skuIdArr.Count() == 1) { var skuid = skuIdArr.ElementAt(0); if (!string.IsNullOrWhiteSpace(skuid)) { var sku = productService.GetSku(skuid); var flashSale = ServiceProvider.Instance <ILimitTimeBuyService> .Create.GetLimitTimeMarketItemByProductId(sku.ProductId); model.IslimitBuy = flashSale != null;//标识为限时购计算价格按限时购价格核算 model.FlashSaleId = flashSale != null ? flashSale.Id : 0; } } var orders = orderService.CreateOrder(model); orderIds = orders.Select(item => item.Id).ToArray(); decimal orderTotals = orders.Where(d => d.PaymentType != Entities.OrderInfo.PaymentTypes.CashOnDelivery).Sum(item => item.OrderTotalAmount); //orderIds = orderService.CreateOrder(CurrentUser.Id, skuIdArr, countArr, recieveAddressId, PlatformType); AddVshopBuyNumber(orderIds);//添加微店购买数量 #region 处理虚拟订单项 if (value.ProductType == 1 && VirtualProductItems != null && VirtualProductItems.Count() > 0) { var orderId = orderIds.FirstOrDefault(); if (orderId > 0) { var orderItemInfo = OrderApplication.GetOrderItemsByOrderId(orderId).FirstOrDefault(); if (orderItemInfo != null) { var list = VirtualProductItems.ToList().Where(a => !string.IsNullOrWhiteSpace(a.Content)).ToList();//过滤空项 list.ForEach(a => { a.OrderId = orderId; a.OrderItemId = orderItemInfo.Id; if (a.VirtualProductItemType == (sbyte)ProductInfo.VirtualProductItemType.Picture) { a.Content = MoveImages(a.Content, CurrentUser.Id); } }); if (list.Count > 0) { OrderApplication.AddVirtualOrderItemInfo(list); } } } } #endregion return(Json(new { OrderId = string.Join(",", orderIds), OrderTotal = orderTotals, RealTotalIsZero = (orderTotals - model.Capital) == 0, msg = "提交成功" })); } catch (MallException he) { return(Json(ErrorResult <dynamic>(he.Message))); } }
public object GetUpdateToCart(string openId, string SkuID, int Quantity, int GiftID = 0) { //验证用户 CheckUserLogin(); var cartHelper = new CartHelper(); long userId = CurrentUser != null ? CurrentUser.Id : 0; var skus = cartHelper.GetCart(userId); var oldQuantity = GetCartProductQuantity(skus, skuId: SkuID); oldQuantity = oldQuantity + Quantity; long productId = 0; var skuItem = skus.Items.FirstOrDefault(i => i.SkuId == SkuID); if (null == skuItem) { var sku = ProductManagerApplication.GetSKU(SkuID); if (null == sku) { return(Json(ErrorResult <dynamic>("错误的参数:SkuId"))); } productId = sku.ProductId; } else { productId = skuItem.ProductId; } var ladderPrice = 0m; var product = ProductManagerApplication.GetProduct(productId); if (product != null) { if (product.MaxBuyCount > 0 && oldQuantity > product.MaxBuyCount && !product.IsOpenLadder) { cartHelper.UpdateCartItem(SkuID, product.MaxBuyCount, userId); return(Json(ErrorResult <dynamic>(string.Format("每个ID限购{0}件", product.MaxBuyCount), new { stock = product.MaxBuyCount }))); } } SKUInfo skuinfo = OrderApplication.GetSkuByID(SkuID); if (skuinfo.Stock < oldQuantity) { cartHelper.UpdateCartItem(SkuID, Convert.ToInt32(skuinfo.Stock), userId); return(Json(ErrorResult <dynamic>("库存不足", new { stock = skuinfo.Stock }))); } cartHelper.UpdateCartItem(SkuID, oldQuantity, userId); //调用查询购物车数据 #region 阶梯价--张宇枫 var isOpenLadder = product.IsOpenLadder; if (isOpenLadder) { var shop = ShopApplication.GetShop(product.ShopId); var groupCartByProduct = cartHelper.GetCart(userId).Items.Where(item => item.ShopBranchId == 0).GroupBy(i => i.ProductId).ToList(); //var groupCartByProduct = skus.Items.Where(item => item.ShopBranchId == 0).Select(c => //{ // var cItem = new Mall.Entities.ShoppingCartItem(); // var skuInfo = ServiceProvider.Instance<IProductService>.Create.GetSku(c.SkuId); // if (skuInfo != null) // cItem = c; // return cItem; //}).GroupBy(i => i.ProductId).ToList(); var quantity = groupCartByProduct.Where(i => i.Key == productId) .ToList() .Sum(cartitem => cartitem.Sum(i => i.Quantity)); ladderPrice = ProductManagerApplication.GetProductLadderPrice(productId, quantity); if (shop.IsSelf) { ladderPrice = CurrentUser.MemberDiscount * ladderPrice; } } #endregion return(Json(new { Price = ladderPrice.ToString("F2"), ProductId = productId, IsOpenLadder = isOpenLadder ? 1 : 0 })); }
/// <summary> /// 查询订单 /// </summary> /// <param name="context"></param> /// <returns></returns> public string GetOrder(HttpContext context) { string bizcontent = context.Request["bizcontent"]; JObject jo = (JObject)JsonConvert.DeserializeObject(bizcontent); string OrderStatus = GetJObjectValue <string>(jo, "OrderStatus"); string PlatOrderNo = GetJObjectValue <string>(jo, "PlatOrderNo"); string StartTime = GetJObjectValue <string>(jo, "StartTime");; string EndTime = GetJObjectValue <string>(jo, "EndTime"); string TimeType = GetJObjectValue <string>(jo, "TimeType"); //未使用,所有都是按订单创建时间搜索 int PageIndex = GetJObjectValue <int>(jo, "PageIndex"); int PageSize = GetJObjectValue <int>(jo, "PageSize"); if (PageIndex <= 0) { PageIndex = 1; } if (PageSize <= 0) { PageSize = 10; } OrderQuery query = new OrderQuery { ShopId = CurShopId }; switch (OrderStatus) { case "JH_01": query.Status = Entities.OrderInfo.OrderOperateStatus.WaitPay; break; case "JH_02": query.Status = Entities.OrderInfo.OrderOperateStatus.WaitDelivery; if (query.MoreStatus == null) { query.MoreStatus = new List <OrderInfo.OrderOperateStatus>() { }; } query.MoreStatus.Add(OrderInfo.OrderOperateStatus.WaitSelfPickUp); break; case "JH_03": query.Status = Entities.OrderInfo.OrderOperateStatus.WaitReceiving; break; case "JH_04": query.Status = Entities.OrderInfo.OrderOperateStatus.Finish; break; case "JH_05": query.Status = Entities.OrderInfo.OrderOperateStatus.Close; break; case "JH_99": query.Status = null; //所有 break; } if (!string.IsNullOrEmpty(PlatOrderNo) && PlatOrderNo != "") { query.OrderId = PlatOrderNo; } else { //检测参数 if (string.IsNullOrWhiteSpace(StartTime) || string.IsNullOrWhiteSpace(EndTime) || string.IsNullOrWhiteSpace(OrderStatus) ) { throw new HimallApiException("参数错误,有必填参数未给值"); } query.StartDate = DateTime.Parse(StartTime); query.EndDate = DateTime.Parse(EndTime); } query.PageNo = PageIndex; query.PageSize = PageSize; var orders = OrderApplication.GetFullOrders(query); bool ishasnextpage = false; if (orders.Total > 0) { ishasnextpage = orders.Models.Count == PageSize; } StringBuilder sb = new StringBuilder(); sb.Append("{"); sb.Append("\"code\":" + "\"" + "10000" + "\""); sb.Append(",\"message\":" + "\"" + "SUCCESS" + "\""); sb.Append(",\"numtotalorder\":" + "\"" + orders.Total + "\""); sb.Append(",\"ishasnextpage\":" + "\"" + (ishasnextpage ? "1" : "0") + "\""); sb.Append(",\"orders\":"); sb.Append("["); int curordernum = 0; foreach (var order in orders.Models) { if (curordernum > 0) { sb.Append(","); } sb.Append("{"); sb.Append("\"PlatOrderNo\":" + "\"" + order.OrderId + "\""); string tradeStatus = ""; string tradeStatusName = ""; string itemStatus = ""; switch (order.OrderStatus) { case Entities.OrderInfo.OrderOperateStatus.WaitPay: tradeStatus = "JH_01"; tradeStatusName = "等待买家付款"; itemStatus = "JH_01"; break; case Entities.OrderInfo.OrderOperateStatus.WaitDelivery: tradeStatus = "JH_02"; tradeStatusName = "等待卖家发货"; itemStatus = "JH_02"; break; case Entities.OrderInfo.OrderOperateStatus.WaitReceiving: tradeStatus = "JH_03"; tradeStatusName = "等待买家确认收货"; itemStatus = "JH_03"; break; case Entities.OrderInfo.OrderOperateStatus.Close: tradeStatus = "JH_05"; tradeStatusName = "交易关闭"; itemStatus = "JH_05"; break; case Entities.OrderInfo.OrderOperateStatus.Finish: tradeStatus = "JH_04"; tradeStatusName = "交易完成"; itemStatus = "JH_04"; break; case Entities.OrderInfo.OrderOperateStatus.WaitSelfPickUp: tradeStatus = "JH_02"; tradeStatusName = "等待卖家发货"; itemStatus = "JH_02"; break; default: tradeStatus = "JH_99"; tradeStatusName = "其他"; itemStatus = "JH_99"; break; } sb.Append(",\"tradeStatus\":" + "\"" + tradeStatus + "\""); sb.Append(",\"tradeStatusdescription\":" + "\"" + tradeStatusName + "\""); sb.Append(",\"tradetime\":" + "\"" + order.OrderDate.ToString("yyyy-MM-dd HH:mm:ss") + "\""); sb.Append(",\"payorderno\":" + "\"" + "" + "\""); sb.Append(",\"country\":" + "\"" + "CN" + "\""); string[] ShippingRegion = order.RegionFullName.Split(' '); string province = ""; if (ShippingRegion.Length > 0) { province = ShippingRegion[0]; } string city = ""; if (ShippingRegion.Length > 1) { city = ShippingRegion[1]; } string area = ""; if (ShippingRegion.Length > 2) { area = ShippingRegion[2]; } string town = ""; if (ShippingRegion.Length > 3) { town = ShippingRegion[3]; } sb.Append(",\"province\":" + "\"" + province + "\""); sb.Append(",\"city\":" + "\"" + city + "\""); sb.Append(",\"area\":" + "\"" + area + "\""); sb.Append(",\"town\":" + "\"" + town + "\""); sb.Append(",\"address\":" + "\"" + order.Address + "\""); sb.Append(",\"zip\":" + "\"\""); sb.Append(",\"phone\":" + "\"\""); sb.Append(",\"mobile\":" + "\"" + order.CellPhone + "\""); sb.Append(",\"email\":" + "\"\""); sb.Append(",\"customerremark\":" + "\"" + order.OrderRemarks + "\""); sb.Append(",\"sellerremark\":" + "\"" + order.SellerRemark + "\""); sb.Append(",\"postfee\":" + "\"" + order.Freight.ToString("F2") + "\""); sb.Append(",\"goodsfee\":" + "\"" + order.ProductTotalAmount.ToString("F2") + "\""); sb.Append(",\"totalmoney\":" + "\"" + order.OrderTotalAmount.ToString("F2") + "\""); sb.Append(",\"favourablemoney\":" + "\"" + (order.DiscountAmount + order.FullDiscount + order.IntegralDiscount).ToString("F2") + "\""); sb.Append(",\"commissionvalue\":" + "\"" + "" + "\""); sb.Append(",\"taxamount\":" + "\"0\""); sb.Append(",\"tariffamount\":" + "\"" + "" + "\""); sb.Append(",\"addedvalueamount\":" + "\"" + order.Tax + "\""); sb.Append(",\"consumptiondutyamount\":" + "\"" + "" + "\""); sb.Append(",\"sendstyle\":" + "\"" + order.DeliveryType.ToDescription() + "\""); sb.Append(",\"paytime\":" + "\"" + GetDateTimeString(order.PayDate, "yyyy-MM-dd HH:mm:ss") + "\""); sb.Append(",\"invoicetitle\":" + "\"" + order.InvoiceTitle + "\""); sb.Append(",\"taxpayerident\":" + "\"" + order.InvoiceCode + "\""); sb.Append(",\"codservicefee\":" + "\"" + "" + "\""); sb.Append(",\"receivername\":" + "\"" + order.ShipTo + "\""); sb.Append(",\"nick\":" + "\"" + order.UserName + "\""); sb.Append(",\"whsecode\":" + "\"" + "" + "\""); sb.Append(",\"IsHwgFlag\":" + "\"" + "0" + "\""); sb.Append(",\"ShouldPayType\":" + "\"" + GetShouldPayType(order.PaymentType) + "\""); sb.Append(",\"StoreName\":" + "\"" + order.ShopBranchName + "\""); sb.Append(",\"StoreId\":" + "\"" + order.ShopBranchId + "\""); sb.Append(",\"VerifyCode\":" + "\"" + order.PickupCode + "\""); //订单项 sb.Append(",\"goodinfos\":"); sb.Append("["); int curitemnum = 0; foreach (var item in order.OrderItems) { var sku = ProductManagerApplication.GetSKU(item.SkuId); if (curitemnum > 0) { sb.Append(","); } var skuproid = item.SkuId; if (!string.IsNullOrWhiteSpace(sku.Sku)) { skuproid = sku.Sku; } if (skuproid.IndexOf("_0_0_0") > -1 || string.IsNullOrWhiteSpace(skuproid)) { var _pro = ProductManagerApplication.GetProduct(item.ProductId); skuproid = _pro.ProductCode; } sb.Append("{"); sb.Append("\"ProductId\":" + "\"" + item.SkuId + "\""); sb.Append(",\"suborderno\":" + "\"" + "" + "\""); sb.Append(",\"tradegoodsno\":" + "\"" + skuproid + "\""); sb.Append(",\"tradegoodsname\":" + "\"" + item.ProductName + "\""); sb.Append(",\"tradegoodsspec\":" + "\"" + item.SKU + "\""); sb.Append(",\"goodscount\":" + "\"" + item.Quantity + "\""); sb.Append(",\"price\":" + "\"" + item.Price.ToString("F2") + "\""); sb.Append(",\"discountmoney\":" + "\"" + (item.FullDiscount + item.CouponDiscount + item.DiscountAmount).ToString("F2") + "\""); sb.Append(",\"taxamount\":" + "\"0\""); sb.Append(",\"addedvalueamount\":" + "\"0\""); sb.Append(",\"consumptiondutyamount\":" + "\"0\""); string refundStatus = "JH_07"; switch (item.RefundStats) { case 1: refundStatus = "JH_01"; break; case 2: refundStatus = "JH_02"; break; case 3: refundStatus = "JH_03"; break; case 4: refundStatus = "JH_04"; break; case 5: case 6: refundStatus = "JH_99"; break; case 7: refundStatus = "JH_07"; break; } sb.Append(",\"refundStatus\":" + "\"" + refundStatus + "\""); sb.Append(",\"status\":" + "\"" + itemStatus + "\""); sb.Append(",\"remark\":" + "\"" + "" + "\""); sb.Append("}"); curitemnum++; } sb.Append("]"); //优惠 sb.Append(",\"coupondetails\":"); sb.Append("["); curitemnum = 0; foreach (var item in order.OrderItems) { if (item.FullDiscount > 0) { if (curitemnum > 0) { sb.Append(","); } sb.Append(AddCouponDetail(item.SkuId, "JH_OffFreeCoupon", "满减", item.FullDiscount.ToString("F2"))); curitemnum++; } if (item.CouponDiscount > 0) { if (curitemnum > 0) { sb.Append(","); } sb.Append(AddCouponDetail(item.SkuId, "JH_Coupon", "优惠券", item.CouponDiscount.ToString("F2"))); curitemnum++; } if (item.EnabledRefundIntegral > 0) { if (curitemnum > 0) { sb.Append(","); } sb.Append(AddCouponDetail(item.SkuId, "JH_Point", "积分抵扣", item.EnabledRefundIntegral.Value.ToString("F2"))); curitemnum++; } if (item.DiscountAmount > 0) { if (curitemnum > 0) { sb.Append(","); } sb.Append(AddCouponDetail(item.SkuId, "JH_PeopleCoupon", "人工优惠", item.EnabledRefundIntegral.Value.ToString("F2"))); curitemnum++; } } sb.Append("]"); sb.Append("}"); curordernum++; } sb.Append("]"); sb.Append("}"); return(sb.ToString()); }
/// <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 GetShopProducts( string status, /* 使用中0, 仓库中1, 待审核2,违规下架3 */ string keywords = "", /* 搜索关键字 */ long cid = 0, /* 分类ID */ int pageNo = 1, /*页码*/ int pageSize = 10 /*每页显示数据量*/ ) { CheckUserLogin(); ProductQuery query = new ProductQuery { PageNo = pageNo, PageSize = pageSize, KeyWords = keywords, ShopId = CurrentShop.Id }; if (!string.IsNullOrWhiteSpace(status)) { switch (status) { case "0": query.SaleStatus = Himall.Model.ProductInfo.ProductSaleStatus.OnSale; query.AuditStatus = new Himall.Model.ProductInfo.ProductAuditStatus[] { Himall.Model.ProductInfo.ProductAuditStatus.Audited }; break; case "1": query.SaleStatus = Himall.Model.ProductInfo.ProductSaleStatus.InStock; query.AuditStatus = new Himall.Model.ProductInfo.ProductAuditStatus[] { Himall.Model.ProductInfo.ProductAuditStatus.Audited, Himall.Model.ProductInfo.ProductAuditStatus.UnAudit, Himall.Model.ProductInfo.ProductAuditStatus.WaitForAuditing }; break; case "2": query.SaleStatus = Himall.Model.ProductInfo.ProductSaleStatus.OnSale; query.AuditStatus = new Himall.Model.ProductInfo.ProductAuditStatus[] { Himall.Model.ProductInfo.ProductAuditStatus.WaitForAuditing }; break; case "3": query.AuditStatus = new Himall.Model.ProductInfo.ProductAuditStatus[] { Himall.Model.ProductInfo.ProductAuditStatus.InfractionSaleOff }; break; } } if (cid > 0) { query.CategoryId = cid; } //查询诊疗项目 var pageModel = ProductManagerApplication.GetProducts(query); var pids = pageModel.Models.Select(e => e.Id); var skus = ProductManagerApplication.GetSKU(pids); //查询门店SKU库存 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 = skus.Where(e => e.ProductId == item.Id).Sum(e => e.Stock), productCode = item.ProductCode }); }); var result = new { success = true, products = product, total = pageModel.Total }; return(Json(result)); }
public object GetBranchCartProducts(long shopBranchId) { long userId = 0; //会员折扣 decimal discount = 1.0M;//默认折扣为1(没有折扣) if (CurrentUser != null) { userId = CurrentUser.Id; discount = CurrentUser.MemberDiscount; } var cart = GetCart(userId, shopBranchId); //var shopBranch = _iShopBranchService.GetShopBranchById(shopBranchId); var shopBranch = ShopBranchApplication.GetShopBranchById(shopBranchId); var productService = _iProductService; var shopService = _iShopService; var vshopService = _iVShopService; List <long> pids = new List <long>(); decimal prodPrice = 0.0M;//优惠价格 var products = cart.Items.Select(item => { var product = productService.GetProduct(item.ProductId); var shopbranchsku = _iShopBranchService.GetSkusByIds(shopBranchId, new List <string> { item.SkuId }).FirstOrDefault(); var shop = shopService.GetShop(product.ShopId); //Entities.SKUInfo sku = null; string skuDetails = ""; if (null != shop) { var vshop = vshopService.GetVShopByShopId(shop.Id); //sku = productService.GetSku(item.SkuId); DTO.SKU sku = ProductManagerApplication.GetSKU(item.SkuId); if (sku == null) { return(null); } prodPrice = sku.SalePrice; if (shop.IsSelf) {//官方自营店才计算会员折扣 prodPrice = sku.SalePrice * discount; } var typeInfo = TypeApplication.GetProductType(product.TypeId); skuDetails = ""; if (!string.IsNullOrWhiteSpace(sku.Size)) { skuDetails += sku.Size + " "; } if (!string.IsNullOrWhiteSpace(sku.Color)) { skuDetails += sku.Color + " "; } if (!string.IsNullOrWhiteSpace(sku.Version)) { skuDetails += sku.Version + " "; } return(new { bId = shopBranchId, cartItemId = item.Id, skuId = item.SkuId, id = product.Id, name = product.ProductName, price = prodPrice, count = item.Quantity, stock = shopbranchsku == null ? 0 : shopbranchsku.Stock, //阶梯价商品在门店购物车自动下架 //status = product.IsOpenLadder ? 1 : (shopbranchsku == null ? 1 : (shopbranchsku.Status == ShopBranchSkuStatus.Normal) ? (item.Quantity > shopbranchsku.Stock ? 2 : 0) : 1),//0:正常;1:冻结;2:库存不足 status = ProductManagerApplication.GetProductShowStatus(product, sku, 1, shopBranch, shopbranchsku),//0:正常;1:冻结;2:库存不足;3:已下架; skuDetails = skuDetails, AddTime = item.AddTime }); } else { return(null); } }).Where(d => d != null).OrderBy(s => s.status).ThenByDescending(o => o.AddTime); var cartModel = new { success = true, products = products, amount = products.Where(x => x.status == 0).Sum(item => item.price * item.count), totalCount = products.Where(x => x.status == 0).Sum(item => item.count), DeliveFee = shopBranch.DeliveFee, DeliveTotalFee = shopBranch.DeliveTotalFee, FreeMailFee = shopBranch.FreeMailFee, shopBranchStatus = (int)shopBranch.Status }; return(cartModel); }
public object PostSubmitOrder(OrderSubmitOrderModel value) { CheckUserLogin(); if (value.CapitalAmount > 0 && !string.IsNullOrEmpty(value.PayPwd)) { var flag = MemberApplication.VerificationPayPwd(CurrentUser.Id, value.PayPwd); if (!flag) { throw new MallApiException("预存款支付密码错误"); } } string skuIds = value.skuIds; string counts = value.counts; long recieveAddressId = value.recieveAddressId; string couponIds = value.couponIds; int integral = value.integral; bool isCashOnDelivery = value.isCashOnDelivery; int invoiceType = value.invoiceType; string invoiceTitle = value.invoiceTitle; string invoiceContext = value.invoiceContext; //end string orderRemarks = string.Empty;//value.orderRemarks;//订单备注 OrderCreateModel model = new OrderCreateModel(); var orderService = ServiceProvider.Instance<IOrderService>.Create; var productService = ServiceProvider.Instance<IProductService>.Create; var skuIdArr = skuIds.Split(',').Select(item => item.ToString()); var countArr = counts.Split(',').Select(item => int.Parse(item)); model.CouponIdsStr = CouponApplication.ConvertUsedCoupon(couponIds); IEnumerable<long> orderIds; model.PlatformType = PlatformType.Android; model.CurrentUser = CurrentUser; model.ReceiveAddressId = recieveAddressId; model.SkuIds = skuIdArr; model.Counts = countArr; model.Integral = integral; model.Capital = value.CapitalAmount; model.IsCashOnDelivery = isCashOnDelivery; model.Invoice = (InvoiceType)invoiceType; model.InvoiceContext = invoiceContext; model.InvoiceTitle = invoiceTitle; model.InvoiceCode = value.invoiceCode; CommonModel.OrderShop[] OrderShops = Newtonsoft.Json.JsonConvert.DeserializeObject<OrderShop[]>(value.jsonOrderShops); CommonModel.VirtualProductItem[] VirtualProductItems = Newtonsoft.Json.JsonConvert.DeserializeObject<VirtualProductItem[]>(value.VirtualProductItems); model.OrderShops = OrderShops;//用户APP选择门店自提时用到,2.5版本未支持门店自提 model.OrderRemarks = OrderShops.Select(p => p.Remark).ToArray(); //end model.IsShopbranchOrder = true; model.IsVirtual = value.ProductType == 1; if (model.IsVirtual && skuIdArr.Count() > 0) { var skuInfo = ProductManagerApplication.GetSKU(skuIdArr.FirstOrDefault()); if (skuInfo != null) { var virtualProductInfo = ProductManagerApplication.GetVirtualProductInfoByProductId(skuInfo.ProductId); if (virtualProductInfo != null && virtualProductInfo.ValidityType && DateTime.Now > virtualProductInfo.EndDate.Value) { return ErrorResult("该虚拟商品已过期,不支持下单"); } } } try { //处理限时购 if (skuIdArr.Count() == 1) { var skuid = skuIdArr.ElementAt(0); if (!string.IsNullOrWhiteSpace(skuid)) { var sku = productService.GetSku(skuid); bool isltmbuy = ServiceProvider.Instance<ILimitTimeBuyService>.Create.IsLimitTimeMarketItem(sku.ProductId); model.IslimitBuy = isltmbuy;//标识为限时购计算价格按限时购价格核算 } } var orders = orderService.CreateOrder(model); orderIds = orders.Select(item => item.Id).ToArray(); decimal orderTotals = orders.Sum(item => item.OrderTotalAmount); //orderIds = orderService.CreateOrder(CurrentUser.Id, skuIdArr, countArr, recieveAddressId, PlatformType); AddVshopBuyNumber(orderIds);//添加微店购买数量 #region 处理虚拟订单项 if (value.ProductType == 1 && VirtualProductItems != null && VirtualProductItems.Count() > 0) { var orderId = orderIds.FirstOrDefault(); if (orderId > 0) { var orderItemInfo = OrderApplication.GetOrderItemsByOrderId(orderId).FirstOrDefault(); if (orderItemInfo != null) { var list = VirtualProductItems.ToList().Where(a => !string.IsNullOrWhiteSpace(a.Content)).ToList();//过滤空项 list.ForEach(a => { a.OrderId = orderId; a.OrderItemId = orderItemInfo.Id; if (a.VirtualProductItemType == (sbyte)ProductInfo.VirtualProductItemType.Picture) { a.Content = MoveImages(a.Content, CurrentUser.Id); } }); if (list.Count > 0) { OrderApplication.AddVirtualOrderItemInfo(list); } } } } #endregion var _result = new { success = true, OrderIds = orderIds, RealTotalIsZero = orderTotals == 0 }; return _result; } catch (MallException he) { return ErrorResult(he.Message); } catch (Exception ex) { return ErrorResult("提交订单异常"); } }
public object GetCart(long shopBranchId) { //CheckUserLogin(); long userId = 0; //会员折扣 decimal discount = 1.0M;//默认折扣为1(没有折扣) if (CurrentUser != null) { userId = CurrentUser.Id; discount = CurrentUser.MemberDiscount; } var cart = GetCart(userId, shopBranchId); var shopBranch = ShopBranchApplication.GetShopBranchById(shopBranchId); if (shopBranch == null) { throw new MallException("门店库存不足"); } var stores = cart.Items.Where(d => d.ShopBranchId > 0).OrderByDescending(d => d.AddTime).Select(d => d.ShopBranchId).GroupBy(d => d); decimal prodPrice = 0.0M;//优惠价格 //var rets = new List<CartStoreModel>(); var _store = new CartStoreModel(); _store.ShopBranchId = shopBranch.Id; _store.ShopId = shopBranch.ShopId; _store.ShopBranchName = shopBranch.ShopBranchName; _store.Status = shopBranch.Status.GetHashCode(); _store.DeliveFee = shopBranch.DeliveFee; _store.DeliveTotalFee = shopBranch.DeliveTotalFee; _store.FreeMailFee = shopBranch.FreeMailFee; var product = cart.Items.Where(d => d.ShopBranchId == shopBranch.Id).OrderBy(s => s.Status).ThenByDescending(o => o.AddTime).ToList(); _store.Products = new List <CartStoreProduct>(); foreach (var pitem in product) { var pro = ProductManagerApplication.GetProduct(pitem.ProductId); var shopbranchsku = ShopBranchApplication.GetSkusByIds(_store.ShopBranchId, new List <string> { pitem.SkuId }).FirstOrDefault(); var shop = ShopApplication.GetShop(pro.ShopId); var vshop = VshopApplication.GetVShopByShopId(pro.ShopId); DTO.SKU sku = ProductManagerApplication.GetSKU(pitem.SkuId); string skuDetails = ""; if (null != shop && sku != null) { prodPrice = sku.SalePrice; if (shop.IsSelf) { //官方自营店才计算会员折扣 prodPrice = sku.SalePrice * discount; } prodPrice = decimal.Round(prodPrice, 2, MidpointRounding.AwayFromZero); var typeInfo = TypeApplication.GetProductType(pro.TypeId); skuDetails = ""; if (!string.IsNullOrWhiteSpace(sku.Size)) { if (!string.IsNullOrWhiteSpace(skuDetails)) { skuDetails += "、"; } skuDetails += sku.Size; } if (!string.IsNullOrWhiteSpace(sku.Color)) { if (!string.IsNullOrWhiteSpace(skuDetails)) { skuDetails += "、"; } skuDetails += sku.Color; } if (!string.IsNullOrWhiteSpace(sku.Version)) { if (!string.IsNullOrWhiteSpace(skuDetails)) { skuDetails += "、"; } skuDetails += sku.Version; } string colorAlias = (typeInfo == null || string.IsNullOrEmpty(typeInfo.ColorAlias)) ? SpecificationType.Color.ToDescription() : typeInfo.ColorAlias; string sizeAlias = (typeInfo == null || string.IsNullOrEmpty(typeInfo.SizeAlias)) ? SpecificationType.Size.ToDescription() : typeInfo.SizeAlias; string versionAlias = (typeInfo == null || string.IsNullOrEmpty(typeInfo.VersionAlias)) ? SpecificationType.Version.ToDescription() : typeInfo.VersionAlias; if (pro != null) { colorAlias = !string.IsNullOrWhiteSpace(pro.ColorAlias) ? pro.ColorAlias : colorAlias; sizeAlias = !string.IsNullOrWhiteSpace(pro.SizeAlias) ? pro.SizeAlias : sizeAlias; versionAlias = !string.IsNullOrWhiteSpace(pro.VersionAlias) ? pro.VersionAlias : versionAlias; } var _product = new CartStoreProduct { ShopBranchId = shopBranchId, CartItemId = pitem.Id, SkuId = pitem.SkuId, Id = pro.Id, ProductName = pro.ProductName, Price = prodPrice, Count = pitem.Quantity, Stock = shopbranchsku == null ? 0 : shopbranchsku.Stock, //阶梯价商品在门店购物车自动下架 Status = ProductManagerApplication.GetProductShowStatus(pro, sku, 1, shopBranch, shopbranchsku),//0:正常;1:冻结;2:库存不足 SkuDetails = skuDetails, ColorAlias = colorAlias, SizeAlias = sizeAlias, VersionAlias = versionAlias, Size = sku.Size, Color = sku.Color, Version = sku.Version, AddTime = pitem.AddTime, DefaultImage = MallIO.GetRomoteProductSizeImage(pro.ImagePath, 1, 500) }; _store.Products.Add(_product); } } _store.Amount = (_store.Products != null && _store.Products.Count > 0) ? _store.Products.Where(x => x.Status == 0).Sum(s => s.Price * s.Count) : 0; _store.TotalCount = (_store.Products != null && _store.Products.Count > 0) ? _store.Products.Where(x => x.Status == 0).Sum(s => s.Count) : 0; if (_store.Products.Count > 0) {//有商品数据,才返回门店信息 _store.Products = _store.Products.OrderBy(p => p.Status).ThenByDescending(p => p.AddTime).ToList(); //rets.Add(_store); } return(Json(_store)); }