我有一个rails应用程序,它具有三个计划级别的订阅方面,具体取决于价格等级。例如,0-1000条消息为10美元,1001-10000条消费金为20美元,并且超过配额金额的附加费为0.01美元。
每个用户都有很多消息。什么是跟踪每个用户的消息使用和超额并相应收费的最佳方式(高级别)?
答案 0 :(得分:1)
我认为你需要这些元素:
- 跟踪消息数量(缓存)的方法
- 跟踪支付系统的方式(如何计算附加费等)
- 预定收费过程
醇>
讯息强>
要跟踪已发送的消息,您需要一个缓存系统(即时计算将非常昂贵)。我在这里没有那么多经验,但我建议您查看Redis(您可能希望research caching here)
我会使用Redis为所有月份的消息存储key/value pair
。因此,当您的数据库中创建一条消息时,有一种机制可以将更新添加到Redis哈希(它将属于用户ID)
- Instagram info on Redis
- Redis Hashes(按用户名存储消息日期)
Redis键/值将存储消息时间戳(created_at
)&邮件的user_id
。这意味着您可以参考该月的Redis商店&转储到另一个数据库(稍后引用),允许您计算每个用户发送的消息数
<强>付款强>
要启用基于层的定价结构,您需要能够计算要发送的月度发票。这应该是一个内部系统,基本上创建一种机制,向用户提供发票,并将其发送给支付提供商以转移资金
要计算发票,您基本上需要运行rake任务来执行此操作:
- 在用户的Redis商店中循环
- 将Redis商店存储在数据库(可能)
中- 取一个&#34;计数&#34;消息
- 使用简单算法确定价格
- 创建定价
醇>invoice
&amp;invoice_messages
表中的相关记录(您可以逐条列出消息使用)
计划强>
虽然功能相对较小,但您需要安排发票创建
我实际上正在考虑这个问题(没有多少经验),所以要做到这一点,你需要设置一个rake任务来循环开启用户应该开具发票的时间。根据您的应用,您必须确定正确的发票日期&amp;然后根据它运行前面的步骤