您的位置:首页 > 编程语言 > Java开发

Java之品优购课程讲义_day10(6)

2018-09-20 14:42 756 查看
过滤查询
7.1 需求分析
根据上一步构建的查询条件,实现分类、品×××和规格的过滤查询



7.1 代码实现
7.1.1 分类过滤
修改 pinyougou-search-service 工程的 SearchItemServiceImpl.java

/**

*根据关键字搜索列表

*@param  keywords

*@return

*/

private  Map  searchList(Map  searchMap){

.......

//1.1 关键字查询......

//1.2 按分类筛选
if(!"".equals(searchMap.get("category"))){ Criteria  filterCriteria=new
Criteria("item_category").is(searchMap.get("category"));

FilterQuery  filterQuery=new  SimpleFilterQuery(filterCriteria); query.addFilterQuery(filterQuery);
}

//高亮显示处理.....

}

7.1.1 品×××过滤
修改 pinyougou-search-service 工程的 SearchItemServiceImpl.java

/**

*根据关键字搜索列表

*@param  keywords

*@return

*/

private  Map  searchList(Map  searchMap){

.......

//1.1 关键字查询

.......

//1.2 按分类筛选

.......

//1.3 按品×××筛选
if(!"".equals(searchMap.get("brand"))){ Criteria filterCriteria=new
Criteria("item_brand").is(searchMap.get("brand"));

FilterQuery  filterQuery=new  SimpleFilterQuery(filterCriteria); query.addFilterQuery(filterQuery);
}

//高亮显示处理...............

}

7.1.1 规格过滤
实现思路:规格有多项,需要循环过滤。循环规格查询条件,根据 key 得到域名城,根据
value 设置过滤条件。
修改 pinyougou-search-service 工程的 SearchItemServiceImpl.java

/**

*根据关键字搜索列表

*@param  keywords

*@return

*/

private  Map  searchList(Map  searchMap){

......

//1.1 关键字查询

....

//1.2 按分类筛选

.....

//1.3 按品×××筛选

......

//1.4 过滤规格

if(searchMap.get("spec")!=null){

Map<String,String>  specMap=  (Map)  searchMap.get("spec");

for(String  key:specMap.keySet()  ){

Criteria  filterCriteria=new  Criteria("item_spec_"+key).is(  specMap.get(key)  ); FilterQuery  filterQuery=new  SimpleFilterQuery(filterCriteria); query.addFilterQuery(filterQuery);
}

}

//高亮显示处理.....

}

根据分类查询品×××规格列表

@Override

public  Map<String,  Object>  search(Map  searchMap)  { Map<String,Object>  map=new  HashMap<>();
//1.按关键字查询(高亮显示)

......

//2.根据关键字查询商品分类

......

//3.查询品×××和规格列表

String  categoryName=(String)searchMap.get("category");

if(!"".equals(categoryName)){//如果有分类名称
map.putAll(searchBrandAndSpecList(categoryName));

}else{//如果没有分类名称,按照第一个查询

if(categoryList.size()>0){ map.putAll(searchBrandAndSpecList(categoryList.get(0)));
}

}

return  map;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Java