预付系统建议

时间:2012-10-12 07:21:08

标签: php mysql transactions

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

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

客户可以购买多个“代码”以建立信用额度。

我在购买时拥有的流程是用户尝试购买商品。所有优惠券的余额在购买时计算。如果购买物品有足够的信用额度,则会扣除余额,以确保优惠券有足够的信用额度。如果该商品是5.60美元,则使用信用额度最低的优惠券,优惠券现在为0.00。如果资金不足,剩余部分将从下一张可用优惠券中扣除。这将阻止任何人因购买而拥有价值.25或.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             |
  +------------+----------------+----------------------+

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

这看起来像是一种实用的方法吗?

如果你认为这个问题不属于这里,而不是投票提供更好的论坛。

1 个答案:

答案 0 :(得分:0)

理论上听起来不错,但由于你必须保留所有优惠券和交易的记录,因此购买均衡的优惠券无关紧要 - 你只需要总和。 如果优惠券可以在个人之间转让,则您必须首先扫描客户可用的所有优惠券,然后才能决定要检查其余额的优惠券。看起来对我来说不切实际。 如果优惠券不可转让,它们只是客户自己账户上的存款收据,单挑其中一张可以用来检查。