php - 如何处理复杂的用户状态?

标签 php mysql database oop conceptual

我的应用程序处理用户付款。在公司,该用户的状态如下:

  • 合规(用户支付了迄今为止的所有债务)
  • 逾期/违约(用户注册至少 3 个月并且未支付至少 1 笔债务)
  • 不活跃(用户注册时间少于 3 个月且未支付任何债务)

在应用程序内的多个位置(和规则)处理这些规则的最佳方式是什么?

我是否需要像 status_id 这样的字段和一个每小时更新一次的 cron?

没有status_id字段并且在每个需要显示状态的查询中写SQL规则?

加载一个 User 模型并调用一个具有规则的 ->status() 方法?在这种情况下,我如何显示“总计”,例如:我们有 3000 个逾期用户、15000 个不活跃用户等...

这让我头疼了几个月,我真的需要帮助哈哈。我们目前有一个解决方案,但它太复杂而无法处理。由于这在处理支付的应用程序中似乎很常见,因此必须有一种更简单的方法来执行此操作:P

谢谢!

注意事项

  • 应用目前有 90.000 名用户
  • 我们需要这些实时信息。
  • 此信息在报告中用于生成字符。
  • 此信息显示在用户个人资料中。
  • 此信息显示在列表中。
  • 当用户在这些状态之间更改时(例如,当用户输入“逾期”时,“您有债务”),用户会收到通知。
  • 此信息由应用程序用户管理。
  • 需要跟踪状态。

最佳答案

如果您在多个地方使用这个字段,那么您应该将状态存储在一个地方并根据需要更新它(我也会保留状态的历史记录,但那是另一回事)。

如果状态因某些用户操作(例如正在处理的付款)而发生变化,则您可以对该操作使用触发器。但是,您的状态更改似乎是基于事件发生后的时间。在这种情况下,您应该定期运行计划作业(作为 cron 作业或数据库事件)。

我有点不明白你为什么每小时都这样做。看来每天一次最合适。如果“债务”在任意时间支付,那么支付过程应该更新状态。对于状态的降级,每天一次的单一工作就足够了。

关于php - 如何处理复杂的用户状态?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34540135/

相关文章:

php - 在php中使用mysql函数的参数

php - 接下来 7 天的生日计数以及每天需要的生日计数和总数

php - 用于连接、关闭、保持打开状态的 MySQLi 类模式?

mysql - 按停止按钮时停止 mysql 查询

php - 动态创建html模态窗口按钮

MySQL在从另一个表中选择时插入到具有自动增量的表中

sql - 使我的 SSIS 包可移植 - 如何做到这一点?

php - Opencart 商店在托管传输后无法正确加载

mysql - 写入很多,读取很少 - 使用什么 Mysql 存储引擎?

database - 从 Access 事件驱动数据宏调用 C# 代码?