mirror of
https://codeup.aliyun.com/67c68d4e484ca2f0a13ac3c1/ydc/jsowell-charger-web.git
synced 2026-07-12 10:07:59 +08:00
订单详情页新增退款信息
This commit is contained in:
@@ -11,6 +11,7 @@ import com.google.common.collect.Lists;
|
|||||||
import com.google.common.collect.Sets;
|
import com.google.common.collect.Sets;
|
||||||
import com.huifu.adapay.core.AdapayCore;
|
import com.huifu.adapay.core.AdapayCore;
|
||||||
import com.huifu.adapay.core.util.AdapaySign;
|
import com.huifu.adapay.core.util.AdapaySign;
|
||||||
|
import com.jsowell.adapay.response.PaymentReverseResponse;
|
||||||
import com.jsowell.common.constant.Constants;
|
import com.jsowell.common.constant.Constants;
|
||||||
import com.jsowell.common.core.domain.vo.AuthorizedDeptVO;
|
import com.jsowell.common.core.domain.vo.AuthorizedDeptVO;
|
||||||
import com.jsowell.common.core.domain.ykc.RealTimeMonitorData;
|
import com.jsowell.common.core.domain.ykc.RealTimeMonitorData;
|
||||||
@@ -474,6 +475,25 @@ public class OrderService {
|
|||||||
vo.setPayRecordList(payRecordList);
|
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);
|
OrderDetail orderDetail = orderBasicInfoService.getOrderDetailByOrderCode(orderCode);
|
||||||
if (orderDetail != null) {
|
if (orderDetail != null) {
|
||||||
|
|||||||
@@ -1,7 +1,6 @@
|
|||||||
package com.jsowell.common.util;
|
package com.jsowell.common.util;
|
||||||
|
|
||||||
import com.google.common.collect.Lists;
|
import com.google.common.collect.Lists;
|
||||||
import com.google.common.collect.Maps;
|
|
||||||
import lombok.AllArgsConstructor;
|
import lombok.AllArgsConstructor;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import lombok.NoArgsConstructor;
|
import lombok.NoArgsConstructor;
|
||||||
@@ -14,11 +13,7 @@ import java.lang.management.ManagementFactory;
|
|||||||
import java.text.DateFormat;
|
import java.text.DateFormat;
|
||||||
import java.text.ParseException;
|
import java.text.ParseException;
|
||||||
import java.text.SimpleDateFormat;
|
import java.text.SimpleDateFormat;
|
||||||
import java.time.Instant;
|
import java.time.*;
|
||||||
import java.time.LocalDate;
|
|
||||||
import java.time.LocalDateTime;
|
|
||||||
import java.time.LocalTime;
|
|
||||||
import java.time.ZoneId;
|
|
||||||
import java.time.format.DateTimeFormatter;
|
import java.time.format.DateTimeFormatter;
|
||||||
import java.time.temporal.ChronoUnit;
|
import java.time.temporal.ChronoUnit;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
@@ -973,4 +968,19 @@ public class DateUtils extends org.apache.commons.lang3.time.DateUtils {
|
|||||||
String lastDayOfMonth = sdf.format(cale.getTime());
|
String lastDayOfMonth = sdf.format(cale.getTime());
|
||||||
return lastDayOfMonth;
|
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;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
package com.jsowell.pile.service;
|
package com.jsowell.pile.service;
|
||||||
|
|
||||||
import com.huifu.adapay.core.exception.BaseAdaPayException;
|
import com.huifu.adapay.core.exception.BaseAdaPayException;
|
||||||
|
import com.jsowell.adapay.response.PaymentReverseResponse;
|
||||||
import com.jsowell.adapay.vo.OrderSettleResult;
|
import com.jsowell.adapay.vo.OrderSettleResult;
|
||||||
import com.jsowell.common.core.domain.ykc.RealTimeMonitorData;
|
import com.jsowell.common.core.domain.ykc.RealTimeMonitorData;
|
||||||
import com.jsowell.common.core.domain.ykc.TransactionRecordsData;
|
import com.jsowell.common.core.domain.ykc.TransactionRecordsData;
|
||||||
@@ -336,7 +337,9 @@ public interface IOrderBasicInfoService {
|
|||||||
*/
|
*/
|
||||||
void payOrderSuccessCallback(PayOrderSuccessCallbackDTO dto);
|
void payOrderSuccessCallback(PayOrderSuccessCallbackDTO dto);
|
||||||
|
|
||||||
/**
|
List<PaymentReverseResponse> queryOrderAdapayRefund(OrderBasicInfo orderBasicInfo);
|
||||||
|
|
||||||
|
/**
|
||||||
* 重试订单退款
|
* 重试订单退款
|
||||||
* @param orderCode 订单编号
|
* @param orderCode 订单编号
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -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 订单编号
|
* @param orderCode 订单编号
|
||||||
@@ -2788,6 +2815,9 @@ public class OrderBasicInfoServiceImpl implements IOrderBasicInfoService {
|
|||||||
throw new BusinessException("", "订单不是微信支付");
|
throw new BusinessException("", "订单不是微信支付");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
String memberId = orderBasicInfo.getMemberId();
|
||||||
|
BigDecimal refundAmount = orderBasicInfo.getRefundAmount();
|
||||||
|
|
||||||
// 查到原汇付支付id
|
// 查到原汇付支付id
|
||||||
AdapayCallbackRecord adapayCallbackRecord = adapayCallbackRecordService.selectByOrderCode(orderCode);
|
AdapayCallbackRecord adapayCallbackRecord = adapayCallbackRecordService.selectByOrderCode(orderCode);
|
||||||
if (adapayCallbackRecord == null) {
|
if (adapayCallbackRecord == null) {
|
||||||
@@ -2799,9 +2829,8 @@ public class OrderBasicInfoServiceImpl implements IOrderBasicInfoService {
|
|||||||
|
|
||||||
// 通过支付id查询退款记录
|
// 通过支付id查询退款记录
|
||||||
String paymentId = adapayCallbackRecord.getPaymentId();
|
String paymentId = adapayCallbackRecord.getPaymentId();
|
||||||
String memberId = orderBasicInfo.getMemberId();
|
|
||||||
BigDecimal refundAmount = orderBasicInfo.getRefundAmount();
|
List<PaymentReverseResponse> paymentReverses = queryOrderAdapayRefund(orderBasicInfo);
|
||||||
List<PaymentReverseResponse> paymentReverses = adapayMemberService.queryPaymentReverse(paymentId, wechatAppId);
|
|
||||||
if (CollectionUtils.isEmpty(paymentReverses)) {
|
if (CollectionUtils.isEmpty(paymentReverses)) {
|
||||||
// 如果没有退款过,重新执行一遍退款
|
// 如果没有退款过,重新执行一遍退款
|
||||||
PaymentReverseResponse response = adapayMemberService.createPaymentReverseRequest(
|
PaymentReverseResponse response = adapayMemberService.createPaymentReverseRequest(
|
||||||
|
|||||||
@@ -29,7 +29,7 @@ public class OrderDetailInfoVO {
|
|||||||
// 支付信息
|
// 支付信息
|
||||||
private List<PayRecord> payRecordList;
|
private List<PayRecord> payRecordList;
|
||||||
|
|
||||||
|
private List<OrderRefundInfo> orderRefundInfoList;
|
||||||
|
|
||||||
// 枪口监控信息
|
// 枪口监控信息
|
||||||
private List<PileMonitorData> realTimeMonitorDataList;
|
private List<PileMonitorData> realTimeMonitorDataList;
|
||||||
@@ -87,4 +87,13 @@ public class OrderDetailInfoVO {
|
|||||||
private String SOC; // soc
|
private String SOC; // soc
|
||||||
private String chargingTime; // 充电时长(分钟)
|
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; // 退款成功时间
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ charset = utf-8
|
|||||||
# 缩进风格,可选space、tab
|
# 缩进风格,可选space、tab
|
||||||
indent_style = space
|
indent_style = space
|
||||||
# 缩进的空格数
|
# 缩进的空格数
|
||||||
indent_size = 4
|
indent_size = 2
|
||||||
# 结尾换行符,可选lf、cr、crlf
|
# 结尾换行符,可选lf、cr、crlf
|
||||||
end_of_line = lf
|
end_of_line = lf
|
||||||
# 在文件结尾插入新行
|
# 在文件结尾插入新行
|
||||||
|
|||||||
@@ -154,7 +154,7 @@
|
|||||||
<div class="marginTop"></div>
|
<div class="marginTop"></div>
|
||||||
</el-card>
|
</el-card>
|
||||||
|
|
||||||
<!-- 支付信息-->
|
<!-- 支付信息-->
|
||||||
<el-card class="cardStyle">
|
<el-card class="cardStyle">
|
||||||
<h3>支付信息</h3>
|
<h3>支付信息</h3>
|
||||||
<el-table style="width: 100%" :data="payDetail" border>
|
<el-table style="width: 100%" :data="payDetail" border>
|
||||||
@@ -168,12 +168,25 @@
|
|||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column prop="payTime" label="支付时间" align="center"/>
|
<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-column prop="refundAmount" label="退款金额" align="center"/>
|
||||||
</el-table>
|
</el-table>
|
||||||
<div class="marginTop"></div>
|
<div class="marginTop"></div>
|
||||||
</el-card>
|
</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">
|
<el-card class="cardStyle">
|
||||||
<h3>设备信息</h3>
|
<h3>设备信息</h3>
|
||||||
@@ -232,6 +245,7 @@ export default {
|
|||||||
orderList: this.$route.params.orderCode,
|
orderList: this.$route.params.orderCode,
|
||||||
orderInfo: [],
|
orderInfo: [],
|
||||||
payDetail: [],
|
payDetail: [],
|
||||||
|
orderRefundInfoList: [],
|
||||||
userInfo: [],
|
userInfo: [],
|
||||||
obj: {},
|
obj: {},
|
||||||
orderDetail:[],
|
orderDetail:[],
|
||||||
@@ -304,6 +318,7 @@ export default {
|
|||||||
console.log("this.orderInfo", this.orderDetail);
|
console.log("this.orderInfo", this.orderDetail);
|
||||||
this.payDetail = data.payRecordList;
|
this.payDetail = data.payRecordList;
|
||||||
console.log("this.payDetail", this.payDetail);
|
console.log("this.payDetail", this.payDetail);
|
||||||
|
this.orderRefundInfoList = data.orderRefundInfoList;
|
||||||
this.userInfo = [data.memberInfo];
|
this.userInfo = [data.memberInfo];
|
||||||
console.log("this.userInfo", this.userInfo);
|
console.log("this.userInfo", this.userInfo);
|
||||||
this.pileIn = [data.pileInfo];
|
this.pileIn = [data.pileInfo];
|
||||||
|
|||||||
Reference in New Issue
Block a user