订单详情页新增退款信息

This commit is contained in:
2023-08-17 16:10:31 +08:00
parent ba69c3ab96
commit 4766740427
7 changed files with 100 additions and 14 deletions

View File

@@ -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<OrderDetailInfoVO.OrderRefundInfo> orderRefundInfoList = Lists.newArrayList();
List<PaymentReverseResponse> 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) {

View File

@@ -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;
}
}

View File

@@ -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<PaymentReverseResponse> queryOrderAdapayRefund(OrderBasicInfo orderBasicInfo);
/**
* 重试订单退款
* @param orderCode 订单编号
*/

View File

@@ -2766,6 +2766,33 @@ public class OrderBasicInfoServiceImpl implements IOrderBasicInfoService {
}
}
/**
* 查询订单推款记录
* @param orderBasicInfo
* @return
*/
@Override
public List<PaymentReverseResponse> queryOrderAdapayRefund(OrderBasicInfo orderBasicInfo) {
List<PaymentReverseResponse> 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<PaymentReverseResponse> paymentReverses = adapayMemberService.queryPaymentReverse(paymentId, wechatAppId);
List<PaymentReverseResponse> paymentReverses = queryOrderAdapayRefund(orderBasicInfo);
if (CollectionUtils.isEmpty(paymentReverses)) {
// 如果没有退款过,重新执行一遍退款
PaymentReverseResponse response = adapayMemberService.createPaymentReverseRequest(

View File

@@ -29,7 +29,7 @@ public class OrderDetailInfoVO {
// 支付信息
private List<PayRecord> payRecordList;
private List<OrderRefundInfo> orderRefundInfoList;
// 枪口监控信息
private List<PileMonitorData> 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; // 退款成功时间
}
}

View File

@@ -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
# 在文件结尾插入新行

View File

@@ -154,7 +154,7 @@
<div class="marginTop"></div>
</el-card>
<!-- 支付信息-->
<!-- 支付信息-->
<el-card class="cardStyle">
<h3>支付信息</h3>
<el-table style="width: 100%" :data="payDetail" border>
@@ -168,12 +168,25 @@
</template>
</el-table-column>
<el-table-column prop="payTime" label="支付时间" align="center"/>
<el-table-column prop="outTradeNo" label="商务单号" align="center"/>
<el-table-column prop="outTradeNo" label="支付流水号" align="center"/>
<el-table-column prop="refundAmount" label="退款金额" align="center"/>
</el-table>
<div class="marginTop"></div>
</el-card>
<!-- 退款信息 -->
<el-card class="cardStyle">
<h3>退款信息</h3>
<el-table style="width: 100%" :data="orderRefundInfoList" border>
<el-table-column prop="paymentId" label="支付流水号" align="center"/>
<el-table-column prop="reverseId" label="退款流水号" align="center"/>
<el-table-column prop="reverseAmt" label="退款金额" align="center"/>
<el-table-column prop="createdTime" label="退款申请时间" align="center"/>
<el-table-column prop="succeedTime" label="退款成功时间" align="center"/>
</el-table>
<div class="marginTop"></div>
</el-card>
<!-- 设备信息 -->
<el-card class="cardStyle">
<h3>设备信息</h3>
@@ -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];