/// <summary> /// 清理门店购物车所有无效商品 /// </summary> /// <param name="shopBranchId"></param> /// <returns></returns> public JsonResult <Result <int> > GetClearBranchCartInvalidProducts(long shopBranchId) { long userId = CurrentUser != null ? CurrentUser.Id : 0; CartApplication.ClearInvalidShopBranchCart(userId, shopBranchId); return(JsonResult <int>()); }
/// <summary> /// 获取购物车中的商品 /// </summary> /// <returns></returns> public IEnumerable <long> GetCartProductIds(long memberId, long shopBranchId) { long[] productIds = new long[] { }; if (memberId > 0)//已经登录,系统从服务器读取购物车信息,否则从Cookie获取购物车信息 { var cartInfo = CartApplication.GetShopBranchCart(memberId, shopBranchId); productIds = cartInfo.Items.Select(item => item.ProductId).ToArray(); } else { string cartInfo = WebHelper.GetCookie(CookieKeysCollection.Mall_CART_BRANCH); if (!string.IsNullOrWhiteSpace(cartInfo)) { string[] cartItems = cartInfo.Split(','); productIds = new long[cartItems.Length]; int i = 0; foreach (string cartItem in cartItems) { var cartItemParts = cartItem.Split(':'); productIds[i++] = long.Parse(cartItemParts[0]);//获取商品Id } } } return(productIds); }
public object GetClearBranchCartInvalidProducts(long shopBranchId) { long userId = CurrentUser != null ? CurrentUser.Id : 0; CartApplication.ClearInvalidShopBranchCart(userId, shopBranchId); return(Json("")); }
public void RemoveFromCart(string skuId, long memberId) { if (memberId > 0) { CartApplication.DeleteCartItem(skuId, memberId); } else { string cartInfo = WebHelper.GetCookie(CookieKeysCollection.HIMALL_CART); if (!string.IsNullOrWhiteSpace(cartInfo)) { string[] cartItems = cartInfo.Split(','); string newCartInfo = string.Empty; foreach (string cartItem in cartItems) { string[] cartItemParts = cartItem.Split(':'); string cartItemSkuId = cartItemParts[0]; if (cartItemSkuId != skuId) { newCartInfo += "," + cartItem; } } if (!string.IsNullOrWhiteSpace(newCartInfo)) { newCartInfo = newCartInfo.Substring(1); } WebHelper.SetCookie(CookieKeysCollection.HIMALL_CART, newCartInfo); } } }
public Himall.Entities.ShoppingCartInfo GetCartNoCache(long memberId, long shopBranchId) { Himall.Entities.ShoppingCartInfo shoppingCartInfo; if (memberId > 0)//已经登录,系统从服务器读取购物车信息,否则从Cookie获取购物车信息 { shoppingCartInfo = CartApplication.GetShopBranchCartNoCache(memberId, shopBranchId); } else { shoppingCartInfo = new Himall.Entities.ShoppingCartInfo(); string cartInfo = WebHelper.GetCookie(CookieKeysCollection.HIMALL_CART_BRANCH); if (!string.IsNullOrWhiteSpace(cartInfo)) { string[] cartItems = cartInfo.Split(','); var cartInfoItems = new List <Himall.Entities.ShoppingCartItem>(); foreach (string cartItem in cartItems) { var cartItemParts = cartItem.Split(':'); if (shopBranchId == 0 || cartItemParts[2] == shopBranchId.ToString()) { cartInfoItems.Add(new Himall.Entities.ShoppingCartItem() { ProductId = long.Parse(cartItemParts[0].Split('_')[0]), SkuId = cartItemParts[0], Quantity = int.Parse(cartItemParts[1]), ShopBranchId = long.Parse(cartItemParts[2]) }); } } shoppingCartInfo.Items = cartInfoItems; } } return(shoppingCartInfo); }
public void RemoveFromCart(IEnumerable <string> skuIds, long memberId, long shopBranchId) { if (memberId > 0) { CartApplication.DeleteShopBranchCartItem(skuIds, memberId, shopBranchId); } else { string cartInfo = WebHelper.GetCookie(CookieKeysCollection.HIMALL_CART_BRANCH); if (!string.IsNullOrWhiteSpace(cartInfo)) { string[] cartItems = cartInfo.Split(','); string newCartInfo = string.Empty; foreach (string cartItem in cartItems) { string[] cartItemParts = cartItem.Split(':'); string cartItemSkuId = cartItemParts[0]; string cartItemshopBranchId = cartItemParts[2]; if (!skuIds.Contains(cartItemSkuId) && shopBranchId.ToString() != cartItemshopBranchId) { newCartInfo += "," + cartItem; } } if (!string.IsNullOrWhiteSpace(newCartInfo)) { newCartInfo = newCartInfo.Substring(1); } WebHelper.SetCookie(CookieKeysCollection.HIMALL_CART_BRANCH, newCartInfo); } } }
/// <summary> /// 获取购物车中的商品 /// </summary> /// <returns></returns> public Mall.Entities.ShoppingCartInfo GetCart(long memberId) { Mall.Entities.ShoppingCartInfo shoppingCartInfo; if (memberId > 0)//已经登录,系统从服务器读取购物车信息,否则从Cookie获取购物车信息 { shoppingCartInfo = CartApplication.GetCart(memberId); } else { shoppingCartInfo = new Mall.Entities.ShoppingCartInfo(); string cartInfo = WebHelper.GetCookie(CookieKeysCollection.Mall_CART); if (!string.IsNullOrWhiteSpace(cartInfo)) { string[] cartItems = cartInfo.Split(','); var cartInfoItems = new List <Mall.Entities.ShoppingCartItem>(); foreach (string cartItem in cartItems) { var cartItemParts = cartItem.Split(':'); cartInfoItems.Add(new Mall.Entities.ShoppingCartItem() { ProductId = long.Parse(cartItemParts[0].Split('_')[0]), SkuId = cartItemParts[0], Quantity = int.Parse(cartItemParts[1]) }); } shoppingCartInfo.Items = cartInfoItems; } } return(shoppingCartInfo); }
/// <summary> /// 获取购物车中的商品 /// </summary> /// <returns></returns> public IEnumerable <string> GetCartProductSKUIds(long memberId) { string[] productIds = new string[] { }; if (memberId > 0)//已经登录,系统从服务器读取购物车信息,否则从Cookie获取购物车信息 { var cartInfo = CartApplication.GetCart(memberId); productIds = cartInfo.Items.Select(item => item.SkuId).ToArray(); } else { string cartInfo = WebHelper.GetCookie(CookieKeysCollection.HIMALL_CART); if (!string.IsNullOrWhiteSpace(cartInfo)) { string[] cartItems = cartInfo.Split(','); productIds = new string[cartItems.Length]; int i = 0; foreach (string cartItem in cartItems) { var cartItemParts = cartItem.Split(':'); productIds[i++] = cartItemParts[0];//获取商品SKUId } } } return(productIds); }
public object GetClearBranchCartProducts(long shopBranchId) { CheckUserLogin(); long userId = CurrentUser.Id; CartApplication.ClearShopBranchCart(userId, shopBranchId); return(Json("")); }
/// <summary> /// 清理门店购物车所有无效商品 /// </summary> /// <param name="shopBranchId"></param> /// <returns></returns> public JsonResult <Result <int> > GetClearBranchCartProducts(long shopBranchId) { CheckUserLogin(); long userId = CurrentUser.Id; CartApplication.ClearShopBranchCart(userId, shopBranchId); return(JsonResult <int>()); }
/// <summary> /// 购物车方式提交的订单 /// </summary> /// <param name="value">数据</param> private object SubmitOrderByCart(OrderSubmitOrderByCartModel value) { string cartItemIds = value.cartItemIds; 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 = "";//value.orderRemarks;//订单备注 OrderCreateModel model = new OrderCreateModel(); List <OrderInfo> infos = new List <OrderInfo>(); var orderService = ServiceProvider.Instance <IOrderService> .Create; IEnumerable <long> orderIds; model.PlatformType = PlatformType.WeiXinSmallProg; model.CurrentUser = CurrentUser; model.ReceiveAddressId = recieveAddressId; model.Integral = integral; model.formId = value.formId; model.IsCashOnDelivery = isCashOnDelivery; model.Invoice = (InvoiceType)invoiceType; model.InvoiceContext = invoiceContext; model.InvoiceTitle = invoiceTitle; //end CommonModel.OrderShop[] OrderShops = Newtonsoft.Json.JsonConvert.DeserializeObject <OrderShop[]>(value.jsonOrderShops); model.OrderShops = OrderShops;//用户APP选择门店自提时用到,2.5版本未支持门店自提 model.OrderRemarks = OrderShops.Select(p => p.Remark).ToArray(); try { var cartItemIdsArr = cartItemIds.Split(',').Select(item => long.Parse(item)).ToArray(); //根据购物车项补充sku数据 var cartItems = CartApplication.GetCartItems(cartItemIdsArr); model.SkuIds = cartItems.Select(e => e.SkuId).ToList(); model.Counts = cartItems.Select(e => e.Quantity).ToList(); model.CartItemIds = cartItemIdsArr; model.CouponIdsStr = OrderHelper.ConvertUsedCoupon(couponIds); var orders = orderService.CreateOrder(model); orderIds = orders.Select(item => item.Id).ToArray(); decimal orderTotals = orders.Sum(item => item.OrderTotalAmount); return(Json(new { Status = "OK", Message = "提交成功", OrderId = string.Join(",", orderIds), OrderTotal = orderTotals })); } catch (HimallException he) { return(Json(new { Status = "NO", Message = he.Message })); } }
public JsonResult GetCartProducts() { var memberId = CurrentUser?.Id ?? 0; var cartItems = CartApplication.GetCartItems(memberId); var products = cartItems.Select(item => { var product = item.Product; var shop = ShopApplication.GetShop(product.ShopId); var sku = item.Sku; return(new { cartItemId = item.ItemId, skuId = sku.Id, id = product.Id, imgUrl = Himall.Core.HimallIO.GetProductSizeImage(product.RelativePath, 1, (int)ImageSize.Size_50), name = product.ProductName, productstatus = item.IsLimit ? 0 : (sku.Stock <= 0 ? ProductInfo.ProductSaleStatus.InStock.GetHashCode() : product.SaleStatus.GetHashCode()), status = item.ShowStatus, productauditstatus = product.AuditStatus, price = sku.SalePrice, Color = sku.Color, Size = sku.Size, Version = sku.Version, count = item.Quantity, shopId = shop.Id, shopName = shop.ShopName, productcode = !(sku.Version + sku.Color + sku.Size).Equals("") ? sku.Sku : product.ProductCode, ColorAlias = sku.ColorAlias, SizeAlias = sku.SizeAlias, VersionAlias = sku.VersionAlias, AddTime = item.AddTime, minMath = item.Quantity < item.MinMach ? 0 : 1 }); }).OrderBy(s => s.status).ThenByDescending(o => o.AddTime).ToList(); var newproducts = products.Where(p => p.status == 0 && p.productauditstatus != Entities.ProductInfo.ProductAuditStatus.InfractionSaleOff && p.productauditstatus != Entities.ProductInfo.ProductAuditStatus.WaitForAuditing);//获取有效商品 var cartModel = new { products, amount = newproducts.Sum(item => item.price * item.count), totalCount = newproducts.Sum(item => item.count), }; return(Json(cartModel)); }
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("")); }
/* *购物车存储说明: * 游客访问时,点击加入购物车,购物车信息保存至Cookie中,游客点击结算时,Cookie中的购物车信息转移至数据库中并清空Cookie中购物车信息。 *登录会员点击加入购物车时,购物车信息保存至数据库中。 * Cookie存储格式: skuId1:count1,skuId2:count2,..... */ /// <summary> /// 同步客户端购物车信息至服务器 /// </summary> public void UpdateCartInfoFromCookieToServer(long memberId) { string cartInfo = WebHelper.GetCookie(CookieKeysCollection.HIMALL_CART); if (!string.IsNullOrWhiteSpace(cartInfo)) { string[] cartItems = cartInfo.Split(','); var shoppingCartItems = new List <Himall.Entities.ShoppingCartItem>(); foreach (string cartItem in cartItems) { var cartItemParts = cartItem.Split(':'); shoppingCartItems.Add(new Himall.Entities.ShoppingCartItem() { SkuId = cartItemParts[0], Quantity = int.Parse(cartItemParts[1]) }); } CartApplication.AddToCart(shoppingCartItems, memberId); } WebHelper.DeleteCookie(CookieKeysCollection.HIMALL_CART); }
public void UpdateCartItem(string skuId, int count, long memberId) { if (memberId > 0) { CartApplication.UpdateCart(skuId, count, memberId); } else { string cartInfo = WebHelper.GetCookie(CookieKeysCollection.HIMALL_CART); if (!string.IsNullOrWhiteSpace(cartInfo)) { string[] cartItems = cartInfo.Split(','); string newCartInfo = string.Empty; foreach (string cartItem in cartItems) { var cartItemParts = cartItem.Split(':'); if (cartItemParts[0] == skuId) { newCartInfo += "," + skuId + ":" + count; } else { newCartInfo += "," + cartItem; } } 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)); } } }
/* *购物车存储说明: * 游客访问时,点击加入购物车,购物车信息保存至Cookie中,游客点击结算时,Cookie中的购物车信息转移至数据库中并清空Cookie中购物车信息。 *登录会员点击加入购物车时,购物车信息保存至数据库中。 * Cookie存储格式: skuId1:count1,skuId2:count2,..... */ /// <summary> /// 同步客户端购物车信息至服务器 /// </summary> public void UpdateCartInfoFromCookieToServer(long memberId) { string cartInfo = WebHelper.GetCookie(CookieKeysCollection.Mall_CART_BRANCH); if (!string.IsNullOrWhiteSpace(cartInfo)) { string[] cartItems = cartInfo.Split(','); var shoppingCartItems = new List <Mall.Entities.ShoppingCartItem>(); foreach (string cartItem in cartItems) { var cartItemParts = cartItem.Split(':'); var skuId = cartItemParts[0]; int quantity = int.Parse(cartItemParts[1]); long shopBranchId = long.Parse(cartItemParts[2]); shoppingCartItems.Add(new Mall.Entities.ShoppingCartItem() { ShopBranchId = shopBranchId, SkuId = cartItemParts[0], Quantity = int.Parse(cartItemParts[1]) }); } CartApplication.AddToShopBranchCart(shoppingCartItems, memberId); } WebHelper.DeleteCookie(CookieKeysCollection.Mall_CART_BRANCH); }
/// <summary> /// 购物车方式提交的订单 /// </summary> /// <param name="value">数据</param> public object PostSubmitOrderByCart(OrderSubmitOrderByCartModel value) { CheckUserLogin(); string cartItemIds = value.cartItemIds; 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 = "";//value.orderRemarks;//订单备注 OrderCreateModel model = new OrderCreateModel(); var orderService = ServiceProvider.Instance <IOrderService> .Create; IEnumerable <long> orderIds; model.PlatformType = PlatformType.Android; model.CurrentUser = CurrentUser; model.ReceiveAddressId = recieveAddressId; model.Integral = integral; model.IsCashOnDelivery = isCashOnDelivery; model.Invoice = (InvoiceType)invoiceType; model.InvoiceContext = invoiceContext; model.InvoiceTitle = invoiceTitle; //end CommonModel.OrderShop[] OrderShops = Newtonsoft.Json.JsonConvert.DeserializeObject <OrderShop[]>(value.jsonOrderShops); model.OrderShops = OrderShops;//用户APP选择门店自提时用到,2.5版本未支持门店自提 model.OrderRemarks = OrderShops.Select(p => p.Remark).ToArray(); try { var cartItemIdsArr = cartItemIds.Split(',').Select(item => long.Parse(item)).ToArray(); //根据购物车项补充sku数据 var cartItems = CartApplication.GetCartItems(cartItemIdsArr); model.SkuIds = cartItems.Select(e => e.SkuId).ToList(); model.Counts = cartItems.Select(e => e.Quantity).ToList(); model.CartItemIds = cartItemIdsArr; model.CouponIdsStr = OrderHelper.ConvertUsedCoupon(couponIds); var orders = orderService.CreateOrder(model); orderIds = orders.Select(item => item.Id).ToArray(); decimal orderTotals = orders.Sum(item => item.OrderTotalAmount); var realTotalIsZero = "false"; if (orderTotals == 0) { realTotalIsZero = "true"; } return(Json(new { Success = "true", OrderIds = orderIds, RealTotalIsZero = realTotalIsZero })); } catch (HimallException he) { return(Json(new { Success = "false", Msg = he.Message })); } catch (Exception ex) { return(Json(new { Success = "false", Msg = "提交订单异常" })); } }
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)); } } }
/// <summary> /// 首页商品信息 /// </summary> /// <param name="openId"></param> /// <param name="pageIndex"></param> /// <param name="pageSize"></param> /// <returns></returns> public JsonResult <Result <List <dynamic> > > GetIndexProductData(string openId = "", int pageIndex = 1, int pageSize = 10) { var homeProducts = ServiceProvider.Instance <IWXSmallProgramService> .Create.GetWXSmallHomeProducts(pageIndex, pageSize); decimal discount = 1M; long SelfShopId = 0; var CartInfo = new Himall.Entities.ShoppingCartInfo(); var ids = homeProducts.Models.Select(p => p.Id).ToList(); var productList = new List <dynamic>(); var cartitems = new List <Himall.Entities.ShoppingCartItem>(); long userId = 0; if (CurrentUser != null) { userId = CurrentUser.Id; discount = CurrentUser.MemberDiscount; var shopInfo = ShopApplication.GetSelfShop(); SelfShopId = shopInfo.Id; CartInfo = ServiceProvider.Instance <ICartService> .Create.GetCart(CurrentUser.Id); cartitems = CartApplication.GetCartQuantityByIds(CurrentUser.Id, ids); } foreach (var item in homeProducts.Models) { long activeId = 0; int activetype = 0; item.ImagePath = Core.HimallIO.GetRomoteProductSizeImage(Core.HimallIO.GetImagePath(item.ImagePath), 1, (int)Himall.CommonModel.ImageSize.Size_350); if (item.ShopId == SelfShopId) { item.MinSalePrice = item.MinSalePrice * discount; } var limitBuy = ServiceProvider.Instance <ILimitTimeBuyService> .Create.GetLimitTimeMarketItemByProductId(item.Id); if (limitBuy != null) { item.MinSalePrice = limitBuy.MinPrice; activeId = limitBuy.Id; activetype = 1; } int quantity = 0; quantity = cartitems.Where(d => d.ProductId == item.Id).Sum(d => d.Quantity); long stock = 0; var productInfo = ServiceProvider.Instance <IProductService> .Create.GetProduct(item.Id); if (productInfo != null) { var skus = ProductManagerApplication.GetSKUs(productInfo.Id); stock = skus.Sum(x => x.Stock); if (productInfo.MaxBuyCount > 0) { stock = productInfo.MaxBuyCount; } } if (productInfo.AuditStatus == Entities.ProductInfo.ProductAuditStatus.Audited) { var ChoiceProducts = new { ProductId = item.Id, ProductName = item.ProductName, SalePrice = item.MinSalePrice.ToString("0.##"), ThumbnailUrl160 = item.ImagePath, MarketPrice = item.MarketPrice.ToString("0.##"), CartQuantity = quantity, HasSKU = item.HasSKU, SkuId = GetSkuIdByProductId(item.Id), ActiveId = activeId, ActiveType = activetype,//获取该商品是否参与活动 Stock = stock, IsVirtual = item.ProductType == 1 }; productList.Add(ChoiceProducts); } } return(JsonResult(productList)); }
public object PostUpdateCartItem(CartUpdateCartItemModel value) { var productService = ServiceProvider.Instance <IProductService> .Create; CheckUserLogin(); string Jsonstr = value.jsonstr; var datavalue = Newtonsoft.Json.JsonConvert.DeserializeObject <UpdateCartSKusModel>(Jsonstr); var cartService = ServiceProvider.Instance <ICartService> .Create; var ladderPrice = 0m; long productId = 0; var isOpenLadder = false; foreach (var sku in datavalue.skus) { Entities.SKUInfo skuinfo = OrderApplication.GetSkuByID(sku.skuId); if (skuinfo != null) { var productInfo = ProductManagerApplication.GetProduct(skuinfo.ProductId); if (productInfo != null) { if (productInfo.MaxBuyCount > 0 && sku.count > productInfo.MaxBuyCount && !productInfo.IsOpenLadder) { return(ErrorResult(string.Format("商品[{0}]限购{1}件", productInfo.ProductName, productInfo.MaxBuyCount), data: new { maxBuyCount = productInfo.MaxBuyCount })); //throw new MallException(string.Format("每个ID限购{0}件", productInfo.MaxBuyCount)); } } } cartService.UpdateCart(sku.skuId, sku.count, CurrentUser.Id); #region 阶梯价--张宇枫 var skus = CartApplication.GetCart(CurrentUser.Id); var skuItem = skus.Items.ToList().Find(i => i.SkuId == sku.skuId); productId = skuItem.ProductId; var product = ProductManagerApplication.GetProduct(productId); isOpenLadder = product.IsOpenLadder; if (isOpenLadder) { var shop = ShopApplication.GetShop(product.ShopId); var groupCartByProduct = skus.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(); var quantity = groupCartByProduct.Where(i => i.Key == productId) .ToList() .Sum(cartitem => cartitem.Sum(i => i.Quantity)); ladderPrice = ProductManagerApplication.GetProductLadderPrice(skuItem.ProductId, quantity); if (shop.IsSelf) { ladderPrice = CurrentUser.MemberDiscount * ladderPrice; } } #endregion } var result = new { success = true, //d.Url = "http://" + Url.Request.RequestUri.Host + "/m-IOS/Order/SubmiteByCart"; Url = Core.MallIO.GetRomoteImagePath("/m-IOS/Order/SubmiteByCart"), Price = ladderPrice.ToString("F2"), ProductId = productId, IsOpenLadder = isOpenLadder ? 1 : 0, }; return(result); }
public object PostSubmitOrderByCart(OrderSubmitOrderByCartModel value) { this.CheckUserLogin(); if (value.CapitalAmount > new Decimal(0) && !string.IsNullOrEmpty(value.PayPwd) && !MemberApplication.VerificationPayPwd(this.CurrentUser.Id, value.PayPwd)) { return((object)this.Json(new { Success = "false", Msg = "预付款支付密码错误" })); } string cartItemIds = value.cartItemIds; 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; OrderCreateModel model = new OrderCreateModel(); IOrderService create = Instance <IOrderService> .Create; model.PlatformType = PlatformType.Android; model.CurrentUser = this.CurrentUser; model.ReceiveAddressId = recieveAddressId; model.Integral = integral; model.Capital = value.CapitalAmount; model.IsCashOnDelivery = isCashOnDelivery; model.Invoice = (InvoiceType)invoiceType; model.InvoiceContext = invoiceContext; model.InvoiceTitle = invoiceTitle; model.InvoiceCode = value.invoiceCode; OrderShop[] orderShopArray = JsonConvert.DeserializeObject <OrderShop[]>(value.jsonOrderShops); model.OrderShops = orderShopArray; model.OrderRemarks = (IEnumerable <string>)Enumerable.ToArray <string>(Enumerable.Select <OrderShop, string>((IEnumerable <OrderShop>)orderShopArray, (Func <OrderShop, string>)(p => p.Remark))); try { long[] numArray = Enumerable.ToArray <long>(Enumerable.Select <string, long>(Enumerable.Where <string>((IEnumerable <string>)cartItemIds.Split(','), (Func <string, bool>)(d => !string.IsNullOrWhiteSpace(d))), (Func <string, long>)(item => long.Parse(item)))); IQueryable <ShoppingCartItem> cartItems = CartApplication.GetCartItems((IEnumerable <long>)numArray); model.SkuIds = (IEnumerable <string>)Enumerable.ToList <string>((IEnumerable <string>)Queryable.Select <ShoppingCartItem, string>(cartItems, (Expression <Func <ShoppingCartItem, string> >)(e => e.SkuId))); model.Counts = (IEnumerable <int>)Enumerable.ToList <int>((IEnumerable <int>)Queryable.Select <ShoppingCartItem, int>(cartItems, (Expression <Func <ShoppingCartItem, int> >)(e => e.Quantity))); model.CartItemIds = numArray; model.CouponIdsStr = OrderHelper.ConvertUsedCoupon(couponIds); List <OrderInfo> order = create.CreateOrder(model); IEnumerable <long> enumerable = (IEnumerable <long>)Enumerable.ToArray <long>(Enumerable.Select <OrderInfo, long>((IEnumerable <OrderInfo>)order, (Func <OrderInfo, long>)(item => item.Id))); Decimal num = Enumerable.Sum <OrderInfo>((IEnumerable <OrderInfo>)order, (Func <OrderInfo, Decimal>)(item => item.OrderTotalAmount)); string str = "false"; if (num == new Decimal(0)) { str = "true"; } return((object)this.Json(new { Success = "true", OrderIds = enumerable, RealTotalIsZero = str })); } catch (HimallException ex) { return((object)this.Json(new { Success = "false", Msg = ex.Message })); } catch (Exception ex) { return((object)this.Json(new { Success = "false", Msg = "提交订单异常" })); } }
/// <summary> /// 购物车方式提交的订单 /// </summary> /// <param name="value">数据</param> public object PostSubmitOrderByCart(OrderSubmitOrderByCartModel value) { CheckUserLogin(); if (value.CapitalAmount > 0 && !string.IsNullOrEmpty(value.PayPwd)) { var flag = MemberApplication.VerificationPayPwd(CurrentUser.Id, value.PayPwd); if (!flag) { return(ErrorResult("预存款支付密码错误")); } } string cartItemIds = value.cartItemIds; long recieveAddressId = value.recieveAddressId; string couponIds = value.couponIds; int integral = value.integral; decimal capitalAmount = value.CapitalAmount; bool isCashOnDelivery = value.isCashOnDelivery; int invoiceType = value.invoiceType; string invoiceTitle = value.invoiceTitle; string invoiceContext = value.invoiceContext; string invoiceCode = value.invoiceCode; OrderCreateModel model = new OrderCreateModel(); var orderService = ServiceProvider.Instance <IOrderService> .Create; IEnumerable <long> orderIds; model.PlatformType = PlatformType.Android; model.CurrentUser = CurrentUser; model.ReceiveAddressId = recieveAddressId; model.Integral = integral; model.Capital = capitalAmount;//预存款 model.IsCashOnDelivery = isCashOnDelivery; model.Invoice = (InvoiceType)invoiceType; model.InvoiceContext = invoiceContext; model.InvoiceTitle = invoiceTitle; model.InvoiceCode = invoiceCode; //end CommonModel.OrderShop[] OrderShops = Newtonsoft.Json.JsonConvert.DeserializeObject <OrderShop[]>(value.jsonOrderShops); model.OrderShops = OrderShops;//用户APP选择门店自提时用到,2.5版本未支持门店自提 model.OrderRemarks = OrderShops.Select(p => p.Remark).ToArray(); try { var cartItemIdsArr = cartItemIds.Split(',').Select(item => long.Parse(item)).ToArray(); //根据购物车项补充sku数据 var cartItems = CartApplication.GetCartItems(cartItemIdsArr); model.SkuIds = cartItems.Select(e => e.SkuId).ToList(); model.Counts = cartItems.Select(e => e.Quantity).ToList(); model.CartItemIds = cartItemIdsArr; model.CouponIdsStr = CouponApplication.ConvertUsedCoupon(couponIds); 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); return(new { success = true, OrderIds = orderIds, RealTotalIsZero = orderTotals == 0 }); } catch (HimallException he) { return(ErrorResult(he.Message)); } catch (Exception ex) { return(ErrorResult("提交订单异常")); } }
public object GetIndexProductData(string openId = "", int pageIndex = 10, int pageSize = 1) { //CheckUserLogin(); var homeProducts = ServiceProvider.Instance <IWXSmallProgramService> .Create.GetWXSmallHomeProducts().OrderBy(item => item.Id).Skip((pageIndex - 1) * pageSize).Take(pageSize); decimal discount = 1M; long SelfShopId = 0; ShoppingCartInfo CartInfo = new ShoppingCartInfo(); var ids = homeProducts.Select(d => d.Id).ToArray(); List <object> productList = new List <object>(); List <ShoppingCartItem> cartitems = new List <ShoppingCartItem>(); if (CurrentUser != null) { discount = CurrentUser.MemberDiscount; var shopInfo = ShopApplication.GetSelfShop(); SelfShopId = shopInfo.Id; CartInfo = ServiceProvider.Instance <ICartService> .Create.GetCart(CurrentUser.Id); cartitems = CartApplication.GetCartQuantityByIds(CurrentUser.Id, ids); } var limit = LimitTimeApplication.GetLimitProducts(); //var fight = FightGroupApplication.GetFightGroupPrice(); foreach (var item in homeProducts) { long activeId = 0; int activetype = 0; item.ImagePath = Core.HimallIO.GetRomoteProductSizeImage(Core.HimallIO.GetImagePath(item.ImagePath), 1, (int)Himall.CommonModel.ImageSize.Size_350); if (item.ShopId == SelfShopId) { item.MinSalePrice = item.MinSalePrice * discount; } var limitBuy = ServiceProvider.Instance <ILimitTimeBuyService> .Create.GetLimitTimeMarketItemByProductId(item.Id); if (limitBuy != null) { item.MinSalePrice = limitBuy.MinPrice; activeId = limitBuy.Id; activetype = 1; } int quantity = 0; quantity = cartitems.Where(d => d.ProductId == item.Id).Sum(d => d.Quantity); //火拼 //if (activeInfo != null) //{ // item.MinSalePrice = activeInfo.MiniGroupPrice; // activeId = activeInfo.Id; // activetype = 2; //} var ChoiceProducts = new { ProductId = item.Id, ProductName = item.ProductName, SalePrice = item.MinSalePrice.ToString("0.##"), ThumbnailUrl160 = item.ImagePath, MarketPrice = item.MarketPrice.ToString("0.##"), CartQuantity = quantity, HasSKU = item.HasSKU, SkuId = GetSkuIdByProductId(item.Id), //d.Himall_Products d.Field<string>("SkuId"), ActiveId = activeId, ActiveType = activetype //获取该商品是否参与活动 }; productList.Add(ChoiceProducts); } var json = new { Status = "OK", Data = new { ChoiceProducts = productList } }; return(json); }
/// <summary> /// 购物车方式提交的订单 /// </summary> /// <param name="value">数据</param> private object SubmitOrderByCart(OrderSubmitOrderByCartModel value) { string cartItemIds = value.cartItemIds; 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; OrderCreateModel model = new OrderCreateModel(); List <OrderInfo> infos = new List <OrderInfo>(); var orderService = ServiceProvider.Instance <IOrderService> .Create; IEnumerable <long> orderIds; model.PlatformType = PlatformType.WeiXinSmallProg; model.CurrentUser = CurrentUser; model.ReceiveAddressId = recieveAddressId; model.Integral = integral; model.formId = value.formId; model.Capital = value.Capital; model.IsCashOnDelivery = isCashOnDelivery; model.Invoice = (InvoiceType)invoiceType; model.InvoiceContext = invoiceContext; model.InvoiceTitle = invoiceTitle; if (value.isStore) { model.IsShopbranchOrder = true; } //end CommonModel.OrderShop[] OrderShops = Newtonsoft.Json.JsonConvert.DeserializeObject <OrderShop[]>(value.jsonOrderShops); model.OrderShops = OrderShops;//用户APP选择门店自提时用到,2.5版本未支持门店自提 model.OrderRemarks = OrderShops.Select(p => p.Remark).ToArray(); try { var cartItemIdsArr = cartItemIds.Split(',').Select(item => long.Parse(item)).ToArray(); //根据购物车项补充sku数据 var cartItems = CartApplication.GetCartItems(cartItemIdsArr); model.SkuIds = cartItems.Select(e => e.SkuId).ToList(); model.Counts = cartItems.Select(e => e.Quantity).ToList(); model.CartItemIds = cartItemIdsArr; model.CouponIdsStr = CouponApplication.ConvertUsedCoupon(couponIds); 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); 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 GetCartProduct(string openId = "") { CheckUserLogin(); List <CartProductModel> products = new List <CartProductModel>(); var cartItems = CartApplication.GetCartItems(CurrentUser.Id); var vshops = VshopApplication.GetVShopsByShopIds(cartItems.Select(p => p.Shop.Id)); foreach (var item in cartItems) { var sku = item.Sku; var product = item.Product; var shop = item.Shop; var vshop = vshops.FirstOrDefault(p => p.ShopId == shop.Id); var _tmp = new CartProductModel { CartItemId = item.ItemId.ToString(), SkuId = sku.Id, Id = product.Id.ToString(), ImgUrl = Core.MallIO.GetRomoteProductSizeImage(product.RelativePath, 1, (int)ImageSize.Size_150), Name = product.ProductName, Price = sku.SalePrice.ToString("F2"), MarketPrice = product.MarketPrice.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.Logo), Url = Core.MallIO.GetRomoteImagePath("/m-IOS/product/detail/") + product.Id, ProductStatus = item.ShowStatus, ColorAlias = sku.ColorAlias, SizeAlias = sku.SizeAlias, VersionAlias = sku.VersionAlias, AddTime = item.AddTime, IsOpenLadder = product.IsOpenLadder, MaxBuyCount = product.MaxBuyCount, MinBath = ProductManagerApplication.GetProductLadderMinMath(product.Id), ActiveId = item.LimitId }; _tmp.IsValid = (_tmp.ProductStatus == 0) ? 0 : 1; products.Add(_tmp); } products = products.OrderBy(p => p.IsValid).ThenByDescending(item => item.AddTime).ToList(); var cartShop = products.GroupBy(item => item.ShopId); decimal prodPrice = 0.0M; //优惠价格 decimal discount = 1.0M; //默认折扣为1(没有折扣) if (CurrentUser != null) { discount = CurrentUser.MemberDiscount; } var productService = ServiceProvider.Instance <IProductService> .Create; var shopService = ServiceProvider.Instance <IShopService> .Create; var vshopService = ServiceProvider.Instance <IVShopService> .Create; var siteSetting = SiteSettingApplication.SiteSettings; var typeservice = ServiceProvider.Instance <ITypeService> .Create; var shopBranchService = ServiceProvider.Instance <IShopBranchService> .Create; var shopCartHelper = ServiceProvider.Instance <IBranchCartService> .Create; var branchcart = shopCartHelper.GetCart(CurrentUser.Id, 0); var branchProducts = PackageCartProducts(branchcart, prodPrice, discount, productService, shopService, shopBranchService, vshopService, typeservice, true); var sbProducts = branchProducts.OrderBy(p => p.Status).ThenByDescending(item => item.AddTime); var sbCartShop = sbProducts.GroupBy(item => item.ShopBranchId); return(Json(new { Shop = cartShop, ShopBranch = sbCartShop })); }
public object PostSubmitOrderByCart(OrderSubmitOrderByCartModel value) { CheckUserLogin(); if (value.CapitalAmount > 0 && !string.IsNullOrEmpty(value.PayPwd)) { var flag = MemberApplication.VerificationPayPwd(CurrentUser.Id, value.PayPwd); if (!flag) { throw new MallApiException("预存款支付密码错误"); } } string cartItemIds = value.cartItemIds; 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; IEnumerable<long> orderIds; CommonModel.OrderShop[] OrderShops = Newtonsoft.Json.JsonConvert.DeserializeObject<OrderShop[]>(value.jsonOrderShops); OrderPostModel model = new OrderPostModel(); model.CurrentUser = CurrentUser; model.PlatformType = PlatformType.Android.GetHashCode(); model.IsShopbranchOrder = true; model.RecieveAddressId = recieveAddressId; model.Integral = integral; model.Capital = value.CapitalAmount; model.IsCashOnDelivery = isCashOnDelivery; //model.InvoiceType = invoiceType; //model.InvoiceContext = invoiceContext; //model.InvoiceTitle = invoiceTitle; //model.InvoiceCode = value.invoiceCode; model.OrderShops = OrderShops;//用户APP选择门店自提时用到,2.5版本未支持门店自提 model.CartItemIds = cartItemIds; model.IsShopbranchOrder = true; if (model.OrderShops == null || model.OrderShops.Count() < 1) { throw new MallApiException("订单信息错误"); } try { var cartItemIdsArr = cartItemIds.Split(',').Where(d => !string.IsNullOrWhiteSpace(d)).Select(item => long.Parse(item)).ToArray(); //根据购物车项补充sku数据 var cartItems = CartApplication.GetCartItems(cartItemIdsArr); List<OrderSku> skus = new List<OrderSku>(); foreach (var _item in cartItems) { OrderSku _tmp = new OrderSku(); _tmp.SkuId = _item.SkuId; _tmp.Count = _item.Quantity; skus.Add(_tmp); } model.CouponIds = couponIds; model.OrderShops[0].OrderSkus = skus.ToArray(); var result = OrderApplication.SubmitOrder(model, value.PayPwd); orderIds = result.OrderIds; decimal orderTotals = result.OrderTotal; 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 JsonResult GetCartProducts() { var memberId = CurrentUser?.Id ?? 0; var cartItems = CartApplication.GetCartItems(memberId); var vshops = VshopApplication.GetVShopsByShopIds(cartItems.Select(p => p.Shop.Id)); var products = cartItems.Select(item => { var sku = item.Sku; var product = item.Product; var shop = item.Shop; var vshop = vshops.FirstOrDefault(p => p.ShopId == shop.Id); var skuDetails = string.Empty; if (!string.IsNullOrWhiteSpace(sku.Size)) { skuDetails += sku.SizeAlias + ":" + sku.Size + " "; } if (!string.IsNullOrWhiteSpace(sku.Color)) { skuDetails += sku.ColorAlias + ":" + sku.Color + " "; } if (!string.IsNullOrWhiteSpace(sku.Version)) { skuDetails += sku.VersionAlias + ":" + sku.Version + " "; } return(new { cartItemId = item.ItemId, skuId = sku.Id, id = product.Id, imgUrl = Himall.Core.HimallIO.GetProductSizeImage(product.RelativePath, 1, (int)ImageSize.Size_150), name = product.ProductName, price = sku.SalePrice, count = item.Quantity, shopId = shop.Id, vshopId = vshop == null ? 0 : vshop.Id, shopName = shop.ShopName, shopLogo = vshop == null ? "" : vshop.Logo, productstatus = item.IsLimit ? 0 : (sku.Stock <= 0 ? ProductInfo.ProductSaleStatus.InStock.GetHashCode() : product.SaleStatus.GetHashCode()), status = item.IsLimit ? 1 : ProductManagerApplication.GetProductShowStatus(product, sku.Map <DTO.SKU>(), 1), // 0:正常;1:已失效;2:库存不足;3:已下架; Size = sku.Size, Color = sku.Color, Version = sku.Version, ColorAlias = sku.ColorAlias, SizeAlias = sku.SizeAlias, VersionAlias = sku.VersionAlias, skuDetails = skuDetails, AddTime = item.AddTime, minMath = ProductManagerApplication.GetProductLadderMinMath(product.Id) }); }).OrderBy(p => p.status).ThenByDescending(o => o.AddTime).ToList(); #region 门店购物车 var discount = CurrentUser?.MemberDiscount ?? 1; var branchCartHelper = new BranchCartHelper(); long userId = 0; if (CurrentUser != null) { userId = CurrentUser.Id; } var Branchcart = branchCartHelper.GetCartNoCache(userId, 0); var shopBranchList = Branchcart.Items.Where(x => x.ShopBranchId > 0).Select(x => x.ShopBranchId).ToList(); shopBranchList = shopBranchList.GroupBy(x => x).Select(x => x.First()).ToList(); Dictionary <long, long> buyedCounts = null; if (userId > 0) { buyedCounts = new Dictionary <long, long>(); buyedCounts = OrderApplication.GetProductBuyCount(userId, Branchcart.Items.Select(x => x.ProductId)); } var branchProducts = PackageCartProducts(Branchcart, discount, true); var sbProducts = branchProducts.OrderBy(p => p.status).ThenByDescending(item => item.AddTime); var shopBranchCart = sbProducts.GroupBy(item => item.shopBranchId); #endregion var cartModel = new { products = products, amount = products.Sum(item => item.price * item.count), totalCount = products.Sum(item => item.count), shopBranchCart = shopBranchCart }; return(SuccessResult <dynamic>(data: cartModel)); }