如何实施带有进度指示的奖励计划

时间:2019-12-04 21:03:13

标签: java spring specification-pattern reward-system

我正在开发一种系统,使商店能够为客户创造奖励。

类似:

  • 奖励1:与我们一起花费200美元,即可享受10%的折扣
  • 奖励2:购买10杯卡布奇诺咖啡可免费获得下一个
  • 奖励3:使用给定品牌的15件商品免费获得此产品
  • 依此类推

客户应该能够跟踪每个可获得的奖励的进度-他们将上传购买收据。以上奖励的示例:

用户1

  • 奖励1: 114.36的200.00美元
  • 奖励2:10个卡布奇诺咖啡中的 2个
  • 奖励3: 5个项目中的5个

用户2

  • 奖励1: 85.78 of 200.00 USD
  • 奖励2: 10个卡布奇诺咖啡中的8个
  • 奖励3: 15个项目中的14个

我正在将Java 11与Spring Framework和PostgreSQL一起使用。以下实体是该域模型的一部分:

class Receipt {
  private Company issuedBy;
  private Customer registeredBy;
  private List<ReceiptItem> items;
  private Instant issueDate;
  private Status status;          // PENDING_APPROVAL | DUPLICATED | RESEND_ATTACHMENT | APPROVED
  ...
}

class ReceiptItem {
  private Product product;
  private MonetaryAmount price;   // javax.money
  private Quantity amount;
  ...
}

class Product {
  private Company manufacturer;
  private String gtin;            // Bar code nr
  private String name;
  ...
}

class Quantity {
  private final BigDecimal amount;
  private final Metric metric;
  ...
}

public enum Metric {

  KILOGRAM("kg"),
  GRAM("g"),
  LITER("l"),
  UNIT("");

  private final String abbreviation;
  ...
}

我很难尝试构想如何实现奖励。我想到了使用Specification Pattern为每个奖励建立资格标准的模型。因此,在Receipt批准后,我会仔细检查所有奖励,以查看是否有任何资格使用此Receipt,然后增加当前用户的进度,直到满足完成条件为止,但是比我想象的要困难得多,而且我不确定自己是否走对了。我一生中从未实现过这样的事情,我完全迷失了。因此,非常感谢您的帮助。

谢谢!

0 个答案:

没有答案