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