fix
Helius
2022-07-13 276e8657ea8499cc87db1dd9abcbb105e48c2d3b
fix
11 files modified
108 ■■■■ changed files
src/main/java/cc/mrbird/febs/common/contants/AppContants.java 2 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/dapp/controller/ApiDappMemberController.java 6 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/dapp/entity/DappFundFlowEntity.java 2 ●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/dapp/service/DappSystemService.java 4 ●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/dapp/service/DappWalletService.java 2 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/dapp/service/impl/BscUsdtContractEvent.java 14 ●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/dapp/service/impl/DappMemberServiceImpl.java 14 ●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/dapp/service/impl/DappSystemServiceImpl.java 35 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/dapp/service/impl/DappWalletServiceImpl.java 18 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/job/ChainListenerJob.java 2 ●●● patch | view | raw | blame | history
src/test/java/cc/mrbird/febs/MemberTest.java 9 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/common/contants/AppContants.java
@@ -170,4 +170,6 @@
    public static final String RESP_PRIVATE_KEY = "MIICdwIBADANBgkqhkiG9w0BAQEFAASCAmEwggJdAgEAAoGBANyCPnifddX7HYN/wexyqxt3cFCKoE1/+lCIv7i+Epo83xlwbRet6rTXyGX7JCs5qpg1UvC+LuB+Relv8bZPEwScLmu0B5awwDmY954974KD6Yn/JdHi2WT933QvmDs9PFqUfnQd0KhfAUF6eS2K0quwN9DOLX5UIcEZSE9SOwkdAgMBAAECgYAt52Mv4yo5qHQFavQoz9o09pFIAwPJ/mlSmJUo1VC0ERX0isX7FvZ0PTN3n2dxJCkSVI92lHDXxRGyvd4YsK9pdErGVL2DecbbER7069y94g/uHsYq15skzLlyUNhyu2FOUCsVFy+M/C0qk14z/xG1ze3GWNHP1oc1leAYpoWmAQJBAPXxRvYTxmZAFv3J4pcf/FXqmUXdbJI5sHWXe6Pcs+rIuil5ePqX6AQBoQ5PalYhe5/kKzr7Gy6GSzlpztuOV50CQQDlhrTNytQdDCNIOL8uw3t4D8mDGuslPcRoykmaCQhd4NvaqLZrBS8k+TuS2+v5ryng3HhcYjR0h1MHHG69En+BAkEAzt2G5mxzsIWv0QACi0LoKAwPp+g67jN/7SjhYk69Nnpnu4Lk80LacKQ+J588vf2j0jVE93NGxbdHhp8s0xfDMQJBAJFlOqVeRe28oaD/aYRLCqyse39Ujv6BWSj0c5li/WzSoxKpaxzyJMIsK2PFcn8xSbsKjigfgZELpDnN9gxJaoECQCn+tZB0g9WJMaGNCMdlStPHAO2ajS1HY6BV5Xq13hixAdp5bLzbg0GrY25MrpTCFBEqCx+7F4cYUvVazLuAK6g=";
    public static final LinkedList<String> ENCRYPT_METHOD = new LinkedList<>();
    public static final String IDO_MEMBER_RECOMMEND_CNT = "IDO_MEMBER_RECOMMEND_CNT";
}
src/main/java/cc/mrbird/febs/dapp/controller/ApiDappMemberController.java
@@ -54,6 +54,12 @@
        return new FebsResponse().success().data(dappWalletService.transfer(transferDto));
    }
    @ApiOperation(value = "开盲盒", notes = "开盲盒")
    @PostMapping(value = "/boxSurprise")
    public FebsResponse boxSurprise() {
        return new FebsResponse().success().data(dappWalletService.boxSurprise());
    }
//    @ApiOperation(value = "记录列表", notes = "记录列表")
//    @PostMapping(value = "/recordInPage")
//    public FebsResponse recordInPage(@RequestBody RecordInPageDto recordInPageDto) {
src/main/java/cc/mrbird/febs/dapp/entity/DappFundFlowEntity.java
@@ -47,7 +47,7 @@
    private BigDecimal amount;
    /**
     * 类型 1-买入 2-卖出 3-采矿
     * 类型 1-买入 2-卖出 3-采矿 5-获取盲盒 6-开盲盒获取卡牌
     */
    private Integer type;
src/main/java/cc/mrbird/febs/dapp/service/DappSystemService.java
@@ -1,8 +1,10 @@
package cc.mrbird.febs.dapp.service;
import cc.mrbird.febs.dapp.dto.SystemDto;
import cc.mrbird.febs.dapp.entity.DappMemberEntity;
import cc.mrbird.febs.dapp.entity.DappMineDataEntity;
import java.math.BigDecimal;
import java.util.Map;
public interface DappSystemService {
@@ -39,4 +41,6 @@
    void transferPoolSetting();
    void sourcePoolUsdtOutLimitSetting();
    void idoBuy(DappMemberEntity member, BigDecimal amount);
}
src/main/java/cc/mrbird/febs/dapp/service/DappWalletService.java
@@ -39,4 +39,6 @@
    Long transfer(TransferDto transferDto);
    Map<String, BigDecimal> calPrice(PriceDto priceDto);
    int boxSurprise();
}
src/main/java/cc/mrbird/febs/dapp/service/impl/BscUsdtContractEvent.java
@@ -5,10 +5,7 @@
import cc.mrbird.febs.common.utils.ShareCodeUtil;
import cc.mrbird.febs.dapp.chain.*;
import cc.mrbird.febs.dapp.entity.*;
import cc.mrbird.febs.dapp.mapper.DappFundFlowDao;
import cc.mrbird.febs.dapp.mapper.DappMemberDao;
import cc.mrbird.febs.dapp.mapper.DappOnlineTransferDao;
import cc.mrbird.febs.dapp.mapper.DataDictionaryCustomMapper;
import cc.mrbird.febs.dapp.mapper.*;
import cc.mrbird.febs.dapp.service.DappMemberService;
import cc.mrbird.febs.dapp.service.DappSystemService;
import cc.mrbird.febs.dapp.utils.OnlineTransferUtil;
@@ -44,12 +41,10 @@
    @Resource
    private ChainProducer chainProducer;
    @Resource
    private DappOnlineTransferDao dappOnlineTransferDao;
    @Resource
    private DataDictionaryCustomMapper dataDictionaryCustomMapper;
    @Autowired
    private DappSystemService dappSystemService;
@@ -84,8 +79,6 @@
                return;
            }
            String hasStart = redisUtils.getString(AppContants.SYSTEM_START_FLAG);
            BigInteger tokens = e.tokens;
            BigDecimal amount = new BigDecimal(tokens.toString()).divide(BigDecimal.TEN.pow(decimals), decimals, RoundingMode.HALF_DOWN);
@@ -105,7 +98,7 @@
                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) {
                        if (amount.compareTo(flow.getAmount()) == 0) {
                            hasFlow = true;
                            fundFlow = flow;
                            fundFlow.setFromHash(e.log.getTransactionHash());
@@ -127,8 +120,7 @@
            fundFlow.setTargetAmount(amount);
            dappFundFlowDao.updateById(fundFlow);
            // 查找直推,并判断自身是否大于50,若大于50则,上级推荐则+1
            dappSystemService.idoBuy(fromMember, amount);
        }
    }
}
src/main/java/cc/mrbird/febs/dapp/service/impl/DappMemberServiceImpl.java
@@ -50,6 +50,8 @@
    private final RedisUtils redisUtils;
    private final DataDictionaryCustomMapper dataDictionaryCustomMapper;
    private final DappIdoAssetsDao dappIdoAssetsDao;
    @Override
    @Transactional(rollbackFor = Exception.class)
    public void approve(ApproveDto approveDto) {
@@ -129,7 +131,14 @@
                throw new FebsException("邀请人不存在");
            }
            member = insertMember(connectDto.getAddress(), null);
            member = insertMember(connectDto.getAddress(), connectDto.getInviteId());
            DappIdoAssetsEntity dappIdoAssetsEntity = new DappIdoAssetsEntity();
            dappIdoAssetsEntity.setBoxCnt(0);
            dappIdoAssetsEntity.setCoinAmount(BigDecimal.ZERO);
            dappIdoAssetsEntity.setUsdtAmount(BigDecimal.ZERO);
            dappIdoAssetsEntity.setMemberId(member.getId());
            dappIdoAssetsDao.insert(dappIdoAssetsEntity);
        }
        String key = LoginUserUtil.getLoginKey(connectDto.getAddress(), connectDto.getNonce(), connectDto.getSign());
@@ -286,12 +295,11 @@
            member.setNodeType(2);
        }
        member.setActiveStatus(1);
        dappMemberDao.insert(member);
        if (StrUtil.isEmpty(refererId)) {
            refererId = "0";
            // 若没有推荐人,则直接激活
            member.setActiveStatus(1);
        }
        member.setInviteId(ShareCodeUtil.toSerialCode(member.getId()));
src/main/java/cc/mrbird/febs/dapp/service/impl/DappSystemServiceImpl.java
@@ -50,6 +50,7 @@
    private final DataDictionaryCustomMapper dataDictionaryCustomMapper;
    private final DappOnlineTransferDao dappOnlineTransferDao;
    private final ChainProducer chainProducer;
    private final DappIdoAssetsDao dappIdoAssetsDao;
    @Override
@@ -507,4 +508,38 @@
        redisUtils.set(AppContants.REDIS_KEY_USDT_OUT_LIMIT, total);
        redisUtils.set(AppContants.REDIS_KEY_USDT_OUT_LIMIT_REMAIN, total);
    }
    @Override
    public void idoBuy(DappMemberEntity member, BigDecimal amount) {
        DappMemberEntity parent = dappMemberDao.selectMemberInfoByInviteId(member.getRefererId());
        int box = 0;
        Object parentRecommend = redisUtils.hget(AppContants.IDO_MEMBER_RECOMMEND_CNT, parent.getAddress());
        if (parentRecommend == null) {
            redisUtils.hset(AppContants.IDO_MEMBER_RECOMMEND_CNT, parent.getAddress(), 1);
        } else {
            int i = (int) parentRecommend;
            // 如果超过10个,则新增一个盲盒,并重置推荐人数
            if (++i == 10) {
                box = 1;
                redisUtils.hset(AppContants.IDO_MEMBER_RECOMMEND_CNT, parent.getAddress(), 1);
            } else {
                redisUtils.hset(AppContants.IDO_MEMBER_RECOMMEND_CNT, parent.getAddress(), i);
            }
        }
        if (box > 0) {
            DappFundFlowEntity boxFundFlow = new DappFundFlowEntity(parent.getId(), new BigDecimal(box), 5, 2, BigDecimal.ZERO);
            dappFundFlowDao.insert(boxFundFlow);
        }
        DappIdoAssetsEntity idoAssets = dappIdoAssetsDao.selectByMemberId(member.getId());
        BigDecimal count = amount.divide(new BigDecimal(50), 0, RoundingMode.HALF_UP);
        BigDecimal coinAmount = new BigDecimal(1000).multiply(count);
        idoAssets.setBoxCnt(idoAssets.getBoxCnt() + box);
        idoAssets.setCoinAmount(idoAssets.getCoinAmount().add(coinAmount));
        idoAssets.setUsdtAmount(idoAssets.getUsdtAmount().add(amount));
        dappIdoAssetsDao.updateById(idoAssets);
    }
}
src/main/java/cc/mrbird/febs/dapp/service/impl/DappWalletServiceImpl.java
@@ -230,7 +230,6 @@
    public Map<String, BigDecimal> calPrice(PriceDto priceDto) {
        DappMemberEntity member = LoginUserUtil.getAppUser();
        String hasStart = redisUtils.getString(AppContants.SYSTEM_START_FLAG);
        if (!"start".equals(hasStart)) {
            HashMap<String, BigDecimal> map = new HashMap<>();
@@ -255,4 +254,21 @@
        map.put("y", y);
        return map;
    }
    @Override
    public int boxSurprise() {
        DappMemberEntity member = LoginUserUtil.getAppUser();
        DappIdoAssetsEntity idoAssets = dappIdoAssetsDao.selectByMemberId(member.getId());
        if (idoAssets.getBoxCnt() < 1) {
            throw new FebsException("盲盒数量不足");
        }
        idoAssets.setBoxCnt(idoAssets.getBoxCnt() - 1);
        dappIdoAssetsDao.updateById(idoAssets);
        // TODO 线上转账
        return 1;
    }
}
src/main/java/cc/mrbird/febs/job/ChainListenerJob.java
@@ -71,7 +71,7 @@
        long start = System.currentTimeMillis();
        log.info("区块链监听开始启动");
        Object incrementObj = redisUtils.get(AppContants.REDIS_KEY_BLOCK_ETH_INCREMENT_NUM);
        BigInteger newest = ChainService.getInstance(ChainEnum.BSC_TFC.name()).blockNumber();
        BigInteger newest = ChainService.getInstance(ChainEnum.BSC_USDT.name()).blockNumber();
        BigInteger block;
        if (incrementObj == null) {
            block = newest;
src/test/java/cc/mrbird/febs/MemberTest.java
@@ -1,6 +1,7 @@
package cc.mrbird.febs;
import cc.mrbird.febs.common.contants.AppContants;
import cc.mrbird.febs.common.utils.RedisUtils;
import cc.mrbird.febs.dapp.entity.DappMemberEntity;
import cc.mrbird.febs.dapp.entity.DataDictionaryCustom;
import cc.mrbird.febs.dapp.mapper.DappMemberDao;
@@ -68,4 +69,12 @@
        member.setRefererIds(ids);
        member.setFeeProfitIds(feeProfitIds);
    }
    @Autowired
    private RedisUtils redisUtils;
    @Test
    public void redisTest() {
        redisUtils.hget("1234567", "1111111");
    }
}