我正在为咖啡馆或快餐店开发预付费系统。前提是零售商将登录到管理页面发布自己的代码,以提供给预先加载在柜台购买的信用的客户。
目前我已经对代码系统进行了排序,系统将发出一个 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 |
+------------+----------------+----------------------+
我的理论是优惠券的价值永远不会改变,但交易的价值是在购买时计算并扣除以给出剩余部分。
这似乎是一种实用的方法吗?
如果您觉得这个问题不属于这里而不是投反对票,请提供一个更好的论坛。