|
|
@@ -11,6 +11,8 @@ import cn.seecoder.web.model.vo.tree.TreeNodeCreateVO;
|
|
|
import cn.seecoder.web.model.vo.tree.TreeNodeUpdateBasicVO;
|
|
|
import cn.seecoder.web.model.vo.tree.TreeNodeVO;
|
|
|
import cn.seecoder.web.service.tree.TreeNodeService;
|
|
|
+
|
|
|
+import org.apache.http.HttpStatus;
|
|
|
import org.springframework.beans.BeanUtils;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
@@ -91,11 +93,23 @@ public class TreeNodeServiceImpl implements TreeNodeService {
|
|
|
|
|
|
@Override
|
|
|
@Transactional
|
|
|
- public void deleteTreeNode(int nodeId) {
|
|
|
-
|
|
|
- treeNodeMapper.deleteTreeNode(nodeId);
|
|
|
- //todo 删除子节点
|
|
|
- // TODO:safety check
|
|
|
+ public void deleteTreeNode(int nodeId) throws ServiceException {
|
|
|
+ TreeNodePO po = treeNodeMapper.getTreeNodeById(nodeId);
|
|
|
+ if (po != null && po.getParentId()!=null){
|
|
|
+ Stack<TreeNodePO> trees = new Stack<TreeNodePO>();
|
|
|
+ trees.push(po);
|
|
|
+ //递归删除
|
|
|
+ while (trees.size()!=0){
|
|
|
+ TreeNodePO toDelete = trees.pop();
|
|
|
+ treeNodeMapper.deleteTreeNode(toDelete.getId());
|
|
|
+ List<TreeNodePO> childs = treeNodeMapper.getTreeNodesByParentId(toDelete.getId());
|
|
|
+ for (TreeNodePO child : childs){
|
|
|
+ trees.push(child);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ throw new ServiceException(HttpStatus.SC_SERVICE_UNAVAILABLE, "根节点不可以被删除");
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
/**
|