0

我正在为咖啡馆或快餐店开发预付费系统。前提是零售商将登录到管理页面发布自己的代码,以提供给预先加载在柜台购买的信用的客户。

目前我已经对代码系统进行了排序,系统将发出一个 10 位数的唯一代码,并在存储到数据库之前对其进行散列和加盐处理。信用分配给代码。

客户可以根据需要购买多个“代码”来建立信用。

我在购买时的流程是用户尝试购买商品。所有优惠券的余额在购买时计算。如果有足够的信用购买该项目,余额将被扣除任何优惠券有足够的信用。如果该项目是 5.60 美元,则使用信用最低的优惠券,该优惠券现在是 0.00。如果资金不足,剩余部分将从下一张可用的优惠券中扣除。这将防止任何人因购买而拥有数十张价值 0.25 或 0.50 的优惠券。

在优惠券表中,我有以下结构(省略了一些表数据)

  +------------+----------------+----------------------+ 
  |    id      |      code      |    balance           |
  +------------+----------------+----------------------+
  |    1       |      abcde     |    10.00             |
  +------------+----------------+----------------------+
  |    2       |      fghij     |    20.00             |
  +------------+----------------+----------------------+
  |    3       |      klmno     |    25.00             |
  +------------+----------------+----------------------+

事务表类似于..

  +------------+----------------+----------------------+ 
  |    id      |      coupon    |    value             |
  +------------+----------------+----------------------+
  |    1       |      abcde     |    2.59              |
  +------------+----------------+----------------------+
  |    2       |      abcde     |    4.50              |
  +------------+----------------+----------------------+
  |    3       |      klmno     |    25.00             |
  +------------+----------------+----------------------+

我的理论是优惠券的价值永远不会改变,但交易的价值是在购买时计算并扣除以给出剩余部分。

这似乎是一种实用的方法吗?

如果您觉得这个问题不属于这里而不是投反对票,请提供一个更好的论坛。

4

1 回答 1

0

理论上听起来不错,但由于无论如何您都必须保留所有优惠券和交易的记录,因此购买与哪张优惠券相平衡并不重要 - 您只需要总和即可。如果优惠券可以在个人之间转让,则您必须先扫描客户可用的所有优惠券,然后再决定要根据哪些优惠券检查他的余额。对我来说看起来不切实际。如果优惠券不可转让,它们只是客户在自己账户上的存款收据,单独从中挑选一张进行检查是没有意义的。

于 2012-10-12T07:56:05.467 回答