From 658c7f14b2fcb51641c15abfc4f5ac8698494d64 Mon Sep 17 00:00:00 2001 From: gong <1157756119@qq.com> Date: Tue, 23 Dec 2025 15:15:42 +0800 Subject: [PATCH] =?UTF-8?q?=E5=88=86=E9=A1=B5=E6=80=BB=E6=95=B0=E9=87=8F?= =?UTF-8?q?=E4=B8=BA=20-1=20=E7=9A=84=E6=83=85=E5=86=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/czg/config/MybatisFlexConfig.java | 54 +++++++++++++++++++ .../resources/mapper/PpPackageOrderMapper.xml | 5 +- 2 files changed, 55 insertions(+), 4 deletions(-) diff --git a/cash-common/cash-common-api-config/src/main/java/com/czg/config/MybatisFlexConfig.java b/cash-common/cash-common-api-config/src/main/java/com/czg/config/MybatisFlexConfig.java index d9731bd40..68407b3ee 100644 --- a/cash-common/cash-common-api-config/src/main/java/com/czg/config/MybatisFlexConfig.java +++ b/cash-common/cash-common-api-config/src/main/java/com/czg/config/MybatisFlexConfig.java @@ -1,7 +1,15 @@ package com.czg.config; import com.mybatisflex.core.audit.AuditManager; +import com.mybatisflex.core.paginate.Page; import lombok.extern.slf4j.Slf4j; +import org.aspectj.lang.annotation.AfterReturning; +import org.aspectj.lang.annotation.Aspect; +import org.aspectj.lang.annotation.Pointcut; +import org.jetbrains.annotations.NotNull; +import org.springframework.beans.BeansException; +import org.springframework.beans.factory.config.BeanPostProcessor; +import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; /** @@ -21,4 +29,50 @@ public class MybatisFlexConfig { ); } + /** + * 处理 Spring 容器管理的 Page Bean + */ + @Bean + public BeanPostProcessor pageBeanPostProcessor() { + return new BeanPostProcessor() { + @Override + public Object postProcessAfterInitialization(@NotNull Object bean, @NotNull String beanName) throws BeansException { + if (bean instanceof Page page) { + resetPageDefaultValue(page); + } + return bean; + } + }; + } + + /** + * AOP 拦截所有 Page 实例的构造方法,重置初始值 + * 覆盖手动 new Page() 的场景 + */ + @Aspect + public static class PageConstructorAspect { + + // 切入点:匹配 Page 类的所有构造方法执行后 + @Pointcut("execution(com.mybatisflex.core.pagination.Page+.new(..))") + public void pageConstructorPointcut() {} + + // 构造方法执行后重置值 + @AfterReturning(pointcut = "pageConstructorPointcut()", returning = "page") + public void afterPageConstruct(Page page) { + resetPageDefaultValue(page); + } + } + + /** + * 通用方法:重置 Page 初始值为 0 + */ + private static void resetPageDefaultValue(Page page) { + if (page.getTotalPage() == -1) { + page.setTotalPage(0); + } + if (page.getTotalRow() == -1) { + page.setTotalRow(0); + } + } + } diff --git a/cash-service/market-service/src/main/resources/mapper/PpPackageOrderMapper.xml b/cash-service/market-service/src/main/resources/mapper/PpPackageOrderMapper.xml index d5f1b2419..9d6d7e2f0 100644 --- a/cash-service/market-service/src/main/resources/mapper/PpPackageOrderMapper.xml +++ b/cash-service/market-service/src/main/resources/mapper/PpPackageOrderMapper.xml @@ -15,10 +15,7 @@ left join tb_shop_info s on o.shop_id = s.id left join pp_package p on o.package_id = p.id left join tb_user_info u on o.user_id = u.id - where 1=1 - - and o.shop_id = #{shopId} - + where o.shop_id = #{shopId}