mirror of
http://192.168.1.205:9980/cf_devdept2/cf_imes_server.git
synced 2026-08-13 21:32:07 +08:00
手工调账service、controller单元测试完善
This commit is contained in:
+2
@@ -2,6 +2,7 @@ package com.cf.imes.module.system.controller.admin.funds.organamount.vo;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
|
||||
@@ -11,6 +12,7 @@ import java.math.BigDecimal;
|
||||
*/
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
public class OrganRechargeAmountRespVO {
|
||||
/**
|
||||
* 可用余额
|
||||
|
||||
+9
@@ -3,6 +3,7 @@ package com.cf.imes.module.system.service.funds.incomeandexpense;
|
||||
import com.cf.imes.framework.common.pojo.PageResult;
|
||||
import com.cf.imes.module.system.controller.admin.funds.balancedetails.vo.BalanceDetailsPageReqVO;
|
||||
import com.cf.imes.module.system.controller.admin.funds.balancedetails.vo.BalanceDetailsRespVO;
|
||||
import com.cf.imes.module.system.controller.admin.funds.manualadjust.vo.ManualAdjustAccountBalancePageReqVO;
|
||||
import com.cf.imes.module.system.dal.dataobject.incomeandexpense.IncomeExpenseDetailsDO;
|
||||
|
||||
/**
|
||||
@@ -26,4 +27,12 @@ public interface IncomeExpenseService {
|
||||
* @return
|
||||
*/
|
||||
PageResult<BalanceDetailsRespVO> getBalanceDetailsPage(BalanceDetailsPageReqVO pageReqVO);
|
||||
|
||||
/**
|
||||
* 获取手工调账分页
|
||||
*
|
||||
* @param pageReqVO
|
||||
* @return
|
||||
*/
|
||||
PageResult<IncomeExpenseDetailsDO> selectAdjustPage(ManualAdjustAccountBalancePageReqVO pageReqVO);
|
||||
}
|
||||
|
||||
+6
@@ -8,6 +8,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.PageDTO;
|
||||
import com.cf.imes.framework.common.pojo.PageResult;
|
||||
import com.cf.imes.module.system.controller.admin.funds.balancedetails.vo.BalanceDetailsPageReqVO;
|
||||
import com.cf.imes.module.system.controller.admin.funds.balancedetails.vo.BalanceDetailsRespVO;
|
||||
import com.cf.imes.module.system.controller.admin.funds.manualadjust.vo.ManualAdjustAccountBalancePageReqVO;
|
||||
import com.cf.imes.module.system.dal.dataobject.incomeandexpense.AccountDetailsDO;
|
||||
import com.cf.imes.module.system.dal.dataobject.incomeandexpense.IncomeExpenseDetailsDO;
|
||||
import com.cf.imes.module.system.dal.dataobject.organ.OrganizationDO;
|
||||
@@ -108,4 +109,9 @@ public class IncomeExpenseServiceImpl implements IncomeExpenseService {
|
||||
});
|
||||
return new PageResult<>(resultList, pageResult.getTotal());
|
||||
}
|
||||
|
||||
@Override
|
||||
public PageResult<IncomeExpenseDetailsDO> selectAdjustPage(ManualAdjustAccountBalancePageReqVO pageReqVO) {
|
||||
return incomeExpenseDetailsMapper.selectAdjustPage(pageReqVO);
|
||||
}
|
||||
}
|
||||
|
||||
+14
-67
@@ -2,13 +2,11 @@ package com.cf.imes.module.system.service.funds.manualadjust;
|
||||
|
||||
import cn.hutool.core.util.IdUtil;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.cf.imes.framework.common.pojo.PageResult;
|
||||
import com.cf.imes.framework.common.util.Assert.AssertUtils;
|
||||
import com.cf.imes.framework.common.util.date.LocalDateTimeUtils;
|
||||
import com.cf.imes.framework.common.util.object.BeanUtils;
|
||||
import com.cf.imes.framework.id.core.util.SnowflakeSerialNoWorker3rd;
|
||||
import com.cf.imes.framework.mybatis.core.query.LambdaUpdateWrapperX;
|
||||
import com.cf.imes.module.system.controller.admin.funds.manualadjust.vo.ManualAdjustAccountBalancePageReqVO;
|
||||
import com.cf.imes.module.system.controller.admin.funds.manualadjust.vo.ManualAdjustAccountBalanceRespVO;
|
||||
import com.cf.imes.module.system.controller.admin.funds.manualadjust.vo.ManualAdjustAccountBalanceSaveReqVO;
|
||||
@@ -17,9 +15,6 @@ import com.cf.imes.module.system.dal.dataobject.funds.organamount.OrganAmountDO;
|
||||
import com.cf.imes.module.system.dal.dataobject.incomeandexpense.IncomeExpenseDetailsDO;
|
||||
import com.cf.imes.module.system.dal.dataobject.organ.OrganizationDO;
|
||||
import com.cf.imes.module.system.dal.dataobject.pay.PayOrderDO;
|
||||
import com.cf.imes.module.system.dal.mysql.funds.organamount.OrganAmountMapper;
|
||||
import com.cf.imes.module.system.dal.mysql.incomeandexpense.IncomeExpenseDetailsMapper;
|
||||
import com.cf.imes.module.system.dal.mysql.pay.PayOrderMapper;
|
||||
import com.cf.imes.module.system.enums.pay.AdjustTypeEnum;
|
||||
import com.cf.imes.module.system.enums.pay.IncomeExpenseTypeEnum;
|
||||
import com.cf.imes.module.system.enums.pay.PayChannelCodeEnum;
|
||||
@@ -29,6 +24,7 @@ import com.cf.imes.module.system.framework.snowflake.config.MybatisIdProperties;
|
||||
import com.cf.imes.module.system.service.funds.incomeandexpense.IncomeExpenseService;
|
||||
import com.cf.imes.module.system.service.funds.organamount.OrganAmountService;
|
||||
import com.cf.imes.module.system.service.organ.OrganService;
|
||||
import com.cf.imes.module.system.service.pay.PayOrderService;
|
||||
import jakarta.annotation.Resource;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
@@ -40,7 +36,6 @@ import java.util.List;
|
||||
import static com.cf.imes.framework.common.exception.util.ServiceExceptionUtil.exception;
|
||||
import static com.cf.imes.module.system.enums.ErrorCodeConstants.ORGAMOUNT_GIFT_INSUFFICIENT_ERROR;
|
||||
import static com.cf.imes.module.system.enums.ErrorCodeConstants.ORGAMOUNT_RECHARGE_INSUFFICIENT_ERROR;
|
||||
import static com.cf.imes.module.system.enums.ErrorCodeConstants.ORGAN_RECHARGE_AMOUNT_UPDATE_ERROR;
|
||||
import static com.cf.imes.module.system.enums.ErrorCodeConstants.RECHARGE_GIFT_MEANWHILE_EMPTY_ERROR;
|
||||
|
||||
/**
|
||||
@@ -57,9 +52,6 @@ public class ManualAdjustAccountBalanceServiceImpl implements ManualAdjustAccoun
|
||||
@Resource
|
||||
private OrganAmountService organAmountService;
|
||||
|
||||
@Resource
|
||||
private OrganAmountMapper organAmountMapper;
|
||||
|
||||
@Resource
|
||||
private IncomeExpenseService incomeExpenseService;
|
||||
|
||||
@@ -67,10 +59,7 @@ public class ManualAdjustAccountBalanceServiceImpl implements ManualAdjustAccoun
|
||||
private MybatisIdProperties mybatisIdProperties;
|
||||
|
||||
@Resource
|
||||
private PayOrderMapper payOrderMapper;
|
||||
|
||||
@Resource
|
||||
private IncomeExpenseDetailsMapper incomeExpenseDetailsMapper;
|
||||
private PayOrderService payOrderService;
|
||||
|
||||
@Resource
|
||||
private SnowflakeSerialNoWorker3rd snowflakeSerialNoWorker3rd;
|
||||
@@ -94,7 +83,7 @@ public class ManualAdjustAccountBalanceServiceImpl implements ManualAdjustAccoun
|
||||
switch (AdjustTypeEnum.getByType(saveReqVO.getAdjustType())) {
|
||||
case INCREASE:
|
||||
// 调增直接累加
|
||||
rechargeRespVO = recharge(organAmountDO, rechargeAmount, giftAmount);
|
||||
rechargeRespVO = organAmountService.recharge(organId, rechargeAmount, giftAmount);
|
||||
break;
|
||||
case DECREASE:
|
||||
incomeExpenseType = IncomeExpenseTypeEnum.EXPENSES.getCode();
|
||||
@@ -114,21 +103,26 @@ public class ManualAdjustAccountBalanceServiceImpl implements ManualAdjustAccoun
|
||||
giftAmount = giftAmount.negate();
|
||||
}
|
||||
|
||||
rechargeRespVO = recharge(organAmountDO, rechargeAmount, giftAmount);
|
||||
rechargeRespVO = organAmountService.recharge(organId, rechargeAmount, giftAmount);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
// 新增支付单
|
||||
PayOrderDO payOrderDO = createPayOrder(organId, rechargeAmount);
|
||||
payOrderMapper.insert(payOrderDO);
|
||||
String payOrderId = null;
|
||||
if (ObjectUtil.isNotNull(rechargeAmount)) {
|
||||
PayOrderDO payOrderDO = createPayOrder(organId, rechargeAmount);
|
||||
payOrderService.createPayOrder(payOrderDO);
|
||||
|
||||
payOrderId = String.valueOf(payOrderDO.getId());
|
||||
}
|
||||
|
||||
// 新增收支明细
|
||||
IncomeExpenseDetailsDO incomeExpenseDetailsDO = IncomeExpenseDetailsDO.builder()
|
||||
.organId(organId)
|
||||
.businessNo(snowflakeSerialNoWorker3rd.nextSerialNo())
|
||||
.orderNo(String.valueOf(payOrderDO.getId()))
|
||||
.orderNo(String.valueOf(payOrderId))
|
||||
.tradeType(TradeTypeEnum.MANUAL_ADJUST.getCode())
|
||||
.incomeExpenseType(incomeExpenseType)
|
||||
.cashAmountChange(rechargeAmount)
|
||||
@@ -153,66 +147,19 @@ public class ManualAdjustAccountBalanceServiceImpl implements ManualAdjustAccoun
|
||||
Long payOrderId = IdUtil.getSnowflake(mybatisIdProperties.getWorkerId(), mybatisIdProperties.getDatacenterId()).nextId();
|
||||
payOrderDO.setId(payOrderId);
|
||||
payOrderDO.setStatus(PayOrderStatusEnum.SUCCESS);
|
||||
payOrderDO.setPrice(ObjectUtil.isNull(recharge) ? BigDecimal.ZERO : recharge);
|
||||
payOrderDO.setPrice(recharge);
|
||||
payOrderDO.setSubject("手工调账");
|
||||
payOrderDO.setChannelCode(PayChannelCodeEnum.MANUAL_ADJUST);
|
||||
payOrderDO.setOrganId(organId);
|
||||
return payOrderDO;
|
||||
}
|
||||
|
||||
/**
|
||||
* 充值
|
||||
*
|
||||
* @param organAmountDO
|
||||
* @param price
|
||||
* @param gift
|
||||
*/
|
||||
private OrganRechargeAmountRespVO recharge(OrganAmountDO organAmountDO, BigDecimal price, BigDecimal gift) {
|
||||
Long organId = organAmountDO.getOrganId();
|
||||
BigDecimal newAmount = organAmountDO.getAmount();
|
||||
if (ObjectUtil.isNotNull(price)) {
|
||||
newAmount = organAmountDO.getAmount().add(price);
|
||||
}
|
||||
BigDecimal newGift = organAmountDO.getGiftAmount();
|
||||
if (ObjectUtil.isNotNull(gift)) {
|
||||
newGift = organAmountDO.getGiftAmount().add(gift);
|
||||
}
|
||||
|
||||
int updated = organAmountMapper.update(new LambdaUpdateWrapperX<OrganAmountDO>()
|
||||
.eq(OrganAmountDO::getOrganId, organId)
|
||||
.eq(OrganAmountDO::getVersion, organAmountDO.getVersion())
|
||||
.set(OrganAmountDO::getGiftAmount, newGift)
|
||||
.set(OrganAmountDO::getAmount, newAmount)
|
||||
.set(OrganAmountDO::getVersion, organAmountDO.getVersion() + 1));
|
||||
// 1. 首次更新失败,认为出现并发,再查一次再更新
|
||||
if (updated == 0) {
|
||||
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>()
|
||||
.eq(OrganAmountDO::getOrganId, organId)
|
||||
.eq(OrganAmountDO::getVersion, organAmountDO.getVersion())
|
||||
.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 {
|
||||
return new OrganRechargeAmountRespVO(newAmount.add(newGift), newAmount, newGift);
|
||||
}
|
||||
} else {
|
||||
return new OrganRechargeAmountRespVO(newAmount.add(newGift), newAmount, newGift);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public PageResult<ManualAdjustAccountBalanceRespVO> getPage(ManualAdjustAccountBalancePageReqVO pageReqVO) {
|
||||
// 时间类型规范为开始0点,结束12点
|
||||
pageReqVO.setCreateTime(LocalDateTimeUtils.generateTimeSection(pageReqVO.getCreateTime()));
|
||||
|
||||
PageResult<IncomeExpenseDetailsDO> incomeExpenseDetailsDOPageResult = incomeExpenseDetailsMapper.selectAdjustPage(pageReqVO);
|
||||
PageResult<IncomeExpenseDetailsDO> incomeExpenseDetailsDOPageResult = incomeExpenseService.selectAdjustPage(pageReqVO);
|
||||
List<IncomeExpenseDetailsDO> pageResultList = incomeExpenseDetailsDOPageResult.getList();
|
||||
|
||||
List<ManualAdjustAccountBalanceRespVO> resultList = new ArrayList<>();
|
||||
|
||||
+10
-9
@@ -73,8 +73,6 @@ public class OrganAmountServiceImpl implements OrganAmountService {
|
||||
// 常用的字段key
|
||||
private static final String DATELIST_FIELD_NAME = "dateList";
|
||||
private static final String SERIES_FIELD_NAME = "series";
|
||||
private static final String DATE_TIME_FORMATTER_PATTERN_YEAR_MONTH = "yyyy-M";
|
||||
private static final String DATE_TIME_FORMATTER_PATTERN_YEAR_MONTH_DAY = "yyyy-M-d";
|
||||
|
||||
@Override
|
||||
public OrganAmountDO validOrganAmount(Long organId) {
|
||||
@@ -85,9 +83,12 @@ public class OrganAmountServiceImpl implements OrganAmountService {
|
||||
|
||||
@Override
|
||||
public OrganRechargeAmountRespVO recharge(Long organId, BigDecimal price, BigDecimal gift) {
|
||||
OrganAmountDO organAmountDO = organAmountMapper.selectOne(new LambdaQueryWrapper<OrganAmountDO>().eq(OrganAmountDO::getOrganId, organId));
|
||||
BigDecimal newAmount = organAmountDO.getAmount().add(price);
|
||||
BigDecimal newGift = null;
|
||||
OrganAmountDO organAmountDO = validOrganAmount(organId);
|
||||
BigDecimal newAmount = organAmountDO.getAmount();
|
||||
if (ObjectUtil.isNotNull(price)) {
|
||||
newAmount = organAmountDO.getAmount().add(price);
|
||||
}
|
||||
BigDecimal newGift = organAmountDO.getGiftAmount();
|
||||
if (ObjectUtil.isNotNull(gift)) {
|
||||
newGift = organAmountDO.getGiftAmount().add(gift);
|
||||
}
|
||||
@@ -95,7 +96,7 @@ public class OrganAmountServiceImpl implements OrganAmountService {
|
||||
int updated = organAmountMapper.update(new LambdaUpdateWrapperX<OrganAmountDO>()
|
||||
.eq(OrganAmountDO::getOrganId, organId)
|
||||
.eq(OrganAmountDO::getVersion, organAmountDO.getVersion())
|
||||
.setIfPresent(OrganAmountDO::getGiftAmount, newGift)
|
||||
.set(OrganAmountDO::getGiftAmount, newGift)
|
||||
.set(OrganAmountDO::getAmount, newAmount)
|
||||
.set(OrganAmountDO::getVersion, organAmountDO.getVersion() + 1));
|
||||
// 1. 首次更新失败,认为出现并发,再查一次再更新
|
||||
@@ -107,17 +108,17 @@ public class OrganAmountServiceImpl implements OrganAmountService {
|
||||
updated = organAmountMapper.update(new LambdaUpdateWrapperX<OrganAmountDO>()
|
||||
.eq(OrganAmountDO::getOrganId, organId)
|
||||
.eq(OrganAmountDO::getVersion, organAmountDO.getVersion())
|
||||
.setIfPresent(OrganAmountDO::getGiftAmount, newGift)
|
||||
.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 {
|
||||
return new OrganRechargeAmountRespVO(ObjectUtil.isNull(newGift) ? newAmount : newAmount.add(newGift), newAmount, newGift);
|
||||
return new OrganRechargeAmountRespVO(newAmount.add(newGift), newAmount, newGift);
|
||||
}
|
||||
} else {
|
||||
return new OrganRechargeAmountRespVO(ObjectUtil.isNull(newGift) ? newAmount : newAmount.add(newGift), newAmount, newGift);
|
||||
return new OrganRechargeAmountRespVO(newAmount.add(newGift), newAmount, newGift);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+7
@@ -76,4 +76,11 @@ public interface PayOrderService {
|
||||
* @return
|
||||
*/
|
||||
BigDecimal getRechargeTotalAmount();
|
||||
|
||||
/**
|
||||
* 创建支付订单
|
||||
*
|
||||
* @param payOrderDO
|
||||
*/
|
||||
void createPayOrder(PayOrderDO payOrderDO);
|
||||
}
|
||||
|
||||
+7
-4
@@ -10,13 +10,11 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
||||
import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
|
||||
import com.cf.imes.framework.common.exception.ServiceException;
|
||||
import com.cf.imes.framework.common.exception.enums.GlobalErrorCodeConstants;
|
||||
import com.cf.imes.framework.common.exception.util.ServiceExceptionUtil;
|
||||
import com.cf.imes.framework.common.util.Assert.AssertUtils;
|
||||
import com.cf.imes.framework.common.util.json.JsonUtils;
|
||||
import com.cf.imes.framework.common.util.validation.ValidationUtils;
|
||||
import com.cf.imes.framework.id.core.util.SnowflakeSerialNoWorker3rd;
|
||||
import com.cf.imes.framework.organ.core.context.OrganContextHolder;
|
||||
import com.cf.imes.framework.pay.config.ChenfengAlipayConfig;
|
||||
import com.cf.imes.framework.pay.config.ChenfengPayConfig;
|
||||
import com.cf.imes.framework.pay.core.client.dto.order.PayOrderRespDTO;
|
||||
@@ -234,7 +232,7 @@ public class PayOrderServiceImpl implements PayOrderService {
|
||||
|
||||
// 如果有外部支付,发起请求
|
||||
if (ObjectUtil.isNotNull(payOrder)) {
|
||||
payOrderMapper.insert(payOrder);
|
||||
createPayOrder(payOrder);
|
||||
|
||||
// 发起渠道方支付
|
||||
AbstractPayHandler payHandler = payHandlerFactory.getPayHandler(channelCode);
|
||||
@@ -381,7 +379,7 @@ public class PayOrderServiceImpl implements PayOrderService {
|
||||
validRechargeActivity(rechargeActivityId, channelCode);
|
||||
payOrder.setRechargeActivityId(rechargeActivityId);
|
||||
}
|
||||
payOrderMapper.insert(payOrder);
|
||||
createPayOrder(payOrder);
|
||||
|
||||
// 发起渠道方支付
|
||||
PayOrderUnifiedReqDTO payOrderUnifiedReqDTO = null;
|
||||
@@ -897,4 +895,9 @@ public class PayOrderServiceImpl implements PayOrderService {
|
||||
public BigDecimal getRechargeTotalAmount() {
|
||||
return payOrderMapper.getRechargeTotalAmount();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void createPayOrder(PayOrderDO payOrderDO) {
|
||||
payOrderMapper.insert(payOrderDO);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user