删除页面时递归删除子页面

This commit is contained in:
暮光:城中城
2019-06-15 13:13:22 +08:00
parent dc93ea4395
commit f975e23cd8
6 changed files with 85 additions and 9 deletions

View File

@@ -15,4 +15,5 @@ public interface WikiPageService extends IService<WikiPage> {
void changeParent(WikiPage wikiPage, Integer beforeSeq, Integer afterSeq);
void deletePage(WikiPage wikiPage);
}

View File

@@ -1,12 +1,15 @@
package com.zyplayer.doc.data.service.manage.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.zyplayer.doc.data.repository.manage.entity.WikiPage;
import com.zyplayer.doc.data.repository.manage.mapper.WikiPageMapper;
import com.zyplayer.doc.data.service.manage.WikiPageService;
import org.apache.commons.collections.CollectionUtils;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.List;
import java.util.Optional;
/**
@@ -41,4 +44,23 @@ public class WikiPageServiceImpl extends ServiceImpl<WikiPageMapper, WikiPage> i
}
this.updateById(wikiPage);
}
@Override
public void deletePage(WikiPage wikiPage) {
wikiPage.setDelFlag(1);
this.updateById(wikiPage);
QueryWrapper<WikiPage> wrapper = new QueryWrapper<>();
wrapper.eq("del_flag", 0);
wrapper.eq("parent_id", wikiPage.getId());
List<WikiPage> wikiPageList = this.list(wrapper);
if (CollectionUtils.isEmpty(wikiPageList)) {
return;
}
// 递归删除子页面
for (WikiPage page : wikiPageList) {
wikiPage.setId(page.getId());
this.deletePage(wikiPage);
}
}
}

View File

@@ -187,6 +187,7 @@
app = this;
global.vue.$app = this;
this.loadSpaceList();
this.checkSystemUpgrade();
},
methods: {
createWiki() {
@@ -294,7 +295,14 @@
app.nowClickPath = {spaceId: spaceId};
app.choiceSpace = spaceId;
app.doGetPageList(null);
app.$router.push({path: '/home', query: {spaceId: spaceId}});
// 在首页时跳转
try {
if (app.$router.app._route.path == "/home") {
app.$router.push({path: '/home', query: {spaceId: spaceId}});
}
} catch (e) {
console.log(e);
}
}
});
},
@@ -394,6 +402,19 @@
onNewSpaceCancel() {
this.newSpaceDialogVisible = false;
},
checkSystemUpgrade() {
this.common.post(this.apilist1.systemUpgradeInfo, {}, function (json) {
if (!!json.data) {
app.upgradeInfo = json.data;
console.log("zyplayer-doc发现新版本"
+ "\n升级地址" + json.data.upgradeUrl
+ "\n当前版本" + json.data.nowVersion
+ "\n最新版本" + json.data.lastVersion
+ "\n升级内容" + json.data.upgradeContent
);
}
});
},
init() {
},

View File

@@ -7,6 +7,7 @@ var URL = {
pageList: '/zyplayer-doc-wiki/page/list',
updatePage: '/zyplayer-doc-wiki/page/update',
pageDetail: '/zyplayer-doc-wiki/page/detail',
pageDelete: '/zyplayer-doc-wiki/page/delete',
pageNews: '/zyplayer-doc-wiki/page/news',
spaceList: '/zyplayer-doc-wiki/space/list',
updateSpace: '/zyplayer-doc-wiki/space/update',
@@ -21,6 +22,8 @@ var URL = {
commonUpload: '/zyplayer-doc-wiki/common/upload',
getUserBaseInfo: '/zyplayer-doc-wiki/common/user/base',
systemUpgradeInfo: '/system/info/upgrade',
};
var URL1 = {};

View File

@@ -244,18 +244,18 @@
this.pageAuthUserList = pageAuthUserList;
},
deleteWikiPage() {
this.$confirm('确定要删除此页面吗?', '提示', {
this.$confirm('确定要删除此页面及其所有子页面吗?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
var param = {id: app.wikiPage.id, delFlag: 1};
this.common.post(this.apilist1.updatePage, param, function (json) {
var param = {pageId: app.wikiPage.id};
this.common.post(this.apilist1.pageDelete, param, function (json) {
// 重新加载左侧列表,跳转到展示页面
global.vue.$app.doGetPageList(null);
app.$router.push({path: '/home', query: {spaceId: app.nowClickPath.spaceId}});
app.$router.push({path: '/home', query: {spaceId: app.wikiPage.spaceId}});
});
});
}).catch(()=>{});
},
loadPageDetail(pageId) {
app.rightContentType = 1;

View File

@@ -154,14 +154,43 @@ public class WikiPageController {
return DocResponseJson.ok();
}
@PostMapping("/delete")
public ResponseJson<Object> delete(Long pageId) {
DocUserDetails currentUser = DocUserUtil.getCurrentUser();
WikiPage wikiPageSel = wikiPageService.getById(pageId);
if (wikiPageSel == null || Objects.equals(wikiPageSel.getEditType(), 1)) {
return DocResponseJson.warn("当前页面不允许编辑!");
}
WikiSpace wikiSpaceSel = wikiSpaceService.getById(wikiPageSel.getSpaceId());
// 私人空间不允许调用接口获取文章
if (SpaceType.isOthersPrivate(wikiSpaceSel.getType(), currentUser.getUserId(), wikiSpaceSel.getCreateUserId())) {
return DocResponseJson.warn("您没有权限修改该空间的文章!");
}
// 空间不是自己的,也没有权限
if (SpaceType.isOthersPersonal(wikiSpaceSel.getType(), currentUser.getUserId(), wikiSpaceSel.getCreateUserId())) {
boolean pageAuth = DocUserUtil.havePageAuth(WikiAuthType.DELETE_PAGE.getName(), pageId);
if (!pageAuth) {
return DocResponseJson.warn("您没有删除该文章的权限!");
}
}
// 执行删除
WikiPage wikiPage = new WikiPage();
wikiPage.setId(pageId);
wikiPage.setDelFlag(1);
wikiPage.setUpdateTime(new Date());
wikiPage.setUpdateUserId(currentUser.getUserId());
wikiPage.setUpdateUserName(currentUser.getUsername());
wikiPageService.deletePage(wikiPage);
return DocResponseJson.ok();
}
@PostMapping("/update")
public ResponseJson<Object> update(WikiPage wikiPage, String content, String preview) {
DocUserDetails currentUser = DocUserUtil.getCurrentUser();
WikiPageContent pageContent = new WikiPageContent();
pageContent.setContent(content);
pageContent.setPreview(preview);
Integer delFlag = Optional.ofNullable(wikiPage.getDelFlag()).orElse(0);
if (delFlag == 0 && StringUtils.isBlank(wikiPage.getName())) {
if (StringUtils.isBlank(wikiPage.getName())) {
return DocResponseJson.warn("标题不能为空!");
}
Long pageId = wikiPage.getId();
@@ -170,7 +199,7 @@ public class WikiPageController {
if (wikiPageSel == null || Objects.equals(wikiPageSel.getEditType(), 1)) {
return DocResponseJson.warn("当前页面不允许编辑!");
}
WikiSpace wikiSpaceSel = wikiSpaceService.getById(wikiPage.getSpaceId());
WikiSpace wikiSpaceSel = wikiSpaceService.getById(wikiPageSel.getSpaceId());
// 私人空间不允许调用接口获取文章
if (SpaceType.isOthersPrivate(wikiSpaceSel.getType(), currentUser.getUserId(), wikiSpaceSel.getCreateUserId())) {
return DocResponseJson.warn("您没有权限修改该空间的文章!");