为每个 customer/user 生成唯一的 voucher/code

generate unique voucher/code for every customer/user

我尝试建立像 grou 这样的网站,这是一个在商家中出售某些商品的代金券的平台。

customeruser可以根据vouchers 他们买了。

我对兑换凭证的逻辑或数据库设计感到困惑。我想问的是:

  1. 如何为 users 购买的每个 coupon/voucher 生成唯一代码。网站上发布的每张优惠券都有主键。如果10位顾客购买了同一张优惠券,他们兑换时如何避免重复。如果我添加 唯一代码 ,我应该添加 vouchers table 还是在 users 结帐后生成它。

  2. 我是否应该table兑换和兑换细节。以及如果该优惠券已被使用,如何给出一个标志。

请给我一些建议。谢谢。

我认为您应该查看 usersvouchers tables/models 之间的 many to many relationships。这基本上意味着许多 users 可以有许多 vouchers,反之亦然。

然后 table 可以有其他字段,例如 redeemed(可能是 dateTime 字段)和 notes/details。将 redeemed 作为日期时间字段意味着您可以设置 user 兑换此优惠券的确切时间。

这可以用来避免 user 多次兑换代金券。

第一个问题

您可以使用优惠券 ID,例如用户 ID。因此,如果我们有 2 个用户和 1 个优惠券,那么这个唯一代码将是这样的:1-1、1-2。

如果它们看起来像 1-1 和 1-2,那么在 - 标记上简单展开,您将有两个元素数组,其中第一个是优惠券 ID,第二个是用户 ID。您可以将其存储在凭证中 table...

但更好的方法是使用多对多关系。您正在创建 UsersVouchersUserVouchers table 并在它们之间连接函数。用户可以有很多 userVouchers,但是 userVoucher 只有一张凭证。看看我的皮卡数据库:http://www.laravelsd.com/share/8O0xtZ。这称为数据透视表,您在将用户与优惠券连接时创建它。

第二题

根据UserVoucher关系,您将知道这张代金券被使用了多少次。您只需要在 Vouchers table 中有一列,例如 max_users,如果您在那里写,例如 4,如果您在 UserVoucher 中有 4 行或在前端你可以检查这个并且不显示购买按钮。两种安全的方式都会很好 ;)