按价格区间筛选 1.1 需求分析 点击搜索面板上的价格区间,实现按价格筛选 1.1 前端代码 1.1.1 前端控制层 (1)修改 pinyougou-search-web 的 searchController.js 搜索条件的定义
$scope.searchMap={'keywords':'','category':'','brand':'','spec':{},'price':'' };//搜索条件封装对象 (2)修改 pinyougou-search-web 的 searchController.js 添加搜索项和删除搜索项的方法
//添加搜索项
$scope.addSearchItem=function(key,value){
if(key=='category' || key=='brand' || key=='price'){//如果点击的是分类或品×××
$scope.searchMap[key]=value;
}else{//如果是规格
$scope.searchMap.spec[key]=value;
}
$scope.search();
}
//移除复合搜索条件
$scope.removeSearchItem=function(key){
if(key=="category" || key=="brand" || key=='price'){//如果是分类或品×××
$scope.searchMap[key]="";
}else{//否则是规格
delete $scope.searchMap.spec[key];//移除此属性
}
$scope.search();
}
1.1.1 页面 (1)修改页面 search.html ,在标签上调用方法
<ul class="type-list" ng-if="searchMap.price==''">
<li>
<a ng-click="addSearchItem('price','0-500')">0-500 元</a>
</li>
<li>
<a ng-click="addSearchItem('price','500-1000')">500-1000 元</a>
</li>
<li>
<a ng-click="addSearchItem('price','1000-1500')">1000-1500 元</a>
</li>
<li>
<a ng-click="addSearchItem('price','1500-2000')">1500-2000 元</a>
</li>
<li>
<a ng-click="addSearchItem('price','2000-3000')">2000-3000 元 </a>
</li>
<li>
<a ng-click="addSearchItem('price','3000-*')">3000 元以上</a>
</li>
</ul>
(2)修改 search.html,增加面包屑
< li class="tag" ng-if="searchMap.price!=''" ng-click="removeSearchItem('price')">价格:[/size][/font][/align][font=微软雅黑][size=3]{{searchMap.price}}<i class="sui-icon icon-tb-close"></i></li>
1.1 后端代码 修改 pinyougou-search-service 的 ItemSearchServiceImpl.java
/**
* 根据关键字搜索列表
*@param keywords
*@return
*/
private Map searchList(Map searchMap){
......
//1.1 关键字查询.....
//1.2 按分类筛选.....
//1.3 按品×××筛选.....
//1.4 过滤规格......
//1.5 按价格筛选.....
if(!"".equals(searchMap.get("price"))){
String[] price = ((String) searchMap.get("price")).split("-");
if(!price[0].equals("0")){//如果区间起点不等于 0 Criteria filterCriteria=new
Criteria("item_price").greaterThanEqual(price[0]);
FilterQuery filterQuery=new SimpleFilterQuery(filterCriteria); query.addFilterQuery(filterQuery);
}
if(!price[1].equals("*")){//如果区间终点不等于* Criteria filterCriteria=new
Criteria("item_price").lessThanEqual(price[1]);
FilterQuery filterQuery=new SimpleFilterQuery(filterCriteria); query.addFilterQuery(filterQuery);
}