KKSU
2024-07-05 dbcf54b6ba8f31faa9b1463b016b6db9e48807bf
逻辑
8 files modified
1 files added
171 ■■■■■ 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 10 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/dapp/enumerate/DataDictionaryEnum.java 4 ●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/dapp/service/DappWalletService.java 3 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/dapp/service/impl/BscCoinContractEvent.java 9 ●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/dapp/service/impl/DappSystemServiceImpl.java 82 ●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/dapp/service/impl/DappWalletServiceImpl.java 31 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/dapp/vo/ApiIndexInfoVo.java 28 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/dapp/vo/WalletInfoVo.java 2 ●●● patch | view | raw | blame | history
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;
}