diff --git a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/controller/admin/funds/organamount/OrganAmountController.java b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/controller/admin/funds/organamount/OrganAmountController.java index e1424913b..02677c554 100644 --- a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/controller/admin/funds/organamount/OrganAmountController.java +++ b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/controller/admin/funds/organamount/OrganAmountController.java @@ -46,7 +46,7 @@ public class OrganAmountController { } @GetMapping("/available") - @Operation(summary = "获取管理端组织可用金") + @Operation(summary = "获取组织可用金") public CommonResult getOrganAvailableAmount() { return success(organAmountService.getOrganAvailableAmount()); } diff --git a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/pay/PayProductProcessor.java b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/pay/PayProductProcessor.java index acd4a99c4..42860dd33 100644 --- a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/pay/PayProductProcessor.java +++ b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/pay/PayProductProcessor.java @@ -57,6 +57,8 @@ public class PayProductProcessor { private MybatisIdProperties mybatisIdProperties; + private boolean initialized = false; + public PayProductProcessor(ProductsDO productsDO, ProductsDetailDO productsDetailDO, PurchaseRecordDO orgInitialPurchaseRecord, OrganAmountDO organAmountDO, Long organId, ChenfengPayConfig payConfig, MybatisIdProperties mybatisIdProperties) { this.productsDO = productsDO; @@ -75,7 +77,15 @@ public class PayProductProcessor { */ public ProductProcessorRespVO processPayment(PayProductChannelCodeEnum payType) { // 首次购买记录存在则需要做计算,否则直接用定价规则的现价 - BigDecimal price = ObjectUtil.isNotNull(orgInitialPurchaseRecord) ? computePrice(orgInitialPurchaseRecord, productsDetailDO) : productsDetailDO.getCurrentPrice(); + boolean initialPurchaseExist = ObjectUtil.isNotNull(orgInitialPurchaseRecord); + BigDecimal price; + if (initialPurchaseExist) { + price = computePrice(orgInitialPurchaseRecord, productsDetailDO); + } else { + price = productsDetailDO.getCurrentPrice(); + // 首次购买记录是空,那么当前就是首次订购 + initialized = true; + } // 当前组织的余额 BigDecimal balance = organAmountDO.getAmount(); // 当前组织的赠送金 @@ -138,6 +148,7 @@ public class PayProductProcessor { .monthAverageAmount(orgInitialPurchaseRecord.getMonthAverageAmount()) .accountBalanceSpent(price) .isInvocing(InvoiceStatusEnum.INVOICABLE.getCode()) + .initial(initialized) .build(); purchaseRecordDO.setEndTime(calculateEndTime(purchaseRecordDO.getStartTime(), purchaseRecordDO.getPurchaseDuration(), purchaseRecordDO.getPurchaseDurationUnit(), @@ -194,6 +205,7 @@ public class PayProductProcessor { .monthAverageAmount(orgInitialPurchaseRecord.getMonthAverageAmount()) .accountBalanceSpent(price) .isInvocing(InvoiceStatusEnum.INVOICABLE.getCode()) + .initial(initialized) .build(); purchaseRecordDO.setEndTime(calculateEndTime(purchaseRecordDO.getStartTime(), purchaseRecordDO.getPurchaseDuration(), purchaseRecordDO.getPurchaseDurationUnit(), @@ -247,6 +259,7 @@ public class PayProductProcessor { .originalAmount(productsDetailDO.getCurrentPrice()) .monthAverageAmount(orgInitialPurchaseRecord.getMonthAverageAmount()) .alipaySpent(price) + .initial(initialized) .build(); purchaseRecordDO.setEndTime(calculateEndTime(purchaseRecordDO.getStartTime(), purchaseRecordDO.getPurchaseDuration(), purchaseRecordDO.getPurchaseDurationUnit(), @@ -282,6 +295,7 @@ public class PayProductProcessor { .originalAmount(productsDetailDO.getCurrentPrice()) .monthAverageAmount(orgInitialPurchaseRecord.getMonthAverageAmount()) .wechatSpent(price) + .initial(initialized) .build(); purchaseRecordDO.setEndTime(calculateEndTime(purchaseRecordDO.getStartTime(), purchaseRecordDO.getPurchaseDuration(), purchaseRecordDO.getPurchaseDurationUnit(), @@ -322,6 +336,7 @@ public class PayProductProcessor { .originalAmount(productsDetailDO.getCurrentPrice()) .monthAverageAmount(orgInitialPurchaseRecord.getMonthAverageAmount()) .isInvocing(InvoiceStatusEnum.INVOICABLE.getCode()) + .initial(initialized) .build(); purchaseRecordDO.setEndTime(calculateEndTime(purchaseRecordDO.getStartTime(), purchaseRecordDO.getPurchaseDuration(), purchaseRecordDO.getPurchaseDurationUnit(), @@ -397,6 +412,7 @@ public class PayProductProcessor { .totalAmount(price) .originalAmount(productsDetailDO.getCurrentPrice()) .monthAverageAmount(orgInitialPurchaseRecord.getMonthAverageAmount()) + .initial(initialized) .build(); purchaseRecordDO.setEndTime(calculateEndTime(purchaseRecordDO.getStartTime(), purchaseRecordDO.getPurchaseDuration(), purchaseRecordDO.getPurchaseDurationUnit(), @@ -471,6 +487,7 @@ public class PayProductProcessor { .totalAmount(price) .originalAmount(productsDetailDO.getCurrentPrice()) .monthAverageAmount(orgInitialPurchaseRecord.getMonthAverageAmount()) + .initial(initialized) .build(); purchaseRecordDO.setEndTime(calculateEndTime(purchaseRecordDO.getStartTime(), purchaseRecordDO.getPurchaseDuration(), purchaseRecordDO.getPurchaseDurationUnit(), @@ -548,6 +565,7 @@ public class PayProductProcessor { .totalAmount(price) .originalAmount(productsDetailDO.getCurrentPrice()) .monthAverageAmount(orgInitialPurchaseRecord.getMonthAverageAmount()) + .initial(initialized) .build(); purchaseRecordDO.setEndTime(calculateEndTime(purchaseRecordDO.getStartTime(), purchaseRecordDO.getPurchaseDuration(), purchaseRecordDO.getPurchaseDurationUnit(),