前臺系統(內容分類樹形列表增刪重新命名)
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)}]
業務邏輯:
- 取查詢引數id,parentId
- 根據parentId查詢tb_content_category,查詢子節點列表。
- 得到List<TbContentCategory>
- 把列表轉換成List<EasyUITreeNode>
Dao層
使用逆向工程
Service
引數:long parentId
返回值:List<EasyUITreeNode>
@Service public class ContentCategoryServiceImpl implements ContentCategoryService {
@Autowired private TbContentCategoryMapper contentCategoryMapper;
@Override public List<EasyUITreeNode> getContentCategoryList(long // 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
業務邏輯:
- 接收兩個引數:parentId、name
- 向tb_content_category表中插入資料。
- 建立一個TbContentCategory物件
- 補全TbContentCategory物件的屬性
- 向tb_content_category表中插入資料
- 判斷父節點的isparent是否為true,不是true需要改為true。
- 需要主鍵返回。
- 返回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。
業務邏輯:
- 根據id刪除記錄。
- 判斷父節點下是否還有子節點,如果沒有需要把父節點的isparent改為false
- 如果刪除的是父節點,子節點要級聯刪除。
兩種解決方案:
- 如果判斷是父節點不允許刪除。
- 遞迴刪除。
作業。