From efbff9ca8ef6bdf2966f80fe05984ed45b1b8519 Mon Sep 17 00:00:00 2001
From: xiaoyong931011 <15274802129@163.com>
Date: Tue, 29 Nov 2022 16:29:41 +0800
Subject: [PATCH] 20221124
---
src/main/java/cc/mrbird/febs/dapp/enumerate/LevelProfitEnum.java | 47 +++++++
src/main/java/cc/mrbird/febs/dapp/service/impl/DappSystemServiceImpl.java | 77 ++++++++++++
src/main/java/cc/mrbird/febs/rabbit/consumer/ChainConsumer.java | 16 ++
src/main/java/cc/mrbird/febs/dapp/service/impl/DappWalletServiceImpl.java | 33 +++++
src/main/java/cc/mrbird/febs/rabbit/QueueConstants.java | 4
src/main/java/cc/mrbird/febs/dapp/service/impl/DappMemberServiceImpl.java | 2
src/main/java/cc/mrbird/febs/dapp/entity/DappFundFlowEntity.java | 22 +++
src/main/java/cc/mrbird/febs/rabbit/producer/ChainProducer.java | 22 +++
src/main/java/cc/mrbird/febs/dapp/entity/DappSystemProfit.java | 25 ++++
src/main/java/cc/mrbird/febs/rabbit/RabbitConfiguration.java | 38 ++++++
src/main/java/cc/mrbird/febs/dapp/enumerate/DataDictionaryEnum.java | 11 +
src/main/java/cc/mrbird/febs/dapp/service/DappSystemService.java | 4
src/main/java/cc/mrbird/febs/dapp/dto/TransferDto.java | 4
src/main/java/cc/mrbird/febs/rabbit/QueueEnum.java | 4
src/main/java/cc/mrbird/febs/dapp/mapper/DappSystemProfitDao.java | 7 +
15 files changed, 314 insertions(+), 2 deletions(-)
diff --git a/src/main/java/cc/mrbird/febs/dapp/dto/TransferDto.java b/src/main/java/cc/mrbird/febs/dapp/dto/TransferDto.java
index eea3bed..24a4133 100644
--- a/src/main/java/cc/mrbird/febs/dapp/dto/TransferDto.java
+++ b/src/main/java/cc/mrbird/febs/dapp/dto/TransferDto.java
@@ -13,7 +13,9 @@
@Data
@ApiModel(value = "TransferDto", description = "转账接口参数类")
public class TransferDto {
-
+// 第一次{金额 amount: val, 手续费fee: 0, txHash: '', 1-买入type: 1, 钱包buyType: 2}
+// 成功{type: 1, txHash: result.transactionHash, id: res.data, flag: 'success', buyType: 2}
+// 失败{type: 1, id: res.data, flag: 'fail', buyType: 2}
@ApiModelProperty(value = "1-买入 2-卖出", example = "1")
private Integer type;
diff --git a/src/main/java/cc/mrbird/febs/dapp/entity/DappFundFlowEntity.java b/src/main/java/cc/mrbird/febs/dapp/entity/DappFundFlowEntity.java
index 48b26b4..a37e420 100644
--- a/src/main/java/cc/mrbird/febs/dapp/entity/DappFundFlowEntity.java
+++ b/src/main/java/cc/mrbird/febs/dapp/entity/DappFundFlowEntity.java
@@ -33,6 +33,15 @@
this.fee = fee;
}
+// public DappFundFlowEntity(Long memberId, BigDecimal amount, Integer type, Integer status, BigDecimal fee,Long systemProfitId) {
+// this.memberId = memberId;
+// this.amount = amount;
+// this.type = type;
+// this.status = status;
+// this.fee = fee;
+// this.systemProfitId = systemProfitId;
+// }
+
public DappFundFlowEntity(Long memberId, BigDecimal amount, Integer type, Integer status, BigDecimal fee, String fromHash) {
this.memberId = memberId;
this.amount = amount;
@@ -42,12 +51,23 @@
this.fromHash = fromHash;
}
+ public DappFundFlowEntity(Long memberId, BigDecimal amount, Integer type, Integer status, BigDecimal fee, String fromHash,Long systemProfitId) {
+ this.memberId = memberId;
+ this.amount = amount;
+ this.type = type;
+ this.status = status;
+ this.fee = fee;
+ this.fromHash = fromHash;
+ this.systemProfitId = systemProfitId;
+ }
+
private Long memberId;
private BigDecimal amount;
/**
* 类型 1-买入 2-矩阵收益 3-直推收益 4-保险池 5-提现 6-手续费充值 7-手续费扣除 8-结算 9-冻结 10-冻结释放 11-产矿 12-手续费返利
+ * 类型 1-加入动能 2-技术方收益 3-直推收益 4-层级收益 5-剩余层级收益 6-手续费充值 7-手续费扣除 8-结算 9-冻结 10-冻结释放 11-产矿 12-手续费返利
*/
private Integer type;
@@ -68,4 +88,6 @@
private BigDecimal newestPrice;
private BigDecimal targetAmount;
+
+ private Long systemProfitId;
}
diff --git a/src/main/java/cc/mrbird/febs/dapp/entity/DappSystemProfit.java b/src/main/java/cc/mrbird/febs/dapp/entity/DappSystemProfit.java
new file mode 100644
index 0000000..a1b5556
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/dapp/entity/DappSystemProfit.java
@@ -0,0 +1,25 @@
+package cc.mrbird.febs.dapp.entity;
+
+import cc.mrbird.febs.common.entity.BaseEntity;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+@Data
+@TableName("dapp_system_profit")
+public class DappSystemProfit extends BaseEntity {
+
+ private Long memberId;
+
+ private BigDecimal amount;
+ //1:入列 2:出列
+ private Integer state;
+
+ public DappSystemProfit() {}
+
+ public DappSystemProfit(Long memberId, BigDecimal amount) {
+ this.memberId = memberId;
+ this.amount = amount;
+ }
+}
diff --git a/src/main/java/cc/mrbird/febs/dapp/enumerate/DataDictionaryEnum.java b/src/main/java/cc/mrbird/febs/dapp/enumerate/DataDictionaryEnum.java
index fcd2b5f..52e9366 100644
--- a/src/main/java/cc/mrbird/febs/dapp/enumerate/DataDictionaryEnum.java
+++ b/src/main/java/cc/mrbird/febs/dapp/enumerate/DataDictionaryEnum.java
@@ -4,6 +4,17 @@
@Getter
public enum DataDictionaryEnum {
+ // 会员代理等级
+ BIG_BOSS("MEMBER_LEVEL","BIG_BOSS"),
+ BOSS("MEMBER_LEVEL","BOSS"),
+ AGENT("MEMBER_LEVEL","AGENT"),
+ MEMBER("MEMBER_LEVEL","MEMBER"),
+ // 层级奖励比率
+ LEVEL_PROFIT("SYSTEM_SETTING","LEVEL_PROFIT"),
+ // 直推奖励比率
+ DIRECT_PROFIT("SYSTEM_SETTING","DIRECT_PROFIT"),
+ // 技术方收取BNB数量
+ SYSTEM_PROFIT("SYSTEM_SETTING","SYSTEM_PROFIT"),
// 每日返利的产矿百分比
REBATE_PERCENT("SYSTEM_SETTING","REBATE_PERCENT"),
// 分给推荐三人的终身VIP会员手续费
diff --git a/src/main/java/cc/mrbird/febs/dapp/enumerate/LevelProfitEnum.java b/src/main/java/cc/mrbird/febs/dapp/enumerate/LevelProfitEnum.java
new file mode 100644
index 0000000..2d89543
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/dapp/enumerate/LevelProfitEnum.java
@@ -0,0 +1,47 @@
+package cc.mrbird.febs.dapp.enumerate;
+
+import lombok.Getter;
+
+import java.math.BigDecimal;
+
+@Getter
+public enum LevelProfitEnum {
+ /**
+ *层级奖励,最多十层
+ profit : 层级收益率
+ memberCnt : 获取层级收益的最少推荐人数
+ */
+
+ YI("YI", 2,1),
+ ER("ER", 2,2),
+ SAN("SAN", 2,3),
+ SI("SI", 2,4),
+ WU("WU", 2,5),
+ LIU("LIU", 4,6),
+ QI("QI", 4,7),
+ BA("BA", 4,8),
+ JIU("JIU", 4,9),
+ SHI("SHI", 4,10)
+ ;
+
+ private String type;
+
+ private Integer profit;
+
+ private Integer memberCnt;
+
+ LevelProfitEnum(String type, Integer profit,Integer memberCnt) {
+ this.type = type;
+ this.profit = profit;
+ this.memberCnt = memberCnt;
+ }
+
+ public BigDecimal getProfit(int memberCnt) {
+ for (LevelProfitEnum value : LevelProfitEnum.values()) {
+ if (value.memberCnt == memberCnt) {
+ return new BigDecimal(value.profit).multiply(new BigDecimal(0.01)).setScale(BigDecimal.ROUND_DOWN, 2);
+ }
+ }
+ return BigDecimal.ZERO;
+ }
+}
diff --git a/src/main/java/cc/mrbird/febs/dapp/mapper/DappSystemProfitDao.java b/src/main/java/cc/mrbird/febs/dapp/mapper/DappSystemProfitDao.java
new file mode 100644
index 0000000..8e86bb4
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/dapp/mapper/DappSystemProfitDao.java
@@ -0,0 +1,7 @@
+package cc.mrbird.febs.dapp.mapper;
+
+import cc.mrbird.febs.dapp.entity.DappSystemProfit;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+public interface DappSystemProfitDao extends BaseMapper<DappSystemProfit> {
+}
diff --git a/src/main/java/cc/mrbird/febs/dapp/service/DappSystemService.java b/src/main/java/cc/mrbird/febs/dapp/service/DappSystemService.java
index 48b585c..560c568 100644
--- a/src/main/java/cc/mrbird/febs/dapp/service/DappSystemService.java
+++ b/src/main/java/cc/mrbird/febs/dapp/service/DappSystemService.java
@@ -24,4 +24,8 @@
void resetMatrix();
void feeDistribute(String data);
+ //层级奖励分发消息
+ void levelProfit(Long id);
+ //计算是否有人出局
+ void memberOut(Long id);
}
diff --git a/src/main/java/cc/mrbird/febs/dapp/service/impl/DappMemberServiceImpl.java b/src/main/java/cc/mrbird/febs/dapp/service/impl/DappMemberServiceImpl.java
index eafaa5d..adde6b7 100644
--- a/src/main/java/cc/mrbird/febs/dapp/service/impl/DappMemberServiceImpl.java
+++ b/src/main/java/cc/mrbird/febs/dapp/service/impl/DappMemberServiceImpl.java
@@ -277,7 +277,7 @@
@Override
public DappMemberEntity insertMember(String address, String refererId) {
- return insertMember(address, refererId, "BSC", "normal");
+ return insertMember(address, refererId, "BSC", DataDictionaryEnum.MEMBER.getCode());
}
@Override
diff --git a/src/main/java/cc/mrbird/febs/dapp/service/impl/DappSystemServiceImpl.java b/src/main/java/cc/mrbird/febs/dapp/service/impl/DappSystemServiceImpl.java
index 39d23d7..2509a14 100644
--- a/src/main/java/cc/mrbird/febs/dapp/service/impl/DappSystemServiceImpl.java
+++ b/src/main/java/cc/mrbird/febs/dapp/service/impl/DappSystemServiceImpl.java
@@ -9,6 +9,7 @@
import cc.mrbird.febs.dapp.dto.SystemDto;
import cc.mrbird.febs.dapp.entity.*;
import cc.mrbird.febs.dapp.enumerate.DataDictionaryEnum;
+import cc.mrbird.febs.dapp.enumerate.LevelProfitEnum;
import cc.mrbird.febs.dapp.mapper.*;
import cc.mrbird.febs.dapp.service.DappSystemService;
import cc.mrbird.febs.dapp.service.DappWalletService;
@@ -19,7 +20,9 @@
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.date.DateUnit;
import cn.hutool.core.date.DateUtil;
+import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
@@ -47,6 +50,7 @@
private final DappAchieveMemberTreeDao dappAchieveMemberTreeDao;
private final DappWalletService dappWalletService;
private final DataDictionaryCustomMapper dataDictionaryCustomMapper;
+ private final DappSystemProfitDao dappSystemProfitDao;
@Override
@@ -282,4 +286,77 @@
dappFundFlowDao.insert(profitFlow);
});
}
+
+ @Override
+ public void levelProfit(Long id) {
+ DappSystemProfit dappSystemProfit = dappSystemProfitDao.selectById(id);
+ if(ObjectUtil.isEmpty(dappSystemProfit)){
+ return;
+ }
+ Long memberId = dappSystemProfit.getMemberId();
+ //获取用户的上级用户信息
+ DappMemberEntity dappMemberEntity = dappMemberDao.selectById(memberId);
+ if(ObjectUtil.isEmpty(dappMemberEntity)){
+ return;
+ }
+ String refererIds = dappMemberEntity.getRefererIds();
+ if(StrUtil.isEmpty(refererIds)){
+ return;
+ }
+ DataDictionaryCustom levelProfitSet = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(DataDictionaryEnum.LEVEL_PROFIT.getType(), DataDictionaryEnum.LEVEL_PROFIT.getCode());
+ BigDecimal levelProfit = new BigDecimal(StrUtil.isEmpty(levelProfitSet.getValue()) ? "0.3" : levelProfitSet.getValue());
+ //投入金额减去技术方收益
+ DataDictionaryCustom systemProfitSet = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(DataDictionaryEnum.SYSTEM_PROFIT.getType(), DataDictionaryEnum.SYSTEM_PROFIT.getCode());
+ BigDecimal systemProfit = new BigDecimal(StrUtil.isEmpty(systemProfitSet.getValue()) ? "0.05" : systemProfitSet.getValue());
+ BigDecimal amount = dappSystemProfit.getAmount().subtract(systemProfit);
+ //层级奖励总奖金
+ BigDecimal levelProfitTotal = amount.multiply(levelProfit);
+ //实发层级奖励 -- 如果还有剩余给技术方
+ BigDecimal systemProfitTotal = BigDecimal.ZERO;
+ //返回十层
+ List<String> refererIdList = StrUtil.split(refererIds, ',');
+ //i:计数层数,同时i也为对应层数应推广的人数,当达到对应的直推人数时,才能获取对应层级奖励
+ for(int i = 0;i < 10; i++){
+ if(systemProfitTotal.compareTo(levelProfitTotal) < 0){
+ String inviteId = refererIdList.get(i);
+ //获取每层用户的直推人数,判断能否获得这个层级的层级奖励
+ DappMemberEntity refererMember = dappMemberDao.selectMemberInfoByInviteId(inviteId);
+ //获取直推用户数量
+ QueryWrapper<DappMemberEntity> objectQueryWrapper = new QueryWrapper<>();
+ objectQueryWrapper.eq("referer_id",refererMember.getInviteId());
+ Integer selectCount = dappMemberDao.selectCount(objectQueryWrapper);
+ if(i > selectCount){
+ continue;
+ }
+ //获取对应层级奖励
+ BigDecimal profit = LevelProfitEnum.YI.getProfit(i);
+ BigDecimal memberLevelProfit = levelProfitTotal.multiply(profit);
+
+ DappFundFlowEntity fundFlow = new DappFundFlowEntity(refererMember.getId(), memberLevelProfit, 4, 2, BigDecimal.ZERO,null,dappSystemProfit.getId());
+ dappFundFlowDao.insert(fundFlow);
+ systemProfitTotal = systemProfitTotal.add(memberLevelProfit);
+ }
+ }
+ //如果还有剩余给技术方
+ if(levelProfitTotal.compareTo(systemProfitTotal) > 0){
+ BigDecimal avaProfit = levelProfitTotal.subtract(systemProfit);
+ DappFundFlowEntity fundFlow = new DappFundFlowEntity(memberId, avaProfit, 5, 2, BigDecimal.ZERO,null,dappSystemProfit.getId());
+ dappFundFlowDao.insert(fundFlow);
+ }
+ }
+
+ @Override
+ public void memberOut(Long id) {
+ //获取当前是第几轮队列
+ //判断当前是否符合出局条件
+ //符合则出局,轮数+1
+ }
+
+ public static void main(String[] args) {
+ String refererIds = "1,2,3,4,5," +
+ "6,7,8,9,10," +
+ "11,12,13,14,15";
+ List<String> refererIdList = StrUtil.split(refererIds, ',');
+ System.out.println(refererIdList);
+ }
}
diff --git a/src/main/java/cc/mrbird/febs/dapp/service/impl/DappWalletServiceImpl.java b/src/main/java/cc/mrbird/febs/dapp/service/impl/DappWalletServiceImpl.java
index 4804921..341b391 100644
--- a/src/main/java/cc/mrbird/febs/dapp/service/impl/DappWalletServiceImpl.java
+++ b/src/main/java/cc/mrbird/febs/dapp/service/impl/DappWalletServiceImpl.java
@@ -23,6 +23,8 @@
import cn.hutool.core.date.DateField;
import cn.hutool.core.date.DateUnit;
import cn.hutool.core.date.DateUtil;
+import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
@@ -59,6 +61,7 @@
private final ChainProducer chainProducer;
private final DappSystemDao dappSystemDao;
+ private final DappSystemProfitDao dappSystemProfitDao;
@Override
public WalletInfoVo walletInfo() {
@@ -122,6 +125,11 @@
return dappAccountMoneyChangeDao.selectInPage(change, page);
}
+ /**
+ * // 第一次{amount: val, fee: 0, txHash: '', type: 1, buyType: 2}
+ * // 成功{type: 1, txHash: result.transactionHash, id: res.data, flag: 'success', buyType: 2}
+ * // 失败{type: 1, id: res.data, flag: 'fail', buyType: 2}
+ */
@Override
public Long transfer(TransferDto transferDto) {
DappMemberEntity member = LoginUserUtil.getAppUser();
@@ -163,9 +171,34 @@
}
if ("success".equals(transferDto.getFlag())) {
+ //插入一条会员入列记录,即加入动能队列
+ DappSystemProfit dappSystemProfit = new DappSystemProfit(member.getId(), transferDto.getAmount());
+ dappSystemProfitDao.insert(dappSystemProfit);
DappFundFlowEntity flow = dappFundFlowDao.selectById(transferDto.getId());
flow.setFromHash(transferDto.getTxHash());
+ flow.setSystemProfitId(dappSystemProfit.getId());
dappFundFlowDao.updateById(flow);
+
+ //直接拿走0.05个BNB放入技术方
+ DataDictionaryCustom systemProfit = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(DataDictionaryEnum.SYSTEM_PROFIT.getType(), DataDictionaryEnum.SYSTEM_PROFIT.getCode());
+ String systemProfitStr = StrUtil.isEmpty(systemProfit.getValue()) ? "0.05" : systemProfit.getValue();
+ DappFundFlowEntity systemProfitFlow = new DappFundFlowEntity(member.getId(), new BigDecimal(systemProfitStr), 2, 2, BigDecimal.ZERO, transferDto.getTxHash(),dappSystemProfit.getId());
+ dappFundFlowDao.insert(systemProfitFlow);
+ //直接返利30%给直接上级
+ DappMemberEntity dappMemberEntity = dappMemberDao.selectById(member.getId());
+ String refererId = dappMemberEntity.getRefererId();
+ DappMemberEntity refererMember = dappMemberDao.selectMemberInfoByInviteId(refererId);
+
+ DataDictionaryCustom directProfitSet = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(DataDictionaryEnum.DIRECT_PROFIT.getType(), DataDictionaryEnum.DIRECT_PROFIT.getCode());
+ BigDecimal directProfitStr = new BigDecimal(StrUtil.isEmpty(directProfitSet.getValue()) ? "0.3" : directProfitSet.getValue());
+ BigDecimal directProfit = (transferDto.getAmount().subtract(new BigDecimal(systemProfitStr))).multiply(directProfitStr).setScale(BigDecimal.ROUND_DOWN, 2);
+
+ DappFundFlowEntity fundFlow = new DappFundFlowEntity(refererMember.getId(), directProfit, 3, 2, BigDecimal.ZERO, transferDto.getTxHash(),dappSystemProfit.getId());
+ dappFundFlowDao.insert(fundFlow);
+ //层级奖励30%
+ chainProducer.sendLevelProfitMsg(dappSystemProfit.getId());
+ //发送一个消息,计算当前是否有人可以出局
+
} else {
DappFundFlowEntity flow = dappFundFlowDao.selectById(transferDto.getId());
if (flow.getStatus() == 1) {
diff --git a/src/main/java/cc/mrbird/febs/rabbit/QueueConstants.java b/src/main/java/cc/mrbird/febs/rabbit/QueueConstants.java
index de49ff2..7e7fcc4 100644
--- a/src/main/java/cc/mrbird/febs/rabbit/QueueConstants.java
+++ b/src/main/java/cc/mrbird/febs/rabbit/QueueConstants.java
@@ -5,6 +5,10 @@
* @date 2022-05-31
**/
public class QueueConstants {
+
+ public static final String QUEUE_MEMBER_OUT = "queue_bnb_member_out";
+ public static final String QUEUE_LEVEL_PROFIT = "queue_bnb_level_profit_transfer";
+
public static final String ONLINE_TRANSFER = "queue_sdm_online_transfer";
public static final String DISTRIB_PROFIT = "queue_sdm_distrib_profit";
public static final String USER_BUY_REWARD = "queue_sdm_user_buy_reward";
diff --git a/src/main/java/cc/mrbird/febs/rabbit/QueueEnum.java b/src/main/java/cc/mrbird/febs/rabbit/QueueEnum.java
index e22cbdb..ad493b6 100644
--- a/src/main/java/cc/mrbird/febs/rabbit/QueueEnum.java
+++ b/src/main/java/cc/mrbird/febs/rabbit/QueueEnum.java
@@ -5,6 +5,10 @@
@Getter
public enum QueueEnum {
+ //计算是否有人出局
+ MEMBER_OUT("exchange_bnb_member_out", "route_key_bnb_member_out", "queue_bnb_member_out"),
+ //层级奖励
+ LEVEL_PROFIT("exchange_bnb_level_profit_transfer", "route_key_bnb_level_profit_transfer", "queue_bnb_level_profit_transfer"),
ONLINE_TRANSFER("exchange_sdm_online_transfer", "route_key_sdm_online_transfer", "queue_sdm_online_transfer"),
DISTRIB_PROFIT("exchange_sdm_distrib_profit", "route_key_sdm_distrib_profit", "queue_sdm_distrib_profit"),
diff --git a/src/main/java/cc/mrbird/febs/rabbit/RabbitConfiguration.java b/src/main/java/cc/mrbird/febs/rabbit/RabbitConfiguration.java
index cb11d30..a8a326e 100644
--- a/src/main/java/cc/mrbird/febs/rabbit/RabbitConfiguration.java
+++ b/src/main/java/cc/mrbird/febs/rabbit/RabbitConfiguration.java
@@ -101,4 +101,42 @@
return BindingBuilder.bind(feeDistributeQueue()).to(feeDistributeExchange()).with(QueueEnum.DISTRIB_PROFIT.getRoute());
}
// === 手续费分发 end ===
+
+
+
+ // === 层级奖励分发 start ===
+ @Bean
+ public DirectExchange levelProfitExchange() {
+ return new DirectExchange(QueueEnum.LEVEL_PROFIT.getExchange());
+ }
+
+ @Bean
+ public Queue levelProfitQueue() {
+ return new Queue(QueueEnum.LEVEL_PROFIT.getQueue());
+ }
+
+ @Bean
+ public Binding levelProfitBind() {
+ return BindingBuilder.bind(levelProfitQueue()).to(levelProfitExchange()).with(QueueEnum.LEVEL_PROFIT.getRoute());
+ }
+ // === 层级奖励分发 end ===
+
+
+
+ // === 计算是否有人出局 start ===
+ @Bean
+ public DirectExchange memberOutExchange() {
+ return new DirectExchange(QueueEnum.MEMBER_OUT.getExchange());
+ }
+
+ @Bean
+ public Queue memberOutQueue() {
+ return new Queue(QueueEnum.MEMBER_OUT.getQueue());
+ }
+
+ @Bean
+ public Binding memberOutBind() {
+ return BindingBuilder.bind(memberOutQueue()).to(memberOutExchange()).with(QueueEnum.MEMBER_OUT.getRoute());
+ }
+ // === 计算是否有人出局 end ===
}
diff --git a/src/main/java/cc/mrbird/febs/rabbit/consumer/ChainConsumer.java b/src/main/java/cc/mrbird/febs/rabbit/consumer/ChainConsumer.java
index 95bd8f7..12910ed 100644
--- a/src/main/java/cc/mrbird/febs/rabbit/consumer/ChainConsumer.java
+++ b/src/main/java/cc/mrbird/febs/rabbit/consumer/ChainConsumer.java
@@ -44,4 +44,20 @@
public void feeDistribute(String data) {
dappSystemService.feeDistribute(data);
}
+
+ /**层级奖励分发消息
+ * @param id
+ */
+ @RabbitListener(queues = QueueConstants.QUEUE_LEVEL_PROFIT)
+ public void levelProfit(Long id) {
+ dappSystemService.levelProfit(id);
+ }
+
+ /**计算是否有人出局分发消息
+ * @param id
+ */
+ @RabbitListener(queues = QueueConstants.QUEUE_MEMBER_OUT)
+ public void memberOut(Long id) {
+ dappSystemService.memberOut(id);
+ }
}
diff --git a/src/main/java/cc/mrbird/febs/rabbit/producer/ChainProducer.java b/src/main/java/cc/mrbird/febs/rabbit/producer/ChainProducer.java
index c6483d3..becb798 100644
--- a/src/main/java/cc/mrbird/febs/rabbit/producer/ChainProducer.java
+++ b/src/main/java/cc/mrbird/febs/rabbit/producer/ChainProducer.java
@@ -1,6 +1,7 @@
package cc.mrbird.febs.rabbit.producer;
import cc.mrbird.febs.rabbit.QueueEnum;
+import cn.hutool.core.date.DateUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.amqp.rabbit.connection.CorrelationData;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
@@ -60,4 +61,25 @@
CorrelationData correlationData = new CorrelationData(UUID.randomUUID().toString());
rabbitTemplate.convertAndSend(QueueEnum.DISTRIB_PROFIT.getExchange(), QueueEnum.DISTRIB_PROFIT.getRoute(), id, correlationData);
}
+
+ /**
+ * 层级奖励分发消息
+ *
+ * 会员ID
+ * @param id
+ */
+ public void sendLevelProfitMsg(Long id) {
+ log.info("层级奖励分发消息:{}", id);
+ CorrelationData correlationData = new CorrelationData(UUID.randomUUID().toString());
+ rabbitTemplate.convertAndSend(QueueEnum.LEVEL_PROFIT.getExchange(), QueueEnum.LEVEL_PROFIT.getRoute(), id, correlationData);
+ }
+
+ /**
+ * 计算是否有人出局分发消息
+ */
+ public void sendMemberOutMsg(Long id) {
+ log.info("计算是否有人出局:{}", DateUtil.now());
+ CorrelationData correlationData = new CorrelationData(UUID.randomUUID().toString());
+ rabbitTemplate.convertAndSend(QueueEnum.LEVEL_PROFIT.getExchange(), QueueEnum.LEVEL_PROFIT.getRoute(), id, correlationData);
+ }
}
--
Gitblit v1.9.1