处理mongo地区下级查询正则导致的报错问题

This commit is contained in:
WenG 2021-12-14 00:15:50 +08:00
parent c83f6d7db9
commit 8b6f1bdbf1
2 changed files with 12 additions and 2 deletions

View File

@ -120,4 +120,14 @@ public class MongoAreaController extends DefaultBaseController {
return mongoAreaService.listByCode(areaCode);
}
@ApiOperation(value = "地区字典列表(通过地区字典编码)", notes = "地区字典列表(通过地区字典编码)接口")
@ApiImplicitParams({
@ApiImplicitParam(name = "areaCode", value = "地区字典编码", paramType = "path")
})
@ApiResponses({@ApiResponse(code = 400, message = "请求失败", response = ErrorResult.class)})
@GetMapping("list-sub/code/{areaCode}")
public List<AreaDTO> listSubByCode(@PathVariable("areaCode") String areaCode) {
return mongoAreaService.listSubByCode(areaCode);
}
}

View File

@ -103,10 +103,10 @@ public class MongoAreaServiceImpl extends DefaultBaseService implements IMongoAr
@Override
public List<AreaDTO> listSubByCode(String areaCode) {
Pattern pattern = Pattern.compile("^" + WStringUtil.cutContinuityRepeatCharDesc(areaCode, '0') + ".*$", Pattern.CASE_INSENSITIVE);
String baseAreaCode = WStringUtil.cutContinuityRepeatCharDesc(areaCode, '0');
Pattern pattern = Pattern.compile("^" + baseAreaCode + "((?!" + areaCode.replace(baseAreaCode, "") + ").)*$", Pattern.CASE_INSENSITIVE);
Query query = new Query();
query.addCriteria(Criteria.where("areaCode").regex(pattern));
query.addCriteria(Criteria.where("areaCode").ne(areaCode));
return mongoTemplate.find(query, AreaDTO.class, MongoDictionaryCollectionEnum.AREA.getValue());
}