mirror of
http://192.168.1.205:9980/cf_devdept2/cf_imes_server.git
synced 2026-08-14 05:42:06 +08:00
1、充值赠送金值更新错误修复;2、组织余额接口新增查询可开票金额;
This commit is contained in:
+9
@@ -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 com.cf.imes.module.system.dal.dataobject.funds.purchase.PurchaseRecordDO;
|
||||||
import org.apache.ibatis.annotations.Mapper;
|
import org.apache.ibatis.annotations.Mapper;
|
||||||
|
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 购买记录 Mapper
|
* 购买记录 Mapper
|
||||||
*/
|
*/
|
||||||
@Mapper
|
@Mapper
|
||||||
public interface PurchaseRecordMapper extends BaseMapperX<PurchaseRecordDO> {
|
public interface PurchaseRecordMapper extends BaseMapperX<PurchaseRecordDO> {
|
||||||
|
/**
|
||||||
|
* 查询机构下可开票的金额
|
||||||
|
*
|
||||||
|
* @param organId
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
BigDecimal getInvoicingAmount(Long organId);
|
||||||
}
|
}
|
||||||
|
|||||||
+18
-15
@@ -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.AllOrganAmountRespVO;
|
||||||
import com.cf.imes.module.system.controller.admin.funds.organamount.vo.OrganAmountRespVO;
|
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.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.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.organamount.OrganAmountDO;
|
||||||
import com.cf.imes.module.system.dal.dataobject.funds.products.ProductsDetailDO;
|
import com.cf.imes.module.system.dal.dataobject.funds.products.ProductsDetailDO;
|
||||||
@@ -63,38 +63,38 @@ public class OrganAmountServiceImpl implements OrganAmountService {
|
|||||||
@Override
|
@Override
|
||||||
public OrganRechargeAmountRespVO recharge(Long organId, BigDecimal price, BigDecimal gift) {
|
public OrganRechargeAmountRespVO recharge(Long organId, BigDecimal price, BigDecimal gift) {
|
||||||
OrganAmountDO organAmountDO = organAmountMapper.selectOne(new LambdaQueryWrapper<OrganAmountDO>().eq(OrganAmountDO::getOrganId, organId));
|
OrganAmountDO organAmountDO = organAmountMapper.selectOne(new LambdaQueryWrapper<OrganAmountDO>().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<OrganAmountDO>()
|
int updated = organAmountMapper.update(new LambdaUpdateWrapperX<OrganAmountDO>()
|
||||||
.eq(OrganAmountDO::getOrganId, organId)
|
.eq(OrganAmountDO::getOrganId, organId)
|
||||||
.eq(OrganAmountDO::getVersion, organAmountDO.getVersion())
|
.eq(OrganAmountDO::getVersion, organAmountDO.getVersion())
|
||||||
.setIfPresent(OrganAmountDO::getGiftAmount, gift)
|
.set(OrganAmountDO::getGiftAmount, newGift)
|
||||||
.set(OrganAmountDO::getAmount, organAmountDO.getAmount().add(price))
|
.set(OrganAmountDO::getAmount, newAmount)
|
||||||
.set(OrganAmountDO::getVersion, organAmountDO.getVersion() + 1));
|
.set(OrganAmountDO::getVersion, organAmountDO.getVersion() + 1));
|
||||||
// 1. 首次更新失败,认为出现并发,再查一次再更新
|
// 1. 首次更新失败,认为出现并发,再查一次再更新
|
||||||
if (updated == 0) {
|
if (updated == 0) {
|
||||||
organAmountDO = organAmountMapper.selectOne(new LambdaQueryWrapper<OrganAmountDO>().eq(OrganAmountDO::getOrganId, organId));
|
organAmountDO = organAmountMapper.selectOne(new LambdaQueryWrapper<OrganAmountDO>().eq(OrganAmountDO::getOrganId, organId));
|
||||||
|
newAmount = organAmountDO.getAmount().add(price);
|
||||||
|
newGift = organAmountDO.getGiftAmount().add(gift);
|
||||||
|
|
||||||
updated = organAmountMapper.update(new LambdaUpdateWrapperX<OrganAmountDO>()
|
updated = organAmountMapper.update(new LambdaUpdateWrapperX<OrganAmountDO>()
|
||||||
.eq(OrganAmountDO::getOrganId, organId)
|
.eq(OrganAmountDO::getOrganId, organId)
|
||||||
.eq(OrganAmountDO::getVersion, organAmountDO.getVersion())
|
.eq(OrganAmountDO::getVersion, organAmountDO.getVersion())
|
||||||
.setIfPresent(OrganAmountDO::getGiftAmount, gift)
|
.set(OrganAmountDO::getGiftAmount, newGift)
|
||||||
.set(OrganAmountDO::getAmount, organAmountDO.getAmount().add(price))
|
.set(OrganAmountDO::getAmount, newAmount)
|
||||||
.set(OrganAmountDO::getVersion, organAmountDO.getVersion() + 1));
|
.set(OrganAmountDO::getVersion, organAmountDO.getVersion() + 1));
|
||||||
// 2. 第二次更新失败,资金表可能不存在
|
// 2. 第二次更新失败,资金表可能不存在
|
||||||
if (updated == 0) {
|
if (updated == 0) {
|
||||||
throw exception(ORGAN_RECHARGE_AMOUNT_UPDATE_ERROR);
|
throw exception(ORGAN_RECHARGE_AMOUNT_UPDATE_ERROR);
|
||||||
} else {
|
} else {
|
||||||
// 可用余额:现金+赠送金+支付价格
|
return new OrganRechargeAmountRespVO(newAmount.add(newGift), newAmount, newGift);
|
||||||
BigDecimal availableAmount = organAmountDO.getAmount().add(price).add(organAmountDO.getGiftAmount());
|
|
||||||
// 现金余额:现金+支付价格
|
|
||||||
BigDecimal amount = organAmountDO.getAmount().add(price);
|
|
||||||
return new OrganRechargeAmountRespVO(availableAmount, amount, organAmountDO.getGiftAmount());
|
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
// 可用余额:现金+赠送金+支付价格
|
return new OrganRechargeAmountRespVO(newAmount.add(newGift), newAmount, newGift);
|
||||||
BigDecimal availableAmount = organAmountDO.getAmount().add(price).add(organAmountDO.getGiftAmount());
|
|
||||||
// 现金余额:现金+支付价格
|
|
||||||
BigDecimal amount = organAmountDO.getAmount().add(price);
|
|
||||||
return new OrganRechargeAmountRespVO(availableAmount, amount, organAmountDO.getGiftAmount());
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -169,6 +169,9 @@ public class OrganAmountServiceImpl implements OrganAmountService {
|
|||||||
organAmountRespVO.setGiftDuration(productsDetailDO.getGiftDuration());
|
organAmountRespVO.setGiftDuration(productsDetailDO.getGiftDuration());
|
||||||
organAmountRespVO.setGiftDurationUnit(productsDetailDO.getGiftDurationUnit());
|
organAmountRespVO.setGiftDurationUnit(productsDetailDO.getGiftDurationUnit());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 查询可开票金额
|
||||||
|
organAmountRespVO.setInvoiceableAmount(purchaseService.getInvoicingAmount(organId));
|
||||||
return organAmountRespVO;
|
return organAmountRespVO;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
+11
-1
@@ -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.controller.admin.funds.purchase.vo.OrgEarliestPurchaseProductRespVO;
|
||||||
import com.cf.imes.module.system.dal.dataobject.funds.purchase.PurchaseRecordDO;
|
import com.cf.imes.module.system.dal.dataobject.funds.purchase.PurchaseRecordDO;
|
||||||
|
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author 软件购买接口
|
* @author 软件购买接口
|
||||||
*/
|
*/
|
||||||
@@ -37,4 +39,12 @@ public interface PurchaseService {
|
|||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
OrgEarliestPurchaseProductRespVO getOrgEarliestProductDetail(Long organId);
|
OrgEarliestPurchaseProductRespVO getOrgEarliestProductDetail(Long organId);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询可开票金额
|
||||||
|
*
|
||||||
|
* @param organId
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
BigDecimal getInvoicingAmount(Long organId);
|
||||||
}
|
}
|
||||||
+7
-1
@@ -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 cn.hutool.core.util.ObjectUtil;
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||||
@@ -12,6 +12,7 @@ import jakarta.annotation.Resource;
|
|||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
import java.math.BigDecimal;
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -58,4 +59,9 @@ public class PurchaseServiceImpl implements PurchaseService {
|
|||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public BigDecimal getInvoicingAmount(Long organId) {
|
||||||
|
return purchaseRecordMapper.getInvoicingAmount(organId);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
+2
-2
@@ -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.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.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.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.PayProductOrderUnifiedReqVO;
|
||||||
import com.cf.imes.module.system.controller.admin.pay.vo.PayRechargeOrderReqVO;
|
import com.cf.imes.module.system.controller.admin.pay.vo.PayRechargeOrderReqVO;
|
||||||
import com.cf.imes.module.system.dal.dataobject.funds.organamount.OrganAmountDO;
|
import com.cf.imes.module.system.dal.dataobject.funds.organamount.OrganAmountDO;
|
||||||
@@ -272,7 +272,7 @@ public class PayOrderServiceImpl implements PayOrderService {
|
|||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
private BigDecimal calcGiftAmount(Long rechargeActivityId, BigDecimal rechargeAmount) {
|
private BigDecimal calcGiftAmount(Long rechargeActivityId, BigDecimal rechargeAmount) {
|
||||||
BigDecimal totalGift = BigDecimal.ZERO;
|
BigDecimal totalGift = null;
|
||||||
if (ObjectUtil.isNull(rechargeActivityId)) {
|
if (ObjectUtil.isNull(rechargeActivityId)) {
|
||||||
return totalGift;
|
return totalGift;
|
||||||
}
|
}
|
||||||
|
|||||||
+8
@@ -0,0 +1,8 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" ?>
|
||||||
|
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
|
||||||
|
<mapper namespace="com.cf.imes.module.system.dal.mysql.funds.purchase.PurchaseRecordMapper">
|
||||||
|
<select id="getInvoicingAmount" resultType="java.math.BigDecimal">
|
||||||
|
select sum(account_balance_spent) from purchase_record
|
||||||
|
where organ_id = #{organId} and is_invocing = '${@com.cf.imes.module.system.enums.pay.InvoiceStatusEnum@INVOICABLE.status}';
|
||||||
|
</select>
|
||||||
|
</mapper>
|
||||||
Reference in New Issue
Block a user