我有两个Django模型,一个存储促销代码,另一个跟踪兑换特定促销代码的人。我正在尝试创建一个实例方法,用于确定特定用户是否已兑换特定代码。问题是我没有看到我的一个PromotionManager方法,'redeemed_by_user‘。以下是我的类:
from django.contrib.auth.models import User
from django.db import models
class PromotionManager(models.Manager):
def redeemed_by_user(self, promotion, user):
我试图将一些商业案例映射到循环壁垒的使用上。假设我们有一个促销优惠正在进行,只有3个客户可以得到促销优惠。其余的人都不会得到这个提议。
为了映射这个场景,我使用了循环屏障。即使代码工作正常,我也不知道如何处理一些客户无法获得报价的场景。现在,我尝试使用具有超时值的await() API,这样我就可以捕获TimeoutException并让客户知道他无法利用促销服务。这导致了另一个等待线程的BarrierBrokenException。
我想知道,我们如何优雅地处理这些场景,以便选定的客户可以利用促销优惠,而那些谁不能遵循不同的代码路径。
我的密码-
public class CyclicBar
我正在开发销售推广系统,我刚刚踩到了一些可能可以用状态机模式处理的东西,但我还没有使用状态机的经验。也许状态机在这种情况下完全没有用:)所以我有一个促销活动,它有一些持续时间,一些指定的客户,产品,折扣等。每个促销活动也有它的状态。大概有5个州。状态之间的转换是严格定义的-不可能直接将状态1更改为状态3-用户必须首先将状态更改为2。有一些限制,比如“当促销处于3-5状态时,不可能添加更多的产品”。或者像“只有超级用户才能编辑处于3-5状态的促销费用”这样的限制。
我刚刚读到了,但我不确定对于这个案例来说它是否太复杂了。我可以在我的服务层中使用如下内容来处理状态逻辑:
if (promotion
我正在尝试实现一个用例,当为电子商务应用程序创建促销时,用户只能申请一次促销。因此,如果有一个特价10美元的购买,或类似的东西,用户只能现在和永远声称该促销。
下面是我的想法:
promotions
----------
id | int
start | datetime
end | datetime
claimed | boolean
user_id | int
product_id | int
基本上,如果我向user_id外键添加一个UNIQUE约束,一旦正确,就会阻止用户声明提升?唯一的问题是,如果我第二天或一周后升职怎么办?这对promotions表来说无关紧要,因为按照现在的