购物车


故事

我们需要为一家街角小店建一个购物车模型。购物车需要记录已添加的商品列表,并正确计算价格。

商品通过库存单位(SKU)编码添加进购物车。商店里的商品有:

名称 价格 SKU
土豆 10.00 STAPOT
大米 30.00 STARIC
咖啡 14.99 STACOF
报纸 2.99 MEDNEW

任务

购物车需要支持以下操作:

  • 添加商品到购物车:读取一个 SKU,并将其添加到购物车。
  • 查看总金额:购物车中商品的总价值,是一个保留两位小数的数字(例如 3.99)。
  • 查看购物车中包含的商品:购物车中商品名称组成的列表,按字母顺序排列,不重复,用逗号和空格分隔。

术语

  • 商品:可以添加到购物车中的物品。
  • SKU:SKU 是一个标识符,由商品类型的前三个大写字母加上商品名称的前三个大写字母组成。
  • 价格:商品的价值,是一个保留两位小数的数字。

实现

替代版本

故事的替代版本或扩展使用了可以添加到购物车中的折扣券。

故事

为了让顾客满意,街角小店增加了折扣券。这意味着,为了支持这些折扣,我们的购物车需要能够读取折扣券,并将其应用于当前商品。支持的折扣券有:

类型 SKU 规则
固定金额折扣 FIX_TEN 从购物车总金额中减去 10.00
商品折扣 HALF_STAPOT 将所有 STAPOT 商品降为半价

任务

购物车需要新增一个 scan coupon 操作,它接收一个 SKU,并将其添加到购物车。请注意,total_amount 不能是负数,total_amount 的最小值为 0。

术语

  • 折扣券:可以应用于购物车的折扣。折扣券是唯一的,只能使用一次。如果折扣券类型是固定金额折扣,那么 SKU 的第二部分就是折扣金额,用大写字母表示。

实现