longz
2026-07-20 623d1ebd9c729050db60e314173634c91214155c
fix: 优化支付订单列表查询
1个文件已添加
1个文件已修改
56 ■■■■■ 已修改文件
ruoyi-service/ruoyi-order/src/main/resources/mapper/order/TChargingOrderMapper.xml 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-order/src/test/java/com/ruoyi/order/mapper/PayOrderQueryPerformanceMapperTest.java 47 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-order/src/main/resources/mapper/order/TChargingOrderMapper.xml
@@ -174,13 +174,12 @@
        a.create_time,
        a.end_time,
        a.pay_time,
        b.refund_status as refund_status,
        a.refund_status as refund_status,
        (a.recharge_amount-a.refund_amount) as final_amount,
        a.del_flag,
        a.app_user_id
        FROM
        charging_pile_order.t_charging_order a
        left join charging_pile_order.t_charging_order_refund b on (b.charging_order_id = a.id)
        where a.recharge_payment_status = 2
        UNION ALL
@@ -196,13 +195,12 @@
        a.create_time,
        a.receiving_time as end_time,
        a.pay_time,
        b.refund_status as refund_status,
        a.refund_status as refund_status,
        (a.payment_amount-a.refund_amount) as final_amount,
        a.del_flag,
        a.app_user_id
        FROM
        charging_pile_order.t_shopping_order a
        left join charging_pile_order.t_shopping_order_refund b on (b.shopping_order_id = a.id)
        where a.payment_status = 2
        UNION ALL
@@ -218,13 +216,12 @@
        a.create_time,
        a.create_time as end_time,
        a.pay_time,
        b.refund_status as refund_status,
        a.refund_status as refund_status,
        (a.payment_amount-a.refund_amount) as final_amount,
        a.del_flag,
        a.app_user_id
        FROM
        charging_pile_order.t_vip_order a
        left join charging_pile_order.t_vip_order_refund b on (a.id = b.vip_order_id)
        where a.payment_status = 2
        UNION ALL
ruoyi-service/ruoyi-order/src/test/java/com/ruoyi/order/mapper/PayOrderQueryPerformanceMapperTest.java
New file
@@ -0,0 +1,47 @@
package com.ruoyi.order.mapper;
import org.junit.jupiter.api.Test;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.nio.charset.StandardCharsets;
import java.util.stream.Collectors;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertFalse;
import static org.junit.jupiter.api.Assertions.assertNotNull;
class PayOrderQueryPerformanceMapperTest {
    @Test
    void readsRefundStatusFromOrderTablesWithoutJoiningRefundDetails() throws IOException {
        InputStream input = getClass().getClassLoader()
                .getResourceAsStream("mapper/order/TChargingOrderMapper.xml");
        assertNotNull(input);
        String mapper;
        try (BufferedReader reader = new BufferedReader(new InputStreamReader(input, StandardCharsets.UTF_8))) {
            mapper = reader.lines().collect(Collectors.joining("\n"));
        }
        String payOrderQuery = mapper.substring(
                mapper.indexOf("<select id=\"payOrderQuery\""),
                mapper.indexOf("<select id=\"getRefundList\""));
        assertEquals(3, countOccurrences(payOrderQuery, "a.refund_status as refund_status"));
        assertFalse(payOrderQuery.contains("t_charging_order_refund"));
        assertFalse(payOrderQuery.contains("t_shopping_order_refund"));
        assertFalse(payOrderQuery.contains("t_vip_order_refund"));
    }
    private int countOccurrences(String text, String target) {
        int count = 0;
        int index = 0;
        while ((index = text.indexOf(target, index)) >= 0) {
            count++;
            index += target.length();
        }
        return count;
    }
}