From 8f090c91e2e2b0536d0900b935948e77a5f0979d Mon Sep 17 00:00:00 2001 From: Helius <wangdoubleone@gmail.com> Date: Thu, 09 Jun 2022 15:08:43 +0800 Subject: [PATCH] fix some problem --- src/main/java/cc/mrbird/febs/dapp/service/impl/DappSystemServiceImpl.java | 50 +++++++++ src/main/java/cc/mrbird/febs/dapp/chain/ChainService.java | 22 ++-- src/main/java/cc/mrbird/febs/rabbit/consumer/ChainConsumer.java | 6 + src/main/java/cc/mrbird/febs/job/SystemInit.java | 29 +++++ src/main/java/cc/mrbird/febs/dapp/chain/ContractChainService.java | 2 src/main/java/cc/mrbird/febs/rabbit/QueueConstants.java | 1 src/main/java/cc/mrbird/febs/dapp/entity/DappFundFlowEntity.java | 6 + src/main/java/cc/mrbird/febs/rabbit/producer/ChainProducer.java | 6 + src/main/java/cc/mrbird/febs/rabbit/RabbitConfiguration.java | 17 +++ src/main/java/cc/mrbird/febs/dapp/chain/ChainEnum.java | 14 +- src/main/java/cc/mrbird/febs/dapp/chain/EthService.java | 28 +++++ src/main/java/cc/mrbird/febs/dapp/service/impl/BscUsdtContractEvent.java | 7 src/main/resources/mapper/dapp/DappMemberDao.xml | 7 + src/main/java/cc/mrbird/febs/dapp/mapper/DappMemberDao.java | 2 src/main/java/cc/mrbird/febs/dapp/service/DappSystemService.java | 7 + src/main/java/cc/mrbird/febs/dapp/service/impl/BscCoinContractEvent.java | 18 ++- src/main/java/cc/mrbird/febs/common/contants/AppContants.java | 2 src/main/java/cc/mrbird/febs/job/MineProfitJob.java | 2 src/main/java/cc/mrbird/febs/job/SystemTradeJob.java | 1 src/test/java/cc/mrbird/febs/ChainTest.java | 26 +++++ src/main/java/cc/mrbird/febs/dapp/utils/OnlineTransferUtil.java | 5 src/main/java/cc/mrbird/febs/rabbit/QueueEnum.java | 3 src/main/java/cc/mrbird/febs/dapp/chain/TrxService.java | 5 + 23 files changed, 231 insertions(+), 35 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 77dc48d..37d5efd 100644 --- a/src/main/java/cc/mrbird/febs/common/contants/AppContants.java +++ b/src/main/java/cc/mrbird/febs/common/contants/AppContants.java @@ -153,6 +153,8 @@ public static final String DIC_VALUE_SYSTEM_START_TARGET = "SYSTEM_START_TARGET"; public static final String DIC_VALUE_SYSTEM_SOURCE_POOL_VOL = "SYSTEM_SOURCE_POOL_VOL"; public static final String DIC_VALUE_SYSTEM_NODE_CNT_LIMIT = "SYSTEM_NODE_CNT_LIMIT"; + // 用户购买奖励比例(给上级) + public static final String DIC_VALUE_USER_BUY_REWARD = "USER_BUY_REWARD"; public static final String DESTROY_ADDRESS = "0x0000000000000000000000000000000000000001"; diff --git a/src/main/java/cc/mrbird/febs/dapp/chain/ChainEnum.java b/src/main/java/cc/mrbird/febs/dapp/chain/ChainEnum.java index 6c8c566..33a2a8c 100644 --- a/src/main/java/cc/mrbird/febs/dapp/chain/ChainEnum.java +++ b/src/main/java/cc/mrbird/febs/dapp/chain/ChainEnum.java @@ -31,7 +31,7 @@ */ BSC_USDT("BSC", "0x977a9ddfb965a9a3416fa72ca7f91c4949c18f25", "0xefe98e00cd227b6322e892c82fcbd8eadf119c3188b7e574bc624f65405d61bf", - "https://data-seed-prebsc-2-s2.binance.org:8545", + "https://data-seed-prebsc-2-s1.binance.org:8545", "0x337610d27c682E347C9cD60BD4b3b107C9d34dDd", ""), @@ -43,7 +43,7 @@ */ BSC_TFC("BSC", "0x977a9ddfb965a9a3416fa72ca7f91c4949c18f25", "0xefe98e00cd227b6322e892c82fcbd8eadf119c3188b7e574bc624f65405d61bf", - "https://data-seed-prebsc-2-s2.binance.org:8545", + "https://data-seed-prebsc-2-s1.binance.org:8545", "0xdd92ea2f41d807a60b29004bf7db807d8ac09212", ""), @@ -52,7 +52,7 @@ */ BSC_TFC_SOURCE("BSC", "0x4EbDCA102623b46a47042D580dddAdE2a53D057F", "0x81c2c02d0c106c1e32ab060a37f6eb279c0649c30ea5cc1c4951e6a8dd4e963c", - "https://data-seed-prebsc-2-s2.binance.org:8545", + "https://data-seed-prebsc-2-s1.binance.org:8545", "0xdd92ea2f41d807a60b29004bf7db807d8ac09212", ""), @@ -61,7 +61,7 @@ */ BSC_USDT_SOURCE("BSC", "0x4EbDCA102623b46a47042D580dddAdE2a53D057F", "0x81c2c02d0c106c1e32ab060a37f6eb279c0649c30ea5cc1c4951e6a8dd4e963c", - "https://data-seed-prebsc-2-s2.binance.org:8545", + "https://data-seed-prebsc-2-s1.binance.org:8545", "0x337610d27c682E347C9cD60BD4b3b107C9d34dDd", ""), @@ -70,7 +70,7 @@ */ BSC_TFC_MAKE("BSC", "0xBae24dAa3aB94cfF8114a16A4267D769b3a651F8", "0xc0cabaf5f1fce227e5f1b8a7f83a5dc28972389ffc59559d7852ce8d27c3bec4", - "https://data-seed-prebsc-2-s2.binance.org:8545", + "https://data-seed-prebsc-2-s1.binance.org:8545", "0xdd92ea2f41d807a60b29004bf7db807d8ac09212", ""), @@ -79,7 +79,7 @@ */ BSC_TFC_TECH("BSC", "0xD998DA7362360eFC6daDFEd6E9a32E70640d7600", "", - "https://data-seed-prebsc-2-s2.binance.org:8545", + "https://data-seed-prebsc-2-s1.binance.org:8545", "0xdd92ea2f41d807a60b29004bf7db807d8ac09212", ""), @@ -88,7 +88,7 @@ */ BSC_TFC_REWARD("BSC", "0xBae24dAa3aB94cfF8114a16A4267D769b3a651F8", "0xc0cabaf5f1fce227e5f1b8a7f83a5dc28972389ffc59559d7852ce8d27c3bec4", - "https://data-seed-prebsc-2-s2.binance.org:8545", + "https://data-seed-prebsc-2-s1.binance.org:8545", "0xdd92ea2f41d807a60b29004bf7db807d8ac09212", ""); diff --git a/src/main/java/cc/mrbird/febs/dapp/chain/ChainService.java b/src/main/java/cc/mrbird/febs/dapp/chain/ChainService.java index 641d88b..e83c1f0 100644 --- a/src/main/java/cc/mrbird/febs/dapp/chain/ChainService.java +++ b/src/main/java/cc/mrbird/febs/dapp/chain/ChainService.java @@ -108,17 +108,19 @@ } public static void main(String[] args) { - ChainEnum chain = ChainEnum.getValueByName(ChainEnum.BSC_TFC.name()); - assert chain != null; +// ChainEnum chain = ChainEnum.getValueByName(ChainEnum.BSC_TFC.name()); +// assert chain != null; +// +// EthUsdtContract contract = contract(chain.getPrivateKey(), chain.getContractAddress(), chain.getUrl()); +// EthFilter filter = getFilter(new BigInteger("18097238"), chain.getContractAddress()); +// +// contract.transferEventFlowable(filter).subscribe(e -> { +// System.out.println(1); +// }, error -> { +// log.error("--->", error); +// }); - EthUsdtContract contract = contract(chain.getPrivateKey(), chain.getContractAddress(), chain.getUrl()); - EthFilter filter = getFilter(new BigInteger("18097238"), chain.getContractAddress()); - - contract.transferEventFlowable(filter).subscribe(e -> { - System.out.println(1); - }, error -> { - log.error("--->", error); - }); + System.out.println(ChainService.getInstance(ChainEnum.BSC_TFC.name()).totalSupply()); } } diff --git a/src/main/java/cc/mrbird/febs/dapp/chain/ContractChainService.java b/src/main/java/cc/mrbird/febs/dapp/chain/ContractChainService.java index 67af948..1602c42 100644 --- a/src/main/java/cc/mrbird/febs/dapp/chain/ContractChainService.java +++ b/src/main/java/cc/mrbird/febs/dapp/chain/ContractChainService.java @@ -22,4 +22,6 @@ int decimals(); BigInteger blockNumber(); + + BigInteger totalSupply(); } diff --git a/src/main/java/cc/mrbird/febs/dapp/chain/EthService.java b/src/main/java/cc/mrbird/febs/dapp/chain/EthService.java index 1b043f1..66f037d 100644 --- a/src/main/java/cc/mrbird/febs/dapp/chain/EthService.java +++ b/src/main/java/cc/mrbird/febs/dapp/chain/EthService.java @@ -332,4 +332,32 @@ } } + @Override + public BigInteger totalSupply() { + try { + String methodName = "totalSupply"; + List<Type> inputParameters = new ArrayList<>(); + List<TypeReference<?>> outputParameters = new ArrayList<>(); + TypeReference<Uint256> typeReference = new TypeReference<Uint256>() { + }; + outputParameters.add(typeReference); + Function function = new Function(methodName, inputParameters, outputParameters); + String data = FunctionEncoder.encode(function); + Transaction transaction = Transaction.createEthCallTransaction(null, contractAddress, data); + + EthCall ethCall; + BigInteger totalSupply = BigInteger.ZERO; + try { + ethCall = web3j.ethCall(transaction, DefaultBlockParameterName.LATEST).send(); + List<Type> results = FunctionReturnDecoder.decode(ethCall.getValue(), function.getOutputParameters()); + totalSupply = (BigInteger) results.get(0).getValue(); + return totalSupply.divide(BigInteger.TEN.pow(decimals())); + } catch (IOException e) { + e.printStackTrace(); + } + } catch (Exception e) { + e.printStackTrace(); + } + return BigInteger.ZERO; + } } diff --git a/src/main/java/cc/mrbird/febs/dapp/chain/TrxService.java b/src/main/java/cc/mrbird/febs/dapp/chain/TrxService.java index f75b057..d8c8e99 100644 --- a/src/main/java/cc/mrbird/febs/dapp/chain/TrxService.java +++ b/src/main/java/cc/mrbird/febs/dapp/chain/TrxService.java @@ -108,4 +108,9 @@ public BigInteger blockNumber() { return null; } + + @Override + public BigInteger totalSupply() { + return null; + } } 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 b57d48b..4db4774 100644 --- a/src/main/java/cc/mrbird/febs/dapp/entity/DappFundFlowEntity.java +++ b/src/main/java/cc/mrbird/febs/dapp/entity/DappFundFlowEntity.java @@ -26,7 +26,11 @@ public DappFundFlowEntity() {} public DappFundFlowEntity(Long memberId, BigDecimal amount, Integer type, Integer status, BigDecimal fee) { - new DappFundFlowEntity(memberId, amount, type, status, fee, null); + this.memberId = memberId; + this.amount = amount; + this.type = type; + this.status = status; + this.fee = fee; } public DappFundFlowEntity(Long memberId, BigDecimal amount, Integer type, Integer status, BigDecimal fee, String fromHash) { diff --git a/src/main/java/cc/mrbird/febs/dapp/mapper/DappMemberDao.java b/src/main/java/cc/mrbird/febs/dapp/mapper/DappMemberDao.java index d233533..6351920 100644 --- a/src/main/java/cc/mrbird/febs/dapp/mapper/DappMemberDao.java +++ b/src/main/java/cc/mrbird/febs/dapp/mapper/DappMemberDao.java @@ -28,4 +28,6 @@ List<DappMemberEntity> selectParentsList(@Param("list") List<String> inviteIds, @Param("size") Integer size); BigDecimal selectAllBalance(@Param("accountType") String accountType); + + List<DappMemberEntity> selectMemberByAccountType(@Param("accountType") String accountType); } 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 e7826e6..cd88680 100644 --- a/src/main/java/cc/mrbird/febs/dapp/service/DappSystemService.java +++ b/src/main/java/cc/mrbird/febs/dapp/service/DappSystemService.java @@ -26,4 +26,11 @@ void mining(); void onlineTransfer(String batchNo); + + /** + * 用户购买奖励 + * + * @param id + */ + void userBuyReward(Long id); } 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 0831463..60988b2 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 @@ -89,12 +89,13 @@ return; } -// DappMemberEntity fromMember = dappMemberService.findByAddress(e.from, null); -// if (fromMember == null) { -// DappMemberEntity sourceAddress = dappMemberDao.selectByAddress(ChainEnum.BSC_TFC.getAddress(), null); -// fromMember = dappMemberService.insertMember(e.from, sourceAddress.getInviteId()); -// 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); + } BigInteger tokens = e.tokens; BigDecimal amount = BigDecimal.valueOf(tokens.intValue()).divide(BigDecimal.TEN.pow(decimals), decimals, RoundingMode.HALF_DOWN); @@ -109,8 +110,11 @@ if (toMember.getActiveStatus() == 2) { toMember.setActiveStatus(1); - dappMemberService.updateById(toMember); } + // 更新余额 + 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); } 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 365e962..be83b99 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 @@ -64,15 +64,13 @@ // 如果得到触发,则休眠10秒。 因为此处监听器触发可能优先于前端调用transfer接口 try { - Thread.sleep(5000); + Thread.sleep(10000); } catch (InterruptedException ex) { ex.printStackTrace(); } ContractChainService sourceUsdtInstance = ChainService.getInstance(ChainEnum.BSC_USDT.name()); int decimals = sourceUsdtInstance.decimals(); - int tfcDecimals = ChainService.getInstance(ChainEnum.BSC_TFC.name()).decimals(); - if (e.from.equals("0xaa25aa7a19f9c426e07dee59b12f944f4d9f1dd3")) { return; } @@ -155,6 +153,9 @@ // 发送转账消息 chainProducer.sendOnlineTransfer(JSONObject.toJSONString(map)); + + // 发送购买奖励消息 + chainProducer.sendUserBuyReward(fundFlow.getId()); } } } 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 580de8f..5e64ebc 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 @@ -24,6 +24,7 @@ import org.springframework.transaction.annotation.Transactional; import java.math.BigDecimal; +import java.math.BigInteger; import java.math.RoundingMode; import java.util.*; @@ -207,15 +208,21 @@ @Override public void mining() { log.info("挖矿"); + ContractChainService contract = ChainService.getInstance(ChainEnum.BSC_TFC.name()); + // 发行量 + BigInteger totalSupply = contract.totalSupply(); - Object o = redisUtils.get(AppContants.REDIS_KEY_MINE_ALL_INTERNET_CNT); - if (o == null) { - return; + BigDecimal totalUnHold = contract.balanceOf(AppContants.DESTROY_ADDRESS); + List<DappMemberEntity> admin = dappMemberDao.selectMemberByAccountType("admin"); + for (DappMemberEntity member : admin) { + totalUnHold = totalUnHold.add(contract.balanceOf(member.getAddress())); } Object transferPoolObj = redisUtils.get(AppContants.REDIS_KEY_MINE_TRANSFER_POOL_TRADE_CNT); - BigDecimal allInternet = (BigDecimal) o; + // 全网持币量 + BigDecimal allInternet = new BigDecimal(totalSupply).subtract(totalUnHold); + // 中转池交易量 BigDecimal transferPoll = (BigDecimal) transferPoolObj; List<DappMemberEntity> allMembers = dappMemberDao.selectList(null); @@ -242,7 +249,12 @@ continue; } + DappFundFlowEntity fundFlow = new DappFundFlowEntity(member.getId(), mine, 3, 2, BigDecimal.ZERO); + dappFundFlowDao.insert(fundFlow); OnlineTransferUtil.addTransfer(member.getAddress(), mine, 3, 1, ChainEnum.BSC_TFC.name(), AppContants.SYMBOL_COIN, batchNo); + + member.setBalance(balance); + dappMemberDao.updateById(member); } Map<String, String> map = new HashMap<>(); @@ -291,4 +303,34 @@ } } } + + @Override + public void userBuyReward(Long id) { + DappFundFlowEntity fundFlow = dappFundFlowDao.selectById(id); + + DappMemberEntity member = dappMemberDao.selectById(fundFlow.getMemberId()); + DappMemberEntity referer = dappMemberDao.selectMemberInfoByInviteId(member.getRefererId()); + if (referer == null || "admin".equals(referer.getAccountType())) { + return; + } + + DataDictionaryCustom dic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(AppContants.DIC_TYPE_SYSTEM_SETTING, AppContants.DIC_VALUE_USER_BUY_REWARD); + BigDecimal prop = new BigDecimal(dic.getValue()).divide(new BigDecimal("100"), 2, RoundingMode.HALF_UP); + BigDecimal reward = fundFlow.getAmount().multiply(prop); + + BigDecimal balance = ChainService.getInstance(ChainEnum.BSC_TFC_REWARD.name()).balanceOf(ChainEnum.BSC_TFC_REWARD.getAddress()); + if (balance.compareTo(reward) < 1) { + return; + } + + DappFundFlowEntity rewardFlow = new DappFundFlowEntity(referer.getId(), reward, 4, 2, BigDecimal.ZERO); + dappFundFlowDao.insert(rewardFlow); + + OnlineTransferUtil.addTransfer(referer.getAddress(), reward, 4, 1, ChainEnum.BSC_TFC_REWARD.name(), AppContants.SYMBOL_COIN, rewardFlow.getId().toString()); + + Map<String, String> map = new HashMap<>(); + map.put("batchNo", rewardFlow.getId().toString()); + map.put("type", "batch"); + chainProducer.sendOnlineTransfer(JSONObject.toJSONString(map)); + } } diff --git a/src/main/java/cc/mrbird/febs/dapp/utils/OnlineTransferUtil.java b/src/main/java/cc/mrbird/febs/dapp/utils/OnlineTransferUtil.java index b97a967..c38fec3 100644 --- a/src/main/java/cc/mrbird/febs/dapp/utils/OnlineTransferUtil.java +++ b/src/main/java/cc/mrbird/febs/dapp/utils/OnlineTransferUtil.java @@ -1,8 +1,10 @@ package cc.mrbird.febs.dapp.utils; import cc.mrbird.febs.common.utils.SpringContextUtil; +import cc.mrbird.febs.dapp.entity.DappFundFlowEntity; import cc.mrbird.febs.dapp.entity.DappOnlineTransferEntity; import cc.mrbird.febs.dapp.entity.DappTransferRecordEntity; +import cc.mrbird.febs.dapp.mapper.DappFundFlowDao; import cc.mrbird.febs.dapp.mapper.DappOnlineTransferDao; import cc.mrbird.febs.dapp.mapper.DappTransferRecordDao; @@ -14,7 +16,7 @@ private static final DappTransferRecordDao dappTransferRecordDao = SpringContextUtil.getBean(DappTransferRecordDao.class); public static void addTransfer(String address, BigDecimal amount, Integer type, Integer targetType, String fromType, String symbol, String batchNo) { - addTransfer(address, amount, type, targetType, fromType, symbol, "BSC", batchNo); + addTransfer(address, amount, type, targetType, fromType, symbol, "BSC", batchNo); } public static void addTransfer(String address, BigDecimal amount, Integer type, Integer targetType, String fromType, String symbol, String chain, String batchNo) { @@ -51,4 +53,5 @@ public static void addTransferRecord(String fromAddress, String toAddress, BigDecimal amount, String hash, String sourceFlag, String symbol) { addTransferRecord(fromAddress, toAddress, amount, hash, "BSC", sourceFlag, symbol); } + } diff --git a/src/main/java/cc/mrbird/febs/job/MineProfitJob.java b/src/main/java/cc/mrbird/febs/job/MineProfitJob.java index 684400f..ac996a8 100644 --- a/src/main/java/cc/mrbird/febs/job/MineProfitJob.java +++ b/src/main/java/cc/mrbird/febs/job/MineProfitJob.java @@ -42,7 +42,7 @@ @Autowired private RedisUtils redisUtils; - @Scheduled(cron = "0 0 2 * * ? ") +// @Scheduled(cron = "0 0 2 * * ? ") @Transactional(rollbackFor = Exception.class) public void start() { log.info("返利执行"); diff --git a/src/main/java/cc/mrbird/febs/job/SystemInit.java b/src/main/java/cc/mrbird/febs/job/SystemInit.java new file mode 100644 index 0000000..9a55dd6 --- /dev/null +++ b/src/main/java/cc/mrbird/febs/job/SystemInit.java @@ -0,0 +1,29 @@ +package cc.mrbird.febs.job; + +import cc.mrbird.febs.common.contants.AppContants; +import cc.mrbird.febs.common.utils.RedisUtils; +import cc.mrbird.febs.dapp.chain.ChainEnum; +import cc.mrbird.febs.dapp.chain.ChainService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import javax.annotation.PostConstruct; +import java.math.BigDecimal; + +/** + * @author wzy + * @date 2022-06-09 + **/ +@Slf4j +@Component +public class SystemInit { + + @Autowired + private RedisUtils redisUtils; + + @PostConstruct + public void init() { + log.info("系统参数初始化"); + } +} diff --git a/src/main/java/cc/mrbird/febs/job/SystemTradeJob.java b/src/main/java/cc/mrbird/febs/job/SystemTradeJob.java index 95ec77f..9acd570 100644 --- a/src/main/java/cc/mrbird/febs/job/SystemTradeJob.java +++ b/src/main/java/cc/mrbird/febs/job/SystemTradeJob.java @@ -132,6 +132,7 @@ */ @Scheduled(cron = "0 0 2 * * ?") public void mineJob() { + log.info("挖矿"); systemService.mining(); } } diff --git a/src/main/java/cc/mrbird/febs/rabbit/QueueConstants.java b/src/main/java/cc/mrbird/febs/rabbit/QueueConstants.java index 50777ac..ab42222 100644 --- a/src/main/java/cc/mrbird/febs/rabbit/QueueConstants.java +++ b/src/main/java/cc/mrbird/febs/rabbit/QueueConstants.java @@ -8,4 +8,5 @@ public static final String ONLINE_TRANSFER = "queue_online_transfer"; public static final String DISTRIB_PROFIT = "queue_distrib_profit"; + public static final String USER_BUY_REWARD = "queue_user_buy_reward"; } diff --git a/src/main/java/cc/mrbird/febs/rabbit/QueueEnum.java b/src/main/java/cc/mrbird/febs/rabbit/QueueEnum.java index e5d603e..de125f9 100644 --- a/src/main/java/cc/mrbird/febs/rabbit/QueueEnum.java +++ b/src/main/java/cc/mrbird/febs/rabbit/QueueEnum.java @@ -7,7 +7,8 @@ public enum QueueEnum { ONLINE_TRANSFER("exchange_online_transfer", "route_key_online_transfer", "queue_online_transfer"), - DISTRIB_PROFIT("exchange_distrib_profit", "route_key_distrib_profit", "queue_distrib_profit"); + DISTRIB_PROFIT("exchange_distrib_profit", "route_key_distrib_profit", "queue_distrib_profit"), + USER_BUY_REWARD("exchange_user_buy_reward", "route_key_user_buy_reward", "queue_user_buy_reward"); 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 2843548..0b28eb2 100644 --- a/src/main/java/cc/mrbird/febs/rabbit/RabbitConfiguration.java +++ b/src/main/java/cc/mrbird/febs/rabbit/RabbitConfiguration.java @@ -58,4 +58,21 @@ public Binding distribProfitBind() { return BindingBuilder.bind(distribProfitQueue()).to(distribProfitExchange()).with(QueueEnum.DISTRIB_PROFIT.getRoute()); } + + // === 用户购买奖励 start === + @Bean + public DirectExchange userBuyRewardExchange() { + return new DirectExchange(QueueEnum.USER_BUY_REWARD.getExchange()); + } + + @Bean + public Queue userBuyRewardQueue() { + return new Queue(QueueEnum.USER_BUY_REWARD.getQueue()); + } + + @Bean + public Binding userBuyRewardBind() { + return BindingBuilder.bind(userBuyRewardQueue()).to(userBuyRewardExchange()).with(QueueEnum.USER_BUY_REWARD.getRoute()); + } + // === 用户购买奖励 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 ab0857a..11dc7db 100644 --- a/src/main/java/cc/mrbird/febs/rabbit/consumer/ChainConsumer.java +++ b/src/main/java/cc/mrbird/febs/rabbit/consumer/ChainConsumer.java @@ -33,4 +33,10 @@ log.info("收到滑点分配消息:{}", id); dappSystemService.tradeProfitDistribute(Long.parseLong(id)); } + + @RabbitListener(queues = QueueConstants.USER_BUY_REWARD) + public void userBuyReward(String id) { + log.info("收到用户购买奖励消息:{}", id); + dappSystemService.userBuyReward(Long.parseLong(id)); + } } diff --git a/src/main/java/cc/mrbird/febs/rabbit/producer/ChainProducer.java b/src/main/java/cc/mrbird/febs/rabbit/producer/ChainProducer.java index 1efe71f..f6a225e 100644 --- a/src/main/java/cc/mrbird/febs/rabbit/producer/ChainProducer.java +++ b/src/main/java/cc/mrbird/febs/rabbit/producer/ChainProducer.java @@ -44,4 +44,10 @@ CorrelationData correlationData = new CorrelationData(UUID.randomUUID().toString()); rabbitTemplate.convertAndSend(QueueEnum.DISTRIB_PROFIT.getExchange(), QueueEnum.DISTRIB_PROFIT.getRoute(), id, correlationData); } + + public void sendUserBuyReward(Long id) { + log.info("发送用户购买奖励消息:{}", id); + CorrelationData correlationData = new CorrelationData(UUID.randomUUID().toString()); + rabbitTemplate.convertAndSend(QueueEnum.USER_BUY_REWARD.getExchange(), QueueEnum.USER_BUY_REWARD.getRoute(), id, correlationData); + } } diff --git a/src/main/resources/mapper/dapp/DappMemberDao.xml b/src/main/resources/mapper/dapp/DappMemberDao.xml index 7e97645..42c8b0a 100644 --- a/src/main/resources/mapper/dapp/DappMemberDao.xml +++ b/src/main/resources/mapper/dapp/DappMemberDao.xml @@ -85,4 +85,11 @@ </if> </where> </select> + + <select id="selectMemberByAccountType" resultType="cc.mrbird.febs.dapp.entity.DappMemberEntity"> + select * from dapp_member + <where> + account_type=#{accountType} + </where> + </select> </mapper> \ No newline at end of file diff --git a/src/test/java/cc/mrbird/febs/ChainTest.java b/src/test/java/cc/mrbird/febs/ChainTest.java index 53a7d5e..4c04dd1 100644 --- a/src/test/java/cc/mrbird/febs/ChainTest.java +++ b/src/test/java/cc/mrbird/febs/ChainTest.java @@ -3,7 +3,9 @@ import cc.mrbird.febs.dapp.chain.ChainEnum; import cc.mrbird.febs.dapp.chain.ChainService; import cc.mrbird.febs.dapp.chain.ContractChainService; +import cc.mrbird.febs.dapp.entity.DappFundFlowEntity; import cc.mrbird.febs.dapp.entity.DappOnlineTransferEntity; +import cc.mrbird.febs.dapp.mapper.DappFundFlowDao; import cc.mrbird.febs.dapp.mapper.DappOnlineTransferDao; import cc.mrbird.febs.job.SystemTradeJob; import cc.mrbird.febs.rabbit.producer.ChainProducer; @@ -69,4 +71,28 @@ chainProducer.sendOnlineTransfer(JSONObject.toJSONString(map)); } + @Test + public void totalSupplyTest() { + System.out.println(ChainService.getInstance(ChainEnum.BSC_TFC.getChain()).totalSupply()); + } + + @Test + public void mineTest() { + systemTradeJob.mineJob(); + } + + @Autowired + private DappFundFlowDao dappFundFlowDao; + + @Test + public void fundFlowInsertTest() { + DappFundFlowEntity rewardFlow = new DappFundFlowEntity(11L, BigDecimal.valueOf(1L), 4, 2, BigDecimal.ZERO); + rewardFlow.setFromHash("1"); + dappFundFlowDao.insert(rewardFlow); + } + + @Test + public void userBuyRewardTest() { + chainProducer.sendUserBuyReward(56L); + } } -- Gitblit v1.9.1