黑马程序员技术交流社区
标题:
【郑州校区】品优购电商系统开发第 10 章 六
[打印本页]
作者:
我是楠楠
时间:
2020-6-11 09:52
标题:
【郑州校区】品优购电商系统开发第 10 章 六
【郑州校区】品优购电商系统开发第 10 章 六
7.
过滤查询
7.1
需求分析
根据上一步构建的查询条件,实现分类、品牌和规格的过滤查询
1.png
(34 KB, 下载次数: 44)
下载附件
2020-6-11 09:50 上传
7.2
代码实现
7.2.1
分类过滤
修改
pinyougou-search-service
工程的
SearchItemServiceImpl.java
[mw_shl_code=applescript,true]/**
* 根据关键字搜索列表
* @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);
}
//高亮显示处理.....
}[/mw_shl_code]
7.2.2
品牌过滤
修改
pinyougou-search-service
工程的
SearchItemServiceImpl.java
[mw_shl_code=applescript,true]/**
* 根据关键字搜索列表
* @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);
}
//高亮显示处理...............
}[/mw_shl_code]
7.2.3
规格过滤
实现思路:规格有多项,需要循环过滤。循环规格查询条件,根据
key
得到域名城,根据
value
设置过滤条件。
修改
pinyougou-search-service
工程的
SearchItemServiceImpl.java
[mw_shl_code=applescript,true]/**
* 根据关键字搜索列表
* @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);
}
}
//高亮显示处理.....
}[/mw_shl_code]
7.2.4
根据分类查询品牌规格列表
[mw_shl_code=applescript,true]@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;
}[/mw_shl_code]
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2