/// <summary> /// 添加购物车商品到当前会话 /// 如果商品已在购物车则增加里面的数量 /// </summary> /// <param name="productId">商品Id</param> /// <param name="type">购物车商品类型</param> /// <param name="parameters">匹配参数</param> public virtual void AddCartProduct( Guid productId, CartProductType type, ProductMatchParameters parameters) { // 检查是否允许非会员下单 var configManager = Application.Ioc.Resolve <GenericConfigManager>(); var settings = configManager.GetData <OrderSettings>(); var sessionManager = Application.Ioc.Resolve <SessionManager>(); var session = sessionManager.GetSession(); var user = session.GetUser(); if (user == null && !settings.AllowAnonymousVisitorCreateOrder) { throw new ForbiddenException(new T("Create order require user logged in")); } // 调用仓储添加购物车商品 using (UnitOfWork.Scope()) { var repository = Application.Ioc.Resolve <CartProductRepository>(); repository.AddOrIncrease(session, productId, type, parameters); } // 非会员登录时,在购物车商品添加成功后需要延长会话时间 if (user == null) { session.SetExpiresAtLeast(SessionExpireDaysForNonUserPurcharse); sessionManager.SaveSession(); } // 删除相关的缓存 CartProductTotalCountCache.Remove(type); }
/// <summary> /// 删除当前会话下的购物车商品 /// </summary> /// <param name="cartProductId">购物车商品Id</param> /// <returns></returns> public virtual bool DeleteCartProduct(Guid cartProductId) { // 从数据库删除,只删除当前会话下的购物车商品 var sessionManager = Application.Ioc.Resolve <SessionManager>(); var repository = Application.Ioc.Resolve <CartProductRepository>(); bool result; using (UnitOfWork.Scope()) { var cartProduct = repository.GetManyBySession(sessionManager.GetSession(), null) .FirstOrDefault(c => c.Id == cartProductId); if (cartProduct != null) { repository.Delete(cartProduct); result = true; } result = false; } // 删除相关的缓存 CartProductTotalCountCache.Remove(CartProductType.Default); CartProductTotalCountCache.Remove(CartProductType.Buynow); return(result); }