feat:第三方支付多次退款记录

This commit is contained in:
dzc committed 2025-05-30 12:29:55 +08:00
1 parent 54df322b0f
commit ba915abf9f
6 files changed
+75 -45

No files matched your search

@@ -35,10 +35,7 @@ import com.bsd.pjcloud.thirdparty.dto.pay.PayDetailDto;
import com.bsd.pjcloud.thirdparty.dto.pay.PayDto;
import com.bsd.pjcloud.thirdparty.dto.pay.RefundDto;
import com.bsd.pjcloud.thirdparty.dto.pay.WaterDto;
import com.bsd.pjcloud.thirdparty.vo.pay.PayBaseVo;
import com.bsd.pjcloud.thirdparty.vo.pay.PayVo;
import com.bsd.pjcloud.thirdparty.vo.pay.PayWaterVo;
import com.bsd.pjcloud.thirdparty.vo.pay.RefundVo;
import com.bsd.pjcloud.thirdparty.vo.pay.*;
import com.bsd.pjcloud.wallet.api.constant.WalletTypeEnum;
import com.bsd.pjcloud.wallet.api.entity.WalletManageEntity;
import com.bsd.pjcloud.wallet.api.feign.RemoteMchService;
@@ -285,22 +282,18 @@ public class HardThirdPayServiceImpl implements HardThirdPayService {
item.setName(v.getUsername());
item.setSignPhone(v.getUserMobile());
item.setPlatformOrderId(String.valueOf(v.getId()));
if (ObjectUtil.isNotEmpty(v.getAfterSaleId())) {
item.setPlatformRefundId(String.valueOf(v.getAfterSaleId()));
}
item.setThirdOrderId(v.getOrderNo());
if (ObjectUtil.isNotEmpty(v.getAfterSaleNo())) {
item.setThirdRefundId(String.valueOf(v.getAfterSaleNo()));
}
item.setOrderStatus(v.getOrderStatus());
item.setOrderPrice(v.getPayPrice());
item.setRefundPrice(v.getRefundPrice());
if (ObjectUtil.isNotEmpty(v.getPayTime())) {
item.setPayTime(LocalDateTimeUtil.format(v.getPayTime(), DatePattern.NORM_DATETIME_PATTERN));
}
if (ObjectUtil.isNotEmpty(v.getRefundTime())) {
item.setRefundTime(LocalDateTimeUtil.format(v.getRefundTime(), DatePattern.NORM_DATETIME_PATTERN));
}
// 查询退款列表
List<PayRefundVo> refundList = getRefundList(v.getId());
// 总退款金额
Integer reduce = refundList.stream().filter(i -> ObjectUtil.isNotEmpty(i.getRefundPrice())).map(i -> i.getRefundPrice()).reduce(0, Integer::sum);
item.setRefundList(refundList);
item.setRefundTotalPrice(reduce);
list.add(item);
}
}
@@ -338,22 +331,18 @@ public class HardThirdPayServiceImpl implements HardThirdPayService {
item.setName(order.getUsername());
item.setSignPhone(order.getUserMobile());
item.setPlatformOrderId(String.valueOf(order.getId()));
if (ObjectUtil.isNotEmpty(order.getAfterSaleId())) {
item.setPlatformRefundId(String.valueOf(order.getAfterSaleId()));
}
item.setThirdOrderId(order.getOrderNo());
if (ObjectUtil.isNotEmpty(order.getAfterSaleNo())) {
item.setThirdRefundId(String.valueOf(order.getAfterSaleNo()));
}
item.setOrderStatus(order.getOrderStatus());
item.setOrderPrice(order.getPayPrice());
item.setRefundPrice(order.getRefundPrice());
if (ObjectUtil.isNotEmpty(order.getPayTime())) {
item.setPayTime(LocalDateTimeUtil.format(order.getPayTime(), DatePattern.NORM_DATETIME_PATTERN));
}
if (ObjectUtil.isNotEmpty(order.getRefundTime())) {
item.setRefundTime(LocalDateTimeUtil.format(order.getRefundTime(), DatePattern.NORM_DATETIME_PATTERN));
}
// 查询退款列表
List<PayRefundVo> refundList = getRefundList(order.getId());
// 总退款金额
Integer reduce = refundList.stream().filter(i -> ObjectUtil.isNotEmpty(i.getRefundPrice())).map(i -> i.getRefundPrice()).reduce(0, Integer::sum);
item.setRefundList(refundList);
item.setRefundTotalPrice(reduce);
baseVo.set(ThirdPayVoStatusEnum.SUCCESS);
baseVo.setData(item);
return baseVo;
@@ -376,6 +365,26 @@ public class HardThirdPayServiceImpl implements HardThirdPayService {
return null;
}
// 查询退款列表
private List<PayRefundVo> getRefundList(Long orderId) {
List<HardAfterSaleEntity> afterList = hardAfterSaleService.list(new LambdaQueryWrapper<HardAfterSaleEntity>()
.eq(HardAfterSaleEntity::getOrderId, orderId)
.eq(HardAfterSaleEntity::getType, HardSaleTypeEnum.AFTER_SALE.getType())
.eq(HardAfterSaleEntity::getStatus, HardSaleStatusEnum.COMPLETE.getStatus())
);
if (ObjectUtil.isEmpty(afterList)) {
return null;
}
return afterList.stream().map(v -> {
PayRefundVo item = new PayRefundVo();
item.setPlatformRefundId(String.valueOf(v.getId()));
item.setThirdRefundId(v.getNo());
item.setRefundPrice(v.getRefundPrice());
item.setRefundTime(LocalDateTimeUtil.format(v.getRefundTime(), DatePattern.NORM_DATETIME_PATTERN));
return item;
}).toList();
}
private String getOrderType(ThirdPaySoureBizTypeEnum type) {
switch (type) {
case LB -> {
@@ -207,6 +207,7 @@
and s.no = #{dto.afterSaleNo}
</if>
</where>
group by a.id
order by a.create_time desc, a.user_id desc
</sql>
@@ -0,0 +1,28 @@
package com.bsd.pjcloud.thirdparty.vo.pay;
import lombok.Data;
@Data
public class PayRefundVo {
/**
* 平台退款id
*/
private String platformRefundId;
/**
* 第三方退款id
*/
private String thirdRefundId;
/**
* 退款金额(分)
*/
private Integer refundPrice;
/**
* 退款时间(yyyy-MM-dd HH:mm:ss格式)
*/
private String refundTime;
}
@@ -2,6 +2,8 @@ package com.bsd.pjcloud.thirdparty.vo.pay;
import lombok.Data;
import java.util.List;
@Data
public class PayWaterVo {
@@ -25,21 +27,11 @@ public class PayWaterVo {
*/
private String platformOrderId;
/**
* 平台退款id
*/
private String platformRefundId;
/**
* 第三方订单id
*/
private String thirdOrderId;
/**
* 第三方退款id
*/
private String thirdRefundId;
/**
* 订单状态
* 1创建订单(未支付)
@@ -53,19 +45,19 @@ public class PayWaterVo {
*/
private Integer orderPrice;
/**
* 退款金额(分)
*/
private Integer refundPrice;
/**
* 支付时间(yyyy-MM-dd HH:mm:ss格式)
*/
private String payTime;
/**
* 退款时间(yyyy-MM-dd HH:mm:ss格式)
* 总退款价格(分)
*/
private String refundTime;
private Integer refundTotalPrice;
/**
* 退款列表
*/
private List<PayRefundVo> refundList;
}
@@ -29,8 +29,8 @@ import java.util.Map;
@SpringBootTest(classes = ThirdPartyApp.class)
public class PayTest {
private final String baseUrl = "http://123.156.230.15:8089/api";
// private final String baseUrl = "http://127.0.0.1:9999";
// private final String baseUrl = "http://123.156.230.15:8089/api";
private final String baseUrl = "http://127.0.0.1:9999";
private final String walletInfoUrl = "/third/third-pay-api/user-wallet";
@@ -152,8 +152,8 @@ public class PayTest {
public void detail() throws Exception {
ThirdKeyManageEntity config = getLbConfig();
Map<String, Object> paramsMap = new HashMap<>();
paramsMap.put("thirdOrderId", "");
paramsMap.put("thirdRefundId", "10");
paramsMap.put("thirdOrderId", "1748517531534");
paramsMap.put("thirdRefundId", "");
String body = JSONUtil.toJsonStr(paramsMap);
// 发送请求
String res = HttpRequest.post(baseUrl + detailUrl).contentType("application/json").header(apiCountersign(body)).body(body).execute().body();