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); } }
public OrderItem(BizofferInfo bizofferInfo) { this.BizofferInfo = bizofferInfo; this.Id = Guid.NewGuid().ToString(); }