1. 程式人生 > >電商專案之分類管理理解

電商專案之分類管理理解

一、分類管理模組

1、增加分類(請求引數:HttpSession session,String categoryName,int parentId)

a、校驗使用者是否登陸

b、校驗使用者是否為管理員

c、將分類名(categoryName)和分類的父類id(parentId)和狀態插入到資料庫

2、更新分類名(請求引數:HttpSession session,String categoryName,Integer categoryId,)

a、校驗使用者是否登陸

b、校驗是否為管理員

c、通過categoryId去更新分類名

3、獲取分類下所有同級子類(請求引數:HttpSession session, Integer categoryId)

a、校驗使用者是否登陸

b、校驗是否為管理員

c、通過categoryId查詢所有的子類(categoryId是子類的parentId)

 

 

 <select id="selectCategoryChildrenByParentId" resultMap="BaseResultMap" parameterType="int">
  select
  <include refid="Base_Column_List"></include>
  from mmall_category
  where parent_id=#{parentId}
  </select>

4、獲取分類下所有子類並遞迴(請求引數:HttpSession session, Integer categoryId)--重點

a、校驗使用者是否登陸

b、校驗是否為管理員

c、通過categoryId獲得子類

public ServerResponse<List<Integer>> selectCategoryAndChildrenById(Integer categoryId){
        Set<Category> categorySet= Sets.newHashSet();//這是幹什麼用的
        findChildCategory(categorySet,categoryId);
        List<Integer> categoryIdList= Lists.newArrayList();//這是幹什麼用的
        if(categoryId!=null){
            for (Category categoryItem:categorySet){
                categoryIdList.add(categoryItem.getId());
            }
        }
        return  ServerResponse.createBySuccess(categoryIdList);
    }
    //書寫遞迴演算法,自己調自己
    private Set<Category> findChildCategory(Set<Category> categorySet,Integer categoryId){
        Category category=categoryMapper.selectByPrimaryKey(categoryId);//查詢該id的物件
        if(category!=null){
            categorySet.add(category);
        }
        //查詢位元組點,遞迴演算法一定要有一個退出的條件
        List<Category> categoryList=categoryMapper.selectCategoryChildrenByParentId(categoryId);//查詢該id的子節點
        for(Category categoryItem:categoryList){//遍歷子節點的集合
            findChildCategory(categorySet,categoryItem.getId());
        }
        return categorySet;
    }

通過categoryId查詢出category這個物件,將這物件放到categorySet集合裡面

通過categoryId查詢出所有的子類放到categoryList裡面,然後遍歷categoryList,將查出來的物件放到categorySet集合裡面。

將categorySet進行遍歷放到categoryIdList裡面

遞迴需要悟