From 48731a1c7023dc75fe7357fac5736adcf084e0c2 Mon Sep 17 00:00:00 2001 From: wzy <wzy19931122ai@163.com> Date: Sat, 27 Aug 2022 15:02:10 +0800 Subject: [PATCH] fix --- src/main/java/cc/mrbird/febs/dapp/service/DappWalletService.java | 2 src/main/java/cc/mrbird/febs/dapp/service/impl/DappSystemServiceImpl.java | 5 + src/main/java/cc/mrbird/febs/rabbit/consumer/ChainConsumer.java | 6 + src/main/java/cc/mrbird/febs/dapp/controller/ApiDappMemberController.java | 9 + src/main/java/cc/mrbird/febs/dapp/service/impl/DappWalletServiceImpl.java | 47 +++++++++ src/main/java/cc/mrbird/febs/dapp/mapper/DappWalletMineDao.java | 2 src/main/java/cc/mrbird/febs/rabbit/QueueConstants.java | 1 src/main/java/cc/mrbird/febs/dapp/service/impl/DappMemberServiceImpl.java | 4 src/main/java/cc/mrbird/febs/dapp/entity/DappFundFlowEntity.java | 2 src/main/java/cc/mrbird/febs/rabbit/RabbitConfiguration.java | 19 +++ src/main/java/cc/mrbird/febs/dapp/service/impl/BscUsdtContractEvent.java | 12 - src/main/java/cc/mrbird/febs/job/ChainListenerJob.java | 12 ++ src/main/java/cc/mrbird/febs/dapp/service/DappSystemService.java | 2 src/main/java/cc/mrbird/febs/dapp/service/impl/BscCoinContractEvent.java | 122 +++++------------------ src/main/java/cc/mrbird/febs/common/contants/AppContants.java | 2 src/main/java/cc/mrbird/febs/dapp/vo/WalletInfoVo.java | 3 src/main/java/cc/mrbird/febs/rabbit/QueueEnum.java | 3 src/main/java/cc/mrbird/febs/dapp/dto/RecordInPageDto.java | 2 src/main/resources/mapper/dapp/DappWalletMineDao.xml | 10 ++ 19 files changed, 156 insertions(+), 109 deletions(-) diff --git a/src/main/java/cc/mrbird/febs/common/contants/AppContants.java b/src/main/java/cc/mrbird/febs/common/contants/AppContants.java index f99f537..7223dc3 100644 --- a/src/main/java/cc/mrbird/febs/common/contants/AppContants.java +++ b/src/main/java/cc/mrbird/febs/common/contants/AppContants.java @@ -180,4 +180,6 @@ public static final String REDIS_KEY_SYMBOL_DAILY_PRICE = "SYMBOL_DAILY_PRICE"; public static final BigDecimal NFT_ACTIVE_PRICE = new BigDecimal("10"); + + public static final String REDIS_KEY_TFC_NEW_PRICE = "TFC_NEW_PRICE"; } diff --git a/src/main/java/cc/mrbird/febs/dapp/controller/ApiDappMemberController.java b/src/main/java/cc/mrbird/febs/dapp/controller/ApiDappMemberController.java index 7e00ba7..9638145 100644 --- a/src/main/java/cc/mrbird/febs/dapp/controller/ApiDappMemberController.java +++ b/src/main/java/cc/mrbird/febs/dapp/controller/ApiDappMemberController.java @@ -67,7 +67,8 @@ @ApiOperation(value = "提现", notes = "提现") @PostMapping(value = "/withdraw") public FebsResponse withdraw(@RequestBody WithdrawDto withdrawDto) { - return new FebsResponse().success(); + dappWalletService.withdraw(withdrawDto); + return new FebsResponse().success().message("success"); } @ApiOperation(value = "我的团队", notes = "我的团队") @@ -85,4 +86,10 @@ redisUtils.hdel(AppContants.REDIS_KEY_SIGN, member.getAddress()); return new FebsResponse().success(); } + + @ApiOperation(value = "计算手续费", notes = "计算手续费") + @PostMapping(value = "/calPrice") + public FebsResponse calPrice(@RequestBody PriceDto priceDto) { + return new FebsResponse().success().data(dappWalletService.calPrice(priceDto)); + } } diff --git a/src/main/java/cc/mrbird/febs/dapp/dto/RecordInPageDto.java b/src/main/java/cc/mrbird/febs/dapp/dto/RecordInPageDto.java index 74f2dcd..691235b 100644 --- a/src/main/java/cc/mrbird/febs/dapp/dto/RecordInPageDto.java +++ b/src/main/java/cc/mrbird/febs/dapp/dto/RecordInPageDto.java @@ -18,6 +18,6 @@ @ApiModelProperty(value = "每页数量") private Integer pageSize = 10; - @ApiModelProperty(value = "类型", example = "1-买入 2-矩阵收益 3-直推收益 4-保险池 5-提现") + @ApiModelProperty(value = "类型", example = "1-买入 2-矩阵收益 3-直推收益 4-保险池 5-提现 6-手续费充值 7-手续费扣除") private Integer type; } diff --git a/src/main/java/cc/mrbird/febs/dapp/entity/DappFundFlowEntity.java b/src/main/java/cc/mrbird/febs/dapp/entity/DappFundFlowEntity.java index 0251663..128a766 100644 --- a/src/main/java/cc/mrbird/febs/dapp/entity/DappFundFlowEntity.java +++ b/src/main/java/cc/mrbird/febs/dapp/entity/DappFundFlowEntity.java @@ -47,7 +47,7 @@ private BigDecimal amount; /** - * 类型 1-买入 2-矩阵收益 3-直推收益 4-保险池 5-提现 + * 类型 1-买入 2-矩阵收益 3-直推收益 4-保险池 5-提现 6-手续费充值 7-手续费扣除 */ private Integer type; diff --git a/src/main/java/cc/mrbird/febs/dapp/mapper/DappWalletMineDao.java b/src/main/java/cc/mrbird/febs/dapp/mapper/DappWalletMineDao.java index 9f15730..4b4cf24 100644 --- a/src/main/java/cc/mrbird/febs/dapp/mapper/DappWalletMineDao.java +++ b/src/main/java/cc/mrbird/febs/dapp/mapper/DappWalletMineDao.java @@ -15,4 +15,6 @@ IPage<DappWalletMineEntity> selectInPage(@Param("record") DappWalletMineEntity walletMine, Page<DappWalletMineEntity> page); int updateBalance(@Param("totalAmount") BigDecimal totalAmount, @Param("availableAmount") BigDecimal availableAmount, @Param("memberId") Long memberId); + + int updateWithLock(@Param("record") DappWalletMineEntity dappWalletMineEntity); } diff --git a/src/main/java/cc/mrbird/febs/dapp/service/DappSystemService.java b/src/main/java/cc/mrbird/febs/dapp/service/DappSystemService.java index 77f3653..19feb62 100644 --- a/src/main/java/cc/mrbird/febs/dapp/service/DappSystemService.java +++ b/src/main/java/cc/mrbird/febs/dapp/service/DappSystemService.java @@ -64,4 +64,6 @@ * @param isReIn */ void putIntoProfit(Long memberId, int isReIn); + + void tfcNewPrice(String data); } diff --git a/src/main/java/cc/mrbird/febs/dapp/service/DappWalletService.java b/src/main/java/cc/mrbird/febs/dapp/service/DappWalletService.java index 250f2e9..9fc61f3 100644 --- a/src/main/java/cc/mrbird/febs/dapp/service/DappWalletService.java +++ b/src/main/java/cc/mrbird/febs/dapp/service/DappWalletService.java @@ -47,4 +47,6 @@ void updateWalletCoinWithLock(BigDecimal amount, Long memberId); + void updateWalletMineWithLock(BigDecimal amount, Long memberId); + } diff --git a/src/main/java/cc/mrbird/febs/dapp/service/impl/BscCoinContractEvent.java b/src/main/java/cc/mrbird/febs/dapp/service/impl/BscCoinContractEvent.java index 4578ecc..968c301 100644 --- a/src/main/java/cc/mrbird/febs/dapp/service/impl/BscCoinContractEvent.java +++ b/src/main/java/cc/mrbird/febs/dapp/service/impl/BscCoinContractEvent.java @@ -16,6 +16,7 @@ import cc.mrbird.febs.dapp.mapper.DappOnlineTransferDao; import cc.mrbird.febs.dapp.service.DappMemberService; import cc.mrbird.febs.dapp.service.DappSystemService; +import cc.mrbird.febs.dapp.service.DappWalletService; import cc.mrbird.febs.dapp.utils.OnlineTransferUtil; import cc.mrbird.febs.rabbit.producer.ChainProducer; import cn.hutool.core.collection.CollUtil; @@ -41,9 +42,6 @@ public class BscCoinContractEvent implements ContractEventService { @Resource - private DappMemberDao dappMemberDao; - - @Resource private DappMemberService dappMemberService; @Resource @@ -52,14 +50,8 @@ @Resource private RedisUtils redisUtils; - @Autowired - private DappSystemService dappSystemService; - @Resource - private DappOnlineTransferDao dappOnlineTransferDao; - - @Resource - private ChainProducer chainProducer; + private DappWalletService dappWalletService; public static void main(String[] args) { System.out.println(Numeric.toBigInt("0x12e4e85")); @@ -68,7 +60,7 @@ @Transactional(rollbackFor = Exception.class) @Override public void compile(EthUsdtContract.TransferEventResponse e) { - if (e.to != null) { + if (e.to != null && e.to.equals(ChainEnum.BSC_TFC.getAddress().toLowerCase())) { log.info("触发TFC监听"); try { @@ -80,105 +72,49 @@ redisUtils.set(AppContants.REDIS_KEY_BLOCK_ETH_INCREMENT_NUM, e.log.getBlockNumber()); int decimals = ChainService.getInstance(ChainEnum.BSC_TFC.name()).decimals(); - // 合约创建时,同时创建地址 - if ("0x0000000000000000000000000000000000000000".equals(e.from)) { - DappMemberEntity toMember = dappMemberDao.selectByAddress(e.to, null); - if (toMember == null) { - toMember = dappMemberService.insertMember(e.to, "0", "BSC", "admin"); - } - return; - } - // 更新余额 DappMemberEntity fromMember = dappMemberService.findByAddress(e.from, null); - if (fromMember != null) { - BigDecimal balance = ChainService.getInstance(ChainEnum.BSC_TFC.name()).balanceOf(e.from); - fromMember.setBalance(balance); - dappMemberService.updateById(fromMember); - } else { - fromMember = dappMemberService.insertMember(e.from, null); + if (fromMember == null) { + return; } BigInteger tokens = e.tokens; BigDecimal amount = new BigDecimal(tokens.toString()).divide(BigDecimal.TEN.pow(decimals), decimals, RoundingMode.HALF_DOWN); - // 如果转账对象地址不为源池地址,注册该用户并绑定上下级关系 - if (!e.to.equals(ChainEnum.BSC_TFC_SOURCE.getAddress().toLowerCase())) { - DappMemberEntity toMember = dappMemberDao.selectByAddress(e.to, null); - if (toMember == null) { - toMember = dappMemberService.insertMember(e.to, fromMember.getInviteId()); - } - -// if (toMember.getActiveStatus() == 2) { -// toMember.setActiveStatus(1); -// } - // 更新余额 - BigDecimal balance = ChainService.getInstance(ChainEnum.BSC_TFC.name()).balanceOf(e.to); - toMember.setBalance(balance); - dappMemberService.updateById(toMember); - - OnlineTransferUtil.addTransferRecord(e.from, e.to, amount, e.log.getTransactionHash(), DappTransferRecordEntity.TRANSFER_SOURCE_FLAG_ONLINE, AppContants.SYMBOL_COIN); + // 卖币 + DappFundFlowEntity fundFlow = dappFundFlowDao.selectByFromHash(e.log.getTransactionHash(), null); + if (fundFlow != null && fundFlow.getStatus() != 1) { + return; } - // 卖币 - if (e.to.equals(ChainEnum.BSC_TFC_SOURCE.getAddress().toLowerCase())) { - DappFundFlowEntity fundFlow = dappFundFlowDao.selectByFromHash(e.log.getTransactionHash(), null); - if (fundFlow != null && fundFlow.getStatus() != 1) { + if (fundFlow == null) { + List<DappFundFlowEntity> flows = dappFundFlowDao.selectFundFlowListByAddress(e.from, 1); + if (CollUtil.isEmpty(flows)) { + OnlineTransferUtil.addTransferRecord(e.from, e.to, amount, e.log.getTransactionHash(), DappTransferRecordEntity.TRANSFER_SOURCE_FLAG_ONLINE, AppContants.SYMBOL_COIN); + log.info("本地无交易:{}", e.log.getTransactionHash()); return; } - if (fundFlow == null) { - List<DappFundFlowEntity> flows = dappFundFlowDao.selectFundFlowListByAddress(e.from, 1); - if (CollUtil.isEmpty(flows)) { - OnlineTransferUtil.addTransferRecord(e.from, e.to, amount, e.log.getTransactionHash(), DappTransferRecordEntity.TRANSFER_SOURCE_FLAG_ONLINE, AppContants.SYMBOL_COIN); - log.info("本地无交易:{}", e.log.getTransactionHash()); - return; - } - - boolean hasFlow = false; - for (DappFundFlowEntity flow : flows) { - if (flow.getStatus() == 1) { - if (amount.compareTo(flow.getAmount()) == 0) { - hasFlow = true; - fundFlow = flow; - fundFlow.setFromHash(e.log.getTransactionHash()); - break; - } + for (DappFundFlowEntity flow : flows) { + if (flow.getStatus() == 1) { + if (amount.compareTo(flow.getAmount()) == 0) { + fundFlow = flow; + fundFlow.setFromHash(e.log.getTransactionHash()); + break; } } - - if (!hasFlow) { - OnlineTransferUtil.addTransferRecord(e.from, e.to, amount, e.log.getTransactionHash(), DappTransferRecordEntity.TRANSFER_SOURCE_FLAG_ONLINE, AppContants.SYMBOL_COIN); - return; - } } - OnlineTransferUtil.addTransferRecord(e.from, e.to, amount, e.log.getTransactionHash(), DappTransferRecordEntity.TRANSFER_SOURCE_FLAG_APPLICATION, AppContants.SYMBOL_COIN); - - if (fundFlow.getAmount().add(fundFlow.getFee()).compareTo(amount) != 0) { - return; - } - - BigDecimal newPrice = fundFlow.getNewestPrice(); - BigDecimal transferAmount = amount.multiply(newPrice); - - // 更改状态为已同步 - fundFlow.setStatus(2); - fundFlow.setTargetAmount(transferAmount); - dappFundFlowDao.updateById(fundFlow); - - // 划点分配 - chainProducer.sendDitribProfit(fundFlow.getId()); - - OnlineTransferUtil.addTransfer(e.from, transferAmount, fundFlow.getType(), 1, ChainEnum.BSC_USDT_SOURCE.name(), AppContants.SYMBOL_USDT, fundFlow.getId().toString()); - - Map<String, String> map = new HashMap<>(); - map.put("batchNo", fundFlow.getId().toString()); - map.put("type", "flow"); - - // 发送转账消息 - chainProducer.sendOnlineTransfer(JSONObject.toJSONString(map)); } + if (fundFlow == null) { + return; + } + + // 更改状态为已同步 + fundFlow.setStatus(2); + dappFundFlowDao.updateById(fundFlow); + + dappWalletService.updateWalletMineWithLock(amount, fromMember.getId()); } } } diff --git a/src/main/java/cc/mrbird/febs/dapp/service/impl/BscUsdtContractEvent.java b/src/main/java/cc/mrbird/febs/dapp/service/impl/BscUsdtContractEvent.java index 0e79963..58bfcb8 100644 --- a/src/main/java/cc/mrbird/febs/dapp/service/impl/BscUsdtContractEvent.java +++ b/src/main/java/cc/mrbird/febs/dapp/service/impl/BscUsdtContractEvent.java @@ -81,24 +81,20 @@ return; } - boolean hasFlow = false; for (DappFundFlowEntity flow : flows) { if (flow.getStatus() == 1) { if (amount.compareTo(flow.getAmount().multiply(flow.getNewestPrice()).setScale(4, RoundingMode.HALF_UP)) == 0) { - hasFlow = true; fundFlow = flow; fundFlow.setFromHash(e.log.getTransactionHash()); break; } } } - - if (!hasFlow) { - OnlineTransferUtil.addTransferRecord(e.from, e.to, amount, e.log.getTransactionHash(), DappTransferRecordEntity.TRANSFER_SOURCE_FLAG_ONLINE, "USDT"); - return; - } } - OnlineTransferUtil.addTransferRecord(e.from, e.to, amount, e.log.getTransactionHash(), DappTransferRecordEntity.TRANSFER_SOURCE_FLAG_APPLICATION, "USDT"); + + if (fundFlow == null) { + return; + } fundFlow.setAmount(fundFlow.getAmount().negate()); // 更改状态为已同步 diff --git a/src/main/java/cc/mrbird/febs/dapp/service/impl/DappMemberServiceImpl.java b/src/main/java/cc/mrbird/febs/dapp/service/impl/DappMemberServiceImpl.java index d10d5ee..c4cb2bf 100644 --- a/src/main/java/cc/mrbird/febs/dapp/service/impl/DappMemberServiceImpl.java +++ b/src/main/java/cc/mrbird/febs/dapp/service/impl/DappMemberServiceImpl.java @@ -291,6 +291,10 @@ walletCoin.setMemberId(member.getId()); dappWalletCoinDao.insert(walletCoin); + DappWalletMineEntity walletMine = new DappWalletMineEntity(); + walletMine.setMemberId(member.getId()); + dappWalletMineDao.insert(walletMine); + if (StrUtil.isEmpty(refererId)) { refererId = "0"; // 若没有推荐人,则直接激活 diff --git a/src/main/java/cc/mrbird/febs/dapp/service/impl/DappSystemServiceImpl.java b/src/main/java/cc/mrbird/febs/dapp/service/impl/DappSystemServiceImpl.java index b3c5f88..3b48b4b 100644 --- a/src/main/java/cc/mrbird/febs/dapp/service/impl/DappSystemServiceImpl.java +++ b/src/main/java/cc/mrbird/febs/dapp/service/impl/DappSystemServiceImpl.java @@ -782,4 +782,9 @@ dappSystemDao.updateMineData(mineData); } } + + @Override + public void tfcNewPrice(String data) { + redisUtils.set(AppContants.REDIS_KEY_TFC_NEW_PRICE, new BigDecimal(data)); + } } 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 8552798..c0258d4 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 @@ -64,6 +64,7 @@ WalletInfoVo walletInfo = new WalletInfoVo(); List<DappMemberEntity> direct = dappMemberDao.selectChildMemberDirectOrNot(member.getInviteId(), 1); DappWalletCoinEntity walletCoin = dappWalletCoinDao.selectByMemberId(member.getId()); + DappWalletMineEntity walletMine = dappWalletMineDao.selectByMemberId(member.getId()); walletInfo.setDirectCnt(direct.size()); walletInfo.setInviteId(member.getInviteId()); @@ -71,6 +72,8 @@ walletInfo.setHasBuy(memberInfo.getActiveStatus()); walletInfo.setOutCnt(memberInfo.getOutCnt()); walletInfo.setProfit(dappFundFlowDao.selectProfitAmountByMemberId(member.getId())); + walletInfo.setTFCbalance(walletMine.getAvailableAmount()); + return walletInfo; } @@ -204,8 +207,13 @@ chainProducer.sendAchieveTreeMsg(member.getId()); } else { + int type = 1; + // 1-认购 2-充值tfc + if (transferDto.getType() == 2) { + type = 6; + } if (transferDto.getId() == null) { - DappFundFlowEntity fundFlow = new DappFundFlowEntity(member.getId(), transferDto.getAmount(), 1, 1, transferDto.getFee(), transferDto.getTxHash()); + DappFundFlowEntity fundFlow = new DappFundFlowEntity(member.getId(), transferDto.getAmount(), type, 1, transferDto.getFee(), transferDto.getTxHash()); dappFundFlowDao.insert(fundFlow); return fundFlow.getId(); } @@ -226,7 +234,11 @@ @Override public Map<String, BigDecimal> calPrice(PriceDto priceDto) { - return null; + String priceStr = redisUtils.getString(AppContants.REDIS_KEY_TFC_NEW_PRICE); + + Map<String, BigDecimal> data = new HashMap<>(); + data.put("fee", new BigDecimal(priceStr)); + return data; } @Override @@ -347,7 +359,22 @@ @Override public void withdraw(WithdrawDto withdrawDto) { + DappMemberEntity member = LoginUserUtil.getAppUser(); + updateWalletCoinWithLock(withdrawDto.getAmount().negate(), member.getId()); + updateWalletMineWithLock(withdrawDto.getFee(), member.getId()); + + DappFundFlowEntity feeFlow = new DappFundFlowEntity(member.getId(), withdrawDto.getFee().negate(), 7, 2, null, null); + dappFundFlowDao.insert(feeFlow); + + DappFundFlowEntity fundFlow = new DappFundFlowEntity(member.getId(), withdrawDto.getAmount().negate(), 5, 2, withdrawDto.getFee(), null); + dappFundFlowDao.insert(fundFlow); + + String hash = ChainService.getInstance(ChainEnum.BSC_USDT.name()).transfer(member.getAddress(), withdrawDto.getAmount()); + fundFlow.setToHash(hash); + dappFundFlowDao.updateById(fundFlow); + + chainProducer.sendTfcFee(withdrawDto.getFee().toPlainString()); } @Override @@ -365,4 +392,20 @@ } } } + + @Override + public void updateWalletMineWithLock(BigDecimal amount, Long memberId) { + boolean isSuccess = false; + while(!isSuccess) { + DappWalletCoinEntity walletCoin = dappWalletCoinDao.selectByMemberId(memberId); + + walletCoin.setTotalAmount(walletCoin.getTotalAmount().add(amount)); + walletCoin.setAvailableAmount(walletCoin.getAvailableAmount().add(amount)); + + int i = dappWalletCoinDao.updateWithLock(walletCoin); + if (i > 0) { + isSuccess = true; + } + } + } } diff --git a/src/main/java/cc/mrbird/febs/dapp/vo/WalletInfoVo.java b/src/main/java/cc/mrbird/febs/dapp/vo/WalletInfoVo.java index 8f5b1d1..c0514fc 100644 --- a/src/main/java/cc/mrbird/febs/dapp/vo/WalletInfoVo.java +++ b/src/main/java/cc/mrbird/febs/dapp/vo/WalletInfoVo.java @@ -31,4 +31,7 @@ @ApiModelProperty(value = "是否购买") private Integer hasBuy; + + @ApiModelProperty(value = "手续费") + private BigDecimal TFCbalance; } diff --git a/src/main/java/cc/mrbird/febs/job/ChainListenerJob.java b/src/main/java/cc/mrbird/febs/job/ChainListenerJob.java index 8f56980..4171b84 100644 --- a/src/main/java/cc/mrbird/febs/job/ChainListenerJob.java +++ b/src/main/java/cc/mrbird/febs/job/ChainListenerJob.java @@ -24,6 +24,8 @@ @Autowired private ContractEventService bscUsdtContractEvent; + @Autowired + private ContractEventService bscCoinContractEvent; @Autowired private RedisUtils redisUtils; @@ -78,8 +80,13 @@ BigInteger section = BigInteger.valueOf(5000); while (newest.subtract(block).compareTo(section) > -1) { BigInteger end = block.add(section); - log.info("监听:[{} - {}]", block, end); - ChainService.contractEventListener(block, end, bscUsdtContractEvent, ChainEnum.BSC_USDT_LISTENER.name()); + + BigInteger finalBlock = block; + new Thread(() -> { + log.info("监听:[{} - {}]", finalBlock, end); + ChainService.contractEventListener(finalBlock, end, bscUsdtContractEvent, ChainEnum.BSC_USDT_LISTENER.name()); + ChainService.contractEventListener(finalBlock, bscCoinContractEvent, ChainEnum.BSC_TFC_LISTENER.name()); + }).start(); block = block.add(section); if (block.compareTo(newest) > 0) { @@ -87,6 +94,7 @@ } } ChainService.contractEventListener(block, bscUsdtContractEvent, ChainEnum.BSC_USDT_LISTENER.name()); + ChainService.contractEventListener(block, bscCoinContractEvent, ChainEnum.BSC_TFC_LISTENER.name()); long end = System.currentTimeMillis(); log.info("区块链监听启动完成, 消耗时间{}", end - start); diff --git a/src/main/java/cc/mrbird/febs/rabbit/QueueConstants.java b/src/main/java/cc/mrbird/febs/rabbit/QueueConstants.java index fbddd0c..de49ff2 100644 --- a/src/main/java/cc/mrbird/febs/rabbit/QueueConstants.java +++ b/src/main/java/cc/mrbird/febs/rabbit/QueueConstants.java @@ -10,4 +10,5 @@ public static final String USER_BUY_REWARD = "queue_sdm_user_buy_reward"; public static final String NFT_BOX = "queue_sdm_nft_box"; public static final String ACHIEVE_TREE = "queue_sdm_achieve_tree"; + public static final String TFC_NEW_PRICE = "queue_tfc_new_price"; } diff --git a/src/main/java/cc/mrbird/febs/rabbit/QueueEnum.java b/src/main/java/cc/mrbird/febs/rabbit/QueueEnum.java index f155ab8..e22cbdb 100644 --- a/src/main/java/cc/mrbird/febs/rabbit/QueueEnum.java +++ b/src/main/java/cc/mrbird/febs/rabbit/QueueEnum.java @@ -11,7 +11,8 @@ USER_BUY_REWARD("exchange_sdm_user_buy_reward", "route_key_sdm_user_buy_reward", "queue_sdm_user_buy_reward"), NFT_BOX("exchange_sdm_nft_box", "route_key_sdm_nft_box", "queue_sdm_nft_box"), ACHIEVE_TREE("exchange_sdm_achieve_tree", "route_key_sdm_achieve_tree", "queue_sdm_achieve_tree"), - WITHDRAW_FEE("exchange_withdraw_fee", "route_key_withdraw_fee", "queue_withdraw_fee"); + WITHDRAW_FEE("exchange_withdraw_fee", "route_key_withdraw_fee", "queue_withdraw_fee"), + TFC_NEW_PRICE("exchange_tfc_new_price", "route_key_tfc_new_price", "queue_tfc_new_price"); private String exchange; diff --git a/src/main/java/cc/mrbird/febs/rabbit/RabbitConfiguration.java b/src/main/java/cc/mrbird/febs/rabbit/RabbitConfiguration.java index f3a3461..7501014 100644 --- a/src/main/java/cc/mrbird/febs/rabbit/RabbitConfiguration.java +++ b/src/main/java/cc/mrbird/febs/rabbit/RabbitConfiguration.java @@ -129,4 +129,23 @@ return BindingBuilder.bind(withdrawFeeQueue()).to(withdrawFeeExchange()).with(QueueEnum.WITHDRAW_FEE.getRoute()); } // === 提现手续费 end === + + + + // === tfc最新价 start === + @Bean + public DirectExchange tfcNewPriceExchange() { + return new DirectExchange(QueueEnum.TFC_NEW_PRICE.getExchange()); + } + + @Bean + public Queue tfcNewPriceQueue() { + return new Queue(QueueEnum.TFC_NEW_PRICE.getQueue()); + } + + @Bean + public Binding tfcNewPriceBind() { + return BindingBuilder.bind(tfcNewPriceQueue()).to(tfcNewPriceExchange()).with(QueueEnum.TFC_NEW_PRICE.getRoute()); + } + // === tfc最新价 end === } diff --git a/src/main/java/cc/mrbird/febs/rabbit/consumer/ChainConsumer.java b/src/main/java/cc/mrbird/febs/rabbit/consumer/ChainConsumer.java index 6af3e87..6201b1d 100644 --- a/src/main/java/cc/mrbird/febs/rabbit/consumer/ChainConsumer.java +++ b/src/main/java/cc/mrbird/febs/rabbit/consumer/ChainConsumer.java @@ -51,4 +51,10 @@ log.info("收到业绩树消息"); dappSystemService.achieveTree(Long.parseLong(id)); } + + @RabbitListener(queues = QueueConstants.TFC_NEW_PRICE) + public void tfcNewPrice(String data) { + log.info("收到最新价消息"); + + } } diff --git a/src/main/resources/mapper/dapp/DappWalletMineDao.xml b/src/main/resources/mapper/dapp/DappWalletMineDao.xml index 6f103bb..4aebd21 100644 --- a/src/main/resources/mapper/dapp/DappWalletMineDao.xml +++ b/src/main/resources/mapper/dapp/DappWalletMineDao.xml @@ -19,10 +19,20 @@ </where> </select> + + <update id="updateBalance"> update dapp_wallet_mine set total_amount = total_amount + #{totalAmount}, available_amount = available_amount + #{availableAmount} where member_id=#{memberId} </update> + + <update id="updateWithLock"> + update dapp_wallet_mine + set total_amount=#{record.totalAmount}, + available_amount=#{record.availableAmount}, + version=version+1 + where id=#{record.id} and version=#{record.version} + </update> </mapper> \ No newline at end of file -- Gitblit v1.9.1