From 4957e91b9cbd769a95872329d5fd628c211d5655 Mon Sep 17 00:00:00 2001
From: xiaoyong931011 <15274802129@163.com>
Date: Thu, 03 Nov 2022 17:24:50 +0800
Subject: [PATCH] 20221021
---
src/main/java/cc/mrbird/febs/job/OnHookPlanJob.java | 101 +++++++++++++-----------
src/main/java/cc/mrbird/febs/rabbit/RabbitMqConfig.java | 18 ++++
src/main/java/cc/mrbird/febs/rabbit/consumer/UsdtUpdateConsumer.java | 11 ++
src/main/java/cc/mrbird/febs/dapp/service/ApiIgtOnHookPlanService.java | 2
src/main/java/cc/mrbird/febs/dapp/service/impl/ApiIgtOnHookPlanServiceImpl.java | 60 +++++++++++++++
src/main/java/cc/mrbird/febs/rabbit/producer/UsdtUpdateProducer.java | 9 ++
6 files changed, 154 insertions(+), 47 deletions(-)
diff --git a/src/main/java/cc/mrbird/febs/dapp/service/ApiIgtOnHookPlanService.java b/src/main/java/cc/mrbird/febs/dapp/service/ApiIgtOnHookPlanService.java
index 1aca6b1..51d8c56 100644
--- a/src/main/java/cc/mrbird/febs/dapp/service/ApiIgtOnHookPlanService.java
+++ b/src/main/java/cc/mrbird/febs/dapp/service/ApiIgtOnHookPlanService.java
@@ -26,4 +26,6 @@
FebsResponse awardInfo();
void updatePlanOrderItem();
+
+ void endOnHookMessage(Long orderId);
}
diff --git a/src/main/java/cc/mrbird/febs/dapp/service/impl/ApiIgtOnHookPlanServiceImpl.java b/src/main/java/cc/mrbird/febs/dapp/service/impl/ApiIgtOnHookPlanServiceImpl.java
index 003aaee..8ebb07e 100644
--- a/src/main/java/cc/mrbird/febs/dapp/service/impl/ApiIgtOnHookPlanServiceImpl.java
+++ b/src/main/java/cc/mrbird/febs/dapp/service/impl/ApiIgtOnHookPlanServiceImpl.java
@@ -444,6 +444,66 @@
}
}
+ @Override
+ public void endOnHookMessage(Long orderId) {
+ IgtOnHookPlanOrder igtOnHookPlanOrder = igtOnHookPlanOrderDao.selectById(orderId);
+ if(ObjectUtil.isEmpty(igtOnHookPlanOrder)){
+ return;
+ }
+ Long memberId = igtOnHookPlanOrder.getMemberId();
+ BigDecimal planAmount = igtOnHookPlanOrder.getPlanAmount();
+
+ DappMemberEntity dappMemberEntity = dappMemberDao.selectById(memberId);
+ if(ObjectUtil.isEmpty(dappMemberEntity)){
+ return;
+ }
+ //避免重复
+ QueryWrapper<DappOnHookDone> objectQueryWrapper = new QueryWrapper<>();
+ objectQueryWrapper.eq("order_id",igtOnHookPlanOrder.getId());
+ List<DappOnHookDone> dappOnHookDones = dappOnHookDoneDao.selectList(objectQueryWrapper);
+ if(CollUtil.isNotEmpty(dappOnHookDones)){
+ return;
+ }
+ //生成记录
+ DappOnHookDone dappOnHookDone = new DappOnHookDone(dappMemberEntity.getId(), igtOnHookPlanOrder.getId());
+ dappOnHookDoneDao.insert(dappOnHookDone);
+ //获取收益率
+ DataDictionaryCustom identityDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(DataDictionaryEnum.LEVEL_MB.getType(), dappMemberEntity.getIdentity());
+ String identityDicValue = identityDic.getValue();
+ JSONObject identityDicValueParse = JSONUtil.parseObj(identityDicValue);
+ BigDecimal hangingRevenueLevel = new BigDecimal(identityDicValueParse.get("hangingRevenue").toString())
+ .multiply(new BigDecimal(0.01)).setScale(4,BigDecimal.ROUND_DOWN);
+ //获取收益
+ BigDecimal totalProfit = planAmount.multiply(hangingRevenueLevel).setScale(4,BigDecimal.ROUND_DOWN);
+
+ String refererIds = dappMemberEntity.getRefererIds();
+ List<String> refererIdList = StrUtil.split(refererIds, ",", -1, true, true);
+ //生成流水佣金和盈利分成和流水记录,返回剩余盈利
+ BigDecimal profitSharingTotal = dappWalletService.updateLSYJYLFC(refererIdList, totalProfit,igtOnHookPlanOrder.getId());
+ //平台分成,返回剩余盈利
+ BigDecimal systemTotal = dappWalletService.updatePTFC(memberId,totalProfit,igtOnHookPlanOrder.getId());
+ totalProfit = totalProfit.subtract(profitSharingTotal).subtract(systemTotal);
+
+ igtOnHookPlanOrder.setState(2);
+ //一次挂机剩余的全部金额
+ BigDecimal totalMoney = totalProfit.add(planAmount);
+
+ igtOnHookPlanOrder.setProfit(totalProfit);
+ igtOnHookPlanOrderDao.updateById(igtOnHookPlanOrder);
+ dappMemberEntity.setIsOnHook(3);
+ dappMemberDao.updateById(dappMemberEntity);
+
+ DappWalletCoinEntity dappWalletCoinEntity = dappWalletCoinDao.selectByMemberId(memberId);
+ BigDecimal availableAmount = dappWalletCoinEntity.getAvailableAmount();
+ dappWalletCoinDao.addTotalAndaddAvailableById(dappWalletCoinEntity.getId(),totalMoney);
+
+ BigDecimal add = availableAmount.add(totalMoney);
+ BigDecimal subtract = add.subtract(totalProfit);
+ DappAccountMoneyChangeEntity dappAccountMoneyChangeEntity = new DappAccountMoneyChangeEntity(memberId, subtract, totalProfit, add, "投注盈利", 5,igtOnHookPlanOrder.getId());
+ dappAccountMoneyChangeDao.insert(dappAccountMoneyChangeEntity);
+
+ }
+
private String getProfitCase(String identity,BigDecimal balance){
//匹配会员等级获取对应的收益率
List<DataDictionaryCustom> dataDictionaryCustoms = dataDictionaryCustomMapper.selectDicByType(DataDictionaryEnum.LEVEL_MB.getType());
diff --git a/src/main/java/cc/mrbird/febs/job/OnHookPlanJob.java b/src/main/java/cc/mrbird/febs/job/OnHookPlanJob.java
index b86b8c1..b5af876 100644
--- a/src/main/java/cc/mrbird/febs/job/OnHookPlanJob.java
+++ b/src/main/java/cc/mrbird/febs/job/OnHookPlanJob.java
@@ -6,6 +6,7 @@
import cc.mrbird.febs.dapp.mapper.*;
import cc.mrbird.febs.dapp.service.ApiIgtOnHookPlanService;
import cc.mrbird.febs.dapp.service.DappWalletService;
+import cc.mrbird.febs.rabbit.producer.UsdtUpdateProducer;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUtil;
@@ -23,6 +24,7 @@
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
+import javax.annotation.Resource;
import java.math.BigDecimal;
import java.text.DecimalFormat;
import java.text.Format;
@@ -277,6 +279,9 @@
}
+ @Resource
+ private UsdtUpdateProducer usdtUpdateProducer;
+
// @Scheduled(cron = "0/5 * * * * ? ")
@Scheduled(cron = "0 0/1 * * * ? ")
public void updatePlanOrder(){
@@ -287,54 +292,56 @@
// //更新状态避免重复查询
// igtOnHookPlanOrderDao.updateByIds(ids);
for(IgtOnHookPlanOrder igtOnHookPlanOrder : igtOnHookPlanOrders){
- Long memberId = igtOnHookPlanOrder.getMemberId();
- BigDecimal planAmount = igtOnHookPlanOrder.getPlanAmount();
+ usdtUpdateProducer.sendOnHookEnd(igtOnHookPlanOrder.getId());
- DappMemberEntity dappMemberEntity = dappMemberDao.selectById(memberId);
- //避免重复
- QueryWrapper<DappOnHookDone> objectQueryWrapper = new QueryWrapper<>();
- objectQueryWrapper.eq("order_id",igtOnHookPlanOrder.getId());
- List<DappOnHookDone> dappOnHookDones = dappOnHookDoneDao.selectList(objectQueryWrapper);
- if(CollUtil.isNotEmpty(dappOnHookDones)){
- continue;
- }
- //生成记录
- DappOnHookDone dappOnHookDone = new DappOnHookDone(dappMemberEntity.getId(), igtOnHookPlanOrder.getId());
- dappOnHookDoneDao.insert(dappOnHookDone);
- //获取收益率
- DataDictionaryCustom identityDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(DataDictionaryEnum.LEVEL_MB.getType(), dappMemberEntity.getIdentity());
- String identityDicValue = identityDic.getValue();
- JSONObject identityDicValueParse = JSONUtil.parseObj(identityDicValue);
- BigDecimal hangingRevenueLevel = new BigDecimal(identityDicValueParse.get("hangingRevenue").toString())
- .multiply(new BigDecimal(0.01)).setScale(4,BigDecimal.ROUND_DOWN);
- //获取收益
- BigDecimal totalProfit = planAmount.multiply(hangingRevenueLevel).setScale(4,BigDecimal.ROUND_DOWN);
-
- String refererIds = dappMemberEntity.getRefererIds();
- List<String> refererIdList = StrUtil.split(refererIds, ",", -1, true, true);
- //生成流水佣金和盈利分成和流水记录,返回剩余盈利
- BigDecimal profitSharingTotal = dappWalletService.updateLSYJYLFC(refererIdList, totalProfit,igtOnHookPlanOrder.getId());
- //平台分成,返回剩余盈利
- BigDecimal systemTotal = dappWalletService.updatePTFC(memberId,totalProfit,igtOnHookPlanOrder.getId());
- totalProfit = totalProfit.subtract(profitSharingTotal).subtract(systemTotal);
-
- igtOnHookPlanOrder.setState(2);
- //一次挂机剩余的全部金额
- BigDecimal totalMoney = totalProfit.add(planAmount);
-
- igtOnHookPlanOrder.setProfit(totalProfit);
- igtOnHookPlanOrderDao.updateById(igtOnHookPlanOrder);
- dappMemberEntity.setIsOnHook(3);
- dappMemberDao.updateById(dappMemberEntity);
-
- DappWalletCoinEntity dappWalletCoinEntity = dappWalletCoinDao.selectByMemberId(memberId);
- BigDecimal availableAmount = dappWalletCoinEntity.getAvailableAmount();
- dappWalletCoinDao.addTotalAndaddAvailableById(dappWalletCoinEntity.getId(),totalMoney);
-
- BigDecimal add = availableAmount.add(totalMoney);
- BigDecimal subtract = add.subtract(totalProfit);
- DappAccountMoneyChangeEntity dappAccountMoneyChangeEntity = new DappAccountMoneyChangeEntity(memberId, subtract, totalProfit, add, "投注盈利", 5,igtOnHookPlanOrder.getId());
- dappAccountMoneyChangeDao.insert(dappAccountMoneyChangeEntity);
+// Long memberId = igtOnHookPlanOrder.getMemberId();
+// BigDecimal planAmount = igtOnHookPlanOrder.getPlanAmount();
+//
+// DappMemberEntity dappMemberEntity = dappMemberDao.selectById(memberId);
+// //避免重复
+// QueryWrapper<DappOnHookDone> objectQueryWrapper = new QueryWrapper<>();
+// objectQueryWrapper.eq("order_id",igtOnHookPlanOrder.getId());
+// List<DappOnHookDone> dappOnHookDones = dappOnHookDoneDao.selectList(objectQueryWrapper);
+// if(CollUtil.isNotEmpty(dappOnHookDones)){
+// continue;
+// }
+// //生成记录
+// DappOnHookDone dappOnHookDone = new DappOnHookDone(dappMemberEntity.getId(), igtOnHookPlanOrder.getId());
+// dappOnHookDoneDao.insert(dappOnHookDone);
+// //获取收益率
+// DataDictionaryCustom identityDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(DataDictionaryEnum.LEVEL_MB.getType(), dappMemberEntity.getIdentity());
+// String identityDicValue = identityDic.getValue();
+// JSONObject identityDicValueParse = JSONUtil.parseObj(identityDicValue);
+// BigDecimal hangingRevenueLevel = new BigDecimal(identityDicValueParse.get("hangingRevenue").toString())
+// .multiply(new BigDecimal(0.01)).setScale(4,BigDecimal.ROUND_DOWN);
+// //获取收益
+// BigDecimal totalProfit = planAmount.multiply(hangingRevenueLevel).setScale(4,BigDecimal.ROUND_DOWN);
+//
+// String refererIds = dappMemberEntity.getRefererIds();
+// List<String> refererIdList = StrUtil.split(refererIds, ",", -1, true, true);
+// //生成流水佣金和盈利分成和流水记录,返回剩余盈利
+// BigDecimal profitSharingTotal = dappWalletService.updateLSYJYLFC(refererIdList, totalProfit,igtOnHookPlanOrder.getId());
+// //平台分成,返回剩余盈利
+// BigDecimal systemTotal = dappWalletService.updatePTFC(memberId,totalProfit,igtOnHookPlanOrder.getId());
+// totalProfit = totalProfit.subtract(profitSharingTotal).subtract(systemTotal);
+//
+// igtOnHookPlanOrder.setState(2);
+// //一次挂机剩余的全部金额
+// BigDecimal totalMoney = totalProfit.add(planAmount);
+//
+// igtOnHookPlanOrder.setProfit(totalProfit);
+// igtOnHookPlanOrderDao.updateById(igtOnHookPlanOrder);
+// dappMemberEntity.setIsOnHook(3);
+// dappMemberDao.updateById(dappMemberEntity);
+//
+// DappWalletCoinEntity dappWalletCoinEntity = dappWalletCoinDao.selectByMemberId(memberId);
+// BigDecimal availableAmount = dappWalletCoinEntity.getAvailableAmount();
+// dappWalletCoinDao.addTotalAndaddAvailableById(dappWalletCoinEntity.getId(),totalMoney);
+//
+// BigDecimal add = availableAmount.add(totalMoney);
+// BigDecimal subtract = add.subtract(totalProfit);
+// DappAccountMoneyChangeEntity dappAccountMoneyChangeEntity = new DappAccountMoneyChangeEntity(memberId, subtract, totalProfit, add, "投注盈利", 5,igtOnHookPlanOrder.getId());
+// dappAccountMoneyChangeDao.insert(dappAccountMoneyChangeEntity);
}
}
diff --git a/src/main/java/cc/mrbird/febs/rabbit/RabbitMqConfig.java b/src/main/java/cc/mrbird/febs/rabbit/RabbitMqConfig.java
index bdaf0c5..8531e09 100644
--- a/src/main/java/cc/mrbird/febs/rabbit/RabbitMqConfig.java
+++ b/src/main/java/cc/mrbird/febs/rabbit/RabbitMqConfig.java
@@ -508,4 +508,22 @@
return BindingBuilder.bind(queueWholeBomb()).to(orderExchange()).with(RabbitMqConfig.ROUTINGKEY_WHOLE_BOMB);
}
+ // === 更新用户挂机 start ===
+ public static final String END_ON_HOOK_EXCHANGE = "exchange_end_on_hook";
+ public static final String END_ON_HOOK_QUEUE = "queue_end_on_hook";
+ public static final String END_ON_HOOK_ROUTE_KEY = "route_key_end_on_hook";
+ @Bean
+ public Queue endOnHookQueue() {
+ // 定义一个名称为QUEUE_A,持久化的队列
+ return new Queue(END_ON_HOOK_QUEUE, true);
+ }
+ public DirectExchange endOnHookExchange() {
+ return new DirectExchange(END_ON_HOOK_EXCHANGE);
+ }
+ @Bean
+ public Binding endOnHookBind() {
+ return BindingBuilder.bind(endOnHookQueue()).to(endOnHookExchange()).with(RabbitMqConfig.END_ON_HOOK_ROUTE_KEY);
+ }
+ // === 更新用户挂机 end ===
+
}
diff --git a/src/main/java/cc/mrbird/febs/rabbit/consumer/UsdtUpdateConsumer.java b/src/main/java/cc/mrbird/febs/rabbit/consumer/UsdtUpdateConsumer.java
index aef580f..967c75f 100644
--- a/src/main/java/cc/mrbird/febs/rabbit/consumer/UsdtUpdateConsumer.java
+++ b/src/main/java/cc/mrbird/febs/rabbit/consumer/UsdtUpdateConsumer.java
@@ -5,6 +5,7 @@
import cc.mrbird.febs.dapp.chain.TrxUsdtUpdateService;
import cc.mrbird.febs.dapp.chain.UsdtErc20UpdateService;
import cc.mrbird.febs.dapp.chain.entity.EthUsdtChargeDto;
+import cc.mrbird.febs.dapp.service.ApiIgtOnHookPlanService;
import cc.mrbird.febs.job.BlockCoinUpdateJob;
import cc.mrbird.febs.rabbit.RabbitMqConfig;
import cn.hutool.core.util.StrUtil;
@@ -34,8 +35,18 @@
private BlockCoinService blockCoinService;
@Resource
+ private ApiIgtOnHookPlanService apiIgtOnHookPlanService;
+
+ @Resource
TrxUsdtUpdateService trxUsdtUpdateService;
+ @RabbitListener(queues = RabbitMqConfig.END_ON_HOOK_QUEUE)
+ public void endOnHook(Long orderId) {
+ log.info("处理用户结束挂机的消息:{}#", orderId);
+
+ apiIgtOnHookPlanService.endOnHookMessage(orderId);
+ }
+
@RabbitListener(queues = RabbitMqConfig.QUEUE_USDT_UPDATE)
public void doSomething(String content) {
log.info("#USDT同步---->{}#", content);
diff --git a/src/main/java/cc/mrbird/febs/rabbit/producer/UsdtUpdateProducer.java b/src/main/java/cc/mrbird/febs/rabbit/producer/UsdtUpdateProducer.java
index a256eda..ad6292a 100644
--- a/src/main/java/cc/mrbird/febs/rabbit/producer/UsdtUpdateProducer.java
+++ b/src/main/java/cc/mrbird/febs/rabbit/producer/UsdtUpdateProducer.java
@@ -1,5 +1,6 @@
package cc.mrbird.febs.rabbit.producer;
+import cc.mrbird.febs.rabbit.QueueEnum;
import cc.mrbird.febs.rabbit.RabbitMqConfig;
import cn.hutool.core.util.IdUtil;
import lombok.extern.slf4j.Slf4j;
@@ -7,6 +8,8 @@
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
+
+import java.util.UUID;
/**
* @author wzy
@@ -24,6 +27,12 @@
rabbitTemplate.setConfirmCallback(this);
}
+ public void sendOnHookEnd(Long orderId) {
+ log.info("发送用户结束挂机的消息:{}", orderId);
+ CorrelationData correlationData = new CorrelationData(UUID.randomUUID().toString());
+ rabbitTemplate.convertAndSend(RabbitMqConfig.END_ON_HOOK_EXCHANGE, RabbitMqConfig.END_ON_HOOK_ROUTE_KEY, orderId, correlationData);
+ }
+
public void sendMsg(String content) {
CorrelationData correlationData = new CorrelationData(IdUtil.simpleUUID());
rabbitTemplate.convertAndSend(RabbitMqConfig.EXCHANGE_USDT_UPDATE, RabbitMqConfig.ROUTING_KEY_USDT_UPDATE, content, correlationData);
--
Gitblit v1.9.1