feat(mall): 优化商品查询条件

- 使用 FIND_IN_SET函数替代 like 操作符,提高查询精度
- 修复分类 ID 查询不准确的问题
This commit is contained in:
清晨
2025-04-18 17:41:55 +08:00
parent 444d1af15a
commit 1d3e0fba6f

View File

@@ -110,7 +110,8 @@ public class TzProdServiceImpl extends MPJBaseServiceImpl<TzProdMapper,TzProd> i
.eq(TzProd::getStatus, 1) .eq(TzProd::getStatus, 1)
.and(wrapper -> { .and(wrapper -> {
for (Long id : categoryId) { 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); .orderByDesc(TzProd::getPutawayTime);
@@ -181,7 +182,10 @@ public class TzProdServiceImpl extends MPJBaseServiceImpl<TzProdMapper,TzProd> i
lqw.like(StringUtils.isNotBlank(bo.getFactoryAddress()), TzProd::getFactoryAddress, bo.getFactoryAddress()); lqw.like(StringUtils.isNotBlank(bo.getFactoryAddress()), TzProd::getFactoryAddress, bo.getFactoryAddress());
lqw.eq(bo.getStatus() != null, TzProd::getStatus, bo.getStatus()); lqw.eq(bo.getStatus() != null, TzProd::getStatus, bo.getStatus());
lqw.eq(bo.getExamineFlag() != null, TzProd::getExamineFlag, bo.getExamineFlag()); 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, lqw.between(params.get("beginTime") != null && params.get("endTime") != null,
TzProd::getPutawayTime, params.get("beginTime"), params.get("endTime")); TzProd::getPutawayTime, params.get("beginTime"), params.get("endTime"));
return lqw; return lqw;