From a3371b691db0928078c54668fc2aa7970be2936e Mon Sep 17 00:00:00 2001 From: gaoqr <13665037151@163.com> Date: Wed, 20 Aug 2025 18:43:17 +0800 Subject: [PATCH] =?UTF-8?q?1=E3=80=81=E5=85=85=E5=80=BC=E8=B5=A0=E9=80=81?= =?UTF-8?q?=E9=87=91=E5=80=BC=E6=9B=B4=E6=96=B0=E9=94=99=E8=AF=AF=E4=BF=AE?= =?UTF-8?q?=E5=A4=8D=EF=BC=9B2=E3=80=81=E7=BB=84=E7=BB=87=E4=BD=99?= =?UTF-8?q?=E9=A2=9D=E6=8E=A5=E5=8F=A3=E6=96=B0=E5=A2=9E=E6=9F=A5=E8=AF=A2?= =?UTF-8?q?=E5=8F=AF=E5=BC=80=E7=A5=A8=E9=87=91=E9=A2=9D=EF=BC=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../funds/purchase/PurchaseRecordMapper.java | 9 +++++ .../organamount/OrganAmountServiceImpl.java | 33 ++++++++++--------- .../funds/purchase/PurchaseService.java | 12 ++++++- .../funds/purchase/PurchaseServiceImpl.java | 8 ++++- .../service/pay/PayOrderServiceImpl.java | 4 +-- .../mapper/funds/purchase/PurchaseMapper.xml | 8 +++++ 6 files changed, 55 insertions(+), 19 deletions(-) rename cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/{controller/admin => service}/funds/purchase/PurchaseService.java (79%) rename cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/{controller/admin => service}/funds/purchase/PurchaseServiceImpl.java (91%) create mode 100644 cf-module-system/cf-module-system-biz/src/main/resources/mapper/funds/purchase/PurchaseMapper.xml diff --git a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/dal/mysql/funds/purchase/PurchaseRecordMapper.java b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/dal/mysql/funds/purchase/PurchaseRecordMapper.java index e998401e7..ecf1a64bc 100644 --- a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/dal/mysql/funds/purchase/PurchaseRecordMapper.java +++ b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/dal/mysql/funds/purchase/PurchaseRecordMapper.java @@ -4,9 +4,18 @@ import com.cf.imes.framework.mybatis.core.mapper.BaseMapperX; import com.cf.imes.module.system.dal.dataobject.funds.purchase.PurchaseRecordDO; import org.apache.ibatis.annotations.Mapper; +import java.math.BigDecimal; + /** * 购买记录 Mapper */ @Mapper public interface PurchaseRecordMapper extends BaseMapperX { + /** + * 查询机构下可开票的金额 + * + * @param organId + * @return + */ + BigDecimal getInvoicingAmount(Long organId); } diff --git a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/funds/organamount/OrganAmountServiceImpl.java b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/funds/organamount/OrganAmountServiceImpl.java index 2287e21e6..7772d418e 100644 --- a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/funds/organamount/OrganAmountServiceImpl.java +++ b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/funds/organamount/OrganAmountServiceImpl.java @@ -13,7 +13,7 @@ import com.cf.imes.module.executor.api.funds.ExecutorFundsApi; import com.cf.imes.module.system.controller.admin.funds.organamount.vo.AllOrganAmountRespVO; import com.cf.imes.module.system.controller.admin.funds.organamount.vo.OrganAmountRespVO; import com.cf.imes.module.system.controller.admin.funds.organamount.vo.OrganRechargeAmountRespVO; -import com.cf.imes.module.system.controller.admin.funds.purchase.PurchaseService; +import com.cf.imes.module.system.service.funds.purchase.PurchaseService; import com.cf.imes.module.system.controller.admin.funds.purchase.vo.OrgEarliestPurchaseProductRespVO; import com.cf.imes.module.system.dal.dataobject.funds.organamount.OrganAmountDO; import com.cf.imes.module.system.dal.dataobject.funds.products.ProductsDetailDO; @@ -63,38 +63,38 @@ public class OrganAmountServiceImpl implements OrganAmountService { @Override public OrganRechargeAmountRespVO recharge(Long organId, BigDecimal price, BigDecimal gift) { OrganAmountDO organAmountDO = organAmountMapper.selectOne(new LambdaQueryWrapper().eq(OrganAmountDO::getOrganId, organId)); + BigDecimal newAmount = organAmountDO.getAmount().add(price); + BigDecimal newGift = null; + if (ObjectUtil.isNotNull(gift)) { + newGift = organAmountDO.getGiftAmount().add(gift); + } int updated = organAmountMapper.update(new LambdaUpdateWrapperX() .eq(OrganAmountDO::getOrganId, organId) .eq(OrganAmountDO::getVersion, organAmountDO.getVersion()) - .setIfPresent(OrganAmountDO::getGiftAmount, gift) - .set(OrganAmountDO::getAmount, organAmountDO.getAmount().add(price)) + .set(OrganAmountDO::getGiftAmount, newGift) + .set(OrganAmountDO::getAmount, newAmount) .set(OrganAmountDO::getVersion, organAmountDO.getVersion() + 1)); // 1. 首次更新失败,认为出现并发,再查一次再更新 if (updated == 0) { organAmountDO = organAmountMapper.selectOne(new LambdaQueryWrapper().eq(OrganAmountDO::getOrganId, organId)); + newAmount = organAmountDO.getAmount().add(price); + newGift = organAmountDO.getGiftAmount().add(gift); + updated = organAmountMapper.update(new LambdaUpdateWrapperX() .eq(OrganAmountDO::getOrganId, organId) .eq(OrganAmountDO::getVersion, organAmountDO.getVersion()) - .setIfPresent(OrganAmountDO::getGiftAmount, gift) - .set(OrganAmountDO::getAmount, organAmountDO.getAmount().add(price)) + .set(OrganAmountDO::getGiftAmount, newGift) + .set(OrganAmountDO::getAmount, newAmount) .set(OrganAmountDO::getVersion, organAmountDO.getVersion() + 1)); // 2. 第二次更新失败,资金表可能不存在 if (updated == 0) { throw exception(ORGAN_RECHARGE_AMOUNT_UPDATE_ERROR); } else { - // 可用余额:现金+赠送金+支付价格 - BigDecimal availableAmount = organAmountDO.getAmount().add(price).add(organAmountDO.getGiftAmount()); - // 现金余额:现金+支付价格 - BigDecimal amount = organAmountDO.getAmount().add(price); - return new OrganRechargeAmountRespVO(availableAmount, amount, organAmountDO.getGiftAmount()); + return new OrganRechargeAmountRespVO(newAmount.add(newGift), newAmount, newGift); } } else { - // 可用余额:现金+赠送金+支付价格 - BigDecimal availableAmount = organAmountDO.getAmount().add(price).add(organAmountDO.getGiftAmount()); - // 现金余额:现金+支付价格 - BigDecimal amount = organAmountDO.getAmount().add(price); - return new OrganRechargeAmountRespVO(availableAmount, amount, organAmountDO.getGiftAmount()); + return new OrganRechargeAmountRespVO(newAmount.add(newGift), newAmount, newGift); } } @@ -169,6 +169,9 @@ public class OrganAmountServiceImpl implements OrganAmountService { organAmountRespVO.setGiftDuration(productsDetailDO.getGiftDuration()); organAmountRespVO.setGiftDurationUnit(productsDetailDO.getGiftDurationUnit()); } + + // 查询可开票金额 + organAmountRespVO.setInvoiceableAmount(purchaseService.getInvoicingAmount(organId)); return organAmountRespVO; } diff --git a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/controller/admin/funds/purchase/PurchaseService.java b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/funds/purchase/PurchaseService.java similarity index 79% rename from cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/controller/admin/funds/purchase/PurchaseService.java rename to cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/funds/purchase/PurchaseService.java index c8c8048d3..0f3a86a8d 100644 --- a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/controller/admin/funds/purchase/PurchaseService.java +++ b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/funds/purchase/PurchaseService.java @@ -1,8 +1,10 @@ -package com.cf.imes.module.system.controller.admin.funds.purchase; +package com.cf.imes.module.system.service.funds.purchase; import com.cf.imes.module.system.controller.admin.funds.purchase.vo.OrgEarliestPurchaseProductRespVO; import com.cf.imes.module.system.dal.dataobject.funds.purchase.PurchaseRecordDO; +import java.math.BigDecimal; + /** * @author 软件购买接口 */ @@ -37,4 +39,12 @@ public interface PurchaseService { * @return */ OrgEarliestPurchaseProductRespVO getOrgEarliestProductDetail(Long organId); + + /** + * 查询可开票金额 + * + * @param organId + * @return + */ + BigDecimal getInvoicingAmount(Long organId); } diff --git a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/controller/admin/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 similarity index 91% rename from cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/controller/admin/funds/purchase/PurchaseServiceImpl.java rename to cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/funds/purchase/PurchaseServiceImpl.java index 4c422721f..dd797965c 100644 --- a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/controller/admin/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 @@ -1,4 +1,4 @@ -package com.cf.imes.module.system.controller.admin.funds.purchase; +package com.cf.imes.module.system.service.funds.purchase; import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; @@ -12,6 +12,7 @@ import jakarta.annotation.Resource; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; +import java.math.BigDecimal; import java.time.LocalDateTime; /** @@ -58,4 +59,9 @@ public class PurchaseServiceImpl implements PurchaseService { } return null; } + + @Override + public BigDecimal getInvoicingAmount(Long organId) { + return purchaseRecordMapper.getInvoicingAmount(organId); + } } diff --git a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/pay/PayOrderServiceImpl.java b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/pay/PayOrderServiceImpl.java index 12ce864aa..a1144c497 100644 --- a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/pay/PayOrderServiceImpl.java +++ b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/pay/PayOrderServiceImpl.java @@ -26,7 +26,7 @@ import com.cf.imes.framework.pay.core.enums.order.PayOrderStatusRespEnum; import com.cf.imes.framework.security.core.util.SecurityFrameworkUtils; import com.cf.imes.module.system.controller.admin.funds.organamount.vo.OrganRechargeAmountRespVO; import com.cf.imes.module.system.controller.admin.funds.products.vo.product.ProductProcessorRespVO; -import com.cf.imes.module.system.controller.admin.funds.purchase.PurchaseService; +import com.cf.imes.module.system.service.funds.purchase.PurchaseService; import com.cf.imes.module.system.controller.admin.pay.vo.PayProductOrderUnifiedReqVO; import com.cf.imes.module.system.controller.admin.pay.vo.PayRechargeOrderReqVO; import com.cf.imes.module.system.dal.dataobject.funds.organamount.OrganAmountDO; @@ -272,7 +272,7 @@ public class PayOrderServiceImpl implements PayOrderService { * @return */ private BigDecimal calcGiftAmount(Long rechargeActivityId, BigDecimal rechargeAmount) { - BigDecimal totalGift = BigDecimal.ZERO; + BigDecimal totalGift = null; if (ObjectUtil.isNull(rechargeActivityId)) { return totalGift; } diff --git a/cf-module-system/cf-module-system-biz/src/main/resources/mapper/funds/purchase/PurchaseMapper.xml b/cf-module-system/cf-module-system-biz/src/main/resources/mapper/funds/purchase/PurchaseMapper.xml new file mode 100644 index 000000000..cb17f577c --- /dev/null +++ b/cf-module-system/cf-module-system-biz/src/main/resources/mapper/funds/purchase/PurchaseMapper.xml @@ -0,0 +1,8 @@ + + + + + \ No newline at end of file