1. 程式人生 > >前臺系統(內容分類樹形列表增刪重新命名)

前臺系統(內容分類樹形列表增刪重新命名)

5Cms系統實現

5.1內容分類管理

5.1.1展示內容分類

功能分析

請求的url:/content/category/list

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

響應資料:List<EasyUITreeNode>(@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<TbContentCategory>
  4. 把列表轉換成List<EasyUITreeNode>

Dao層

使用逆向工程

Service

引數:long parentId

返回值:List<EasyUITreeNode>

@Service

public class ContentCategoryServiceImpl implements ContentCategoryService {

 

      @Autowired

      private TbContentCategoryMapper contentCategoryMapper;

     

      @Override

      public List<EasyUITreeNode> getContentCategoryList(long

parentId) {

            // 1、取查詢引數id,parentId

            // 2、根據parentId查詢tb_content_category,查詢子節點列表。

            TbContentCategoryExample example = new TbContentCategoryExample();

            //設定查詢條件

            Criteria criteria = example.createCriteria();

            criteria.andParentIdEqualTo(parentId);

            //執行查詢

            // 3、得到List<TbContentCategory>

            List<TbContentCategory> list = contentCategoryMapper.selectByExample(example);

            // 4、把列表轉換成List<EasyUITreeNode>ub

            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;

      }

 

}

釋出服務

表現層(在哪個表現層呼叫就在哪裡引用dubbo服務)

E3-manager-web

依賴e3-content-interface工程模組

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

Controller

@Controller

@RequestMapping("/content/category")

public class ContentCategoryController {

 

      @Autowired

      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;

      }

}

 

5.1.2 新增節點

功能分析

請求的url:/content/category/create

請求的引數:

Long parentId

String name

響應的結果:

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

業務邏輯:

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

Dao層

可以使用逆向工程。

需要新增主鍵返回:

Service層

引數:parentId、name

返回值:返回E3Result,其中包裝TbContentCategory物件

@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表中插入資料

            contentCategoryMapper.insert(tbContentCategory);

            // 3、判斷父節點的isparent是否為true,不是true需要改為true。

            TbContentCategory parentNode = contentCategoryMapper.selectByPrimaryKey(parentId);

            if (!parentNode.getIsParent()) {

                  parentNode.setIsParent(true);

                  //更新父節點

                  contentCategoryMapper.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 createCategory(Long parentId, String name) {

            E3Result result = contentCategoryService.addContentCategory(parentId, name);

            return result;

      }

5.1.3內容分類重新命名、刪除

重新命名

請求的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. 遞迴刪除。

作業。