Browse Source

质押增加贡献值比例逻辑

xrh 3 weeks ago
parent
commit
b8b3d5bc43

+ 3 - 0
bex-cloud-staking-entity/src/main/java/com/bex/staking/entity/StakingProduct.java

@@ -96,6 +96,9 @@ public class StakingProduct extends BaseEntity {
     /** 通缩触发收益占比阈值(%), 默认 80.00 */
     private BigDecimal deflationRate;
 
+    /** 贡献值比例(%),空值默认100% */
+    private BigDecimal contributionRate;
+
     /** 展示小数位 */
     private Integer displayScale;
 

+ 7 - 1
bex-cloud-staking-service/src/main/java/com/bex/staking/engine/OrderEngine.java

@@ -210,12 +210,18 @@ public class OrderEngine {
 
         // 发送贡献值新增事件
         String days = product.getLockDays() != null ? String.valueOf(product.getLockDays()) : null;
+        // 计算贡献值数量:质押数量 × 贡献值比例,比例为空则默认100%,取整数部分
+        BigDecimal contributionRate = product.getContributionRate() != null 
+                ? product.getContributionRate() 
+                : BigDecimal.valueOf(100);
+        BigDecimal contributionValue = stakingNum.multiply(contributionRate)
+                .divide(BigDecimal.valueOf(100), 0, java.math.RoundingMode.DOWN);
         contributionEventProducer.sendAddContributionRecordsEvent(
                 String.valueOf(userId),
                 orderNo,
                 CURRENCY_BEX,
                 "",
-                stakingNum.toPlainString(),
+                contributionValue.toPlainString(),
                 RULE_CODE_PERSONAL_STAKE,
                 days);
 

+ 1 - 1
bex-cloud-staking-service/src/main/java/com/bex/staking/mq/ContributionEventProducer.java

@@ -34,7 +34,7 @@ public class ContributionEventProducer {
     public void sendAddContributionRecordsEvent(String userId, String sourceId, String currency, String value, String stakeValue, String ruleCode, String days) {
         String destination = CONTRIBUTION_TOPIC + ":addContributionRecords_event";
         String message = String.format(
-                "{\"userId\":%s,\"sourceId\":%s,\"currency\":\"%s\",\"value\":\"%s\",\"stakeValue\":\"%s\",\"ruleCode\":\"%s\",\"days\":\"%s\"}",
+                "{\"userId\":%s,\"sourceId\":\"%s\",\"currency\":\"%s\",\"value\":\"%s\",\"stakeValue\":\"%s\",\"ruleCode\":\"%s\",\"days\":\"%s\"}",
                 userId, sourceId, currency, value, stakeValue, ruleCode, days);
         rocketMQTemplate.convertAndSend(destination, message);
         log.info("发送“添加贡献记录”事件: userId={}, sourceId={}, ruleCode={}, currency={}, value={}",