mirror of
https://codeup.aliyun.com/67c68d4e484ca2f0a13ac3c1/ydc/jsowell-charger-web.git
synced 2026-05-15 07:18:31 +08:00
订单退款时校验已经退款金额
This commit is contained in:
@@ -477,27 +477,7 @@ public class OrderService {
|
|||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
private List<OrderDetailInfoVO.OrderRefundInfo> getOrderRefundInfoList(OrderBasicInfo orderBasicInfo) {
|
private List<OrderDetailInfoVO.OrderRefundInfo> getOrderRefundInfoList(OrderBasicInfo orderBasicInfo) {
|
||||||
List<OrderDetailInfoVO.OrderRefundInfo> orderRefundInfoList = Lists.newArrayList();
|
return orderBasicInfoService.getOrderRefundInfoList(orderBasicInfo);
|
||||||
OrderDetailInfoVO.OrderRefundInfo refundInfo;
|
|
||||||
if (OrderPayModeEnum.PAYMENT_OF_BALANCE.getValue().equals(orderBasicInfo.getPayMode())) {
|
|
||||||
// 查新member_wallet_log订单 进账记录
|
|
||||||
List<MemberWalletLog> walletLogs = memberWalletLogService.getOrderRecord(orderBasicInfo.getOrderCode(), MemberWalletEnum.TYPE_IN.getValue());
|
|
||||||
if (CollectionUtils.isNotEmpty(walletLogs)) {
|
|
||||||
for (MemberWalletLog memberWalletLog : walletLogs) {
|
|
||||||
refundInfo = new OrderDetailInfoVO.OrderRefundInfo();
|
|
||||||
refundInfo.setReverseAmt(memberWalletLog.getAmount().abs().toString());
|
|
||||||
refundInfo.setSucceedTime(DateUtils.formatDateTime(memberWalletLog.getCreateTime()));
|
|
||||||
refundInfo.setCreatedTime(DateUtils.formatDateTime(memberWalletLog.getCreateTime()));
|
|
||||||
orderRefundInfoList.add(refundInfo);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} else if (OrderPayModeEnum.PAYMENT_OF_WECHATPAY.getValue().equals(orderBasicInfo.getPayMode())) {
|
|
||||||
// 新逻辑
|
|
||||||
String mode = pileMerchantInfoService.getDelayModeByMerchantId(orderBasicInfo.getMerchantId());
|
|
||||||
AbstractProgramLogic orderLogic = ProgramLogicFactory.getProgramLogic(mode);
|
|
||||||
orderRefundInfoList = orderLogic.getOrderRefundInfoList(orderBasicInfo);
|
|
||||||
}
|
|
||||||
return orderRefundInfoList;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -13,10 +13,12 @@ import com.jsowell.pile.vo.uniapp.PersonPileConnectorSumInfoVO;
|
|||||||
import com.jsowell.pile.vo.uniapp.SendMessageVO;
|
import com.jsowell.pile.vo.uniapp.SendMessageVO;
|
||||||
import com.jsowell.pile.vo.web.*;
|
import com.jsowell.pile.vo.web.*;
|
||||||
import org.apache.ibatis.annotations.Param;
|
import org.apache.ibatis.annotations.Param;
|
||||||
|
import org.springframework.stereotype.Repository;
|
||||||
|
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
@Repository
|
||||||
public interface OrderBasicInfoMapper {
|
public interface OrderBasicInfoMapper {
|
||||||
/**
|
/**
|
||||||
* delete by primary key
|
* delete by primary key
|
||||||
|
|||||||
@@ -387,4 +387,18 @@ public interface OrderBasicInfoService{
|
|||||||
List<OrderVO> getOrderInfoByNXJT(NXJTQueryOrdersInfoDTO dto);
|
List<OrderVO> getOrderInfoByNXJT(NXJTQueryOrdersInfoDTO dto);
|
||||||
|
|
||||||
List<OrderBasicInfo> queryRepayOrder(String memberId);
|
List<OrderBasicInfo> queryRepayOrder(String memberId);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 通过orderCode获取退款明细列表
|
||||||
|
* @param orderCode
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
List<OrderDetailInfoVO.OrderRefundInfo> getOrderRefundInfoList(String orderCode);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取退款明细列表
|
||||||
|
* @param orderBasicInfo
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
List<OrderDetailInfoVO.OrderRefundInfo> getOrderRefundInfoList(OrderBasicInfo orderBasicInfo);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -65,6 +65,7 @@ import org.springframework.beans.factory.annotation.Autowired;
|
|||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
|
||||||
|
import javax.annotation.Resource;
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
import java.math.RoundingMode;
|
import java.math.RoundingMode;
|
||||||
import java.text.ParseException;
|
import java.text.ParseException;
|
||||||
@@ -88,6 +89,9 @@ public class OrderBasicInfoServiceImpl implements OrderBasicInfoService {
|
|||||||
@Autowired
|
@Autowired
|
||||||
private OrderBasicInfoMapper orderBasicInfoMapper;
|
private OrderBasicInfoMapper orderBasicInfoMapper;
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private MemberWalletLogService memberWalletLogService;
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private TransactionService transactionService;
|
private TransactionService transactionService;
|
||||||
|
|
||||||
@@ -3598,6 +3602,40 @@ public class OrderBasicInfoServiceImpl implements OrderBasicInfoService {
|
|||||||
return orderBasicInfoMapper.queryRepayOrder(memberId);
|
return orderBasicInfoMapper.queryRepayOrder(memberId);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<OrderDetailInfoVO.OrderRefundInfo> getOrderRefundInfoList(String orderCode) {
|
||||||
|
OrderBasicInfo orderBasicInfo = getOrderInfoByOrderCode(orderCode);
|
||||||
|
return getOrderRefundInfoList(orderBasicInfo);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<OrderDetailInfoVO.OrderRefundInfo> getOrderRefundInfoList(OrderBasicInfo orderBasicInfo) {
|
||||||
|
if (orderBasicInfo == null) {
|
||||||
|
return Lists.newArrayList();
|
||||||
|
}
|
||||||
|
List<OrderDetailInfoVO.OrderRefundInfo> orderRefundInfoList = Lists.newArrayList();
|
||||||
|
OrderDetailInfoVO.OrderRefundInfo refundInfo;
|
||||||
|
if (OrderPayModeEnum.PAYMENT_OF_BALANCE.getValue().equals(orderBasicInfo.getPayMode())) {
|
||||||
|
// 查新member_wallet_log订单 进账记录
|
||||||
|
List<MemberWalletLog> walletLogs = memberWalletLogService.getOrderRecord(orderBasicInfo.getOrderCode(), MemberWalletEnum.TYPE_IN.getValue());
|
||||||
|
if (CollectionUtils.isNotEmpty(walletLogs)) {
|
||||||
|
for (MemberWalletLog memberWalletLog : walletLogs) {
|
||||||
|
refundInfo = new OrderDetailInfoVO.OrderRefundInfo();
|
||||||
|
refundInfo.setReverseAmt(memberWalletLog.getAmount().abs().toString());
|
||||||
|
refundInfo.setSucceedTime(DateUtils.formatDateTime(memberWalletLog.getCreateTime()));
|
||||||
|
refundInfo.setCreatedTime(DateUtils.formatDateTime(memberWalletLog.getCreateTime()));
|
||||||
|
orderRefundInfoList.add(refundInfo);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else if (OrderPayModeEnum.PAYMENT_OF_WECHATPAY.getValue().equals(orderBasicInfo.getPayMode())) {
|
||||||
|
// 新逻辑
|
||||||
|
String mode = pileMerchantInfoService.getDelayModeByMerchantId(orderBasicInfo.getMerchantId());
|
||||||
|
AbstractProgramLogic orderLogic = ProgramLogicFactory.getProgramLogic(mode);
|
||||||
|
orderRefundInfoList = orderLogic.getOrderRefundInfoList(orderBasicInfo);
|
||||||
|
}
|
||||||
|
return orderRefundInfoList;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int deleteByPrimaryKey(Integer id) {
|
public int deleteByPrimaryKey(Integer id) {
|
||||||
return orderBasicInfoMapper.deleteByPrimaryKey(id);
|
return orderBasicInfoMapper.deleteByPrimaryKey(id);
|
||||||
|
|||||||
@@ -416,8 +416,28 @@ public class DelayMerchantProgramLogic extends AbstractProgramLogic {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 执行订单退款
|
||||||
|
* @param orderBasicInfo
|
||||||
|
*/
|
||||||
@Override
|
@Override
|
||||||
public void refundOrder(OrderBasicInfo orderBasicInfo) {
|
public void refundOrder(OrderBasicInfo orderBasicInfo) {
|
||||||
|
BigDecimal refundAmount = orderBasicInfo.getRefundAmount();
|
||||||
|
// 查询该笔订单的退款记录
|
||||||
|
List<OrderDetailInfoVO.OrderRefundInfo> orderRefundInfoList = orderBasicInfoService.getOrderRefundInfoList(orderBasicInfo);
|
||||||
|
if (CollectionUtils.isNotEmpty(orderRefundInfoList)) {
|
||||||
|
// 已退款金额
|
||||||
|
BigDecimal refunded = BigDecimal.ZERO;
|
||||||
|
for (OrderDetailInfoVO.OrderRefundInfo orderRefundInfo : orderRefundInfoList) {
|
||||||
|
BigDecimal reverseAmt = new BigDecimal(orderRefundInfo.getReverseAmt());
|
||||||
|
refunded = refunded.add(reverseAmt);
|
||||||
|
}
|
||||||
|
if (refunded.compareTo(refundAmount) >= 0) {
|
||||||
|
logger.info("执行订单退款-校验已退款金额,orderCode:{}, 应退款金额:{}, 已经退款金额:{}, 不再执行退款", orderBasicInfo.getOrderCode(), refundAmount, refunded);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
String payMode = orderBasicInfo.getPayMode();
|
String payMode = orderBasicInfo.getPayMode();
|
||||||
if (StringUtils.equals(payMode, OrderPayModeEnum.PAYMENT_OF_BALANCE.getValue())) {
|
if (StringUtils.equals(payMode, OrderPayModeEnum.PAYMENT_OF_BALANCE.getValue())) {
|
||||||
|
|||||||
Reference in New Issue
Block a user