KKSU
2024-07-06 855b8a7835bfffd7e81ef5fb2d9e6bad133136c9
逻辑
8 files modified
1 files added
179 ■■■■ changed files
src/main/java/cc/mrbird/febs/dapp/controller/ApiDappMemberController.java 23 ●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/dapp/mapper/DappStorageMapper.java 2 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/dapp/service/DappWalletService.java 5 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/dapp/service/impl/BscCoinContractEvent.java 10 ●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/dapp/service/impl/DappSystemServiceImpl.java 19 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/dapp/service/impl/DappWalletServiceImpl.java 79 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/dapp/vo/ApiStorageInfoVo.java 18 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/job/ProfitDailyJob.java 10 ●●●●● patch | view | raw | blame | history
src/main/resources/mapper/dapp/DappStorageMapper.xml 13 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/dapp/controller/ApiDappMemberController.java
@@ -11,10 +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;
import cc.mrbird.febs.dapp.vo.*;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiResponse;
@@ -42,6 +39,24 @@
    private final DappMemberService dappMemberService;
    private final RedisUtils redisUtils;
    @ApiOperation(value = "大单排名前十", notes = "大单排名前十")
    @ApiResponses({
            @ApiResponse(code = 200, message = "success", response = ApiStorageInfoVo.class)
    })
    @PostMapping(value = "/storageIndex")
    public FebsResponse storageIndex() {
        return new FebsResponse().success().data(dappWalletService.storageIndex());
    }
    @ApiOperation(value = "直推总业绩排名前十", notes = "直推总业绩排名前十")
    @ApiResponses({
            @ApiResponse(code = 200, message = "success", response = ApiStorageInfoVo.class)
    })
    @PostMapping(value = "/directIndex")
    public FebsResponse directIndex() {
        return new FebsResponse().success().data(dappWalletService.directIndex());
    }
    @ApiOperation(value = "首页六项数据", notes = "首页六项数据")
    @ApiResponses({
            @ApiResponse(code = 200, message = "success", response = ApiIndexInfoVo.class)
src/main/java/cc/mrbird/febs/dapp/mapper/DappStorageMapper.java
@@ -21,6 +21,8 @@
    DappStorage selectOneByCreateTimeDesc(@Param("offset")int offset,@Param("count")int count);
    List<DappStorage> selectByAmountDesc(@Param("date") Date date,@Param("offset")int offset,@Param("count")int count);
    DappStorage selectAmountByAmountDesc(@Param("offset")int offset,@Param("count")int count);
    IPage<DappStorage> selectListInPage(@Param("record")DappStorage dappStorage, Page<DappStorage> page);
src/main/java/cc/mrbird/febs/dapp/service/DappWalletService.java
@@ -8,6 +8,7 @@
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.ApiStorageInfoVo;
import cc.mrbird.febs.dapp.vo.MemberNodeVo;
import cc.mrbird.febs.dapp.vo.WalletInfoVo;
import com.baomidou.mybatisplus.core.metadata.IPage;
@@ -60,4 +61,8 @@
    FebsResponse disagreeWithdraw(Long id);
    ApiIndexInfoVo indexInfo();
    List<ApiStorageInfoVo> storageIndex();
    List<ApiStorageInfoVo> directIndex();
}
src/main/java/cc/mrbird/febs/dapp/service/impl/BscCoinContractEvent.java
@@ -127,11 +127,11 @@
         * 发送直推8%
         */
        chainProducer.sendDirectPerkMsg(id);
        /**
         * DAO成员动态:
         *      * 1.直推1个拿2代,直推10个拿20代,直推15个拿30代,最高30代
         */
        chainProducer.sendMemberDynamicPerkMsg(id);
//        /**
//         * DAO成员动态:
//         *      * 1.直推1个拿2代,直推10个拿20代,直推15个拿30代,最高30代
//         */
//        chainProducer.sendMemberDynamicPerkMsg(id);
        /**
         *
         *      * 六、永动补偿池2%
src/main/java/cc/mrbird/febs/dapp/service/impl/DappSystemServiceImpl.java
@@ -606,18 +606,23 @@
         *      *      21-25代奖励4%
         *      *      26-30代奖励7%
         */
        DappFundFlowEntity dappFundFlowEntity = dappFundFlowDao.selectById(id);
        if(ObjectUtil.isEmpty(dappFundFlowEntity)){
//        DappFundFlowEntity dappFundFlowEntity = dappFundFlowDao.selectById(id);
//        if(ObjectUtil.isEmpty(dappFundFlowEntity)){
//            return;
//        }
//        if(DappFundFlowEntity.WITHDRAW_STATUS_AGREE != dappFundFlowEntity.getStatus()){
//            return;
//        }
        DappStorage dappStorage = dappStorageMapper.selectById(id);
        if(ObjectUtil.isEmpty(dappStorage)){
            return;
        }
        if(DappFundFlowEntity.WITHDRAW_STATUS_AGREE != dappFundFlowEntity.getStatus()){
            return;
        }
        BigDecimal amount = dappFundFlowEntity.getAmount().abs();
        BigDecimal amount = dappStorage.getReleaseAmount().abs();
        /**
         * 往上循环30层,判断每一层是否有见点奖
         */
        Long memberId = dappFundFlowEntity.getMemberId();
        Long memberId = dappStorage.getMemberId();
        for(int i = 1;i <= 30;i++){
            DappMemberEntity dappMemberEntity = dappMemberDao.selectById(memberId);
            String refererId = dappMemberEntity.getRefererId();
src/main/java/cc/mrbird/febs/dapp/service/impl/DappWalletServiceImpl.java
@@ -15,10 +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;
import cc.mrbird.febs.dapp.vo.*;
import cc.mrbird.febs.rabbit.producer.ChainProducer;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.date.DateUtil;
@@ -33,9 +30,8 @@
import org.springframework.transaction.annotation.Transactional;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.*;
import java.util.stream.Collectors;
/**
 * @author
@@ -679,6 +675,75 @@
        return apiIndexInfoVo;
    }
    @Override
    public List<ApiStorageInfoVo> storageIndex() {
        List<ApiStorageInfoVo> apiStorageInfoVos = new ArrayList<>();
        List<DappStorage> dappStorages = dappStorageMapper.selectByAmountDesc(DateUtil.offsetHour(new Date(), -1), 0, 10);
        if(CollUtil.isNotEmpty(dappStorages)){
            for(DappStorage dappStorage : dappStorages){
                ApiStorageInfoVo apiStorageInfoVo = new ApiStorageInfoVo();
                apiStorageInfoVo.setAddress(dappMemberDao.selectById(dappStorage.getMemberId()).getAddress());
                apiStorageInfoVo.setAmount(dappStorage.getAmount());
                apiStorageInfoVos.add(apiStorageInfoVo);
            }
        }
        return apiStorageInfoVos;
    }
    @Override
    public List<ApiStorageInfoVo> directIndex() {
        List<ApiStorageInfoVo> apiStorageInfoVos = new ArrayList<>();
        /**
         * 存放直推业绩<上级的memberId,直推总业绩>
         */
        HashMap<Long, BigDecimal> map = new HashMap<>();
        List<DappStorage> dappStorages = dappStorageMapper.selectListByDate(new Date());
        if(CollUtil.isNotEmpty(dappStorages)){
            for(DappStorage dappStorage : dappStorages){
                DappMemberEntity member = dappMemberDao.selectById(dappStorage.getMemberId());
                if(StrUtil.isEmpty(member.getRefererId())){
                    continue;
                }
                DappMemberEntity memberRef = dappMemberDao.selectMemberInfoByInviteId(member.getRefererId());
                if(ObjectUtil.isEmpty(memberRef)){
                    continue;
                }
                Long id = memberRef.getId();
                if(map.containsKey(id)){
                    BigDecimal bigDecimal = map.get(id);
                    BigDecimal add = bigDecimal.add(dappStorage.getAmount());
                    map.put(id,add);
                }else{
                    map.put(id,dappStorage.getAmount());
                }
            }
        }
        /**
         * 获取这个map的直推总业绩前十,分发奖励
         */
        if(!map.isEmpty()){
            // 使用Stream API按照BigDecimal从大到小排序
            List<Map.Entry<Long, BigDecimal>> topTenEntries = map.entrySet().stream()
                    .sorted(Map.Entry.comparingByValue(Comparator.reverseOrder()))
                    .limit(10)
                    .collect(Collectors.toList());
            for (Map.Entry<Long, BigDecimal> entry : topTenEntries) {
                Long memberId = entry.getKey();
                BigDecimal directAchieve = entry.getValue();
                ApiStorageInfoVo apiStorageInfoVo = new ApiStorageInfoVo();
                apiStorageInfoVo.setAddress(dappMemberDao.selectById(memberId).getAddress());
                apiStorageInfoVo.setAmount(directAchieve);
                apiStorageInfoVos.add(apiStorageInfoVo);
            }
        }
        return apiStorageInfoVos;
    }
    public MemberNodeVo buildTeamMatrix(DbMemberNode dbMemberNode) {
        Long id = dbMemberNode.getId();
src/main/java/cc/mrbird/febs/dapp/vo/ApiStorageInfoVo.java
New file
@@ -0,0 +1,18 @@
package cc.mrbird.febs.dapp.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.math.BigDecimal;
@Data
@ApiModel(value = "ApiStorageInfoVo", description = "排名")
public class ApiStorageInfoVo {
    @ApiModelProperty(value = "地址")
    private String address;
    @ApiModelProperty(value = "金额")
    private BigDecimal amount;
}
src/main/java/cc/mrbird/febs/job/ProfitDailyJob.java
@@ -10,6 +10,7 @@
import cc.mrbird.febs.dapp.mapper.DappStorageMapper;
import cc.mrbird.febs.dapp.mapper.DataDictionaryCustomMapper;
import cc.mrbird.febs.dapp.service.DappSystemService;
import cc.mrbird.febs.rabbit.producer.ChainProducer;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUtil;
@@ -39,6 +40,8 @@
    private DappStorageMapper dappStorageMapper;
    @Resource
    private DappMemberDao dappMemberDao;
    @Resource
    private ChainProducer chainProducer;
    /**
     * 每天释放1%的静态释放
@@ -55,6 +58,13 @@
        for(DappStorage storage : dappStorages){
            Long memberId = storage.getMemberId();
            BigDecimal releaseAmount = storage.getReleaseAmount();
            /**
             * DAO成员动态:
             *      * 1.直推1个拿2代,直推10个拿20代,直推15个拿30代,最高30代
             */
            chainProducer.sendMemberDynamicPerkMsg(storage.getId());
            dappSystemService.updateBalanceInsertFlow(
                    releaseAmount,
                    memberId,
src/main/resources/mapper/dapp/DappStorageMapper.xml
@@ -61,6 +61,19 @@
    </select>
    <select id="selectByAmountDesc" resultType="cc.mrbird.febs.dapp.entity.DappStorage">
        SELECT
            *
        FROM
            dapp_storage
        where
                date_format(create_time, '%Y-%m-%d') = date_format(#{date}, '%Y-%m-%d')
        ORDER BY
            amount DESC
            limit #{offset},#{count}
    </select>
    <select id="selectAmountByAmountDesc" resultType="cc.mrbird.febs.dapp.entity.DappStorage">
        select
            *