上一篇展示左侧树形商品分类菜单,链接:
左侧商品分类树形菜单
一、效果展示:
选中一个类别,右侧加载出它的所有商品
二、实现步骤:
1.点击 分类菜单某个 类别,触发事件:
请求后台:
2.controller:
/**
* 分页查询商品信息
* @param goods
* @param page:当前页
* @param rows:每页记录数
* @return
* @throws Exception
*/
@ResponseBody
@RequestMapping("/list")
@RequiresPermissions(value={"商品管理","进货入库","退货出库"},logical=Logical.OR)
public Map<String,Object> list(Goods goods,@RequestParam(value="page",required=false)Integer page,@RequestParam(value="rows",required=false)Integer rows) throws Exception{
Map<String,Object> resultMap=new HashMap<>();
List<Goods> goodsList=goodsService.list(goods, page, rows, Direction.ASC, "id");
Long total=goodsService.getCount(goods);
resultMap.put("rows", goodsList);
resultMap.put("total", total);
logService.save(new Log(Log.SEARCH_ACTION,"查询商品信息"));
return resultMap;
}
3.service实现类
/*
根据条件分页查询商品信息
*/
@Override
public List<Goods> list(Goods goods, Integer page, Integer pageSize, Direction direction, String... properties) {
Pageable pageable=new PageRequest(page-1,pageSize);
Page<Goods> pageGoods=goodsRepository.findAll(new Specification<Goods>() {
@Override
public Predicate toPredicate(Root<Goods> root, CriteriaQuery<?> query, CriteriaBuilder cb) {
Predicate predicate=cb.conjunction();
if(goods!=null) {
if(StringUtil.isNotEmpty(goods.getName())) {
predicate.getExpressions().add(cb.like(root.get("name"), "%"+goods.getName()+"%"));
}
if(goods.getType()!=null && goods.getType().getId()!=null && goods.getType().getId()!=1) {
predicate.getExpressions().add(cb.equal(root.get("type").get("id"),goods.getType().getId()));
}
if(StringUtil.isNotEmpty(goods.getCodeOrName())){
predicate.getExpressions().add(cb.or(cb.like(root.get("code"), "%"+goods.getCodeOrName()+"%"), cb.like(root.get("name"), "%"+goods.getCodeOrName()+"%")));
}
}
return predicate;
}
}, pageable);
return pageGoods.getContent();
}
/*
获取总记录数
*/
@Override
public Long getCount(Goods goods) {
Long count=goodsRepository.count(new Specification<Goods>() {
@Override
public Predicate toPredicate(Root<Goods> root, CriteriaQuery<?> query, CriteriaBuilder cb) {
Predicate predicate=cb.conjunction();
if(goods!=null){
if(StringUtil.isNotEmpty(goods.getName())){
predicate.getExpressions().add(cb.like(root.get("name"), "%"+goods.getName()+"%"));
}
if(goods.getType()!=null && goods.getType().getId()!=null && goods.getType().getId()!=1){
predicate.getExpressions().add(cb.equal(root.get("type").get("id"), goods.getType().getId()));
}
}
return predicate;
}
});
return count;
}
4.其中级联的使用
前台页面传的是商品分类实体里面的那个id:
Controller接收:
service实现类中这样处理: