Esempio n. 1
0
        public void AddItem(BizofferInfo info)
        {
            if (info == null)
            {
                throw new Exception("发布单信息不能为空");
            }
            if (info.Price <= 0)
            {
                throw new Exception("发布单价格不能小于等于0");
            }

            //由于order和orderItem是个聚合关系,order是这个聚合的聚合根,它负责业务规则的不变性和数据的一致性
            //下面逻辑体现了以上原则

            this.TotalPrice = this.TotalPrice + info.Price;//数据的一致性


            var items = this.OrderItems.Where(m => m.BizofferInfo.BizofferId == info.BizofferId).ToList();   //业务的不变性,如果订单项列表中已有该商品,则订单项商品数加一即可

            if (items.Count > 0)
            {
                items[0].IncrementQuantity();
            }
            else
            {
                OrderItem item = new OrderItem(info);
                this.OrderItems.Add(item);
            }
        }
Esempio n. 2
0
 public OrderItem(BizofferInfo bizofferInfo)
 {
     this.BizofferInfo = bizofferInfo;
     this.Id           = Guid.NewGuid().ToString();
 }