8 lines
1.5 KiB
Markdown
8 lines
1.5 KiB
Markdown
1.先效验传入的下注金额是否正确,再去给每个用户申请一把锁,根据用户id去redis中读取游戏缓存数据,缓存为空,扣费并且更新用户累计的投注,在去更新用户的总投注额,再去查找今天0点的统计记录,不存在则创建,否则将今日统计表中下注金额累计,再将redis中的全局奖励池累加
|
||
再去初始化缓存数据,再去通过selectGame()方法去挑选一局游戏
|
||
1.1selectGame()方法,首先去查询用户的历史数据(历史投钱数,游戏多少次),查询不到就去初始化一条全新数据,再去redis中读取游戏的配置信息,在去读取配置表(有rtp=0.8),再从redis中拿到全局的奖励池(所有玩家总投注,所有玩家总获奖),再将StrategyContext对象组装
|
||
再去执行三个策略,分别是:普通旋转,免费旋转,超级旋转,三个旋转只是查询条件不同,最后封装GameSpin对象返回
|
||
2.处理免费旋转,再去更新缓存,再去检测并且去累加S出现的次数,再去累加倍数到累计赢取额,然后写回缓存保存更新
|
||
3.判断游戏是否结束,去计算最终的奖励,总得分(score) × 单注(bet) = 本局实际奖励金额,若计算结果≤0,强制设为0.01保底,再将赢取的金额加到玩家账号
|
||
4.本局游戏结束之后,将该用户的redis缓存为空,去更新用户累计的输赢金额,再去更新统计表和Redis的全局奖励池
|
||
5.构建完整数据并且返回 |