我正在开发一个咖啡馆或快餐店的预付费系统。
目前,我有代码系统排序,该系统将发出一个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 |
+------------+----------------+----------------------+我的理论是,优惠券的价值永远不会改变,但交易的价值会在购买时计算并扣除,以得出剩余部分。
这看起来像是一种实用的方法吗?
如果你觉得这个问题不属于这里,而不是投反对票,请提供一个更好的论坛。
发布于 2012-10-12 15:56:05
理论上听起来不错,但既然你必须记录所有的优惠券和交易记录,那么购买哪种优惠券是平衡的并不重要-你只需要金额。如果优惠券可以在个人之间转移,您必须首先扫描客户可用的所有优惠券,然后再决定您要检查他的余额。在我看来不切实际。如果优惠券不能转让,它们只是客户自己账户上的存款收据,挑出其中一张来核对是没有意义的。
https://stackoverflow.com/questions/12854139
复制相似问题