1. 程式人生 > >17、內容服務系統——內容分類管理

17、內容服務系統——內容分類管理

內容服務系統——內容分類管理

展示內容分類

最終目標:
在這裡插入圖片描述

在這裡插入圖片描述

在這裡插入圖片描述

  • 請求的 url :/content/category/list

  • 請求的引數:id,當前節點的 id 。第一次請求是沒有引數,需要給預設值“0”

  • 響應資料:List(@ResponseBody)
    Json資料。
    [{id:1,text:節點名稱,state:open(closed)},
    {id:2,text:節點名稱2,state:open(closed)},
    {id:3,text:節點名稱3,state:open(closed)}]

  • 業務邏輯:
    1、取查詢引數id,parentId
    2、根據parentId查詢tb_content_category,查詢子節點列表。
    3、得到List
    4、把列表轉換成List

Dao層

使用逆向工程

Service

引數:long parentId
返回值:List

package cn.ynx.e3mall.content.service;

import cn.ynx.e3mall.common.pojo.EasyUITreeNode;

import java.util.List;

public interface ContentCategoryService {

    List<EasyUITreeNode> getContentCategoryList(long parentId);

}
package
cn.ynx.e3mall.content.service.impl; import cn.ynx.e3mall.common.pojo.EasyUITreeNode; import cn.ynx.e3mall.content.service.ContentCategoryService; import cn.ynx.e3mall.mapper.TbContentCategoryMapper; import cn.ynx.e3mall.pojo.TbContentCategory; import cn.ynx.e3mall.pojo.TbContentCategoryExample; import
org.springframework.stereotype.Service; import javax.annotation.Resource; import java.util.ArrayList; import java.util.List; @Service public class ContentCategoryServiceImpl implements ContentCategoryService { @Resource private TbContentCategoryMapper tbContentCategoryMapper; @Override public List<EasyUITreeNode> getContentCategoryList(long parentId) { // 1、取查詢引數id,parentId // 2、根據parentId查詢tb_content_category,查詢子節點列表。 TbContentCategoryExample example = new TbContentCategoryExample(); //設定查詢條件 TbContentCategoryExample.Criteria criteria = example.createCriteria(); criteria.andParentIdEqualTo(parentId); //執行查詢 // 3、得到List<TbContentCategory> List<TbContentCategory> list = tbContentCategoryMapper.selectByExample(example); // 4、把列表轉換成List<EasyUITreeNode> List<EasyUITreeNode> resultList = new ArrayList<>(); for (TbContentCategory tbContentCategory : list) { EasyUITreeNode node = new EasyUITreeNode(); node.setId(tbContentCategory.getId()); node.setText(tbContentCategory.getName()); node.setState(tbContentCategory.getIsParent()?"closed":"open"); //新增到列表 resultList.add(node); } return resultList; } }

釋出服務:applicationContrxt-service.xml

    <dubbo:service interface="cn.ynx.e3mall.content.service.ContentCategoryService" ref="contentCategoryServiceImpl" timeout="300000" />

表現層

e3-manager-web
依賴 e3-content-interface 模組

        <!-- 依賴 e3-content-interface 模組 -->
        <dependency>
            <groupId>cn.ynx.e3mall</groupId>
            <artifactId>e3-content-interface</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>

springmvc.xml 中新增服務的引用:

    <dubbo:reference interface="cn.ynx.e3mall.content.service.ContentCategoryService" id="contentCategoryService" />

Controller

package cn.ynx.e3mall.controller;

import cn.ynx.e3mall.common.pojo.EasyUITreeNode;
import cn.ynx.e3mall.content.service.ContentCategoryService;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;

import javax.annotation.Resource;
import java.util.List;

@Controller
@RequestMapping("/content/category")
public class ContentCategoryController {

    @Resource
    private ContentCategoryService contentCategoryService;

    @RequestMapping("/list")
    @ResponseBody
    public List<EasyUITreeNode> getContentCatList(
            @RequestParam(value="id", defaultValue="0") Long parentId) {
        List<EasyUITreeNode> list = contentCategoryService.getContentCategoryList(parentId);
        return list;
    }

}

啟動manager和content服務,必須兩個都啟動,不然web啟動會報錯。

測試

在這裡插入圖片描述

新增節點

功能分析:
在這裡插入圖片描述

Easy UI 的 tree 提供了新增、重新命名、刪除的功能,會非同步傳送 ajax 請求。
在這裡插入圖片描述

在這裡插入圖片描述

在這裡插入圖片描述

在這裡插入圖片描述

  • 請求的 url:/content/category/create

  • 請求的引數:
    Long parentId
    String name

  • 響應的結果:
    json資料,E3Result,其中包含一個物件,物件有id屬性,新生產的內容分類id

  • 業務邏輯:

    • 1、接收兩個引數:parentId、name
    • 2、向tb_content_category表中插入資料。
      a) 建立一個TbContentCategory物件
      b) 補全TbContentCategory物件的屬性
      c) 向tb_content_category表中插入資料
    • 3、判斷父節點的 isparent 是否為true,不是true需要改為true。
    • 4、需要主鍵返回。
    • 5、返回 E3Result ,其中包裝 TbContentCategory 物件

Dao層

可以使用逆向工程。
需要新增主鍵返回: 修改逆向工程的程式碼
在這裡插入圖片描述

Service層

引數:parentId、name
返回值:返回 E3Result ,其中包裝 TbContentCategory 物件

package cn.ynx.e3mall.content.service;

import cn.ynx.e3mall.common.pojo.EasyUITreeNode;
import cn.ynx.e3mall.common.utils.E3Result;

import java.util.List;

public interface ContentCategoryService {

    List<EasyUITreeNode> getContentCategoryList(long parentId);
    E3Result addContentCategory(long parentId, String name);

}
    @Override
    public E3Result addContentCategory(long parentId, String name) {
        // 1、接收兩個引數:parentId、name
        // 2、向tb_content_category表中插入資料。
        // a)建立一個TbContentCategory物件
        TbContentCategory tbContentCategory = new TbContentCategory();
        // b)補全TbContentCategory物件的屬性
        tbContentCategory.setIsParent(false);
        tbContentCategory.setName(name);
        tbContentCategory.setParentId(parentId);
        //排列序號,表示同級類目的展現次序,如數值相等則按名稱次序排列。取值範圍:大於零的整數
        tbContentCategory.setSortOrder(1);
        //狀態。可選值:1(正常),2(刪除)
        tbContentCategory.setStatus(1);
        tbContentCategory.setCreated(new Date());
        tbContentCategory.setUpdated(new Date());
        // c)向tb_content_category表中插入資料
        tbContentCategoryMapper.insert(tbContentCategory);
        // 3、判斷父節點的isparent是否為true,不是true需要改為true。
        TbContentCategory parentNode = tbContentCategoryMapper.selectByPrimaryKey(parentId);
        if (!parentNode.getIsParent()) {
            parentNode.setIsParent(true);
            //更新父節點
            tbContentCategoryMapper.updateByPrimaryKey(parentNode);
        }
        // 4、需要主鍵返回。
        // 5、返回E3Result,其中包裝TbContentCategory物件
        return E3Result.ok(tbContentCategory);
    }

釋出服務:

表現層

  • 請求的url:/content/category/create
  • 請求的引數:
    Long parentId
    String name
  • 響應的結果:
    json資料,E3Result
    @RequestMapping("/create")
    @ResponseBody
    public E3Result createContentCategory(Long parentId, String name){
        E3Result result = contentCategoryService.addContentCategory(parentId, name);
        return result;
    }

測試

在這裡插入圖片描述

在這裡插入圖片描述

內容分類節點重新命名

在這裡插入圖片描述

  • 請求的url:/content/category/update
  • 引數:
    id,當前節點id。
    name,重新命名後的名稱。
  • 業務邏輯:根據id更新記錄。
  • 返回值:返回E3Result.ok()

內容分類節點刪除

在這裡插入圖片描述

  • 請求的url:/content/category/delete/
  • 引數:id,當前節點的id。
  • 響應的資料:json。E3Result。
  • 業務邏輯:
    1、根據id刪除記錄。
    2、判斷父節點下是否還有子節點,如果沒有需要把父節點的isparent改為false
    3、如果刪除的是父節點,子節點要級聯刪除。
    兩種解決方案:
    1)如果判斷是父節點不允許刪除。
    2)遞迴刪除。