diff --git a/cart-grain.go b/cart-grain.go index 3079d48..ec03340 100644 --- a/cart-grain.go +++ b/cart-grain.go @@ -289,7 +289,7 @@ func (c *CartGrain) HandleMessage(message *Message, isReplay bool) (*FrameWithPa case ChangeQuantityType: msg, ok := message.Content.(*messages.ChangeQuantity) if !ok { - err = fmt.Errorf("expected RemoveItem") + err = fmt.Errorf("expected ChangeQuantity") } else { for i, item := range c.Items { if item.Id == int(msg.Id) { @@ -297,8 +297,9 @@ func (c *CartGrain) HandleMessage(message *Message, isReplay bool) (*FrameWithPa c.TotalPrice -= item.Price * int64(msg.Quantity) c.Items = append(c.Items[:i], c.Items[i+1:]...) } else { - item.Quantity -= int(msg.Quantity) - c.TotalPrice -= item.Price * int64(msg.Quantity) + diff := int(msg.Quantity) - item.Quantity + item.Quantity = int(msg.Quantity) + c.TotalPrice += item.Price * int64(diff) } break