红包流程_NEW
2017-12-14 17:30:05 0 举报
红包开发流程
作者其他创作
大纲/内容
开始
N
令牌OK?
1.开启事物 2.红包数据入库(错误回滚)3.更新余额(错误回滚) 4.写入账单(错误回滚) 5.写入缓存(错误回滚) 6.提交事务
使用定时任务处理过期红包/crontab /crontab.php/expireBorns
Y
没有拆过红包?
循环执行
有抢红包权限?
MySql
余额充足?
Redis
拆红包
根据队列更新红包剩余数量和剩余金额,抢红包用户列表,账单记录,更新余额
签名OK?
1.获取红包ID 2.获取红包详情 3.获取拆红包用户列表
获取未更新过期红包列表
结束
红包在有效期?
筛选过期红包并处理
mcc_borns(红包列表)mcc_wallet_num(用户金额表--钱包)mcc_wallet_jilu(金额变动记录--账单)
获取待更新队列数据
Mysql库
生成红包令牌
1.开启事务 2.保存红包信息(错误回滚)3.添加交易记录(错误回滚)4.更新钱包余额(错误回滚)5.提交事务
有拆红包权限?
根据队列更新红包数据
事务提交?
1.开始事务 2.更新钱包(错误回滚) 3.添加钱包记录(错误回滚)4.更新红包状态(错误回滚)5.提交事务 6.添加红包退还系统消息
1.检测红包剩余数量 2.检测红包剩余金额 3.开启事务 4.拆红包记录写入Redis(错误回滚) 5.更新拆红包用户列表 Redis(错误回滚)6.写入入库队列(错误回滚) 7.提交事物
抢红包流程
循环条件为TRUE
红包金额&红包详情
待更新红包队列redis
入库队列(存储的是待处理的红吧ID)key:bornTakeQueueRedis
红包剩余数量大于0?
大容通发红包流程
有发红包权限(是群员)?
使用守护进程管理待更新红包队列守护进程地址: 项目根目录/nohup/遇到问题: 循环使守护进程占用CPU过高解决办法: 在队列连续5次为空,守护进程睡眠一秒
参数合格?
0 条评论
下一页