src/main/java/cc/mrbird/febs/dapp/controller/ApiDappMemberController.java | ●●●●● patch | view | raw | blame | history | |
src/main/java/cc/mrbird/febs/dapp/mapper/DappStorageMapper.java | ●●●●● patch | view | raw | blame | history | |
src/main/java/cc/mrbird/febs/dapp/service/DappWalletService.java | ●●●●● patch | view | raw | blame | history | |
src/main/java/cc/mrbird/febs/dapp/service/impl/BscCoinContractEvent.java | ●●●●● patch | view | raw | blame | history | |
src/main/java/cc/mrbird/febs/dapp/service/impl/DappSystemServiceImpl.java | ●●●●● patch | view | raw | blame | history | |
src/main/java/cc/mrbird/febs/dapp/service/impl/DappWalletServiceImpl.java | ●●●●● patch | view | raw | blame | history | |
src/main/java/cc/mrbird/febs/dapp/vo/ApiStorageInfoVo.java | ●●●●● patch | view | raw | blame | history | |
src/main/java/cc/mrbird/febs/job/ProfitDailyJob.java | ●●●●● patch | view | raw | blame | history | |
src/main/resources/mapper/dapp/DappStorageMapper.xml | ●●●●● 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 *