From 09c3fd87f7113f3b4e3066b718f9b9a4b11d821d Mon Sep 17 00:00:00 2001
From: xiaoyong931011 <15274802129@163.com>
Date: Thu, 10 Aug 2023 15:51:15 +0800
Subject: [PATCH] 数据修改
---
src/main/java/cc/mrbird/febs/rabbit/consumer/ChainConsumer.java | 13 +++
src/main/java/cc/mrbird/febs/job/BnbTransferJob.java | 10 --
src/main/java/cc/mrbird/febs/rabbit/QueueConstants.java | 5 +
src/main/java/cc/mrbird/febs/dapp/service/impl/DappMemberServiceImpl.java | 88 ++++++++++++++++++++++
src/main/java/cc/mrbird/febs/rabbit/producer/ChainProducer.java | 12 ++
src/main/java/cc/mrbird/febs/dapp/vo/PackageInfoVo.java | 22 +++++
src/main/java/cc/mrbird/febs/rabbit/RabbitConfiguration.java | 17 ++++
src/main/java/cc/mrbird/febs/dapp/entity/DappMemberEntity.java | 2
src/main/java/cc/mrbird/febs/dapp/enumerate/FundFlowEnum.java | 2
src/main/java/cc/mrbird/febs/dapp/service/DappMemberService.java | 4 +
src/main/java/cc/mrbird/febs/dapp/enumerate/DataDictionaryEnum.java | 19 ++++
src/main/java/cc/mrbird/febs/dapp/service/DappSystemService.java | 2
src/main/java/cc/mrbird/febs/dapp/controller/ApiDappOrderController.java | 15 +++
src/main/java/cc/mrbird/febs/dapp/dto/SalePackageDto.java | 14 +++
src/main/java/cc/mrbird/febs/rabbit/QueueEnum.java | 4 +
15 files changed, 215 insertions(+), 14 deletions(-)
diff --git a/src/main/java/cc/mrbird/febs/dapp/controller/ApiDappOrderController.java b/src/main/java/cc/mrbird/febs/dapp/controller/ApiDappOrderController.java
index 2d46299..8948de0 100644
--- a/src/main/java/cc/mrbird/febs/dapp/controller/ApiDappOrderController.java
+++ b/src/main/java/cc/mrbird/febs/dapp/controller/ApiDappOrderController.java
@@ -94,4 +94,19 @@
dappMemberService.payOrder(id);
return new FebsResponse().success().message("操作成功");
}
+
+ @ApiOperation(value = "资产包详情", notes = "资产包详情")
+ @ApiResponses({
+ @ApiResponse(code = 200, message = "success", response = PackageInfoVo.class)
+ })
+ @GetMapping(value = "/packageInfo")
+ public FebsResponse packageInfo() {
+ return dappMemberService.packageInfo();
+ }
+
+ @ApiOperation(value = "卖出资产包积分", notes = "卖出资产包积分")
+ @PostMapping(value = "/salePackage")
+ public FebsResponse salePackage(@RequestBody SalePackageDto salePackageDto) {
+ return dappMemberService.salePackage(salePackageDto);
+ }
}
diff --git a/src/main/java/cc/mrbird/febs/dapp/dto/SalePackageDto.java b/src/main/java/cc/mrbird/febs/dapp/dto/SalePackageDto.java
new file mode 100644
index 0000000..169bc9b
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/dapp/dto/SalePackageDto.java
@@ -0,0 +1,14 @@
+package cc.mrbird.febs.dapp.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+@Data
+@ApiModel(value = "SalePackageDto", description = "接收参数类")
+public class SalePackageDto {
+ @ApiModelProperty(value = "卖出数量", example = "20")
+ private BigDecimal cnt;
+}
diff --git a/src/main/java/cc/mrbird/febs/dapp/entity/DappMemberEntity.java b/src/main/java/cc/mrbird/febs/dapp/entity/DappMemberEntity.java
index b3967d9..0b11776 100644
--- a/src/main/java/cc/mrbird/febs/dapp/entity/DappMemberEntity.java
+++ b/src/main/java/cc/mrbird/febs/dapp/entity/DappMemberEntity.java
@@ -20,7 +20,7 @@
public class DappMemberEntity extends BaseEntity {
private String address;
-
+ //资产积分余额
private BigDecimal balance;
/**
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 88d0bf2..47accb5 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,25 @@
@Getter
public enum DataDictionaryEnum {
+
+ /**
+ * 资产包USDT底池
+ */
+ PACKAGE_POOR("PACKAGE_POOR","PACKAGE_POOR"),
+
+ /**
+ * 资产包卖出划入底池比例
+ */
+ PACKAGE_SALE_TO_POOR_PERCENT("PACKAGE_SALE_TO_POOR_PERCENT","PACKAGE_SALE_TO_POOR_PERCENT"),
+
+ /**
+ * 资产包积分价格
+ */
+ PACKAGE_SCORE_PRICE("PACKAGE_SCORE_PRICE","PACKAGE_SCORE_PRICE"),
+ /**
+ * 资产包总积分
+ */
+ PACKAGE_TOTAL_SCORE("PACKAGE_TOTAL_SCORE","PACKAGE_TOTAL_SCORE"),
/**
* 普通会员购买上线
*/
diff --git a/src/main/java/cc/mrbird/febs/dapp/enumerate/FundFlowEnum.java b/src/main/java/cc/mrbird/febs/dapp/enumerate/FundFlowEnum.java
index 277b4de..903896b 100644
--- a/src/main/java/cc/mrbird/febs/dapp/enumerate/FundFlowEnum.java
+++ b/src/main/java/cc/mrbird/febs/dapp/enumerate/FundFlowEnum.java
@@ -7,6 +7,8 @@
*/
@Getter
public enum FundFlowEnum {
+ //卖出资产
+ SALE_PACKAGE("SALE_PACKAGE", 23),
//实际增加余额
ADD_AMOUNT_REAL("ADD_AMOUNT_REAL", 22),
//实际减少赠送积分
diff --git a/src/main/java/cc/mrbird/febs/dapp/service/DappMemberService.java b/src/main/java/cc/mrbird/febs/dapp/service/DappMemberService.java
index 85b9f94..9297707 100644
--- a/src/main/java/cc/mrbird/febs/dapp/service/DappMemberService.java
+++ b/src/main/java/cc/mrbird/febs/dapp/service/DappMemberService.java
@@ -78,4 +78,8 @@
void cancelOrder(Long id);
void payOrder(Long id);
+
+ FebsResponse packageInfo();
+
+ FebsResponse salePackage(SalePackageDto salePackageDto);
}
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 fb2231d..f8ee705 100644
--- a/src/main/java/cc/mrbird/febs/dapp/service/DappSystemService.java
+++ b/src/main/java/cc/mrbird/febs/dapp/service/DappSystemService.java
@@ -118,4 +118,6 @@
void teamStaticPerk();
void updateAchieve();
+
+ void speedSalePackageMsg(Long memberId);
}
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 1f10d5c..0d10774 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
@@ -37,6 +37,7 @@
import org.web3j.utils.Strings;
import java.math.BigDecimal;
+import java.math.BigInteger;
import java.util.*;
import java.util.stream.Collectors;
@@ -777,6 +778,93 @@
chainProducer.sendAutoLevelUpTeamMsg(member.getId());
}
+ @Override
+ public FebsResponse packageInfo() {
+ Long memberId = LoginUserUtil.getAppUser().getId();
+ PackageInfoVo packageInfoVo = new PackageInfoVo();
+ DataDictionaryCustom packageTotalScoreDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
+ DataDictionaryEnum.PACKAGE_TOTAL_SCORE.getType(),
+ DataDictionaryEnum.PACKAGE_TOTAL_SCORE.getCode()
+ );
+ BigDecimal packageTotalScore = new BigDecimal(ObjectUtil.isEmpty(packageTotalScoreDic) ? "0" : packageTotalScoreDic.getValue()).setScale(2, BigDecimal.ROUND_DOWN);
+ packageInfoVo.setPackageTotalScore(packageTotalScore);
+
+ DataDictionaryCustom packageScorePriceDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
+ DataDictionaryEnum.PACKAGE_SCORE_PRICE.getType(),
+ DataDictionaryEnum.PACKAGE_SCORE_PRICE.getCode()
+ );
+ BigDecimal packageScorePrice = new BigDecimal(ObjectUtil.isEmpty(packageScorePriceDic) ? "0" : packageScorePriceDic.getValue()).setScale(2, BigDecimal.ROUND_DOWN);
+ packageInfoVo.setPackageScorePrice(packageScorePrice);
+
+ DappMemberEntity dappMemberEntity = dappMemberDao.selectById(memberId);
+ BigDecimal balance = dappMemberEntity.getBalance();
+ packageInfoVo.setPackageMemberScore(balance);
+ return new FebsResponse().success().data(packageInfoVo);
+ }
+
+ @Override
+ public FebsResponse salePackage(SalePackageDto salePackageDto) {
+ Long memberId = LoginUserUtil.getAppUser().getId();
+ BigDecimal cnt = salePackageDto.getCnt();
+ DappMemberEntity dappMemberEntity = dappMemberDao.selectById(memberId);
+ BigDecimal balance = dappMemberEntity.getBalance();
+ if(BigDecimal.ZERO.compareTo(cnt) >= 0){
+ throw new FebsException("资产不足");
+ }
+ if(cnt.compareTo(balance) > 0){
+ throw new FebsException("资产不足");
+ }
+ DataDictionaryCustom packageScorePriceDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
+ DataDictionaryEnum.PACKAGE_SCORE_PRICE.getType(),
+ DataDictionaryEnum.PACKAGE_SCORE_PRICE.getCode()
+ );
+ BigDecimal packageScorePrice = new BigDecimal(ObjectUtil.isEmpty(packageScorePriceDic) ? "0" : packageScorePriceDic.getValue()).setScale(2, BigDecimal.ROUND_DOWN);
+ //卖出资产乘以价格获取到预期获取的总额
+ BigDecimal totalAmount = cnt.multiply(packageScorePrice).setScale(2, BigDecimal.ROUND_DOWN);
+ //资产包卖出划入底池比例
+ DataDictionaryCustom packageToPoorPercentDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
+ DataDictionaryEnum.PACKAGE_SALE_TO_POOR_PERCENT.getType(),
+ DataDictionaryEnum.PACKAGE_SALE_TO_POOR_PERCENT.getCode()
+ );
+ BigDecimal packageToPoorPercent = new BigDecimal(ObjectUtil.isEmpty(packageToPoorPercentDic) ? "0.1" : packageToPoorPercentDic.getValue()).setScale(2, BigDecimal.ROUND_DOWN);
+ //划入底池的金额
+ BigDecimal poorAmount = totalAmount.multiply(packageToPoorPercent).setScale(2, BigDecimal.ROUND_DOWN);
+ //生成一条资金流水
+ DappFundFlowEntity scoreFlow = new DappFundFlowEntity(
+ memberId,
+ totalAmount.subtract(poorAmount),
+ FundFlowEnum.SALE_PACKAGE.getCode(),
+ DappFundFlowEntity.WITHDRAW_STATUS_ING,
+ poorAmount);
+ dappFundFlowDao.insert(scoreFlow);
+
+
+ //卖出积分直接销毁。
+ DataDictionaryCustom packageTotalScoreDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
+ DataDictionaryEnum.PACKAGE_TOTAL_SCORE.getType(),
+ DataDictionaryEnum.PACKAGE_TOTAL_SCORE.getCode()
+ );
+ BigDecimal packageTotalScore = new BigDecimal(ObjectUtil.isEmpty(packageTotalScoreDic) ? "21000" : packageTotalScoreDic.getValue()).setScale(2, BigDecimal.ROUND_DOWN);
+ BigDecimal avaPackageTotalScore = packageTotalScore.subtract(cnt);
+ packageTotalScoreDic.setValue(avaPackageTotalScore.toString());
+ dataDictionaryCustomMapper.updateById(packageTotalScoreDic);
+ //更新USDT底池
+ DataDictionaryCustom packagePoorDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
+ DataDictionaryEnum.PACKAGE_POOR.getType(),
+ DataDictionaryEnum.PACKAGE_POOR.getCode()
+ );
+ BigDecimal packagePoor = new BigDecimal(ObjectUtil.isEmpty(packagePoorDic) ? "0" : packagePoorDic.getValue()).setScale(2, BigDecimal.ROUND_DOWN);
+ BigDecimal avaPackagePoor = packagePoor.add(poorAmount);
+ packagePoorDic.setValue(avaPackagePoor.toString());
+ dataDictionaryCustomMapper.updateById(packagePoorDic);
+ //计算当前价格
+ BigDecimal divide = avaPackagePoor.divide(avaPackageTotalScore, 2, BigDecimal.ROUND_DOWN);
+ packageScorePriceDic.setValue(divide.toString());
+ dataDictionaryCustomMapper.updateById(packageScorePriceDic);
+
+ return null;
+ }
+
public static List<List<String>> partitionList(List<String> originalList, int partitionSize) {
List<List<String>> partitionedList = new ArrayList<>();
int size = originalList.size();
diff --git a/src/main/java/cc/mrbird/febs/dapp/vo/PackageInfoVo.java b/src/main/java/cc/mrbird/febs/dapp/vo/PackageInfoVo.java
new file mode 100644
index 0000000..b3c6c88
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/dapp/vo/PackageInfoVo.java
@@ -0,0 +1,22 @@
+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 = "PackageInfoVo", description = "资产包详情")
+public class PackageInfoVo {
+
+ @ApiModelProperty(value = "资产总量")
+ private BigDecimal packageTotalScore;
+
+ @ApiModelProperty(value = "我的资产")
+ private BigDecimal packageMemberScore;
+
+ @ApiModelProperty(value = "资产价格")
+ private BigDecimal packageScorePrice;
+
+}
diff --git a/src/main/java/cc/mrbird/febs/job/BnbTransferJob.java b/src/main/java/cc/mrbird/febs/job/BnbTransferJob.java
index 3380cf7..5dcf1ff 100644
--- a/src/main/java/cc/mrbird/febs/job/BnbTransferJob.java
+++ b/src/main/java/cc/mrbird/febs/job/BnbTransferJob.java
@@ -1,16 +1,6 @@
package cc.mrbird.febs.job;
-import cc.mrbird.febs.dapp.entity.DappFundFlowEntity;
-import cc.mrbird.febs.dapp.entity.DataDictionaryCustom;
-import cc.mrbird.febs.dapp.enumerate.FundFlowEnum;
-import cc.mrbird.febs.dapp.enumerate.MemberLevelEnum;
-import cc.mrbird.febs.dapp.enumerate.NodeCodeEnum;
-import cc.mrbird.febs.dapp.enumerate.PoolEnum;
-import cc.mrbird.febs.dapp.mapper.DappFundFlowDao;
-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.util.ObjectUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
diff --git a/src/main/java/cc/mrbird/febs/rabbit/QueueConstants.java b/src/main/java/cc/mrbird/febs/rabbit/QueueConstants.java
index 3d3e1e4..adcc100 100644
--- a/src/main/java/cc/mrbird/febs/rabbit/QueueConstants.java
+++ b/src/main/java/cc/mrbird/febs/rabbit/QueueConstants.java
@@ -7,6 +7,11 @@
public class QueueConstants {
/**
+ * speed 卖出资产
+ */
+ public static final String QUEUE_SPEED_SALE_PACKAGE = "queue_speed_sale_package";
+
+ /**
* speed 直推返利
*/
public static final String QUEUE_SPEED_DIRECT_PERK = "queue_speed_direct_perk";
diff --git a/src/main/java/cc/mrbird/febs/rabbit/QueueEnum.java b/src/main/java/cc/mrbird/febs/rabbit/QueueEnum.java
index 72934f7..f258ddd 100644
--- a/src/main/java/cc/mrbird/febs/rabbit/QueueEnum.java
+++ b/src/main/java/cc/mrbird/febs/rabbit/QueueEnum.java
@@ -6,6 +6,10 @@
@Getter
public enum QueueEnum {
/**
+ * speed 卖出资产
+ */
+ SPEED_SALE_PACKAGE("exchange_speed_sale_package", "route_key_speed_sale_package", QueueConstants.QUEUE_SPEED_SALE_PACKAGE),
+ /**
* speed 直推返利
*/
SPEED_DIRECT_PERK("exchange_speed_direct_perk", "route_key_speed_direct_perk", QueueConstants.QUEUE_SPEED_DIRECT_PERK),
diff --git a/src/main/java/cc/mrbird/febs/rabbit/RabbitConfiguration.java b/src/main/java/cc/mrbird/febs/rabbit/RabbitConfiguration.java
index 26eafcb..368979d 100644
--- a/src/main/java/cc/mrbird/febs/rabbit/RabbitConfiguration.java
+++ b/src/main/java/cc/mrbird/febs/rabbit/RabbitConfiguration.java
@@ -96,4 +96,21 @@
return BindingBuilder.bind(speedDirectPerkQueue()).to(speedDirectPerkExchange()).with(QueueEnum.SPEED_DIRECT_PERK.getRoute());
}
// === speed 代理升级 end ===
+
+ // === speed 卖出资产 start ===
+ @Bean
+ public DirectExchange speedSalePackageExchange() {
+ return new DirectExchange(QueueEnum.SPEED_SALE_PACKAGE.getExchange());
+ }
+
+ @Bean
+ public Queue speedSalePackageQueue() {
+ return new Queue(QueueEnum.SPEED_SALE_PACKAGE.getQueue());
+ }
+
+ @Bean
+ public Binding speedSalePackageBind() {
+ return BindingBuilder.bind(speedSalePackageQueue()).to(speedSalePackageExchange()).with(QueueEnum.SPEED_SALE_PACKAGE.getRoute());
+ }
+ // === speed 卖出资产 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 593eb6a..bb83d70 100644
--- a/src/main/java/cc/mrbird/febs/rabbit/consumer/ChainConsumer.java
+++ b/src/main/java/cc/mrbird/febs/rabbit/consumer/ChainConsumer.java
@@ -74,4 +74,17 @@
log.error("speedDirectPerkErr:", e);
}
}
+
+ /**
+ * speed 卖出资产
+ */
+ @RabbitListener(queues = QueueConstants.QUEUE_SPEED_SALE_PACKAGE)
+ public void speedSalePackageMsg(Long memberId) {
+ log.info("speedSalePackageMsg:{}", memberId);
+ try {
+ dappSystemService.speedSalePackageMsg(memberId);
+ } catch (Exception e) {
+ log.error("speedSalePackageErr:", e);
+ }
+ }
}
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 b3e86cd..ec8a3e4 100644
--- a/src/main/java/cc/mrbird/febs/rabbit/producer/ChainProducer.java
+++ b/src/main/java/cc/mrbird/febs/rabbit/producer/ChainProducer.java
@@ -45,7 +45,6 @@
rabbitTemplate.convertAndSend(QueueEnum.SPEED_PAY_ORDER.getExchange(), QueueEnum.SPEED_PAY_ORDER.getRoute(), orderId, correlationData);
}
-
/**
* speed 代理升级
* @param memberId
@@ -55,7 +54,6 @@
CorrelationData correlationData = new CorrelationData(UUID.randomUUID().toString());
rabbitTemplate.convertAndSend(QueueEnum.SPEED_LEVEL_UP_TEAM.getExchange(), QueueEnum.SPEED_LEVEL_UP_TEAM.getRoute(), memberId, correlationData);
}
-
/**
* speed 代理升级
@@ -67,7 +65,6 @@
rabbitTemplate.convertAndSend(QueueEnum.SPEED_LEVEL_UP.getExchange(), QueueEnum.SPEED_LEVEL_UP.getRoute(), memberId, correlationData);
}
-
/**
* speed 直推返利
*/
@@ -77,4 +74,13 @@
rabbitTemplate.convertAndSend(QueueEnum.SPEED_DIRECT_PERK.getExchange(), QueueEnum.SPEED_DIRECT_PERK.getRoute(), memberId, correlationData);
}
+ /**
+ * speed 卖出资产
+ */
+ public void sendSalePackageMsg(@NotNull Long memberId) {
+ log.info("sendSalePackageMsg:{}", memberId);
+ CorrelationData correlationData = new CorrelationData(UUID.randomUUID().toString());
+ rabbitTemplate.convertAndSend(QueueEnum.SPEED_SALE_PACKAGE.getExchange(), QueueEnum.SPEED_SALE_PACKAGE.getRoute(), memberId, correlationData);
+ }
+
}
--
Gitblit v1.9.1