seawave
seawave
  • 发布:2022-12-19 16:03
  • 更新:2022-12-27 17:10
  • 阅读:232

消费金额减压金为0时自动结束订单如何实现

分类:uni-app

比如消费项目是40元/小时,充100压金后如何判断刚好压金为0时自动结束。想过用定时云函数,但每分钟都去执行云函数判断对服务器压力很大呀,如果隔5到10分钟再判断一次就有可能更新消费金额后已大于压金了,请大神指教!!

2022-12-19 16:03 负责人:无 分享
已邀请:
呆狗的一生

呆狗的一生 - 呆狗的一生

  1. 每次消费结束时,记录消费金额,确认余额。
  2. 本次消费前,根据余额,和某项目小时单价,计算出最大结束时间。到达最大结束时间后,结束消费
  • seawave (作者)

    这个方法可行,请问一下,如何在服务器创建这种定时任务,如果提前结束了消费如何取消这个定时任务,求教!!感谢!!

    2022-12-27 12:11

呆狗的一生

呆狗的一生 - 呆狗的一生

uniCloud 也有定时云函数,但不能完成这类问题。本项目中,结束消费这个动作,可以分为客户端发起的主动结束和消费时长到达最大值的被动结束。可给每次消费任务都指定一个全局不重复的id,并在用户表中添加此字段,如果某用户当前未进行消费,可用0表示。关于“主动结束”,只须客户端请求后端接口,记录本次消费金额及余额,并修改消费任务id为0(表示当前没有进行消费)。关于“被动结束”有些麻烦了,开始我想的是用RabbitMQ等消息队列,但是本项目中,结束时间不是固定的(比如30分钟后结束),所以并不适合。推荐使用 Redis 数据库的Redis实现key过期事件监听 ,点击查看。把key就设置为消费任务id,key 到期后,查询用户表,若用户表中正在进行的消费任务id与key不相同,则表示客户端已经主动的结束了消费任务或开始了新的消费任务,就什么也不用做;若相同,则执行 被动结束 动作,并结算本次消费金额及余额。

该问题目前已经被锁定, 无法添加新回复