浏览代码

增加 动态单价,结算金额

wangyunpeng 1 月之前
父节点
当前提交
e02a40fdeb
共有 1 个文件被更改,包括 23 次插入24 次删除
  1. 23 24
      api-module/src/main/java/com/tzld/piaoquan/api/job/ContentPlatformDatastatJob.java

+ 23 - 24
api-module/src/main/java/com/tzld/piaoquan/api/job/ContentPlatformDatastatJob.java

@@ -189,11 +189,11 @@ public class ContentPlatformDatastatJob {
                     BigDecimal fissionRate = BigDecimal.valueOf(fissionCount.doubleValue() / firstLevelCount);
                     BigDecimal rounded = fissionRate.multiply(new BigDecimal(10)).setScale(2, RoundingMode.HALF_UP);
                     item.setScore(rounded.doubleValue());
-                    Double unitPrice = getUnitPrice(account.getPrice(), fissionRate, arpu, BussinessTypeEnum.GZH_AUTO_REPLY);
-                    item.setUnitPrice(unitPrice);
+                    BigDecimal unitPrice = getUnitPrice(account.getPrice(), fissionRate, arpu, BussinessTypeEnum.FWH_PUSH);
                     if (Objects.nonNull(unitPrice)) {
-                        Double settlementAmount = unitPrice * firstLevelCount;
-                        item.setSettlementAmount(settlementAmount);
+                        item.setUnitPrice(unitPrice.doubleValue());
+                        BigDecimal settlementAmount = unitPrice.multiply(new BigDecimal(firstLevelCount)).setScale(2, RoundingMode.HALF_UP);
+                        item.setSettlementAmount(settlementAmount.doubleValue());
                     }
                 }
                 item.setCreateTimestamp(now);
@@ -333,11 +333,11 @@ public class ContentPlatformDatastatJob {
                     BigDecimal fissionRate = BigDecimal.valueOf(fissionCount.doubleValue() / firstLevelCount);
                     BigDecimal rounded = fissionRate.multiply(new BigDecimal(10)).setScale(2, RoundingMode.HALF_UP);
                     item.setScore(rounded.doubleValue());
-                    Double unitPrice = getUnitPrice(account.getPrice(), fissionRate, arpu, BussinessTypeEnum.FWH_PUSH);
-                    item.setUnitPrice(unitPrice);
+                    BigDecimal unitPrice = getUnitPrice(account.getPrice(), fissionRate, arpu, BussinessTypeEnum.FWH_PUSH);
                     if (Objects.nonNull(unitPrice)) {
-                        Double settlementAmount = unitPrice * firstLevelCount;
-                        item.setSettlementAmount(settlementAmount);
+                        item.setUnitPrice(unitPrice.doubleValue());
+                        BigDecimal settlementAmount = unitPrice.multiply(new BigDecimal(firstLevelCount)).setScale(2, RoundingMode.HALF_UP);
+                        item.setSettlementAmount(settlementAmount.doubleValue());
                     }
                 }
                 item.setCreateTimestamp(now);
@@ -537,11 +537,11 @@ public class ContentPlatformDatastatJob {
                     BigDecimal fissionRate = BigDecimal.valueOf(fissionCount.doubleValue() / firstLevelCount);
                     BigDecimal rounded = fissionRate.multiply(new BigDecimal(10)).setScale(2, RoundingMode.HALF_UP);
                     item.setScore(rounded.doubleValue());
-                    Double unitPrice = getUnitPrice(account.getPrice(), fissionRate, arpu, BussinessTypeEnum.QW);
-                    item.setUnitPrice(unitPrice);
+                    BigDecimal unitPrice = getUnitPrice(account.getPrice(), fissionRate, arpu, BussinessTypeEnum.FWH_PUSH);
                     if (Objects.nonNull(unitPrice)) {
-                        Double settlementAmount = unitPrice * firstLevelCount;
-                        item.setSettlementAmount(settlementAmount);
+                        item.setUnitPrice(unitPrice.doubleValue());
+                        BigDecimal settlementAmount = unitPrice.multiply(new BigDecimal(firstLevelCount)).setScale(2, RoundingMode.HALF_UP);
+                        item.setSettlementAmount(settlementAmount.doubleValue());
                     }
                 }
                 item.setFirstLevelCount(item.getFirstLevelCount() + firstLevelCount);
@@ -684,11 +684,11 @@ public class ContentPlatformDatastatJob {
                     BigDecimal fissionRate = BigDecimal.valueOf(fissionCount.doubleValue() / firstLevelCount);
                     BigDecimal rounded = fissionRate.multiply(new BigDecimal(10)).setScale(2, RoundingMode.HALF_UP);
                     item.setScore(rounded.doubleValue());
-                    Double unitPrice = getUnitPrice(account.getPrice(), fissionRate, arpu, BussinessTypeEnum.QW);
-                    item.setUnitPrice(unitPrice);
+                    BigDecimal unitPrice = getUnitPrice(account.getPrice(), fissionRate, arpu, BussinessTypeEnum.FWH_PUSH);
                     if (Objects.nonNull(unitPrice)) {
-                        Double settlementAmount = unitPrice * firstLevelCount;
-                        item.setSettlementAmount(settlementAmount);
+                        item.setUnitPrice(unitPrice.doubleValue());
+                        BigDecimal settlementAmount = unitPrice.multiply(new BigDecimal(firstLevelCount)).setScale(2, RoundingMode.HALF_UP);
+                        item.setSettlementAmount(settlementAmount.doubleValue());
                     }
                 }
                 item.setCreateTimestamp(now);
@@ -713,11 +713,11 @@ public class ContentPlatformDatastatJob {
                     BigDecimal fissionRate = BigDecimal.valueOf(fissionCount.doubleValue() / firstLevelCount);
                     BigDecimal rounded = fissionRate.multiply(new BigDecimal(10)).setScale(2, RoundingMode.HALF_UP);
                     item.setScore(rounded.doubleValue());
-                    Double unitPrice = getUnitPrice(account.getPrice(), fissionRate, arpu, BussinessTypeEnum.QW);
-                    item.setUnitPrice(unitPrice);
+                    BigDecimal unitPrice = getUnitPrice(account.getPrice(), fissionRate, arpu, BussinessTypeEnum.FWH_PUSH);
                     if (Objects.nonNull(unitPrice)) {
-                        Double settlementAmount = unitPrice * firstLevelCount;
-                        item.setSettlementAmount(settlementAmount);
+                        item.setUnitPrice(unitPrice.doubleValue());
+                        BigDecimal settlementAmount = unitPrice.multiply(new BigDecimal(firstLevelCount)).setScale(2, RoundingMode.HALF_UP);
+                        item.setSettlementAmount(settlementAmount.doubleValue());
                     }
                 }
                 item.setCreateTimestamp(now);
@@ -761,7 +761,7 @@ public class ContentPlatformDatastatJob {
         return unitPriceMaxConfig.get(typeEnum.getVal());
     }
 
-    private Double getUnitPrice(String price, BigDecimal fissionRate, Double arpu, BussinessTypeEnum typeEnum) {
+    private BigDecimal getUnitPrice(String price, BigDecimal fissionRate, Double arpu, BussinessTypeEnum typeEnum) {
         JSONObject priceJSON;
         try {
             priceJSON = JSONObject.parseObject(price);
@@ -778,17 +778,16 @@ public class ContentPlatformDatastatJob {
             if (Objects.isNull(staticPrice) || staticPrice == 0) {
                 return null;
             }
-            return staticPrice;
+            return new BigDecimal(staticPrice);
         } else if ("dynamic".equals(priceMode)) {
             if (Objects.isNull(fissionRate) || Objects.isNull(arpu) || Objects.isNull(dynamicTimes) || dynamicTimes == 0) {
                 return null;
             }
-            BigDecimal unitPrice = fissionRate.multiply(new BigDecimal(arpu))
+            return fissionRate.multiply(new BigDecimal(arpu))
                     .multiply(BigDecimal.valueOf(dynamicTimes))
                     .setScale(2, RoundingMode.HALF_UP)
                     .min(BigDecimal.valueOf(getUnitPriceMax(typeEnum)))
                     .max(BigDecimal.valueOf(getUnitPriceMin(typeEnum)));
-            return unitPrice.doubleValue();
         }
         return null;
     }