新增退款申请用户交易记录接口

This commit is contained in:
dzl 2025-05-21 17:08:58 +08:00
parent bba222e730
commit d10edde2cf
5 changed files with 129 additions and 64 deletions

View File

@ -5,6 +5,7 @@ import com.alibaba.fastjson2.JSONObject;
import com.cdzy.common.enums.Code;
import com.cdzy.common.model.JsonResult;
import com.cdzy.payment.model.dto.*;
import com.cdzy.payment.service.EbikeRefundService;
import com.cdzy.payment.service.WxPayService;
import com.ebike.feign.clients.StaffFeignClient;
import com.ebike.feign.model.rsp.StaffFeign;
@ -32,6 +33,8 @@ public class EbikeWxPaymentController {
private WxPayService wxPayService;
@Resource
private StaffFeignClient staffFeignClient;
@Resource
private EbikeRefundService ebikeRefundService;
/**
* 微信支付下单
@ -172,7 +175,7 @@ public class EbikeWxPaymentController {
}
/**
* 退款申请
* 退款申请用户详情
*
* @param refundId 退款id
* @return
@ -180,6 +183,18 @@ public class EbikeWxPaymentController {
@PostMapping("/refundApplyUserDetail/{refundId}")
public JsonResult<?> refundApplyUserDetail(@PathVariable(name = "refundId") String refundId) {
UserBasicInformation r = wxPayService.queryRefundUserInfoById(refundId);
return r == null ? JsonResult.failed(String.format("退款单号{%s}查询订单详情失败", refundId)) : JsonResult.success(r);
return r == null ? JsonResult.failed(String.format("退款单号{%s}查询用户详情失败", refundId)) : JsonResult.success(r);
}
/**
* 退款申请用户交易记录
*
* @param reqTradeRecordDto
* @return
*/
@PostMapping("/refundApplyTradeRecord")
public JsonResult<?> refundApplyTradeRecord(@RequestBody ReqTradeRecordDto reqTradeRecordDto) {
Page<TransactionRecord> list = ebikeRefundService.queryRefundTradeRecordById(reqTradeRecordDto);
return JsonResult.success(list);
}
}

View File

@ -0,0 +1,26 @@
package com.cdzy.payment.model.dto;
import com.cdzy.common.model.PageParam;
import jakarta.validation.constraints.NotNull;
import lombok.Data;
/**
* @author:Ding
* @ClassName:ReqTradeRecordDto
* @Package:com.cdzy.payment.model.dto.ReqTradeRecordDto
* @Description:交易记录查询dto
* @CreateDate:2025年05月21日
* @Version:V1.0
**/
@Data
public class ReqTradeRecordDto {
private String refundId;
/**
* 分页参数
*/
@NotNull(message = "分页参数不能为空")
private PageParam pageParam;
}

View File

@ -86,4 +86,12 @@ public interface EbikeRefundService extends IService<EbikeRefund> {
* @return 退款详情
*/
ResOrderInfoDto getRefundOrderDetail(String refundId);
/**
* 退款申请交易记录
*
* @param reqTradeRecordDto 退款id
* @return
*/
Page<TransactionRecord> queryRefundTradeRecordById(ReqTradeRecordDto reqTradeRecordDto);
}

View File

@ -243,4 +243,15 @@ public class EbikeRefundServiceImpl extends ServiceImpl<EbikeRefundMapper, Ebike
.where(EBIKE_REFUND.REFUND_ID.eq(refundId));
return getOneAs(query, ResOrderInfoDto.class);
}
@Override
public Page<TransactionRecord> queryRefundTradeRecordById(ReqTradeRecordDto reqTradeRecordDto) {
QueryWrapper query = QueryWrapper.create()
.select(EBIKE_PAYMENT.TOTAL.as("amount"), EBIKE_PAYMENT.CREATE_TIME)
.leftJoin(EBIKE_PAYMENT).on(EBIKE_PAYMENT.ORDER_ID.eq(EBIKE_REFUND.ORDER_ID))
.where(EBIKE_REFUND.REFUND_ID.eq(reqTradeRecordDto.getRefundId()));
Page<TransactionRecord> page = reqTradeRecordDto.getPageParam().getPage();
return pageAs(page, query, TransactionRecord.class);
}
}

View File

@ -21,6 +21,7 @@ import com.ebike.feign.model.rsp.DetailDto;
import com.ebike.feign.model.rsp.EbikePaymentDto;
import com.ebike.feign.model.rsp.PayDetailDto;
import com.mybatisflex.core.paginate.Page;
import com.mybatisflex.core.query.QueryWrapper;
import com.wechat.pay.java.core.Config;
import com.wechat.pay.java.core.cipher.Signer;
import com.wechat.pay.java.core.exception.HttpException;
@ -48,6 +49,8 @@ import java.time.*;
import java.util.ArrayList;
import java.util.List;
import static com.cdzy.payment.model.entity.table.EbikePaymentTableDef.EBIKE_PAYMENT;
import static com.cdzy.payment.model.entity.table.EbikeRefundTableDef.EBIKE_REFUND;
import static com.wechat.pay.java.core.http.Constant.*;
import static com.wechat.pay.java.core.http.Constant.WECHAT_PAY_SERIAL;
@ -582,8 +585,10 @@ public class WxPayServiceImpl implements WxPayService {
//1-骑行时长费 2-运营区调度费用 3-停车区调度费用 4-高峰时段出行费用 5-高峰日出行费用 6-起步费用
switch (detailDto.getItemType()) {
case 1, 4, 5 -> orderDto.setDurationCost(orderDto.getDurationCost() + detailDto.getUnitPrice());
case 2 -> orderDto.setDispatchFeeOutOperateArea(orderDto.getParkingAreaOutDispatchFee() + detailDto.getUnitPrice());
case 3 -> orderDto.setParkingAreaOutDispatchFee(orderDto.getParkingAreaOutDispatchFee() + detailDto.getUnitPrice());
case 2 ->
orderDto.setDispatchFeeOutOperateArea(orderDto.getParkingAreaOutDispatchFee() + detailDto.getUnitPrice());
case 3 ->
orderDto.setParkingAreaOutDispatchFee(orderDto.getParkingAreaOutDispatchFee() + detailDto.getUnitPrice());
case 6 -> orderDto.setStartupCost(orderDto.getStartupCost() + detailDto.getUnitPrice());
}
}