商城系统简单购物车结构设计代码实现

最近公司做了一个商城系统,分享一下购物车的设计。

  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();//获取所有购物车金额
        }
    }
完工
时间: 2024-11-02 19:59:15

商城系统简单购物车结构设计代码实现的相关文章

绿叶水果商城系统开发代码技术、

绿叶水果商城系统开发 婷经理 [联系电话:184-7578-0020] 绿叶水果商城软件开发 绿叶水果商城平台开发 至少30年以前,一些软件设计人员就已经意识到领域建模和设计的重要性,并形成一种思潮,Eric Evans将其定义为领域驱动设计(Domain-Driven Design,简称DDD).在互联网开发"小步快跑,迭代试错"的大环境下,DDD似乎是一种比较"古老而缓慢"的思想.然而,由于互联网公司也逐渐深入实体经济,业务日益复杂,我们在开发中也越来越多地遇到

python实现简单购物车系统(练习)

#!Anaconda/anaconda/python #coding: utf-8 #列表练习,实现简单购物车系统 product_lists = [('iphone',5000), ('computer',6000), ('girl_friend',2000), ('boy_friend',3000)] shop_lists = [] for i,v in enumerate(product_lists): #python的内置函数,在字典上是枚举,列举的意思,可以同事获得索引和值 print

PHP_网上开源商城系统

参考:http://www.phpb2b.com/2010/05/25/633 osCommerce osCommerce 是一套基于GNU GPL授权的开源在线购物电子商务解决方案.该系统具有易于操作的可视化安装界面.完善的前台商品展示和户在线购物车功能.强大的后台管理和维护功能模块简单易用.70,000人的官方社区用户和活跃的论坛.121,300家已经注册的在线商店的解决方案3,000个成熟的插件供你选择. OXID eSales OXID eSales是一个开源的e-commerce系统,

微信小程序购物商城系统开发系列-目录结构

上一篇我们简单介绍了一下微信小程序的IDE(微信小程序购物商城系统开发系列-工具篇),相信大家都已经蠢蠢欲试建立一个自己的小程序,去完成一个独立的商城网站. 先别着急我们一步步来,先尝试下写一个自己的小demo. 这一篇文章我们主要的是介绍一下小程序的一些目录结构,以及一些语法,为我们后面的微信小程序商城系统做铺垫. 首先我们来了解下小程序的目录结构 Pages 我们新建的一些页面将保存在这个文件夹下面,每一个小程序页面是由同路径下同名的四个不同后缀文件的组成,如:index.js.index.

微信小程序购物商城系统开发系列-工具篇

微信小程序开放公测以来,一夜之间在各种技术社区中就火起来啦.对于它 估计大家都不陌生了,对于它未来的价值就不再赘述,简单一句话:可以把小程序简单理解为一个新的操作系统.新的生态,未来大部分应用场景都将给予微信小程序进行研发.基于对它的敬畏以及便于大家快速上手,特整理微信小程序商城开发系列,未来将持续增加微信小程序技术文章,让大家可全面了解如何快速开发微信小程序商城. 本篇文章主要介绍微信小程序官方提供的开发工具,俗话说:欲工善其身,必先利其器. 小程序开发文档地址https://mp.weixi

nopcommerce商城系统--如何编写一个插件

原址:http://www.nopcommerce.com/docs/77/how-to-write-a-nopcommerce-plugin.aspx plug-in (或 plugin)是一个为更大的软件应用程序添加特定的能力的组件(Wikipedia) 插件是用来扩展nopCommerce功能的.nopCommerce拥有多种类型的插件.例如:支付方式(PayPal),税务机构,送货方式计算方法(UPS, USP, FedEx),小部件(如"在线聊天"块)等等. nopComme

yershop商城系统开发一——thinkphp和onethink简析

yershop商城系统是基于thinkphp和onethink开发而来,此系列将详细分析我在二次开发中所面临的种种问题. 本篇简要分析日常在二次开发中涉及到的thinkphp和onethink知识. yershop目录结构了解 此为我的项目中在zendstudio中截图 Addons:扩展插件目录,里面包含了第三方登陆插件.编辑器插件等: Application:项目目录,之后详细介绍 Data:数据库备份目录 Public:js.css.image网站图片资源保存 Uploads:上传图片.文

多用户商城系统 KgMall2.1发布

2014-5-28日,广州JUULUU发布多用户商城系统 KgMall2.1,kgMall是国内一款JAVA开源多用户版商城系统,新版KgMall更加模块化,juuluu团队重构了Kgcms的多个模块,使之更易于开发. KgMall2.1更新 1)改进默认模板 2)清除冗多模块,app包更小,下载更快. 3)app模块化,分离安全,orm,session管理等模块,app结构更严谨. 4)改进shop 标签库,商城模板易于进行二次开发. 5)对重点代码进行重构,对netbeans,eclipse

微信小程序购物商城系统开发系列

微信小程序购物商城系统开发系列 微信小程序开放公测以来,一夜之间在各种技术社区中就火起来啦.对于它 估计大家都不陌生了,对于它未来的价值就不再赘述,简单一句话:可以把小程序简单理解为一个新的操作系统.新的生态,未来大部分应用场景都将给予微信小程序进行研发.基于对它的敬畏以及便于大家快速上手,特整理微信小程序商城开发系列,未来将持续增加微信小程序技术文章,让大家可全面了解如何快速开发微信小程序商城. 本篇文章主要介绍微信小程序官方提供的开发工具,俗话说:欲工善其身,必先利其器. 小程序开发文档地址