空间设置和回收站功能开发
This commit is contained in:
@@ -20,6 +20,10 @@ import org.dromara.zyplayer.data.repository.manage.vo.WikiPageTemplateInfoVo;
|
||||
import org.dromara.zyplayer.data.repository.support.consts.DocSysType;
|
||||
import org.dromara.zyplayer.data.repository.support.consts.UserMsgType;
|
||||
import org.dromara.zyplayer.data.service.manage.*;
|
||||
import org.dromara.zyplayer.data.service.params.PageDeleteParam;
|
||||
import org.dromara.zyplayer.data.service.params.PageRecycleListParam;
|
||||
import org.dromara.zyplayer.data.service.params.RecycleDeletePageParam;
|
||||
import org.dromara.zyplayer.data.service.params.RestorePageParam;
|
||||
import org.dromara.zyplayer.data.utils.CachePrefix;
|
||||
import org.dromara.zyplayer.data.utils.CacheUtil;
|
||||
import org.dromara.zyplayer.wiki.controller.vo.WikiPageContentVo;
|
||||
@@ -78,7 +82,6 @@ public class WikiPageController {
|
||||
if (SpaceType.isOthersPrivate(wikiSpaceSel.getType(), currentUser.getUserId(), wikiSpaceSel.getCreateUserId())) {
|
||||
return DocResponseJson.warn("您没有权限查看该空间的文章列表!");
|
||||
}
|
||||
|
||||
List<WikiPageTemplateInfoVo> wikiPageList = wikiPageService.wikiPageTemplateInfos(wikiPage.getSpaceId());
|
||||
Map<Long, List<WikiPageVo>> listMap = wikiPageList.stream().map(WikiPageVo::new).collect(Collectors.groupingBy(WikiPageVo::getParentId));
|
||||
List<WikiPageVo> nodePageList = listMap.get(0L);
|
||||
@@ -88,7 +91,22 @@ public class WikiPageController {
|
||||
}
|
||||
return DocResponseJson.ok(nodePageList);
|
||||
}
|
||||
|
||||
|
||||
@PostMapping("/recycleList")
|
||||
public ResponseJson<List<WikiPageVo>> recycleList(PageRecycleListParam param) {
|
||||
return wikiPageWebService.recycleList(param);
|
||||
}
|
||||
|
||||
@PostMapping("/restore")
|
||||
public ResponseJson<Object> restore(RestorePageParam param) {
|
||||
return wikiPageWebService.restore(param.getPageIds());
|
||||
}
|
||||
|
||||
@PostMapping("/recycleDelete")
|
||||
public ResponseJson<Object> recycleDelete(RecycleDeletePageParam param) {
|
||||
return wikiPageWebService.recycleDelete(param);
|
||||
}
|
||||
|
||||
@PostMapping("/detail")
|
||||
public ResponseJson<WikiPageContentVo> detail(WikiPage wikiPage) {
|
||||
DocUserDetails currentUser = DocUserUtil.getCurrentUser();
|
||||
@@ -172,28 +190,8 @@ public class WikiPageController {
|
||||
}
|
||||
|
||||
@PostMapping("/delete")
|
||||
public ResponseJson<Object> delete(Long pageId) {
|
||||
DocUserDetails currentUser = DocUserUtil.getCurrentUser();
|
||||
WikiPage wikiPageSel = wikiPageService.getById(pageId);
|
||||
// 删除权限判断
|
||||
WikiSpace wikiSpaceSel = wikiSpaceService.getById(wikiPageSel.getSpaceId());
|
||||
String canDelete = wikiPageAuthService.canDelete(wikiSpaceSel, wikiPageSel.getEditType(), wikiPageSel.getId(), currentUser.getUserId());
|
||||
if (canDelete != null) {
|
||||
return DocResponseJson.warn(canDelete);
|
||||
}
|
||||
// 执行删除
|
||||
WikiPage wikiPage = new WikiPage();
|
||||
wikiPage.setId(pageId);
|
||||
wikiPage.setDelFlag(1);
|
||||
wikiPage.setName(wikiPageSel.getName());
|
||||
wikiPage.setUpdateTime(new Date());
|
||||
wikiPage.setUpdateUserId(currentUser.getUserId());
|
||||
wikiPage.setUpdateUserName(currentUser.getUsername());
|
||||
wikiPageService.deletePage(wikiPage);
|
||||
QueryWrapper queryWrapper = new QueryWrapper();
|
||||
queryWrapper.eq("space_id", wikiPageSel.getSpaceId());
|
||||
queryWrapper.eq("page_id", wikiPageSel.getId());
|
||||
wikiPageTemplateService.remove(queryWrapper);
|
||||
public ResponseJson<Object> delete(PageDeleteParam param) {
|
||||
wikiPageWebService.delete(param);
|
||||
return DocResponseJson.ok();
|
||||
}
|
||||
|
||||
|
||||
@@ -7,15 +7,27 @@ import cn.hutool.core.util.URLUtil;
|
||||
import cn.hutool.http.HttpResponse;
|
||||
import cn.hutool.http.HttpUtil;
|
||||
import cn.hutool.system.SystemUtil;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import org.apache.commons.collections4.CollectionUtils;
|
||||
import org.dromara.zyplayer.core.json.DocResponseJson;
|
||||
import org.dromara.zyplayer.core.json.ResponseJson;
|
||||
import org.dromara.zyplayer.data.config.security.DocUserDetails;
|
||||
import org.dromara.zyplayer.data.config.security.DocUserUtil;
|
||||
import org.dromara.zyplayer.data.repository.manage.entity.WikiPage;
|
||||
import org.dromara.zyplayer.data.repository.manage.entity.WikiPageTemplate;
|
||||
import org.dromara.zyplayer.data.repository.manage.entity.WikiSpace;
|
||||
import org.dromara.zyplayer.data.repository.manage.mapper.WikiPageMapper;
|
||||
import org.dromara.zyplayer.data.service.manage.WikiPageService;
|
||||
import org.dromara.zyplayer.data.service.manage.WikiPageTemplateService;
|
||||
import org.dromara.zyplayer.data.service.manage.WikiSpaceService;
|
||||
import org.dromara.zyplayer.data.service.params.PageDeleteParam;
|
||||
import org.dromara.zyplayer.data.service.params.PageRecycleListParam;
|
||||
import org.dromara.zyplayer.data.service.params.RecycleDeletePageParam;
|
||||
import org.dromara.zyplayer.data.utils.HtmlUtils;
|
||||
import org.dromara.zyplayer.wiki.controller.vo.WikiPageVo;
|
||||
import org.dromara.zyplayer.wiki.framework.consts.SpaceType;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.docx4j.XmlUtils;
|
||||
@@ -38,7 +50,11 @@ import javax.servlet.http.HttpServletResponse;
|
||||
import java.io.File;
|
||||
import java.net.URLEncoder;
|
||||
import java.nio.charset.StandardCharsets;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
import java.util.Optional;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@Service
|
||||
public class WikiPageWebService {
|
||||
@@ -48,6 +64,10 @@ public class WikiPageWebService {
|
||||
WikiPageService wikiPageService;
|
||||
@Resource
|
||||
WikiSpaceService wikiSpaceService;
|
||||
@Resource
|
||||
WikiPageMapper wikiPageMapper;
|
||||
@Resource
|
||||
WikiPageTemplateService wikiPageTemplateService;
|
||||
|
||||
public ResponseJson<Object> download(Long pageId, String content, HttpServletRequest request, HttpServletResponse response) {
|
||||
DocUserDetails currentUser = DocUserUtil.getCurrentUser();
|
||||
@@ -118,4 +138,104 @@ public class WikiPageWebService {
|
||||
}
|
||||
return DocResponseJson.warn("导出失败");
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取空间已删除的页面
|
||||
*
|
||||
* @author 暮光:城中城
|
||||
* @since 2023-04-29
|
||||
*/
|
||||
public ResponseJson<List<WikiPageVo>> recycleList(PageRecycleListParam param) {
|
||||
// 删除的页面
|
||||
WikiSpace wikiSpaceSel = wikiSpaceService.getById(param.getSpaceId());
|
||||
// 不是空间的协作者返回空列表 TODO 判断权限
|
||||
if (wikiSpaceSel == null) {
|
||||
return DocResponseJson.ok();
|
||||
}
|
||||
LambdaQueryWrapper<WikiPage> wrapper = new LambdaQueryWrapper<>();
|
||||
wrapper.eq(WikiPage::getDelFlag, 1);
|
||||
wrapper.eq(WikiPage::getSpaceId, param.getSpaceId());
|
||||
wrapper.orderByDesc(WikiPage::getUpdateTime).orderByDesc(WikiPage::getId);
|
||||
IPage<WikiPage> page = new Page<>(param.getPageNum(), 20, true);
|
||||
wikiPageService.page(page, wrapper);
|
||||
DocResponseJson<List<WikiPageVo>> responseJson = DocResponseJson.ok();
|
||||
responseJson.setTotal(page.getTotal());
|
||||
if (CollectionUtils.isNotEmpty(page.getRecords())) {
|
||||
responseJson.setData(page.getRecords().stream().map(WikiPageVo::new).collect(Collectors.toList()));
|
||||
}
|
||||
return responseJson;
|
||||
}
|
||||
|
||||
public ResponseJson<Object> restore(String pageIds) {
|
||||
String[] pageIdArr = StringUtils.split(pageIds, ",");
|
||||
for (String pageId : pageIdArr) {
|
||||
DocResponseJson<Object> restoreRes = this.restore(Long.valueOf(pageId));
|
||||
if (!restoreRes.isOk()) {
|
||||
return restoreRes;
|
||||
}
|
||||
}
|
||||
return DocResponseJson.ok();
|
||||
}
|
||||
|
||||
public DocResponseJson<Object> restore(Long pageId) {
|
||||
DocUserDetails currentUser = DocUserUtil.getCurrentUser();
|
||||
WikiPage wikiPageSel = wikiPageService.getById(pageId);
|
||||
WikiSpace wikiSpaceSel = wikiSpaceService.getById(wikiPageSel.getSpaceId());
|
||||
// 是否具有编辑权限 TODO
|
||||
// if (!userDataAuthService.canEditPage(wikiSpaceSel.getId(), pageId, wikiSpaceSel.getCreateUserId())) {
|
||||
// return DocResponseJson.warn(ErrorEnum.NO_PERMISSION_TO_RESTORE_ARTICLE);
|
||||
// }
|
||||
// 执行恢复操作
|
||||
WikiPage wikiPage = new WikiPage();
|
||||
wikiPage.setId(pageId);
|
||||
wikiPage.setDelFlag(0);
|
||||
wikiPage.setName(wikiPageSel.getName());
|
||||
wikiPage.setUpdateTime(new Date());
|
||||
wikiPage.setUpdateUserId(currentUser.getUserId());
|
||||
wikiPage.setUpdateUserName(currentUser.getUsername());
|
||||
wikiPageService.updateById(wikiPage);
|
||||
// 重置当前分支的所有节点seq值
|
||||
wikiPageMapper.updateChildrenSeq(wikiPageSel.getSpaceId(), wikiPageSel.getParentId());
|
||||
return DocResponseJson.ok();
|
||||
}
|
||||
|
||||
public DocResponseJson<Object> delete(PageDeleteParam param) {
|
||||
DocUserDetails currentUser = DocUserUtil.getCurrentUser();
|
||||
WikiPage wikiPageSel = wikiPageService.getById(param.getPageId());
|
||||
// 删除权限判断 TODO
|
||||
WikiSpace wikiSpaceSel = wikiSpaceService.getById(wikiPageSel.getSpaceId());
|
||||
// String canDelete = wikiPageAuthService.canDelete(wikiSpaceSel, wikiPageSel.getEditType(), wikiPageSel.getId(), currentUser.getUserId());
|
||||
// if (canDelete != null) {
|
||||
// return DocResponseJson.warn(canDelete);
|
||||
// }
|
||||
// 执行删除
|
||||
WikiPage wikiPage = new WikiPage();
|
||||
wikiPage.setId(param.getPageId());
|
||||
wikiPage.setDelFlag(Optional.ofNullable(param.getDelFlag()).orElse(1));
|
||||
wikiPage.setName(wikiPageSel.getName());
|
||||
wikiPage.setUpdateTime(new Date());
|
||||
wikiPage.setUpdateUserId(currentUser.getUserId());
|
||||
wikiPage.setUpdateUserName(currentUser.getUsername());
|
||||
wikiPageService.deletePage(wikiPage);
|
||||
QueryWrapper<WikiPageTemplate> queryWrapper = new QueryWrapper<>();
|
||||
queryWrapper.eq("space_id", wikiPageSel.getSpaceId());
|
||||
queryWrapper.eq("page_id", wikiPageSel.getId());
|
||||
wikiPageTemplateService.remove(queryWrapper);
|
||||
return DocResponseJson.ok();
|
||||
}
|
||||
|
||||
public ResponseJson<Object> recycleDelete(RecycleDeletePageParam param) {
|
||||
String[] pageIdArr = StringUtils.split(param.getPageIds(), ",");
|
||||
for (String pageId : pageIdArr) {
|
||||
PageDeleteParam deleteParam = new PageDeleteParam();
|
||||
deleteParam.setPageId(Long.valueOf(pageId));
|
||||
deleteParam.setSpaceId(param.getSpaceId());
|
||||
deleteParam.setDelFlag(2);
|
||||
DocResponseJson<Object> restoreRes = this.delete(deleteParam);
|
||||
if (!restoreRes.isOk()) {
|
||||
return restoreRes;
|
||||
}
|
||||
}
|
||||
return DocResponseJson.ok();
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user