diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/third/HardThirdPayServiceImpl.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/third/HardThirdPayServiceImpl.java index 60e70ff26..3123c354a 100644 --- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/third/HardThirdPayServiceImpl.java +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/third/HardThirdPayServiceImpl.java @@ -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 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 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 getRefundList(Long orderId) { + List afterList = hardAfterSaleService.list(new LambdaQueryWrapper() + .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 -> { diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/resources/mapper/order/HardOrderMapper.xml b/pjcloud-hardware/pjcloud-hardware-biz/src/main/resources/mapper/order/HardOrderMapper.xml index 925b1ad82..d984a1298 100644 --- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/resources/mapper/order/HardOrderMapper.xml +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/resources/mapper/order/HardOrderMapper.xml @@ -207,6 +207,7 @@ and s.no = #{dto.afterSaleNo} + group by a.id order by a.create_time desc, a.user_id desc diff --git a/pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/vo/pay/PayRefundVo.java b/pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/vo/pay/PayRefundVo.java new file mode 100644 index 000000000..82dbc5a3f --- /dev/null +++ b/pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/vo/pay/PayRefundVo.java @@ -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; + +} diff --git a/pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/vo/pay/PayWaterVo.java b/pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/vo/pay/PayWaterVo.java index 572fc0264..70736683a 100644 --- a/pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/vo/pay/PayWaterVo.java +++ b/pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/vo/pay/PayWaterVo.java @@ -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 refundList; } diff --git a/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/resources/doc/第三方支付文档.wps b/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/resources/doc/第三方支付文档.wps index e0cf241cf..a8d465388 100644 Binary files a/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/resources/doc/第三方支付文档.wps and b/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/resources/doc/第三方支付文档.wps differ diff --git a/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/test/java/com/bsd/pjcloud/admin/PayTest.java b/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/test/java/com/bsd/pjcloud/admin/PayTest.java index d90252169..3ea4a9c5a 100644 --- a/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/test/java/com/bsd/pjcloud/admin/PayTest.java +++ b/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/test/java/com/bsd/pjcloud/admin/PayTest.java @@ -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 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();