首页 > 代码库 > 商城系统简单购物车结构设计代码实现
商城系统简单购物车结构设计代码实现
最近公司做了一个商城系统,分享一下购物车的设计。
public class ShopCart { private string UserId; public List<CartItem> CartItems { get; set; } = new List<CartItem>(); private ShopCart() { } public ShopCart(string userId) { this.UserId = userId; InitCart(); } #region 初始化购物车 private void InitCart() { CartItems = new ShopCarBll().GetListByUserId(UserId) ?? (List<CartItem>)new List<CartItem>(); } #endregion #region 对购物车进行操作 /// <summary> /// 添加商品 /// </summary> /// <param name="productId"></param> /// <param name="count"></param> /// <returns></returns> public bool AddProduct(int productId, int count) { var productModel = new ProductBll().GetModel(productId); if (productModel != null) { if (CartItems.Any(x => x.ProductId == productId)) { return ModifyCount(productId, count); } else { //更新购物车到数据库中做持外化 if (new ShopCarBll().Add(UserId, productId, count)) { CartItems.Add(new CartItem(productModel.Id, productModel.Price, count)); return true; } } } return false; } /// <summary> /// 修改商品数量 /// </summary> /// <param name="productId"></param> /// <param name="count"></param> /// <returns></returns> public bool ModifyCount(int productId, int count) { var item = CartItems.FirstOrDefault(x => x.ProductId == productId); if (item != null) { if (new ShopCarBll().Mobify(UserId, productId, count)) { //更新到数据库中 item.Count = count; return true; } } return false; } /// <summary> /// 移除商品 /// </summary> /// <param name="productId"></param> /// <returns></returns> public bool RemoveProduct(int productId) { var item = CartItems.FirstOrDefault(x => x.ProductId == productId); if (item != null) { if (new ShopCarBll().Remove(UserId, productId)) { //更新到数据库中 CartItems.Remove(item); return true; } } return false; } #endregion /// <summary> /// 获取购物车总价 /// </summary> /// <returns></returns> public decimal GetSumFee() { return CartItems.Sum(x => x.Count * x.Count); } } public class CartItem { public int ProductId { get; set; } public int Count { get; set; } public decimal Price { get; set; } public CartItem(int productId, decimal price, int count) { this.ProductId = productId; this.Count = count; this.Price = price; } }
接着写测试类
public class testCart { public void Test() { string userId = "123123123"; ShopCart myCart = new ShopCart(userId); myCart.AddProduct(1001, 1); myCart.AddProduct(1002, 3); myCart.AddProduct(1003, 2); myCart.ModifyCount(1002, 5);//修改购物车数量 myCart.RemoveProduct(1003);//删除购物车商品 decimal sumFee = myCart.GetSumFee();//获取所有购物车金额 } }
完工
商城系统简单购物车结构设计代码实现
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。