| | |
| | | BSC_USDT("BSC", "0x977a9ddfb965a9a3416fa72ca7f91c4949c18f25", |
| | | "0xefe98e00cd227b6322e892c82fcbd8eadf119c3188b7e574bc624f65405d61bf", |
| | | "https://bsc-dataseed1.ninicoin.io", |
| | | "0x55d398326f99059fF775485246999027B3197955", |
| | | "0x6c6835e60e7dBaD7a60112a6371271e8eb79ee68", |
| | | ""), |
| | | |
| | | /** |
| | |
| | | BSC_TFC("BSC", "0x977a9ddfb965a9a3416fa72ca7f91c4949c18f25", |
| | | "0xefe98e00cd227b6322e892c82fcbd8eadf119c3188b7e574bc624f65405d61bf", |
| | | "https://bsc-dataseed1.ninicoin.io", |
| | | "0x6c6835e60e7dBaD7a60112a6371271e8eb79ee68", |
| | | "0x46ac4921e58773ca22826df1640672b91b1db2b3", |
| | | ""), |
| | | |
| | | /** |
| | |
| | | BSC_TFC_SOURCE("BSC", "0x4EbDCA102623b46a47042D580dddAdE2a53D057F", |
| | | "0x81c2c02d0c106c1e32ab060a37f6eb279c0649c30ea5cc1c4951e6a8dd4e963c", |
| | | "https://bsc-dataseed1.ninicoin.io", |
| | | "0x6c6835e60e7dBaD7a60112a6371271e8eb79ee68", |
| | | "0x46ac4921e58773ca22826df1640672b91b1db2b3", |
| | | ""), |
| | | |
| | | /** |
| | |
| | | BSC_USDT_SOURCE("BSC", "0x4EbDCA102623b46a47042D580dddAdE2a53D057F", |
| | | "0x81c2c02d0c106c1e32ab060a37f6eb279c0649c30ea5cc1c4951e6a8dd4e963c", |
| | | "https://bsc-dataseed1.ninicoin.io", |
| | | "0x55d398326f99059fF775485246999027B3197955", |
| | | "0x6c6835e60e7dBaD7a60112a6371271e8eb79ee68", |
| | | ""), |
| | | |
| | | /** |
| | |
| | | BSC_TFC_MAKE("BSC", "0xBae24dAa3aB94cfF8114a16A4267D769b3a651F8", |
| | | "0xc0cabaf5f1fce227e5f1b8a7f83a5dc28972389ffc59559d7852ce8d27c3bec4", |
| | | "https://bsc-dataseed1.ninicoin.io", |
| | | "0x6c6835e60e7dBaD7a60112a6371271e8eb79ee68", |
| | | "0x46ac4921e58773ca22826df1640672b91b1db2b3", |
| | | ""), |
| | | |
| | | /** |
| | |
| | | BSC_TFC_TECH("BSC", "0xD998DA7362360eFC6daDFEd6E9a32E70640d7600", |
| | | "", |
| | | "https://bsc-dataseed1.ninicoin.io", |
| | | "0x6c6835e60e7dBaD7a60112a6371271e8eb79ee68", |
| | | "0x46ac4921e58773ca22826df1640672b91b1db2b3", |
| | | ""), |
| | | |
| | | /** |
| | |
| | | BSC_TFC_REWARD("BSC", "0xBae24dAa3aB94cfF8114a16A4267D769b3a651F8", |
| | | "0xc0cabaf5f1fce227e5f1b8a7f83a5dc28972389ffc59559d7852ce8d27c3bec4", |
| | | "https://bsc-dataseed1.ninicoin.io", |
| | | "0x6c6835e60e7dBaD7a60112a6371271e8eb79ee68", |
| | | "0x46ac4921e58773ca22826df1640672b91b1db2b3", |
| | | ""); |
| | | |
| | | private String chain; |
| | |
| | | * @param id |
| | | */ |
| | | void userBuyReward(Long id); |
| | | |
| | | void startSystem(); |
| | | } |
| | |
| | | BigDecimal balance = ChainService.getInstance(ChainEnum.BSC_TFC.name()).balanceOf(e.from); |
| | | fromMember.setBalance(balance); |
| | | dappMemberService.updateById(fromMember); |
| | | } else { |
| | | fromMember = dappMemberService.insertMember(e.from, null); |
| | | } |
| | | |
| | | BigInteger tokens = e.tokens; |
| | | BigDecimal amount = BigDecimal.valueOf(tokens.intValue()).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()); |
| | | return; |
| | | toMember = dappMemberService.insertMember(e.to, fromMember.getInviteId()); |
| | | } |
| | | |
| | | if (toMember.getActiveStatus() == 2) { |
| | | toMember.setActiveStatus(1); |
| | | } |
| | | // if (toMember.getActiveStatus() == 2) { |
| | | // toMember.setActiveStatus(1); |
| | | // } |
| | | // 更新余额 |
| | | BigDecimal balance = ChainService.getInstance(ChainEnum.BSC_TFC.name()).balanceOf(e.to); |
| | | toMember.setBalance(balance); |
| | |
| | | BigDecimal balance = sourceUsdtInstance.balanceOf(ChainEnum.BSC_USDT_SOURCE.getAddress()); |
| | | if (target.compareTo(balance) < 1) { |
| | | redisUtils.set(AppContants.SYSTEM_START_FLAG, "start"); |
| | | |
| | | |
| | | } |
| | | } else { |
| | | OnlineTransferUtil.addTransfer(e.from, fundFlow.getAmount(), 1, 1, ChainEnum.BSC_TFC_SOURCE.name(), AppContants.SYMBOL_COIN, fundFlow.getId().toString()); |
| | |
| | | member.setAddress(address); |
| | | member.setChainType(chainType); |
| | | member.setAccountType(accountType); |
| | | // 如果有推荐人,则需要推荐人转币后激活 |
| | | member.setActiveStatus(2); |
| | | member.setActiveStatus(1); |
| | | member.setBalance(ChainService.getInstance(ChainEnum.BSC_TFC.name()).balanceOf(address)); |
| | | member.setUsdtBalance(ChainService.getInstance(ChainEnum.BSC_USDT.name()).balanceOf(address)); |
| | | |
| | |
| | | import cc.mrbird.febs.dapp.utils.OnlineTransferUtil; |
| | | import cc.mrbird.febs.dapp.vo.RedisTransferPoolVo; |
| | | import cc.mrbird.febs.dapp.vo.SlipSettingVo; |
| | | import cc.mrbird.febs.job.SystemTradeJob; |
| | | import cc.mrbird.febs.rabbit.producer.ChainProducer; |
| | | import cn.hutool.core.collection.CollUtil; |
| | | import cn.hutool.core.date.DateTime; |
| | |
| | | import com.alibaba.fastjson.JSONObject; |
| | | import lombok.RequiredArgsConstructor; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | |
| | |
| | | map.put("type", "batch"); |
| | | chainProducer.sendOnlineTransfer(JSONObject.toJSONString(map)); |
| | | } |
| | | |
| | | @Autowired |
| | | private SystemTradeJob systemTradeJob; |
| | | |
| | | @Override |
| | | public void startSystem() { |
| | | log.info("启动系统"); |
| | | |
| | | Thread thread = new Thread(new Runnable() { |
| | | @Override |
| | | public void run() { |
| | | systemTradeJob.transferPoolVol(); |
| | | systemTradeJob.sourcePoolUsdtOutLimit(); |
| | | } |
| | | }); |
| | | |
| | | thread.start(); |
| | | } |
| | | } |
| | |
| | | public Map<String, BigDecimal> calPrice() { |
| | | DappMemberEntity member = LoginUserUtil.getAppUser(); |
| | | |
| | | |
| | | String hasStart = redisUtils.getString(AppContants.SYSTEM_START_FLAG); |
| | | if (!"start".equals(hasStart)) { |
| | | HashMap<String, BigDecimal> map = new HashMap<>(); |
| | | map.put("x", new BigDecimal("0.073")); |
| | | map.put("y", new BigDecimal("100000")); |
| | | return map; |
| | | } |
| | | |
| | | ContractChainService tfcInstance = ChainService.getInstance(ChainEnum.BSC_TFC.name()); |
| | | // u剩余数量 |
| | | BigDecimal sourceU = ChainService.getInstance(ChainEnum.BSC_USDT.name()).balanceOf(ChainEnum.BSC_USDT_SOURCE.getAddress()); |
| | |
| | | public void transferPoolVol() { |
| | | log.info("中转池容量"); |
| | | |
| | | String hasStart = redisUtils.getString(AppContants.SYSTEM_START_FLAG); |
| | | if (!"start".equals(hasStart)) { |
| | | log.info("系统未启动"); |
| | | return; |
| | | } |
| | | |
| | | // 源池初始化容量 |
| | | DataDictionaryCustom dic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(AppContants.DIC_TYPE_SYSTEM_SETTING, AppContants.DIC_VALUE_SYSTEM_SOURCE_POOL_VOL); |
| | | BigDecimal basicVol = new BigDecimal(dic.getValue()); |
| | |
| | | @Scheduled(cron = "0 0 0 * * ?") |
| | | public void sourcePoolUsdtOutLimit() { |
| | | log.info("源池每日出U限制"); |
| | | |
| | | String hasStart = redisUtils.getString(AppContants.SYSTEM_START_FLAG); |
| | | if (!"start".equals(hasStart)) { |
| | | log.info("系统未启动"); |
| | | return; |
| | | } |
| | | BigDecimal sourceBalance = ChainService.getInstance(ChainEnum.BSC_USDT.name()).balanceOf(ChainEnum.BSC_USDT_SOURCE.getAddress()); |
| | | |
| | | BigDecimal total = sourceBalance.multiply(BigDecimal.valueOf(0.1)).setScale(4, RoundingMode.HALF_DOWN); |
| | |
| | | |
| | | redis: |
| | | # Redis数据库索引(默认为 0) |
| | | database: 0 |
| | | database: 9 |
| | | # Redis服务器地址 |
| | | host: 120.27.238.55 |
| | | # Redis服务器连接端口 |
| | |
| | | publisher-confirm-type: correlated |
| | | |
| | | system: |
| | | online-transfer: false |
| | | chain-listener: false |
| | | online-transfer: true |
| | | chain-listener: true |
| | |
| | | |
| | | spring: |
| | | profiles: |
| | | active: dev |
| | | active: test |
| | | |
| | | thymeleaf: |
| | | cache: false |
| | |
| | | |
| | | @Test |
| | | public void totalSupplyTest() { |
| | | System.out.println(ChainService.getInstance(ChainEnum.BSC_TFC.getChain()).totalSupply()); |
| | | System.out.println(ChainService.getInstance(ChainEnum.BSC_TFC.name()).blockNumber()); |
| | | } |
| | | |
| | | @Test |