diff --git a/jsowell-admin/src/main/java/com/jsowell/service/OrderService.java b/jsowell-admin/src/main/java/com/jsowell/service/OrderService.java index fb41a80ea..4b64fe8bd 100644 --- a/jsowell-admin/src/main/java/com/jsowell/service/OrderService.java +++ b/jsowell-admin/src/main/java/com/jsowell/service/OrderService.java @@ -11,6 +11,7 @@ import com.google.common.collect.Lists; import com.google.common.collect.Sets; import com.huifu.adapay.core.AdapayCore; import com.huifu.adapay.core.util.AdapaySign; +import com.jsowell.adapay.response.PaymentReverseResponse; import com.jsowell.common.constant.Constants; import com.jsowell.common.core.domain.vo.AuthorizedDeptVO; import com.jsowell.common.core.domain.ykc.RealTimeMonitorData; @@ -474,6 +475,25 @@ public class OrderService { vo.setPayRecordList(payRecordList); } + // 查询退款明细 + List orderRefundInfoList = Lists.newArrayList(); + List paymentReverseResponses = orderBasicInfoService.queryOrderAdapayRefund(orderBasicInfo); + if (CollectionUtils.isNotEmpty(paymentReverseResponses)) { + OrderDetailInfoVO.OrderRefundInfo refundInfo; + for (PaymentReverseResponse reverseResponse : paymentReverseResponses) { + refundInfo = new OrderDetailInfoVO.OrderRefundInfo(); + refundInfo.setReverseId(reverseResponse.getId()); + refundInfo.setPaymentId(reverseResponse.getPayment_id()); + refundInfo.setReverseAmt(reverseResponse.getReverse_amt()); + LocalDateTime createdTime = DateUtils.timestampToDatetime(Long.parseLong(reverseResponse.getCreated_time())); + refundInfo.setCreatedTime(DateUtils.formatDateTime(createdTime)); + LocalDateTime succeedTime = DateUtils.timestampToDatetime(Long.parseLong(reverseResponse.getSucceed_time())); + refundInfo.setSucceedTime(DateUtils.formatDateTime(succeedTime)); + orderRefundInfoList.add(refundInfo); + } + } + vo.setOrderRefundInfoList(orderRefundInfoList); + // 查订单明细 OrderDetail orderDetail = orderBasicInfoService.getOrderDetailByOrderCode(orderCode); if (orderDetail != null) { diff --git a/jsowell-common/src/main/java/com/jsowell/common/util/DateUtils.java b/jsowell-common/src/main/java/com/jsowell/common/util/DateUtils.java index 818648ba4..08f0f4f57 100644 --- a/jsowell-common/src/main/java/com/jsowell/common/util/DateUtils.java +++ b/jsowell-common/src/main/java/com/jsowell/common/util/DateUtils.java @@ -1,7 +1,6 @@ package com.jsowell.common.util; import com.google.common.collect.Lists; -import com.google.common.collect.Maps; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; @@ -14,11 +13,7 @@ import java.lang.management.ManagementFactory; import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDateFormat; -import java.time.Instant; -import java.time.LocalDate; -import java.time.LocalDateTime; -import java.time.LocalTime; -import java.time.ZoneId; +import java.time.*; import java.time.format.DateTimeFormatter; import java.time.temporal.ChronoUnit; import java.util.*; @@ -973,4 +968,19 @@ public class DateUtils extends org.apache.commons.lang3.time.DateUtils { String lastDayOfMonth = sdf.format(cale.getTime()); return lastDayOfMonth; } + + /** + * 时间戳 转 LocalDateTime + * @param timestamp 时间戳(单位:毫秒) + * @return + */ + public static LocalDateTime timestampToDatetime(long timestamp){ + Instant instant = Instant.ofEpochMilli(timestamp); + return LocalDateTime.ofInstant(instant, ZoneId.systemDefault()); + } + + public static long datetimeToTimestamp(LocalDateTime localDateTime){ + long timestamp = localDateTime.toInstant(ZoneOffset.of("+8")).toEpochMilli(); + return timestamp; + } } diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/service/IOrderBasicInfoService.java b/jsowell-pile/src/main/java/com/jsowell/pile/service/IOrderBasicInfoService.java index 2adafec94..44d89710e 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/service/IOrderBasicInfoService.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/service/IOrderBasicInfoService.java @@ -1,6 +1,7 @@ package com.jsowell.pile.service; import com.huifu.adapay.core.exception.BaseAdaPayException; +import com.jsowell.adapay.response.PaymentReverseResponse; import com.jsowell.adapay.vo.OrderSettleResult; import com.jsowell.common.core.domain.ykc.RealTimeMonitorData; import com.jsowell.common.core.domain.ykc.TransactionRecordsData; @@ -336,7 +337,9 @@ public interface IOrderBasicInfoService { */ void payOrderSuccessCallback(PayOrderSuccessCallbackDTO dto); - /** + List queryOrderAdapayRefund(OrderBasicInfo orderBasicInfo); + + /** * 重试订单退款 * @param orderCode 订单编号 */ diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/OrderBasicInfoServiceImpl.java b/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/OrderBasicInfoServiceImpl.java index 83a1dfb51..4625779d7 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/OrderBasicInfoServiceImpl.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/OrderBasicInfoServiceImpl.java @@ -2766,6 +2766,33 @@ public class OrderBasicInfoServiceImpl implements IOrderBasicInfoService { } } + /** + * 查询订单推款记录 + * @param orderBasicInfo + * @return + */ + @Override + public List queryOrderAdapayRefund(OrderBasicInfo orderBasicInfo) { + List resultList = Lists.newArrayList(); + // 查到原汇付支付id + AdapayCallbackRecord adapayCallbackRecord = adapayCallbackRecordService.selectByOrderCode(orderBasicInfo.getOrderCode()); + if (adapayCallbackRecord == null) { + return resultList; + } + + // 获取appId + String wechatAppId = pileMerchantInfoService.queryAppIdByMerchantId(orderBasicInfo.getMerchantId()); + + // 通过支付id查询退款记录 + String paymentId = adapayCallbackRecord.getPaymentId(); + try { + resultList = adapayMemberService.queryPaymentReverse(paymentId, wechatAppId); + } catch (BaseAdaPayException e) { + logger.error("查询支付撤销对象发生异常", e); + } + return resultList; + } + /** * 重试订单退款 * @param orderCode 订单编号 @@ -2788,6 +2815,9 @@ public class OrderBasicInfoServiceImpl implements IOrderBasicInfoService { throw new BusinessException("", "订单不是微信支付"); } + String memberId = orderBasicInfo.getMemberId(); + BigDecimal refundAmount = orderBasicInfo.getRefundAmount(); + // 查到原汇付支付id AdapayCallbackRecord adapayCallbackRecord = adapayCallbackRecordService.selectByOrderCode(orderCode); if (adapayCallbackRecord == null) { @@ -2799,9 +2829,8 @@ public class OrderBasicInfoServiceImpl implements IOrderBasicInfoService { // 通过支付id查询退款记录 String paymentId = adapayCallbackRecord.getPaymentId(); - String memberId = orderBasicInfo.getMemberId(); - BigDecimal refundAmount = orderBasicInfo.getRefundAmount(); - List paymentReverses = adapayMemberService.queryPaymentReverse(paymentId, wechatAppId); + + List paymentReverses = queryOrderAdapayRefund(orderBasicInfo); if (CollectionUtils.isEmpty(paymentReverses)) { // 如果没有退款过,重新执行一遍退款 PaymentReverseResponse response = adapayMemberService.createPaymentReverseRequest( diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/vo/web/OrderDetailInfoVO.java b/jsowell-pile/src/main/java/com/jsowell/pile/vo/web/OrderDetailInfoVO.java index e16b221a8..16f55406a 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/vo/web/OrderDetailInfoVO.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/vo/web/OrderDetailInfoVO.java @@ -29,7 +29,7 @@ public class OrderDetailInfoVO { // 支付信息 private List payRecordList; - + private List orderRefundInfoList; // 枪口监控信息 private List realTimeMonitorDataList; @@ -87,4 +87,13 @@ public class OrderDetailInfoVO { private String SOC; // soc private String chargingTime; // 充电时长(分钟) } + + @Data + public static class OrderRefundInfo{ + private String paymentId; // 支付交易对象id + private String reverseId; // 支付撤销对象id + private String reverseAmt; // 退款金额 + private String createdTime; // 退款创建时间 + private String succeedTime; // 退款成功时间 + } } diff --git a/jsowell-ui/.editorconfig b/jsowell-ui/.editorconfig index 412d608c3..7034f9bf3 100644 --- a/jsowell-ui/.editorconfig +++ b/jsowell-ui/.editorconfig @@ -8,7 +8,7 @@ charset = utf-8 # 缩进风格,可选space、tab indent_style = space # 缩进的空格数 -indent_size = 4 +indent_size = 2 # 结尾换行符,可选lf、cr、crlf end_of_line = lf # 在文件结尾插入新行 diff --git a/jsowell-ui/src/views/order/order/orderDetail.vue b/jsowell-ui/src/views/order/order/orderDetail.vue index c20bdf423..ba339a4fd 100644 --- a/jsowell-ui/src/views/order/order/orderDetail.vue +++ b/jsowell-ui/src/views/order/order/orderDetail.vue @@ -154,7 +154,7 @@
- +

支付信息

@@ -168,12 +168,25 @@ - +
+ + +

退款信息

+ + + + + + + +
+
+

设备信息

@@ -232,6 +245,7 @@ export default { orderList: this.$route.params.orderCode, orderInfo: [], payDetail: [], + orderRefundInfoList: [], userInfo: [], obj: {}, orderDetail:[], @@ -304,6 +318,7 @@ export default { console.log("this.orderInfo", this.orderDetail); this.payDetail = data.payRecordList; console.log("this.payDetail", this.payDetail); + this.orderRefundInfoList = data.orderRefundInfoList; this.userInfo = [data.memberInfo]; console.log("this.userInfo", this.userInfo); this.pileIn = [data.pileInfo];