1. 程式人生 > 其它 >第171天學習打卡(專案 穀粒商城13 選單三級分類顯示)

第171天學習打卡(專案 穀粒商城13 選單三級分類顯示)

三級分類

CategoryServiceImpl.java

查詢所有分類

package com.doudou.gulimall.product.service.impl;


import org.springframework.stereotype.Service;

import java.util.List;
import java.util.Map;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.doudou.common.utils.PageUtils;
import com.doudou.common.utils.Query;

import com.doudou.gulimall.product.dao.CategoryDao;
import com.doudou.gulimall.product.entity.CategoryEntity;
import com.doudou.gulimall.product.service.CategoryService;


@Service("categoryService")
public class CategoryServiceImpl extends ServiceImpl<CategoryDao, CategoryEntity> implements CategoryService {
// @Autowired
// CategoryDao categoryDao;

@Override
public PageUtils queryPage(Map<String, Object> params) {
IPage<CategoryEntity> page = this.page(
new Query<CategoryEntity>().getPage(params),
new QueryWrapper<CategoryEntity>()
);

return new PageUtils(page);
}

@Override
public List<CategoryEntity> listWithTree() {
// 1.查出所有分類
List<CategoryEntity> entities = baseMapper.selectList(null);//這裡寫null(沒有查詢條件,就是查詢所有)就是查詢所有的資料


//2.組裝成父子的樹形結構
return entities;




}

}

獲取一級分類

CategoryServiceImpl .java

package com.doudou.gulimall.product.service.impl;


import org.springframework.stereotype.Service;

import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.doudou.common.utils.PageUtils;
import com.doudou.common.utils.Query;

import com.doudou.gulimall.product.dao.CategoryDao;
import com.doudou.gulimall.product.entity.CategoryEntity;
import com.doudou.gulimall.product.service.CategoryService;


@Service("categoryService")
public class CategoryServiceImpl extends ServiceImpl<CategoryDao, CategoryEntity> implements CategoryService {
// @Autowired
// CategoryDao categoryDao;

@Override
public PageUtils queryPage(Map<String, Object> params) {
IPage<CategoryEntity> page = this.page(
new Query<CategoryEntity>().getPage(params),
new QueryWrapper<CategoryEntity>()
);

return new PageUtils(page);
}

@Override
public List<CategoryEntity> listWithTree() {
// 1.查出所有分類
List<CategoryEntity> entities = baseMapper.selectList(null);//這裡寫null(沒有查詢條件,就是查詢所有)就是查詢所有的資料


//2.組裝成父子的樹形結構

//2.1 找到所有的一級分類
List<CategoryEntity> level1Menus = entities.stream().filter(categoryEntity ->
categoryEntity.getParentCid() == 0

).collect(Collectors.toList());


return level1Menus;




}

}

查詢子選單

CategoryServiceImpl.java

package com.doudou.gulimall.product.service.impl;


import org.springframework.stereotype.Service;

import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.doudou.common.utils.PageUtils;
import com.doudou.common.utils.Query;

import com.doudou.gulimall.product.dao.CategoryDao;
import com.doudou.gulimall.product.entity.CategoryEntity;
import com.doudou.gulimall.product.service.CategoryService;


@Service("categoryService")
public class CategoryServiceImpl extends ServiceImpl<CategoryDao, CategoryEntity> implements CategoryService {
// @Autowired
// CategoryDao categoryDao;

@Override
public PageUtils queryPage(Map<String, Object> params) {
IPage<CategoryEntity> page = this.page(
new Query<CategoryEntity>().getPage(params),
new QueryWrapper<CategoryEntity>()
);

return new PageUtils(page);
}

@Override
public List<CategoryEntity> listWithTree() {
// 1.查出所有分類
List<CategoryEntity> entities = baseMapper.selectList(null);//這裡寫null(沒有查詢條件,就是查詢所有)就是查詢所有的資料


//2.組裝成父子的樹形結構

//2.1 找到所有的一級分類
List<CategoryEntity> level1Menus = entities.stream().filter(categoryEntity ->
categoryEntity.getParentCid() == 0

).map((menu)->{
menu.setChildren(getChildrens(menu, entities));
return menu;
}).sorted((menu1, menu2)->{
return (menu1.getSort() == null ? 0 : menu1.getSort()) - (menu2.getSort() == null ? 0 : menu2.getSort());
}).collect(Collectors.toList());


return level1Menus;

}
//遞迴查詢所有選單的子選單

private List<CategoryEntity> getChildrens(CategoryEntity root, List<CategoryEntity> all){
List<CategoryEntity> childrean =all.stream().filter(categoryEntity -> {
return categoryEntity.getParentCid() == root.getCatId();
}).map(categoryEntity -> {
//找到子選單
categoryEntity.setChildren(getChildrens(categoryEntity, all));
return categoryEntity;
}).sorted((menu1, menu2)->{
//2.選單排序
return (menu1.getSort() == null ? 0 : menu1.getSort()) - (menu2.getSort() == null ? 0 : menu2.getSort());
}).collect(Collectors.toList());
return childrean;

}

}

配置閘道器路由和路徑重寫

先啟動後臺管理系統:

然後啟前端管理系統:

B站學習網址:全網最強電商教程《穀粒商城》對標阿里P6/P7,40-60萬年薪嗶哩嗶哩bilibili