退款查询

This commit is contained in:
2025-09-17 23:18:51 +08:00
parent ced47198b4
commit d11cc36ab2
3 changed files with 114 additions and 38 deletions

View File

@ -294,7 +294,9 @@ public class WechatPayService {
*/ */
private void recordRefundInfo(RefundRequest request, CompanyWechatConfig companyConfig, Map<String, String> result,BigDecimal totalFee) { private void recordRefundInfo(RefundRequest request, CompanyWechatConfig companyConfig, Map<String, String> result,BigDecimal totalFee) {
try { try {
RefundRecord refundRecord = new RefundRecord(); RefundRecord refundRecord = refundRecordMapper.getRefundRecordByOutRefundNo(request.getOutRefundNo());
if (refundRecord == null) {
refundRecord = new RefundRecord();
refundRecord.setCompanyId(request.getCompanyId()); refundRecord.setCompanyId(request.getCompanyId());
refundRecord.setOutTradeNo(request.getOutTradeNo()); refundRecord.setOutTradeNo(request.getOutTradeNo());
refundRecord.setOutRefundNo(request.getOutRefundNo()); refundRecord.setOutRefundNo(request.getOutRefundNo());
@ -315,6 +317,10 @@ public class WechatPayService {
refundRecordMapper.insertRefundRecord(refundRecord); refundRecordMapper.insertRefundRecord(refundRecord);
logger.info("退款记录已保存,退款单号: {}", request.getOutRefundNo()); logger.info("退款记录已保存,退款单号: {}", request.getOutRefundNo());
} else{
logger.info("退款记录已存在,退款单号: {}", request.getOutRefundNo());
}
} catch (Exception e) { } catch (Exception e) {
logger.error("保存退款记录异常,退款单号: {}", request.getOutRefundNo(), e); logger.error("保存退款记录异常,退款单号: {}", request.getOutRefundNo(), e);
} }

View File

@ -15,6 +15,7 @@ import com.sczx.pay.mapper.PaymentRecordMapper;
import com.sczx.pay.mapper.RefundRecordMapper; import com.sczx.pay.mapper.RefundRecordMapper;
import com.sczx.pay.service.AlipayService; import com.sczx.pay.service.AlipayService;
import com.sczx.pay.utils.AlipaySdkUtil; import com.sczx.pay.utils.AlipaySdkUtil;
import com.sczx.pay.utils.ThreadPoolUtils;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
@ -277,6 +278,16 @@ public class AlipayServiceImpl implements AlipayService {
response.setSuccess(true); response.setSuccess(true);
response.setCode("SUCCESS"); response.setCode("SUCCESS");
response.setMessage("退款成功"); response.setMessage("退款成功");
ThreadPoolUtils.getThreadPool().execute(() -> {
refundRecordMapper.updateRefundStatus(
refundQueryRequest.getOutRequestNo(),
refundQueryResponse.getRefundStatus(),
refundQueryResponse.getRefundReason(),
refundQueryRequest.getOutRequestNo(),
new Date(),// 退款成功时间
new Date() // 更新时间
);
});
} else { } else {
response.setSuccess(false); response.setSuccess(false);
response.setCode("FAIL"); response.setCode("FAIL");
@ -395,7 +406,7 @@ public class AlipayServiceImpl implements AlipayService {
refundStatus, refundStatus,
statusDesc, statusDesc,
outRequestNo, outRequestNo,
"SUCCESS".equals(refundStatus) ? new Date() : null, // 退款成功时间 "REFUND_SUCCESS".equals(refundStatus) ? new Date() : null, // 退款成功时间
new Date() // 更新时间 new Date() // 更新时间
); );
@ -442,9 +453,10 @@ public class AlipayServiceImpl implements AlipayService {
*/ */
private void recordRefundInfo(AlipayRefundRequest request) { private void recordRefundInfo(AlipayRefundRequest request) {
try { try {
RefundRecord refundRecord = refundRecordMapper.getRefundRecordByOutRefundNo(request.getOutRequestNo());
if(refundRecord == null){
PaymentRecord paymentRecord = paymentRecordMapper.getPaymentRecordByOutTradeNo(request.getOutTradeNo()); PaymentRecord paymentRecord = paymentRecordMapper.getPaymentRecordByOutTradeNo(request.getOutTradeNo());
refundRecord = new RefundRecord();
RefundRecord refundRecord = new RefundRecord();
refundRecord.setCompanyId(request.getCompanyId()); refundRecord.setCompanyId(request.getCompanyId());
refundRecord.setOutTradeNo(request.getOutTradeNo()); refundRecord.setOutTradeNo(request.getOutTradeNo());
refundRecord.setOutRefundNo(request.getOutRequestNo()); refundRecord.setOutRefundNo(request.getOutRequestNo());
@ -458,10 +470,11 @@ public class AlipayServiceImpl implements AlipayService {
refundRecord.setRefundStatusDesc("退款处理中"); refundRecord.setRefundStatusDesc("退款处理中");
refundRecord.setRefundId(request.getOutRequestNo()); refundRecord.setRefundId(request.getOutRequestNo());
refundRecord.setPayChannel(PaymentRecord.PayChannel.ALIPAY.name()); refundRecord.setPayChannel(PaymentRecord.PayChannel.ALIPAY.name());
refundRecordMapper.insertRefundRecord(refundRecord); refundRecordMapper.insertRefundRecord(refundRecord);
log.info("退款记录已保存,退款单号: {}", request.getOutRequestNo()); log.info("退款记录已保存,退款单号: {}", request.getOutRequestNo());
}else {
log.info("退款记录已存在,退款单号: {}", request.getOutRequestNo());
}
} catch (Exception e) { } catch (Exception e) {
log.error("保存退款记录异常,退款单号: {}", request.getOutRequestNo(), e); log.error("保存退款记录异常,退款单号: {}", request.getOutRequestNo(), e);
} }

View File

@ -0,0 +1,57 @@
package com.sczx.pay.utils;
import org.springframework.stereotype.Service;
import java.util.concurrent.*;
/**
* 线程池工具类,用于执行异步任务
* Created by zengji on 2019/5/13.
*
*/
@Service
public class ThreadPoolUtils {
public static ThreadPoolExecutor threadPool;
//核心线程大小
private static int corePoolSize=120;
//最大线程个数
private static int maximumPoolSize=180;
//空闲线程存活时间
private static long keepAliveTime=300;
//队列容量
private static int capacity=200;
/**
* 无返回值
*/
public static void execute(Runnable runnable){
getThreadPool().execute(runnable);
}
/**
* 有返回值
*/
public static <T> Future<T> submit(Callable<T> callable){
return getThreadPool().submit(callable);
}
/**
* dcs获取线程池
* @return 线程池对象
*/
public static ThreadPoolExecutor getThreadPool() {
if (threadPool != null) {
return threadPool;
} else {
synchronized (ThreadPoolUtils.class) {
if (threadPool == null) {
threadPool = new ThreadPoolExecutor(corePoolSize, maximumPoolSize, keepAliveTime, TimeUnit.SECONDS,
new LinkedBlockingQueue<>(capacity), new ThreadPoolExecutor.CallerRunsPolicy());
}
return threadPool;
}
}
}
}