事关破产, 求助如何写用户扣费逻辑

查看 9|回复 0
作者:importmeta   
我在写个功能:
1.调用第三方企业收费 API 转卖给个人,用户充值获得积分之后才能使用 API,自己先垫付钱.
2.第三方 API 调用失败不扣费.
3.我搞了多个队列来限流用户的请求,大概 20 多个.
4.数据库用的 MongoDB
这是精简版数据模型
数据表
id
userId // 用户 id
status // pending progress success fail
requestData // 用户的数据
resultData // 调用第三方 api 的结果
积分表
point
先保存用户的 requestData 请求数据, status 默认为 pending, 然后把这条数据给到 queue 队列, 队列里来处理逻辑.
下面是我的逻辑:
// 在开始事务
startTransaction();
try{
// 1.拿着 userId 查积分表 不足就 throw
if(point
问题来了...
1.我 20 多个队列同时大量这种请求, 队列是 Redis, 我加上这个事务是不是能解决并发扣费问题, 会不会多个操作同时扣费.
2.如果从 try 里面的调用第三方 API 之后的 6.扣用户的积分 7.状态改为 success 8.提交事务 这三个操作内部 throw 出错了,我钱就白花了.
3.我这逻辑有没有其他问题啊,实在没写过扣费,谢谢大家了.
您需要登录后才可以回帖 登录 | 立即注册

返回顶部