This commit is contained in:
邱贞招 2024-11-08 14:39:29 +08:00
parent fdfdddc3b6
commit 47d93598c7
4 changed files with 91 additions and 22 deletions

View File

@ -0,0 +1,11 @@
package com.ruoyi.system.domain;
import lombok.Data;
@Data
public class EtRefundVO extends EtRefund{
private String userName;
private String phone;
}

View File

@ -5,6 +5,7 @@ import java.util.List;
import com.ruoyi.system.domain.EtOrder;
import com.ruoyi.system.domain.EtOrderQuery;
import com.ruoyi.system.domain.EtRefund;
import com.ruoyi.system.domain.EtRefundVO;
/**
* 退款订单Mapper接口
@ -36,7 +37,7 @@ public interface EtRefundMapper
* @param orderQuery 退款订单
* @return 退款订单集合
*/
public List<EtRefund> selectEtRefundList2(EtOrderQuery orderQuery);
public List<EtRefundVO> selectEtRefundList2(EtOrderQuery orderQuery);
/**
* 新增退款订单
@ -101,4 +102,12 @@ public interface EtRefundMapper
* @return 结果
*/
List<EtOrder> checkUserDeposit(Long userId);
/**
* 根据订单号数组查询退款订单对象
*
* @param orderNos 订单号数组
* @return 退款订单数组
*/
List<EtRefund> selectEtRefundByOrderNos(List<String> orderNos);
}

View File

@ -49,6 +49,7 @@ import java.util.*;
import java.util.concurrent.TimeUnit;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.util.stream.Collectors;
/**
* 订单Service业务层处理
@ -400,17 +401,16 @@ public class EtOrderServiceImpl implements IEtOrderService
etOrder.setRefundType(ServiceConstants.REFUND_TYPE_DEPOSIT);
etOrder.setRefundResult(Constants.SUCCESS2);
PageUtils.startPage();
List<EtRefund> etRefunds = etRefundMapper.selectEtRefundList2(etOrder);
List<EtRefundVO> etRefunds = etRefundMapper.selectEtRefundList2(etOrder);
etRefunds.forEach(etRefund -> {
AsUser asUser = asUserMapper.selectUserById(etRefund.getUserId());
RechargeVo rechargeVo = new RechargeVo();
BeanUtils.copyProperties(etRefund,rechargeVo);
rechargeVo.setOutTradeNo(etRefund.getRefundNo());
rechargeVo.setPayTime(etRefund.getCreateTime());
rechargeVo.setTotalFee(etRefund.getAmount());
rechargeVo.setUserId(etRefund.getUserId());
rechargeVo.setUserName(asUser.getUserName());
rechargeVo.setPhonenumber(asUser.getPhonenumber());
rechargeVo.setUserName(etRefund.getUserName());
rechargeVo.setPhonenumber(etRefund.getPhone());
rechargeVo.setRechargeStatus(ServiceConstants.RECHARGE_STATUS_REFUND_SUCCESS);
rechargeVo.setRechargeType(ServiceConstants.ORDER_TYPE_DEPOSIT_REFUND);
rechargeVoList.add(rechargeVo);
@ -436,6 +436,62 @@ public class EtOrderServiceImpl implements IEtOrderService
rechargeVoList.sort(Comparator.comparing(RechargeVo::getPayTime).reversed());
return rechargeVoList;
}
// 获取符合条件的订单列表
private List<EtOrder> fetchEtOrders(EtOrderQuery etOrder) {
if (StrUtil.isBlank(etOrder.getStatus()) || "1".equals(etOrder.getStatus())) {
etOrder.setPaid(ServiceConstants.ORDER_PAY_STATUS_PAID);
etOrder.setStatus(ServiceConstants.ORDER_STATUS_ORDER_END);
return etOrderMapper.selectEtOrderListNoRoute2(etOrder);
}
return Collections.emptyList();
}
// 获取所有订单号的退款记录并按订单号分组
private Map<String, List<EtRefund>> fetchRefundsForOrders(List<EtOrder> etOrders) {
List<String> orderNos = etOrders.stream().map(EtOrder::getOrderNo).collect(Collectors.toList());
if (orderNos.isEmpty()) {
return Collections.emptyMap(); // 如果没有订单号直接返回空的 Map
}
// 批量查询退款记录
List<EtRefund> etRefunds = etRefundMapper.selectEtRefundByOrderNos(orderNos);
return etRefunds.stream().collect(Collectors.groupingBy(EtRefund::getOrderNo));
}
// 创建 RechargeVo 并填充订单和退款信息
private RechargeVo createRechargeVoFromOrder(EtOrder etOrder1, List<EtRefund> etRefunds) {
RechargeVo rechargeVo = new RechargeVo();
BeanUtils.copyProperties(etOrder1, rechargeVo);
rechargeVo.setRechargeStatus(ServiceConstants.RECHARGE_STATUS_SUCCESS);
rechargeVo.setRechargeType(ServiceConstants.ORDER_TYPE_DEPOSIT);
rechargeVo.setTotalFee(etOrder1.getPayFee());
rechargeVo.setDepositDeduction(etOrder1.getDepositDeduction());
// 设置是否退款的字段
if (etRefunds != null && !etRefunds.isEmpty()) {
rechargeVo.setIsRefunded(true); // 如果有退款记录设置为已退款
} else {
rechargeVo.setIsRefunded(false); // 如果没有退款记录设置为未退款
}
return rechargeVo;
}
// 根据 isRefund 条件过滤记录
private void filterRefundedRecords(EtOrderQuery etOrder, List<RechargeVo> rechargeVoList) {
List<String> isRefund = etOrder.getIsRefund();
if (isRefund == null || isRefund.isEmpty()) {
return; // 如果没有指定退款条件不做任何过滤
}
// 如果只包含 "0"则过滤未退款记录
if (isRefund.contains("0") && !isRefund.contains("1")) {
rechargeVoList.removeIf(rechargeVo -> Boolean.TRUE.equals(rechargeVo.getIsRefunded()));
}
// 如果只包含 "1"则过滤已退款记录
if (isRefund.contains("1") && !isRefund.contains("0")) {
rechargeVoList.removeIf(rechargeVo -> !Boolean.TRUE.equals(rechargeVo.getIsRefunded()));
}
}
/**
* 获取当前正在骑行中的订单

View File

@ -4,22 +4,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ruoyi.system.mapper.EtRefundMapper">
<resultMap type="EtRefund" id="EtRefundResult">
<result property="id" column="id" />
<result property="refundNo" column="refund_no" />
<result property="orderNo" column="order_no" />
<result property="userId" column="user_id" />
<result property="amount" column="amount" />
<result property="dispatchFee" column="dispatch_fee" />
<result property="manageFee" column="manage_fee" />
<result property="ridingFee" column="riding_fee" />
<result property="appointmentFee" column="appointment_fee" />
<result property="type" column="type" />
<result property="reason" column="reason" />
<result property="createTime" column="create_time" />
<result property="itemDesc" column="item_desc" />
<result property="refundResult" column="refund_result" />
</resultMap>
<resultMap type="EtRefundVO" id="EtRefundResult" autoMapping="true"/>
<sql id="selectEtRefundVo">
select id, refund_no, order_no, user_id, amount, dispatch_fee, manage_fee, riding_fee, appointment_fee, type, reason, create_time, item_desc,refund_result from et_refund
@ -50,7 +35,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</select>
<select id="selectEtRefundList2" parameterType="EtOrderQuery" resultMap="EtRefundResult">
select r.id, r.refund_no, o.area_id areaId,oa.area_name areaName,r.order_no, r.user_id, u.user_name userName, r.amount, r.dispatch_fee, r.manage_fee,
select r.id, r.refund_no, o.area_id areaId,oa.area_name areaName,r.order_no, r.user_id, u.user_name userName, u.phonenumber, r.amount, r.dispatch_fee, r.manage_fee,
r.riding_fee, r.appointment_fee, r.type, r.reason, r.create_time, r.item_desc,r.refund_result from et_refund r
INNER JOIN et_order o on o.order_no = r.order_no
left join et_user u on u.user_id = r.user_id
@ -182,4 +167,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
AND o.type = 2 and o.user_id = #{userId}
AND ref.id IS NULL;
</select>
<select id="selectEtRefundByOrderNos" resultMap="EtRefundResult">
<include refid="selectEtRefundVo"/>
where order_no in
<foreach collection="list" item="orderNo" open="(" separator="," close=")">
#{orderNo}
</foreach>
</select>
</mapper>