diff --git a/common-api/src/main/java/cn/lili/controller/common/RegionController.java b/common-api/src/main/java/cn/lili/controller/common/RegionController.java index f951f058..9abcfce3 100644 --- a/common-api/src/main/java/cn/lili/controller/common/RegionController.java +++ b/common-api/src/main/java/cn/lili/controller/common/RegionController.java @@ -2,9 +2,9 @@ package cn.lili.controller.common; import cn.lili.common.enums.ResultUtil; import cn.lili.common.vo.ResultMessage; -import cn.lili.modules.system.service.RegionService; import cn.lili.modules.system.entity.dos.Region; import cn.lili.modules.system.entity.vo.RegionVO; +import cn.lili.modules.system.service.RegionService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; @@ -38,6 +38,11 @@ public class RegionController { return ResultUtil.data(regionService.getRegion(cityCode,townName)); } + @GetMapping(value = "/name") + @ApiOperation(value = "根据名字获取地区地址id") + public ResultMessage getItemByLastName(String lastName) { + return ResultUtil.data(regionService.getItemByLastName(lastName)); + } @GetMapping(value = "/item/{id}") @ApiImplicitParam(name = "id", value = "地区ID", required = true, dataType = "String", paramType = "path") diff --git a/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/SeckillApplyServiceImpl.java b/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/SeckillApplyServiceImpl.java index 11665dcb..07572e9c 100644 --- a/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/SeckillApplyServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/SeckillApplyServiceImpl.java @@ -184,6 +184,7 @@ public class SeckillApplyServiceImpl extends ServiceImpl buildKeywordSearch(String keyword) { List filterFunctionBuilders = new ArrayList<>(); - MatchQueryBuilder goodsNameQuery = QueryBuilders.matchQuery("goodsName", keyword).operator(Operator.AND); + // operator 为 AND 时 需全部分词匹配。为 OR 时 需配置 minimumShouldMatch(最小分词匹配数)不设置默认为1 + MatchQueryBuilder goodsNameQuery = QueryBuilders.matchQuery("goodsName", keyword).operator(Operator.OR).minimumShouldMatch("2"); //分词匹配 filterFunctionBuilders.add(new FunctionScoreQueryBuilder.FilterFunctionBuilder(goodsNameQuery, ScoreFunctionBuilders.weightFactorFunction(10))); diff --git a/framework/src/main/java/cn/lili/modules/system/service/RegionService.java b/framework/src/main/java/cn/lili/modules/system/service/RegionService.java index 53261699..3696d7c3 100644 --- a/framework/src/main/java/cn/lili/modules/system/service/RegionService.java +++ b/framework/src/main/java/cn/lili/modules/system/service/RegionService.java @@ -36,6 +36,14 @@ public interface RegionService extends IService { @Cacheable(key = "#id") List getItem(String id); + /** + * 根据最后一级名称获取改所有上级地区id + * + * @param lastName 最后一级名称 + * @return 全部地区id + */ + String getItemByLastName(String lastName); + /** * 获取地址 * diff --git a/framework/src/main/java/cn/lili/modules/system/serviceimpl/RegionServiceImpl.java b/framework/src/main/java/cn/lili/modules/system/serviceimpl/RegionServiceImpl.java index 5b29279d..dfb8863e 100644 --- a/framework/src/main/java/cn/lili/modules/system/serviceimpl/RegionServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/system/serviceimpl/RegionServiceImpl.java @@ -61,6 +61,25 @@ public class RegionServiceImpl extends ServiceImpl impleme } } + /** + * 根据最后一级名称获取改所有上级地区id + * + * @param lastName 最后一级名称 + * @return 全部地区id + */ + @Override + public String getItemByLastName(String lastName) { + StringBuilder sql = new StringBuilder(); + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + lambdaQueryWrapper.eq(Region::getName, lastName); + Region region = this.getOne(lambdaQueryWrapper, false); + if (region != null) { + sql.append(region.getPath()).append(",").append(region.getId()); + return sql.toString().replace(",0,",""); + } + return null; + } + @Override public List getItem(String id) { LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>();