刷新退款结果

This commit is contained in:
墨大叔 2024-09-11 09:16:08 +08:00
parent d61b9e9391
commit 65754161b6
4 changed files with 94 additions and 30 deletions

View File

@ -82,4 +82,14 @@ public interface RefundService
* 创建退款并发起退款
*/
int createRefund(Refund refund);
/**
* 刷新退款结果
*/
int refreshResult(Long refundId);
/**
* 刷新退款结果
*/
int refreshResult(RefundVO refund);
}

View File

@ -218,4 +218,34 @@ public class RefundServiceImpl implements RefundService
return result == null ? 0 : result;
}
@Override
public int refreshResult(Long refundId) {
RefundVO refund = selectRefundByRefundId(refundId);
return this.refreshResult(refund);
}
@Override
public int refreshResult(RefundVO refund) {
if (refund == null) {
return 0;
}
if (!RefundStatus.REFUNDING.getStatus().equals(refund.getStatus())) {
return 0;
}
// 通联微信
if (TransactionBillPayType.TL_WX.getType().equals(refund.getChannelId())) {
Map<String, String> params = sybPayService.queryOrderByOutTradeNo(refund.getRefundNo());
String trxStatus = params.get("trxstatus");
if (SybTrxStatus.isSuccess(trxStatus)) {
// 退款成功
scheduledExecutorService.schedule(() -> {
this.handleRefundSuccess(refund.getRefundNo());
}, 0, TimeUnit.SECONDS);
}
}
return 1;
}
}

View File

@ -0,0 +1,50 @@
package com.ruoyi.task.refund;
import com.ruoyi.common.utils.collection.CollectionUtils;
import com.ruoyi.ss.refund.domain.RefundQuery;
import com.ruoyi.ss.refund.domain.RefundVO;
import com.ruoyi.ss.refund.domain.enums.RefundStatus;
import com.ruoyi.ss.refund.service.RefundService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.stereotype.Service;
import java.util.List;
/**
* @author wjh
* 2024/9/11
*/
@Component
@Slf4j
public class RefundTask {
@Autowired
private RefundService refundService;
// 刷新退款结果
public void refreshRefundResult() {
// 查询退款中的退款订单
RefundQuery query = new RefundQuery();
query.setStatus(RefundStatus.REFUNDING.getStatus());
List<RefundVO> list = refundService.selectRefundList(query);
if (CollectionUtils.isEmptyElement(list)) {
log.info("没有正在退款中的退款订单");
return;
}
// 处理退款订单
for (RefundVO refund : list) {
try {
log.info("退款订单处理:{}", refund.getRefundNo());
int i = refundService.refreshResult(refund);
log.info("处理结果:{}", i);
} catch (Exception e) {
log.error("退款订单{}处理失败:{}", refund.getRefundNo(), e.getMessage());
}
}
}
}

View File

@ -72,36 +72,10 @@ public class RefundController extends BaseController
return success(refundService.selectRefundByRefundId(refundId));
}
/**
* 新增退款订单
*/
@PreAuthorize("@ss.hasPermi('ss:refund:add')")
@Log(title = "退款订单", businessType = BusinessType.INSERT)
@PostMapping
public AjaxResult add(@RequestBody Refund refund)
@PreAuthorize("@ss.hasPermi('ss:refund:refresh')")
@PutMapping(value = "/refresh/{refundId}")
public AjaxResult refreshResult(@PathVariable("refundId") Long refundId)
{
return toAjax(refundService.insertRefund(refund));
}
/**
* 修改退款订单
*/
@PreAuthorize("@ss.hasPermi('ss:refund:edit')")
@Log(title = "退款订单", businessType = BusinessType.UPDATE)
@PutMapping
public AjaxResult edit(@RequestBody Refund refund)
{
return toAjax(refundService.updateRefund(refund));
}
/**
* 删除退款订单
*/
@PreAuthorize("@ss.hasPermi('ss:refund:remove')")
@Log(title = "退款订单", businessType = BusinessType.DELETE)
@DeleteMapping("/{refundIds}")
public AjaxResult remove(@PathVariable Long[] refundIds)
{
return toAjax(refundService.deleteRefundByRefundIds(refundIds));
return success(refundService.refreshResult(refundId));
}
}