0

我用购物车成功创建了简单的网络应用程序。

现在我需要实施一些特别优惠。

示例 1:如果客户添加了 2 件某种产品 - 第二件的成本应降低 30%。

示例 2:如果客户添加 product_1 和 product_2 - 那么我必须免费添加产品 3。

实现业务逻辑本身没有问题。

问题是,我在 Codeigniter 购物车中没有产品详细信息。

项目对象/数组中有idnameqty、和字段。pricesubtotaloptions

要在每次购物车更改时不查询数据库的情况下重新计算价格,我需要一些额外的字段,比如组/类别,它告诉我该产品适用什么特别优惠。

此外 - 我需要将基本价格存储在某个地方,因为当客户从购物车中移除一些产品时 - 我需要将旧价格放在那里。

我应该把这些附加信息放在哪里?

options字段已被使用...

我不想在每次购物车更新时查询数据库(我希望我的 Web 应用程序非常快,并且我想要最小的服务器负载)。

rowid当我更改某些购物车商品的价格时,我会期待这些问题吗?

我问这个问题,因为购物车唯一的“rowid”是项目idoptions数组的 md5 校验和。我的应用程序将对具有相同选项的相同产品使用不同的价格(例如一件正常价格,另一个 70% 的价格)。

4

2 回答 2

1

Codeigniter 购物车将帮助您入门,但对于任何类型的定制,我建议您自己制作购物车,这会容易得多。请记住,购物车所要做的就是存储产品 ID 和数量。就是这样。其他一切都是为了查看购物车和创建订单。订单总额与购物车是分开的,因为对于大多数订单会有其他费用,如运费/税费。和/或可能会有改变最终价格的促销活动。

因此,您可能决定在购物车中包含产品名称以使其更易于显示。并且存储船舶重量是合理的。但即使将价格存储在购物车中也可能很危险。如果在购物者购物时涨价或降价怎么办?这些可能是边缘情况,但它向您展示了购物车中的信息有多“陈旧”。

您引用的示例很棒,因为您很快就会看到 - 购物车是为一次跟踪一个订单项而构建的。对于任何类型的逻辑,例如 - 如果您购买其中 3 个,您将免费获得第三个 - 您可以将这种逻辑构建到购物车中 - 但它很快就会变成一团糟的意大利面条!

那么该怎么办?获取购物车对象 - 与您的购物车项目 - 并将其传递给促销模型。促销模型循环遍历购物车中的所有商品 - 然后进行调整 - 将其传递给您的订单方法。通过使用促销模型,我们将促销的业务规则与购物车分开。最重要的是

我们不会改变购物车中的任何东西!

我们正在将促销应用于购物车中的商品。更加灵活,并且很容易向人们展示他们节省了多少钱,因为您没有尝试重写原始购物车定价。

于 2012-12-09T20:27:48.193 回答
0

我意识到,这options可以是数组数组,我可以在那里存储任何额外的数据。

我将使用该数组,我认为没有必要扩展标准 Cart 库。

于 2012-12-09T09:14:36.943 回答