From 1d3e0fba6f9e71a909c9a9261b30614ac5609e77 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=B8=85=E6=99=A8?= <136767481@qq.com> Date: Fri, 18 Apr 2025 17:41:55 +0800 Subject: [PATCH] =?UTF-8?q?feat(mall):=20=E4=BC=98=E5=8C=96=E5=95=86?= =?UTF-8?q?=E5=93=81=E6=9F=A5=E8=AF=A2=E6=9D=A1=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 使用 FIND_IN_SET函数替代 like 操作符,提高查询精度 - 修复分类 ID 查询不准确的问题 --- .../org/dromara/mall/service/impl/TzProdServiceImpl.java | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/ruoyi-modules/ruoyi-mall/src/main/java/org/dromara/mall/service/impl/TzProdServiceImpl.java b/ruoyi-modules/ruoyi-mall/src/main/java/org/dromara/mall/service/impl/TzProdServiceImpl.java index 3e952e3..5ff59c3 100644 --- a/ruoyi-modules/ruoyi-mall/src/main/java/org/dromara/mall/service/impl/TzProdServiceImpl.java +++ b/ruoyi-modules/ruoyi-mall/src/main/java/org/dromara/mall/service/impl/TzProdServiceImpl.java @@ -110,7 +110,8 @@ public class TzProdServiceImpl extends MPJBaseServiceImpl i .eq(TzProd::getStatus, 1) .and(wrapper -> { for (Long id : categoryId) { - wrapper.or(w -> w.like(TzProd::getCategoryId, String.valueOf(id))); + // 生成 FIND_IN_SET(id,category_id) 的SQL条件 + wrapper.or().apply("FIND_IN_SET({0}, category_id)", id); } }) .orderByDesc(TzProd::getPutawayTime); @@ -181,7 +182,10 @@ public class TzProdServiceImpl extends MPJBaseServiceImpl i lqw.like(StringUtils.isNotBlank(bo.getFactoryAddress()), TzProd::getFactoryAddress, bo.getFactoryAddress()); lqw.eq(bo.getStatus() != null, TzProd::getStatus, bo.getStatus()); lqw.eq(bo.getExamineFlag() != null, TzProd::getExamineFlag, bo.getExamineFlag()); - lqw.like(bo.getCategoryId() != null, TzProd::getCategoryId, bo.getCategoryId()); +// lqw.like(bo.getCategoryId() != null, TzProd::getCategoryId, bo.getCategoryId()); + if(bo.getCategoryId() != null){ + lqw.or().apply("FIND_IN_SET({0}, t.category_id)", bo.getCategoryId()); + } lqw.between(params.get("beginTime") != null && params.get("endTime") != null, TzProd::getPutawayTime, params.get("beginTime"), params.get("endTime")); return lqw;