From 882f5815e69bc9dc2270d8c9ecc94acbeecad4a3 Mon Sep 17 00:00:00 2001 From: Helius <wangdoubleone@gmail.com> Date: Fri, 26 Nov 2021 17:35:10 +0800 Subject: [PATCH] fix fish hit --- src/main/java/com/xcong/excoin/rabbit/consumer/FishHitConsumer.java | 24 ++++++++++++++++++++++-- 1 files changed, 22 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/xcong/excoin/rabbit/consumer/FishHitConsumer.java b/src/main/java/com/xcong/excoin/rabbit/consumer/FishHitConsumer.java index 2bab670..3d14994 100644 --- a/src/main/java/com/xcong/excoin/rabbit/consumer/FishHitConsumer.java +++ b/src/main/java/com/xcong/excoin/rabbit/consumer/FishHitConsumer.java @@ -1,8 +1,12 @@ package com.xcong.excoin.rabbit.consumer; +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.StrUtil; import com.alibaba.fastjson.JSONObject; import com.xcong.excoin.configurations.RabbitMqConfig; +import com.xcong.excoin.modules.fish.dao.CannonOwnRecordDao; import com.xcong.excoin.modules.fish.dao.MemberAccountGoldDao; +import com.xcong.excoin.modules.fish.entity.CannonOwnRecord; import com.xcong.excoin.modules.fish.entity.MemberAccountGold; import com.xcong.excoin.websocket.fish.model.MsgModel; import lombok.extern.slf4j.Slf4j; @@ -12,6 +16,7 @@ import org.springframework.stereotype.Component; import java.math.BigDecimal; +import java.util.List; /** * @author wzy @@ -25,21 +30,36 @@ @Autowired private MemberAccountGoldDao memberAccountGoldDao; + @Autowired + private CannonOwnRecordDao cannonOwnRecordDao; + @RabbitListener(queues = RabbitMqConfig.QUEUE_FISH_HIT) public void fishHit(String content) { log.info("收到打渔消息:{}", content); MsgModel msg = JSONObject.parseObject(content, MsgModel.class); synchronized (this) { + List<CannonOwnRecord> forts = cannonOwnRecordDao.selectCannonOwnRecordsByMemberIdAndCannonCode(msg.getMemberId(), msg.getFortCode()); + if (CollUtil.isEmpty(forts)) { + log.info("未拥有该炮台"); + return; + } + MemberAccountGold accountGold = memberAccountGoldDao.selectByMemberIdForLock(msg.getMemberId()); BigDecimal available = accountGold.getAvailableBalance(); - BigDecimal gold = BigDecimal.valueOf(msg.getObtain()).subtract(msg.getConsume()); + BigDecimal gold; + if (msg.getObtain() == 0) { + gold = msg.getConsume().negate(); + } else { + gold = BigDecimal.valueOf(msg.getObtain()); + } - if (gold.compareTo(BigDecimal.ZERO) < 0 && gold.abs().compareTo(available) > 0) { + if (msg.getConsume().compareTo(available) > 0) { log.info("余额不足"); return; } + memberAccountGoldDao.updateTotalBalanceAndAvailableBalance(accountGold.getId(), gold, gold, BigDecimal.ZERO); } } -- Gitblit v1.9.1