xiaoyong931011
2021-11-24 35d0c67bb3391d69a8333e5fad664a88a8ccfd0e
src/main/java/com/xcong/excoin/modules/fish/service/impl/MemberCannonServiceImpl.java
@@ -10,16 +10,11 @@
import com.xcong.excoin.common.enumerates.CoinTypeEnum;
import com.xcong.excoin.common.response.Result;
import com.xcong.excoin.modules.coin.service.CoinService;
import com.xcong.excoin.modules.fish.dao.CannonAccountMoneyChangeDao;
import com.xcong.excoin.modules.fish.dao.CannonOwnRecordDao;
import com.xcong.excoin.modules.fish.dao.CannonSettingDao;
import com.xcong.excoin.modules.fish.dao.MemberAccountGoldDao;
import com.xcong.excoin.modules.fish.dto.CannonExchangeDto;
import com.xcong.excoin.modules.fish.dto.CoinGoldExchangeDto;
import com.xcong.excoin.modules.fish.dto.GetCannonsDto;
import com.xcong.excoin.modules.fish.dto.GoldExchangeDto;
import com.xcong.excoin.modules.fish.dao.*;
import com.xcong.excoin.modules.fish.dto.*;
import com.xcong.excoin.modules.fish.entity.*;
import com.xcong.excoin.modules.fish.service.MemberCannonService;
import com.xcong.excoin.modules.fish.vo.AccountAvaBanlaceVo;
import com.xcong.excoin.modules.fish.vo.CannonSettingVo;
import com.xcong.excoin.modules.fish.vo.GoldAccountVo;
import com.xcong.excoin.modules.fish.vo.OwnCannonVo;
@@ -36,21 +31,23 @@
public class MemberCannonServiceImpl extends ServiceImpl<CannonOwnRecordDao, CannonOwnRecord> implements MemberCannonService {
    @Resource
    CannonSettingDao cannonSettingDao;
    @Resource
    MemberAccountGoldDao memberAccountGoldDao;
    @Resource
    CannonAccountMoneyChangeDao cannonAccountMoneyChangeDao;
    @Resource
    MemberWalletCoinDao memberWalletCoinDao;
    @Resource
    private MemberCannonService memberCannonService;
    @Resource
    CannonAccountMoneyChangeDao cannonAccountMoneyChangeDao;
    @Resource
    CannonOwnRecordDao cannonOwnRecordDao;
    @Resource
    CannonSettingDao cannonSettingDao;
    @Resource
    CannonGameRecordDao cannonGameRecordDao;
    @Resource
    RedisUtils redisUtils;
    @Resource
    private CoinService coinService;
    @Resource
    private MemberCannonService memberCannonService;
    @Override
    public Result coinGoldExchange(CoinGoldExchangeDto coinGoldExchangeDto) {
@@ -79,6 +76,16 @@
            memberCannonService.updateTotalBalanceAndAvailableBalance(memberAccountGold.getId(),balance.negate(),balance.negate(),null);
            //代币账户增加
            coinService.updateWalletBalance(memberWalletCoinEntity.getId(),divide,divide,null);
            CannonAccountMoneyChange cannonAccountMoneyChange = new CannonAccountMoneyChange();
            cannonAccountMoneyChange.setMemberId(memberId);
            cannonAccountMoneyChange.setAmount(balance.negate());
            cannonAccountMoneyChange.setType(2);
            cannonAccountMoneyChange.setContent("金币兑换");
            cannonAccountMoneyChange.setChangeBalance(balance);
            cannonAccountMoneyChange.setChangeBefore(memberAccountGold.getAvailableBalance());
            cannonAccountMoneyChange.setChangeAfter(memberAccountGold.getAvailableBalance().subtract(balance));
            cannonAccountMoneyChangeDao.insert(cannonAccountMoneyChange);
        }else if(type == 2){
            MemberAccountGold memberAccountGold = memberAccountGoldDao.selectAccountGoldByMemberId(memberId);
            MemberWalletCoinEntity memberWalletCoinEntity = memberWalletCoinDao.selectWalletCoinBymIdAndCode(memberId, CoinTypeEnum.XCT.name());
@@ -91,6 +98,16 @@
            memberCannonService.updateTotalBalanceAndAvailableBalance(memberAccountGold.getId(),multiply,multiply,null);
            //代币账户减少
            coinService.updateWalletBalance(memberWalletCoinEntity.getId(),balance.negate(),balance.negate(),null);
            CannonAccountMoneyChange cannonAccountMoneyChange = new CannonAccountMoneyChange();
            cannonAccountMoneyChange.setMemberId(memberId);
            cannonAccountMoneyChange.setAmount(balance);
            cannonAccountMoneyChange.setType(3);
            cannonAccountMoneyChange.setContent("兑换金币");
            cannonAccountMoneyChange.setChangeBalance(balance);
            cannonAccountMoneyChange.setChangeBefore(memberWalletCoinEntity.getAvailableBalance());
            cannonAccountMoneyChange.setChangeAfter(memberWalletCoinEntity.getAvailableBalance().add(balance));
            cannonAccountMoneyChangeDao.insert(cannonAccountMoneyChange);
        }
        return Result.ok("兑换成功");
    }
@@ -158,7 +175,8 @@
        CannonAccountMoneyChange cannonAccountMoneyChange = new CannonAccountMoneyChange();
        cannonAccountMoneyChange.setMemberId(memberId);
        cannonAccountMoneyChange.setAmount(exchangePrice);
        cannonAccountMoneyChange.setType(2);
        cannonAccountMoneyChange.setType(1);
        cannonAccountMoneyChange.setContent("购买炮塔");
        cannonAccountMoneyChange.setChangeBalance(exchangePrice);
        cannonAccountMoneyChange.setChangeBefore(memberWalletCoinEntity.getAvailableBalance());
        cannonAccountMoneyChange.setChangeAfter(memberWalletCoinEntity.getAvailableBalance().subtract(exchangePrice));
@@ -216,6 +234,51 @@
        return Result.ok(cannonOwnRecords);
    }
    @Override
    public Result fishing(FishingDto fishingDto) {
        Long memberId = LoginUserUtils.getAppLoginUser().getId();
        Integer goldWin = fishingDto.getGoldWin() == null?0:fishingDto.getGoldWin();
        if(goldWin < 0){
            return Result.fail("请求异常,请刷新页面");
        }
        Long cannonOwnId = fishingDto.getCannonOwnId();
        List<CannonOwnRecord> cannonOwnRecords = cannonOwnRecordDao.selectCannonOwnRecordsByIdAndMemberId(cannonOwnId,memberId);
        if(CollUtil.isEmpty(cannonOwnRecords)){
            Result.fail("请求异常,请刷新页面");
        }
        //消耗金币 = 每发炮弹的消耗 - 获得金币;
        CannonOwnRecord cannonOwnRecord = cannonOwnRecords.get(0);
        CannonSetting cannonSetting = cannonSettingDao.selectCannonSettingByCannonCode(cannonOwnRecord.getCannonCode());
        BigDecimal goldConsume = cannonSetting.getGoldConsume().subtract(new BigDecimal(goldWin)).setScale(0,BigDecimal.ROUND_DOWN);
        MemberAccountGold memberAccountGold = memberAccountGoldDao.selectAccountGoldByMemberId(memberId);
        memberCannonService.updateTotalBalanceAndAvailableBalance(memberAccountGold.getId(),goldConsume.negate(),goldConsume.negate(),null);
        //增加一条游戏记录
        CannonGameRecord cannonGameRecord = new CannonGameRecord();
        cannonGameRecord.setMemberId(memberId);
        cannonGameRecord.setCannonOwnId(cannonOwnRecord.getId());
        cannonGameRecord.setCannonName(cannonOwnRecord.getCannonName());
        cannonGameRecord.setCannonCode(cannonOwnRecord.getCannonCode());
        cannonGameRecord.setGoldConsume(cannonSetting.getGoldConsume());
        cannonGameRecord.setGoldReward(new BigDecimal(goldWin));
        cannonGameRecordDao.insert(cannonGameRecord);
        return Result.ok("success");
    }
    @Override
    public Result getAccountAvaBanlace() {
        Long memberId = LoginUserUtils.getAppLoginUser().getId();
        MemberAccountGold memberAccountGold = memberAccountGoldDao.selectAccountGoldByMemberId(memberId);
        MemberWalletCoinEntity memberWalletCoinEntityXCT = memberWalletCoinDao.selectWalletCoinBymIdAndCode(memberId, CoinTypeEnum.XCT.name());
        MemberWalletCoinEntity memberWalletCoinEntityUSDT = memberWalletCoinDao.selectWalletCoinBymIdAndCode(memberId, CoinTypeEnum.USDT.name());
        AccountAvaBanlaceVo accountAvaBanlaceVo = new AccountAvaBanlaceVo();
        accountAvaBanlaceVo.setMemberId(memberId);
        accountAvaBanlaceVo.setGoldAvailableBalance(memberAccountGold.getAvailableBalance() == null?BigDecimal.ZERO:memberAccountGold.getAvailableBalance());
        accountAvaBanlaceVo.setCoinAvailableBalance(memberWalletCoinEntityXCT.getAvailableBalance() == null?BigDecimal.ZERO:memberWalletCoinEntityXCT.getAvailableBalance());
        accountAvaBanlaceVo.setUsdtAvailableBalance(memberWalletCoinEntityUSDT.getAvailableBalance() == null?BigDecimal.ZERO:memberWalletCoinEntityUSDT.getAvailableBalance());
        return Result.ok(accountAvaBanlaceVo);
    }
    public static void main(String[] args) {
        System.out.println(UUID.randomUUID().toString());
    }