Merge pull request 'zhangli-test' (#8) from zhangli-test into main
Reviewed-on: #8
This commit is contained in:
@ -295,27 +295,33 @@ 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());
|
||||||
refundRecord.setCompanyId(request.getCompanyId());
|
if (refundRecord == null) {
|
||||||
refundRecord.setOutTradeNo(request.getOutTradeNo());
|
refundRecord = new RefundRecord();
|
||||||
refundRecord.setOutRefundNo(request.getOutRefundNo());
|
refundRecord.setCompanyId(request.getCompanyId());
|
||||||
refundRecord.setTotalFee(totalFee);
|
refundRecord.setOutTradeNo(request.getOutTradeNo());
|
||||||
refundRecord.setRefundFee(new BigDecimal(request.getRefundFee()).divide(new BigDecimal(100))); // 转换为元
|
refundRecord.setOutRefundNo(request.getOutRefundNo());
|
||||||
refundRecord.setRefundDesc(request.getRefundDesc());
|
refundRecord.setTotalFee(totalFee);
|
||||||
refundRecord.setCreateTime(new Date());
|
refundRecord.setRefundFee(new BigDecimal(request.getRefundFee()).divide(new BigDecimal(100))); // 转换为元
|
||||||
refundRecord.setUpdateTime(new Date());
|
refundRecord.setRefundDesc(request.getRefundDesc());
|
||||||
|
refundRecord.setCreateTime(new Date());
|
||||||
|
refundRecord.setUpdateTime(new Date());
|
||||||
|
|
||||||
if ("SUCCESS".equals(result.get("result_code"))) {
|
if ("SUCCESS".equals(result.get("result_code"))) {
|
||||||
refundRecord.setRefundStatus("PROCESSING"); // 退款处理中
|
refundRecord.setRefundStatus("PROCESSING"); // 退款处理中
|
||||||
refundRecord.setRefundStatusDesc("退款处理中");
|
refundRecord.setRefundStatusDesc("退款处理中");
|
||||||
refundRecord.setRefundId(result.get("refund_id"));
|
refundRecord.setRefundId(result.get("refund_id"));
|
||||||
} else {
|
} else {
|
||||||
refundRecord.setRefundStatus("FAIL"); // 退款失败
|
refundRecord.setRefundStatus("FAIL"); // 退款失败
|
||||||
refundRecord.setRefundStatusDesc(result.get("err_code_des"));
|
refundRecord.setRefundStatusDesc(result.get("err_code_des"));
|
||||||
|
}
|
||||||
|
|
||||||
|
refundRecordMapper.insertRefundRecord(refundRecord);
|
||||||
|
logger.info("退款记录已保存,退款单号: {}", request.getOutRefundNo());
|
||||||
|
} else{
|
||||||
|
logger.info("退款记录已存在,退款单号: {}", request.getOutRefundNo());
|
||||||
}
|
}
|
||||||
|
|
||||||
refundRecordMapper.insertRefundRecord(refundRecord);
|
|
||||||
logger.info("退款记录已保存,退款单号: {}", request.getOutRefundNo());
|
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
logger.error("保存退款记录异常,退款单号: {}", request.getOutRefundNo(), e);
|
logger.error("保存退款记录异常,退款单号: {}", request.getOutRefundNo(), e);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -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,26 +453,28 @@ public class AlipayServiceImpl implements AlipayService {
|
|||||||
*/
|
*/
|
||||||
private void recordRefundInfo(AlipayRefundRequest request) {
|
private void recordRefundInfo(AlipayRefundRequest request) {
|
||||||
try {
|
try {
|
||||||
PaymentRecord paymentRecord = paymentRecordMapper.getPaymentRecordByOutTradeNo(request.getOutTradeNo());
|
RefundRecord refundRecord = refundRecordMapper.getRefundRecordByOutRefundNo(request.getOutRequestNo());
|
||||||
|
if(refundRecord == null){
|
||||||
|
PaymentRecord paymentRecord = paymentRecordMapper.getPaymentRecordByOutTradeNo(request.getOutTradeNo());
|
||||||
|
refundRecord = new RefundRecord();
|
||||||
|
refundRecord.setCompanyId(request.getCompanyId());
|
||||||
|
refundRecord.setOutTradeNo(request.getOutTradeNo());
|
||||||
|
refundRecord.setOutRefundNo(request.getOutRequestNo());
|
||||||
|
refundRecord.setTotalFee(paymentRecord.getTotalFee());
|
||||||
|
refundRecord.setRefundFee(new BigDecimal(request.getRefundAmount())); // 转换为元
|
||||||
|
refundRecord.setRefundDesc(request.getRefundReason());
|
||||||
|
refundRecord.setCreateTime(new Date());
|
||||||
|
refundRecord.setUpdateTime(new Date());
|
||||||
|
|
||||||
RefundRecord refundRecord = new RefundRecord();
|
refundRecord.setRefundStatus("PROCESSING"); // 退款处理中
|
||||||
refundRecord.setCompanyId(request.getCompanyId());
|
refundRecord.setRefundStatusDesc("退款处理中");
|
||||||
refundRecord.setOutTradeNo(request.getOutTradeNo());
|
refundRecord.setRefundId(request.getOutRequestNo());
|
||||||
refundRecord.setOutRefundNo(request.getOutRequestNo());
|
refundRecord.setPayChannel(PaymentRecord.PayChannel.ALIPAY.name());
|
||||||
refundRecord.setTotalFee(paymentRecord.getTotalFee());
|
refundRecordMapper.insertRefundRecord(refundRecord);
|
||||||
refundRecord.setRefundFee(new BigDecimal(request.getRefundAmount())); // 转换为元
|
log.info("退款记录已保存,退款单号: {}", request.getOutRequestNo());
|
||||||
refundRecord.setRefundDesc(request.getRefundReason());
|
}else {
|
||||||
refundRecord.setCreateTime(new Date());
|
log.info("退款记录已存在,退款单号: {}", request.getOutRequestNo());
|
||||||
refundRecord.setUpdateTime(new Date());
|
}
|
||||||
|
|
||||||
refundRecord.setRefundStatus("PROCESSING"); // 退款处理中
|
|
||||||
refundRecord.setRefundStatusDesc("退款处理中");
|
|
||||||
refundRecord.setRefundId(request.getOutRequestNo());
|
|
||||||
refundRecord.setPayChannel(PaymentRecord.PayChannel.ALIPAY.name());
|
|
||||||
|
|
||||||
|
|
||||||
refundRecordMapper.insertRefundRecord(refundRecord);
|
|
||||||
log.info("退款记录已保存,退款单号: {}", request.getOutRequestNo());
|
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
log.error("保存退款记录异常,退款单号: {}", request.getOutRequestNo(), e);
|
log.error("保存退款记录异常,退款单号: {}", request.getOutRequestNo(), e);
|
||||||
}
|
}
|
||||||
|
|||||||
57
src/main/java/com/sczx/pay/utils/ThreadPoolUtils.java
Normal file
57
src/main/java/com/sczx/pay/utils/ThreadPoolUtils.java
Normal 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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user