src/main/java/cc/mrbird/febs/common/contants/AppContants.java
@@ -4,6 +4,8 @@ import java.util.LinkedList; public class AppContants { public static final String DAO_JI_JING_HUI_PERCENT = "0.03"; public static final String DAO_JI_SHU_PERCENT = "0.02"; public static final String DAO_TEAM_PERK_PERCENT = "0.05"; public static final String DAO_BU_CHANG_PERCENT = "0.02"; public static final String DAO_JI_LI_PERCENT = "0.06"; src/main/java/cc/mrbird/febs/dapp/controller/ApiDappMemberController.java
@@ -11,6 +11,7 @@ import cc.mrbird.febs.dapp.entity.DappMemberEntity; import cc.mrbird.febs.dapp.service.DappMemberService; import cc.mrbird.febs.dapp.service.DappWalletService; import cc.mrbird.febs.dapp.vo.ApiIndexInfoVo; import cc.mrbird.febs.dapp.vo.TeamDownVo; import cc.mrbird.febs.dapp.vo.TeamUpVo; import cc.mrbird.febs.dapp.vo.WalletInfoVo; @@ -41,6 +42,15 @@ private final DappMemberService dappMemberService; private final RedisUtils redisUtils; @ApiOperation(value = "首页六项数据", notes = "首页六项数据") @ApiResponses({ @ApiResponse(code = 200, message = "success", response = ApiIndexInfoVo.class) }) @PostMapping(value = "/indexInfo") public FebsResponse indexInfo() { return new FebsResponse().success().data(dappWalletService.indexInfo()); } @ApiOperation(value = "获取账户信息接口", notes = "获取账号信息接口") @ApiResponses({ @ApiResponse(code = 200, message = "success", response = WalletInfoVo.class) src/main/java/cc/mrbird/febs/dapp/enumerate/DataDictionaryEnum.java
@@ -9,6 +9,10 @@ RELEASE_PERCENT("RELEASE_PERCENT","RELEASE_PERCENT"), JILI_CHI("JILI_CHI","JILI_CHI"), BUCAHNG_CHI("BUCAHNG_CHI","BUCAHNG_CHI"), JIE_DIAN_CHI("JIE_DIAN_CHI","JIE_DIAN_CHI"), TUAN_DUI_CHI("TUAN_DUI_CHI","TUAN_DUI_CHI"), JI_SHU_CHI("JI_SHU_CHI","JI_SHU_CHI"), JI_JING_HUI_CHI("JI_JING_HUI_CHI","JI_JING_HUI_CHI"), //每日节点购买最大值 BUY_NODE_NUM("BUY_NODE_NUM","BUY_NODE_NUM"), //提现手续费率 src/main/java/cc/mrbird/febs/dapp/service/DappWalletService.java
@@ -7,6 +7,7 @@ import cc.mrbird.febs.dapp.entity.DappFundFlowEntity; import cc.mrbird.febs.dapp.entity.DappWalletCoinEntity; import cc.mrbird.febs.dapp.entity.DappWalletMineEntity; import cc.mrbird.febs.dapp.vo.ApiIndexInfoVo; import cc.mrbird.febs.dapp.vo.MemberNodeVo; import cc.mrbird.febs.dapp.vo.WalletInfoVo; import com.baomidou.mybatisplus.core.metadata.IPage; @@ -57,4 +58,6 @@ FebsResponse agreeWithdraw(Long id); FebsResponse disagreeWithdraw(Long id); ApiIndexInfoVo indexInfo(); } src/main/java/cc/mrbird/febs/dapp/service/impl/BscCoinContractEvent.java
@@ -13,6 +13,7 @@ import cc.mrbird.febs.dapp.mapper.DataDictionaryCustomMapper; import cc.mrbird.febs.dapp.service.DappMemberService; import cc.mrbird.febs.rabbit.producer.ChainProducer; import cn.hutool.core.util.ObjectUtil; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -80,7 +81,10 @@ } // 判断是否已经同步过了 DappFundFlowEntity fundFlow = dappFundFlowDao.selectById(flowId); if (fundFlow != null && fundFlow.getStatus() != 1) { if(ObjectUtil.isEmpty(fundFlow)){ return; } if(1 != fundFlow.getStatus()){ return; } // 更改状态为已同步 @@ -132,7 +136,8 @@ * * * 六、永动补偿池2% * * 五、DAO永动激励池:6% * * 四、DAO联盟委员会 : 5% (50名全球DAO委员) * * 四、DAO联盟委员会 : 5% * 50名全球DAO委员)DAO成员团队奖:5% */ chainProducer.sendNodePerkMsg(id); /** src/main/java/cc/mrbird/febs/dapp/service/impl/DappSystemServiceImpl.java
@@ -706,25 +706,54 @@ dataDictionaryCustomMapper.updateById(buchangChiDic); /** * 团队 5 %加权分红(people数量) */ // BigDecimal tuanDuiAmount = amount.multiply(new BigDecimal(AppContants.DAO_TEAM_PERK_PERCENT)); // DataDictionaryCustom tuanDuiChiDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode( // DataDictionaryEnum.TUAN_DUI_CHI.getType(), // DataDictionaryEnum.TUAN_DUI_CHI.getCode() // ); // BigDecimal tuanDuiChi = new BigDecimal(tuanDuiChiDic.getValue()).add(tuanDuiAmount).setScale(2,BigDecimal.ROUND_DOWN); // tuanDuiChiDic.setValue(tuanDuiChi.toString()); // dataDictionaryCustomMapper.updateById(tuanDuiChiDic); /** * 技术 2 %加权分红(people数量) */ BigDecimal jiShuAmount = amount.multiply(new BigDecimal(AppContants.DAO_JI_SHU_PERCENT)); DataDictionaryCustom jiShuChiDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode( DataDictionaryEnum.JI_SHU_CHI.getType(), DataDictionaryEnum.JI_SHU_CHI.getCode() ); BigDecimal jiShuChi = new BigDecimal(jiShuChiDic.getValue()).add(jiShuAmount).setScale(2,BigDecimal.ROUND_DOWN); jiShuChiDic.setValue(jiShuChi.toString()); dataDictionaryCustomMapper.updateById(jiShuChiDic); /** * 基金会 3 %加权分红(people数量) */ BigDecimal jiJingHuiAmount = amount.multiply(new BigDecimal(AppContants.DAO_JI_JING_HUI_PERCENT)); DataDictionaryCustom jiJingHuiChiDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode( DataDictionaryEnum.JI_JING_HUI_CHI.getType(), DataDictionaryEnum.JI_JING_HUI_CHI.getCode() ); BigDecimal jiJingHuiChi = new BigDecimal(jiJingHuiChiDic.getValue()).add(jiJingHuiAmount).setScale(2,BigDecimal.ROUND_DOWN); jiJingHuiChiDic.setValue(jiJingHuiChi.toString()); dataDictionaryCustomMapper.updateById(jiJingHuiChiDic); /** * DAO联盟委员会 : 5% */ BigDecimal daoNodeAmountTotal = new BigDecimal(AppContants.DAO_NODE_PERCENT).multiply(amount); //沉淀剩余 BigDecimal daoNodeAmountAva = BigDecimal.ZERO; QueryWrapper<DappMemberEntity> objectQueryWrapper = new QueryWrapper<>(); objectQueryWrapper.eq("node_type",1); List<DappMemberEntity> dappMemberEntities = dappMemberDao.selectList(objectQueryWrapper); if(CollUtil.isEmpty(dappMemberEntities)){ return; } if(CollUtil.isNotEmpty(dappMemberEntities)){ BigDecimal daoNodeAmount = daoNodeAmountTotal.divide(new BigDecimal(dappMemberEntities.size()),2,BigDecimal.ROUND_DOWN); for(DappMemberEntity nodeMember : dappMemberEntities){ // this.updateBalanceInsertFlow( // daoNodeAmount, // nodeMember.getId(), // MoneyFlowEnum.NODE_PERK.getValue(), // StrUtil.format(MoneyFlowEnum.NODE_PERK.getDescrition(),amount,dappMemberEntities.size(),daoNodeAmount)); //生成一条流水 DappFundFlowEntity rePutInFlow = new DappFundFlowEntity( nodeMember.getId(), @@ -736,6 +765,19 @@ dappFundFlowDao.insert(rePutInFlow); //更新用户的金额 dappWalletService.updateWalletCoinWithLock(daoNodeAmount, nodeMember.getId(), 1); } }else{ daoNodeAmountAva = daoNodeAmountTotal; } if(BigDecimal.ZERO.compareTo(daoNodeAmountAva) < 0){ DataDictionaryCustom jieDianChiDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode( DataDictionaryEnum.JIE_DIAN_CHI.getType(), DataDictionaryEnum.JIE_DIAN_CHI.getCode() ); BigDecimal jieDianChi = new BigDecimal(jieDianChiDic.getValue()).add(daoNodeAmountAva).setScale(2,BigDecimal.ROUND_DOWN); jieDianChiDic.setValue(jieDianChi.toString()); dataDictionaryCustomMapper.updateById(jieDianChiDic); } } @@ -858,11 +900,16 @@ //5%加权分红(people数量) BigDecimal totalAmount = amount.multiply(new BigDecimal(AppContants.DAO_TEAM_PERK_PERCENT)).setScale(2, BigDecimal.ROUND_DOWN); //沉淀数量 BigDecimal tuanDuiAva = BigDecimal.ZERO; QueryWrapper<DappMemberEntity> daoOneQuery = new QueryWrapper<>(); daoOneQuery.eq("level", MemberLevelEnum.DAO_1.getCode()); List<DappMemberEntity> daoOnes = dappMemberDao.selectList(daoOneQuery); if(CollUtil.isNotEmpty(daoOnes)){ BigDecimal bigDecimal = totalAmount.multiply(new BigDecimal("0.5")).setScale(2, BigDecimal.ROUND_DOWN); tuanDuiAva = tuanDuiAva.add(bigDecimal); //每人平分数量 BigDecimal divide = bigDecimal.divide(new BigDecimal(daoOnes.size()), 2, BigDecimal.ROUND_DOWN); for(DappMemberEntity memberEntity : daoOnes){ @@ -879,6 +926,7 @@ List<DappMemberEntity> daoTwos = dappMemberDao.selectList(daoTwoQuery); if(CollUtil.isNotEmpty(daoTwos)){ BigDecimal bigDecimal = totalAmount.multiply(new BigDecimal("0.3")).setScale(2, BigDecimal.ROUND_DOWN); tuanDuiAva = tuanDuiAva.add(bigDecimal); //每人平分数量 BigDecimal divide = bigDecimal.divide(new BigDecimal(daoTwos.size()), 2, BigDecimal.ROUND_DOWN); for(DappMemberEntity memberEntity : daoTwos){ @@ -895,6 +943,7 @@ List<DappMemberEntity> daoThrees = dappMemberDao.selectList(daoThreeQuery); if(CollUtil.isNotEmpty(daoThrees)){ BigDecimal bigDecimal = totalAmount.multiply(new BigDecimal("0.2")).setScale(2, BigDecimal.ROUND_DOWN); tuanDuiAva = tuanDuiAva.add(bigDecimal); //每人平分数量 BigDecimal divide = bigDecimal.divide(new BigDecimal(daoThrees.size()), 2, BigDecimal.ROUND_DOWN); for(DappMemberEntity memberEntity : daoThrees){ @@ -906,6 +955,17 @@ } } DataDictionaryCustom tuanDuiChiDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode( DataDictionaryEnum.TUAN_DUI_CHI.getType(), DataDictionaryEnum.TUAN_DUI_CHI.getCode() ); BigDecimal tuanDuiAvaTotal = totalAmount.subtract(tuanDuiAva).setScale(2, BigDecimal.ROUND_DOWN); if(BigDecimal.ZERO.compareTo(tuanDuiAvaTotal) < 0){ BigDecimal tuanDuiChi = new BigDecimal(tuanDuiChiDic.getValue()).add(tuanDuiAvaTotal).setScale(2,BigDecimal.ROUND_DOWN); tuanDuiChiDic.setValue(tuanDuiChi.toString()); dataDictionaryCustomMapper.updateById(tuanDuiChiDic); } } @Override src/main/java/cc/mrbird/febs/dapp/service/impl/DappWalletServiceImpl.java
@@ -15,6 +15,7 @@ import cc.mrbird.febs.dapp.enumerate.NodeType; import cc.mrbird.febs.dapp.mapper.*; import cc.mrbird.febs.dapp.service.DappWalletService; import cc.mrbird.febs.dapp.vo.ApiIndexInfoVo; import cc.mrbird.febs.dapp.vo.MemberNodeVo; import cc.mrbird.febs.dapp.vo.NodeTypeVo; import cc.mrbird.febs.dapp.vo.WalletInfoVo; @@ -611,6 +612,36 @@ return new FebsResponse().success(); } @Override public ApiIndexInfoVo indexInfo() { ApiIndexInfoVo apiIndexInfoVo = new ApiIndexInfoVo(); apiIndexInfoVo.setTuanduiChi(dataDictionaryCustomMapper.selectDicDataByTypeAndCode( DataDictionaryEnum.TUAN_DUI_CHI.getType(), DataDictionaryEnum.TUAN_DUI_CHI.getCode() ).getValue()); apiIndexInfoVo.setJilichi(dataDictionaryCustomMapper.selectDicDataByTypeAndCode( DataDictionaryEnum.JILI_CHI.getType(), DataDictionaryEnum.JILI_CHI.getCode() ).getValue()); apiIndexInfoVo.setBuchangChi(dataDictionaryCustomMapper.selectDicDataByTypeAndCode( DataDictionaryEnum.BUCAHNG_CHI.getType(), DataDictionaryEnum.BUCAHNG_CHI.getCode() ).getValue()); apiIndexInfoVo.setJiedianChi(dataDictionaryCustomMapper.selectDicDataByTypeAndCode( DataDictionaryEnum.JIE_DIAN_CHI.getType(), DataDictionaryEnum.JIE_DIAN_CHI.getCode() ).getValue()); apiIndexInfoVo.setJijinghuiChi(dataDictionaryCustomMapper.selectDicDataByTypeAndCode( DataDictionaryEnum.JI_JING_HUI_CHI.getType(), DataDictionaryEnum.JI_JING_HUI_CHI.getCode() ).getValue()); apiIndexInfoVo.setJishuChi(dataDictionaryCustomMapper.selectDicDataByTypeAndCode( DataDictionaryEnum.JI_SHU_CHI.getType(), DataDictionaryEnum.JI_SHU_CHI.getCode() ).getValue()); return apiIndexInfoVo; } public MemberNodeVo buildTeamMatrix(DbMemberNode dbMemberNode) { Long id = dbMemberNode.getId(); src/main/java/cc/mrbird/febs/dapp/vo/ApiIndexInfoVo.java
New file @@ -0,0 +1,28 @@ package cc.mrbird.febs.dapp.vo; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @Data @ApiModel(value = "ApiIndexInfoVo", description = "系统设置费率") public class ApiIndexInfoVo { @ApiModelProperty(value = "团队奖池") private String tuanduiChi; @ApiModelProperty(value = "永动激励池") private String jilichi; @ApiModelProperty(value = "永动池") private String buchangChi; @ApiModelProperty(value = "节点池") private String jiedianChi; @ApiModelProperty(value = "基金会") private String jijinghuiChi; @ApiModelProperty(value = "技术") private String jishuChi; } src/main/java/cc/mrbird/febs/dapp/vo/WalletInfoVo.java
@@ -32,7 +32,7 @@ @ApiModelProperty(value = "提现费率") private BigDecimal withdrawPercent; @ApiModelProperty(value = "额度") @ApiModelProperty(value = "出局额度") private BigDecimal usdtBalance; }