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

过滤查询
7.1 需求分析
根据上一步构建的查询条件,实现分类、品×××和规格的过滤查询
Java之品优购课程讲义_day10(6)
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;

}

转载于:https://blog.51cto.com/13517854/2177612

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值