From e8f054526c21452ae6d271d2d7770279c44197f1 Mon Sep 17 00:00:00 2001 From: Helius <wangdoubleone@gmail.com> Date: Fri, 05 Aug 2022 10:37:12 +0800 Subject: [PATCH] fix:购买时使用USDT,增加每个地址每天最多购买1000U --- src/main/java/cc/mrbird/febs/dapp/service/impl/DappWalletServiceImpl.java | 31 ++++++++++++++++++++++++++++--- 1 files changed, 28 insertions(+), 3 deletions(-) diff --git a/src/main/java/cc/mrbird/febs/dapp/service/impl/DappWalletServiceImpl.java b/src/main/java/cc/mrbird/febs/dapp/service/impl/DappWalletServiceImpl.java index ec08f1c..99b89c8 100644 --- a/src/main/java/cc/mrbird/febs/dapp/service/impl/DappWalletServiceImpl.java +++ b/src/main/java/cc/mrbird/febs/dapp/service/impl/DappWalletServiceImpl.java @@ -224,6 +224,10 @@ BigDecimal usdtRemain = (BigDecimal) redisUtils.get(AppContants.REDIS_KEY_USDT_OUT_LIMIT_REMAIN); // 用户24小时可出售量 BigDecimal saleCoinRemain = (BigDecimal) redisUtils.get(AppContants.REDIS_KEY_COIN_REMAIN + member.getAddress()); + + // 用户24小时可购买USDT + BigDecimal buyUsdtMax = (BigDecimal) redisUtils.get(AppContants.REDIS_KEY_IDO_USDT_MAX_BUY_DAILY + member.getAddress()); + BigDecimal buyCoinRemain = (BigDecimal) redisUtils.get(AppContants.REDIS_KEY_TRANSFER_POOL_VOL_REMAIN); // 铸池中的币的剩余量 BigDecimal makeCoinRemain = (BigDecimal) redisUtils.get(AppContants.REDIS_KEY_MAKE_POOL_CNT); @@ -251,6 +255,11 @@ // 修改用户24小时可售量 redisUtils.set(AppContants.REDIS_KEY_COIN_REMAIN + member.getAddress(), saleCoinRemain); } else if (DappFundFlowEntity.TYPE_BUY == transferDto.getType()) { + // 购买时,前端传来的amount是USDT,卖出amount是TFC + BigDecimal usdtAmount = transferDto.getAmount(); + BigDecimal coinAmount = transferDto.getAmount().divide(transferDto.getPrice(), 6, RoundingMode.HALF_UP); + transferDto.setAmount(coinAmount); + if ("start".equals(hasStart)) { if (transferDto.getAmount().compareTo(buyCoinRemain) > 0) { throw new FebsException(MessageSourceUtils.getString("transfer_msg_004")); @@ -261,15 +270,24 @@ redisUtils.set(AppContants.REDIS_KEY_TRANSFER_POOL_VOL_REMAIN, buyCoinRemain); // 如果系统还没有启动,则判断铸池中的剩余量 } else { - DataDictionaryCustom dic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(AppContants.DIC_TYPE_SYSTEM_SETTING, AppContants.DIC_VALUE_MAKER_MIN_LIMIT); - if (transferDto.getAmount().compareTo(new BigDecimal(dic.getValue())) < 0) { - throw new FebsException(MessageSourceUtils.getString("transfer_msg_005")); + // 最少购买 +// DataDictionaryCustom dic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(AppContants.DIC_TYPE_SYSTEM_SETTING, AppContants.DIC_VALUE_MAKER_MIN_LIMIT); +// if (transferDto.getAmount().compareTo(new BigDecimal(dic.getValue())) < 0) { +// throw new FebsException(MessageSourceUtils.getString("transfer_msg_005")); +// } + + if (buyUsdtMax.compareTo(usdtAmount) < 0) { + throw new FebsException(MessageSourceUtils.getString("transfer_msg_007")); } if (transferDto.getAmount().compareTo(makeCoinRemain) > 0) { throw new FebsException(MessageSourceUtils.getString("transfer_msg_006")); } makeCoinRemain = makeCoinRemain.subtract(transferDto.getAmount()); + buyUsdtMax = buyUsdtMax.subtract(usdtAmount); + + // 修改每日最大购买USDT量 + redisUtils.set(AppContants.REDIS_KEY_IDO_USDT_MAX_BUY_DAILY + member.getAddress(), buyUsdtMax); // 修改铸池量 redisUtils.set(AppContants.REDIS_KEY_MAKE_POOL_CNT, makeCoinRemain); @@ -291,6 +309,11 @@ DappFundFlowEntity flow = dappFundFlowDao.selectById(transferDto.getId()); if (flow.getStatus() == 1) { if (DappFundFlowEntity.TYPE_BUY == flow.getType()) { + // 购买时,前端传来的amount是USDT,卖出amount是TFC + BigDecimal usdtAmount = transferDto.getAmount(); + BigDecimal coinAmount = transferDto.getAmount().divide(flow.getNewestPrice(), 6, RoundingMode.HALF_UP); + transferDto.setAmount(coinAmount); + if ("start".equals(hasStart)) { buyCoinRemain = buyCoinRemain.add(flow.getAmount()); @@ -298,9 +321,11 @@ redisUtils.set(AppContants.REDIS_KEY_TRANSFER_POOL_VOL_REMAIN, buyCoinRemain); } else { makeCoinRemain = makeCoinRemain.add(flow.getAmount()); + buyUsdtMax = buyUsdtMax.add(usdtAmount); // 修改铸池量 redisUtils.set(AppContants.REDIS_KEY_MAKE_POOL_CNT, makeCoinRemain); + redisUtils.set(AppContants.REDIS_KEY_IDO_USDT_MAX_BUY_DAILY + member.getAddress(), buyUsdtMax); } } else { usdtRemain = usdtRemain.add(transferDto.getAmount().multiply(transferDto.getPrice())); -- Gitblit v1.9.1