From 81abd5f692cc43d862bb3f75242bc0b967a80d2e Mon Sep 17 00:00:00 2001 From: gaoqr <13665037151@163.com> Date: Tue, 23 Sep 2025 11:40:50 +0800 Subject: [PATCH] =?UTF-8?q?=E9=A6=96=E6=AC=A1=E8=AE=A2=E8=B4=AD=E6=80=BB?= =?UTF-8?q?=E9=A2=9D=E4=B8=8D=E9=9C=80=E8=A6=81=E6=8A=98=E7=AE=97=E7=9B=B4?= =?UTF-8?q?=E6=8E=A5=E4=BD=BF=E7=94=A8=E5=A1=AB=E5=85=A5=E4=BB=B7=E6=A0=BC?= =?UTF-8?q?=E9=97=AE=E9=A2=98=E4=BF=AE=E5=A4=8D=EF=BC=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../funds/purchase/PurchaseServiceImpl.java | 36 +++---------------- 1 file changed, 5 insertions(+), 31 deletions(-) diff --git a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/funds/purchase/PurchaseServiceImpl.java b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/funds/purchase/PurchaseServiceImpl.java index 052b5a7ab..2cf166357 100644 --- a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/funds/purchase/PurchaseServiceImpl.java +++ b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/funds/purchase/PurchaseServiceImpl.java @@ -146,45 +146,19 @@ public class PurchaseServiceImpl implements PurchaseService { // 月均单价 BigDecimal monthAverageAmount; // 计算后总价 - BigDecimal totalAmount; + BigDecimal totalAmount = price; /** * ①:首次订购满1年: - * 总价 = 输入金额 / 12 * (10 * duration) - * 月均单价 = 输入金额 / (10 * duration) + * 总价 = 输入金额 + * 月均单价 = 输入金额 / (12 * duration) * ②:不满1年按月份计算 * 总价 = 输入金额 * 月均单价 = 输入金额 / duration */ Integer duration = productsDetailDO.getDuration(); switch (ProductDurationUnitEnum.fromStatus(productsDetailDO.getDurationUnit())) { - case YEAR -> { - totalAmount = price.divide(new BigDecimal(1.2), 2, RoundingMode.DOWN); - monthAverageAmount = price.divide(new BigDecimal(duration * 12), 2, RoundingMode.DOWN); - } - case MONTH -> { - if (duration >= 12) { - // 转换成年 + 剩余月 - int years = duration / 12; - int remainMonths = duration % 12; - - // 整年部分(走年折扣逻辑) - BigDecimal yearAmount = price - .multiply(new BigDecimal(years)) - .divide(new BigDecimal("1.2"), 2, RoundingMode.DOWN); - - // 剩余月份部分(走月逻辑) - BigDecimal monthAmount = remainMonths == 0 - ? BigDecimal.ZERO - : price.multiply(new BigDecimal(remainMonths)) - .divide(new BigDecimal(12), 2, RoundingMode.DOWN); - - totalAmount = yearAmount.add(monthAmount); - } else { - // 月份 - totalAmount = price; - } - monthAverageAmount = price.divide(new BigDecimal(duration), 2, RoundingMode.DOWN); - } + case YEAR -> monthAverageAmount = price.divide(new BigDecimal(duration * 12), 2, RoundingMode.DOWN); + case MONTH -> monthAverageAmount = price.divide(new BigDecimal(duration), 2, RoundingMode.DOWN); default -> throw new ServiceException(PRODUCTS_DETAIL_DURATION_UNIT_NOT_SUPPORT); } long purchaseId = IdUtil.getSnowflake(mybatisIdProperties.getWorkerId(), mybatisIdProperties.getDatacenterId()).nextId();