设计用于管理应用程序中服务的付费订阅?

问题描述:

假设我有一个像stackoverflow这样的假设付费应用程序。该应用程序允许用户做两件事情:设计用于管理应用程序中服务的付费订阅?

  1. 发帖提问
  2. 后一个答案

此申请费$ 20买它允许发布10个问题和10名回答的计划。

从技术上讲,这两个动作是通过完全不同的接口

interface Questions { 
    postQuestion(String question); 
} 

interface Answers { 
    postAnswer(int questionId, String answer); 
} 

这两个服务是一种通过网络访问,通过不同的控制器暴露。我需要跟踪用户发布的问题和答案的数量,以便在达到限制时让他们购买新的产品,而不必将此任务委托给服务。

例如在Java中,我需要类似像Map<Method,Integer>这样的地图,它跟踪每个允许的方法被成功调用的次数。并且,通过拦截对这些服务的呼叫来维护这张地图。该地图还需要数据库存储。

谢谢!

在您的客户数据库中,您可以添加一个answerCounter和一个questionCounter

当客户注册的设置这些值至10

每次服务被称为第一检查如果顾客被允许通过检查调用它,如果answerCounterquestionCounter或(取决于请求)高于0 。

如果客户允许张贴的答案/问题再经1

递减answerCounterquestionCounter如果客户支付了新包装由或增加这些值10

+0

谢谢,它要求每个服务检查他们的方法是否可以被调用。有了许多不同的服务,它很难让每个服务都为自己做检查。由于这也是一种'交叉切割'的问题,因此我想以某种方式拦截呼叫,并且我可以配置哪些方法需要拦截。那有意义吗? –

+0

如果你有很多调用,那么你可以创建2个并发的HashMap(每个计数器一个)。当客户连接加载地图中的当前值时。当他的会话结束时保存数据库中的值。在客户旅程中,数据库不会被使用,只有您的地图。 –