#I1KQUK 开放地址首页展示优化,优化查看编辑页展示及url参数,无权限时不展示对应按钮
This commit is contained in:
@@ -2,12 +2,17 @@ package com.zyplayer.doc.wiki.controller;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
||||
import com.github.pagehelper.PageHelper;
|
||||
import com.github.pagehelper.PageInfo;
|
||||
import com.zyplayer.doc.core.json.DocResponseJson;
|
||||
import com.zyplayer.doc.core.json.ResponseJson;
|
||||
import com.zyplayer.doc.data.repository.manage.entity.WikiPage;
|
||||
import com.zyplayer.doc.data.repository.manage.entity.WikiPageContent;
|
||||
import com.zyplayer.doc.data.repository.manage.entity.WikiPageFile;
|
||||
import com.zyplayer.doc.data.repository.manage.entity.WikiSpace;
|
||||
import com.zyplayer.doc.data.repository.manage.mapper.WikiPageContentMapper;
|
||||
import com.zyplayer.doc.data.repository.manage.param.SearchByEsParam;
|
||||
import com.zyplayer.doc.data.repository.manage.vo.SpaceNewsVo;
|
||||
import com.zyplayer.doc.data.service.manage.WikiPageContentService;
|
||||
import com.zyplayer.doc.data.service.manage.WikiPageFileService;
|
||||
import com.zyplayer.doc.data.service.manage.WikiPageService;
|
||||
@@ -15,6 +20,7 @@ import com.zyplayer.doc.data.service.manage.WikiSpaceService;
|
||||
import com.zyplayer.doc.wiki.controller.vo.WikiPageContentVo;
|
||||
import com.zyplayer.doc.wiki.controller.vo.WikiPageVo;
|
||||
import org.apache.commons.collections.CollectionUtils;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.dozer.Mapper;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
@@ -46,28 +52,62 @@ public class WikiOpenApiController {
|
||||
@Resource
|
||||
WikiPageFileService wikiPageFileService;
|
||||
@Resource
|
||||
WikiPageContentMapper wikiPageContentMapper;
|
||||
@Resource
|
||||
Mapper mapper;
|
||||
|
||||
@PostMapping("/space/info")
|
||||
public ResponseJson<WikiSpace> spaceInfo(String space) {
|
||||
UpdateWrapper<WikiSpace> wrapper = new UpdateWrapper<>();
|
||||
wrapper.eq("uuid", space);
|
||||
wrapper.eq("del_flag", 0);
|
||||
WikiSpace wikiSpace = wikiSpaceService.getOne(wrapper);
|
||||
// 不存在或未开放
|
||||
if (wikiSpace == null || wikiSpace.getOpenDoc() != 1) {
|
||||
WikiSpace wikiSpace = this.getWikiSpace(space);
|
||||
if (wikiSpace == null) {
|
||||
return DocResponseJson.warn("未找到该文档");
|
||||
}
|
||||
return DocResponseJson.ok(wikiSpace);
|
||||
}
|
||||
|
||||
@PostMapping("/page/news")
|
||||
public ResponseJson<List<WikiPageVo>> news(SearchByEsParam param, String space) {
|
||||
WikiSpace wikiSpace = this.getWikiSpace(space);
|
||||
if (wikiSpace == null) {
|
||||
return DocResponseJson.warn("未找到该文档");
|
||||
}
|
||||
String keywords = param.getKeywords();
|
||||
if (StringUtils.isNotBlank(keywords)) {
|
||||
param.setKeywords("%" + keywords + "%");
|
||||
}
|
||||
// 分页查询
|
||||
param.setSpaceIds(Collections.singletonList(wikiSpace.getId()));
|
||||
PageHelper.startPage(param.getPageNum(), param.getPageSize(), true);
|
||||
List<SpaceNewsVo> spaceNewsVoList = wikiPageContentMapper.getNewsList(param);
|
||||
PageInfo<SpaceNewsVo> pageListPageInfo = new PageInfo<>(spaceNewsVoList);
|
||||
if (CollectionUtils.isNotEmpty(spaceNewsVoList)) {
|
||||
spaceNewsVoList.forEach(val -> {
|
||||
val.setSpace(wikiSpace.getUuid());
|
||||
val.setSpaceName(wikiSpace.getName());
|
||||
String preview = val.getPreviewContent();
|
||||
if (preview != null) {
|
||||
if (preview.length() > 200) {
|
||||
preview = preview.substring(0, 200);
|
||||
}
|
||||
if (keywords != null) {
|
||||
preview = preview.replace(keywords, "<span style=\"color:red\">" + keywords + "</span>");
|
||||
}
|
||||
}
|
||||
val.setPreviewContent(preview);
|
||||
String pageTitle = val.getPageTitle();
|
||||
if (pageTitle != null && keywords != null) {
|
||||
pageTitle = pageTitle.replace(keywords, "<span style=\"color:red\">" + keywords + "</span>");
|
||||
}
|
||||
val.setPageTitle(pageTitle);
|
||||
});
|
||||
}
|
||||
return DocResponseJson.ok(pageListPageInfo);
|
||||
}
|
||||
|
||||
@PostMapping("/page/list")
|
||||
public ResponseJson<List<WikiPageVo>> list(String space) {
|
||||
UpdateWrapper<WikiSpace> wrapperSpace = new UpdateWrapper<>();
|
||||
wrapperSpace.eq("uuid", space);
|
||||
WikiSpace wikiSpace = wikiSpaceService.getOne(wrapperSpace);
|
||||
// 不存在或未开放
|
||||
if (wikiSpace == null || wikiSpace.getOpenDoc() != 1) {
|
||||
WikiSpace wikiSpace = this.getWikiSpace(space);
|
||||
if (wikiSpace == null) {
|
||||
return DocResponseJson.warn("未找到该文档");
|
||||
}
|
||||
QueryWrapper<WikiPage> wrapper = new QueryWrapper<>();
|
||||
@@ -88,11 +128,8 @@ public class WikiOpenApiController {
|
||||
|
||||
@PostMapping("/page/detail")
|
||||
public ResponseJson<WikiPageContentVo> detail(String space, Long pageId) {
|
||||
UpdateWrapper<WikiSpace> wrapperSpace = new UpdateWrapper<>();
|
||||
wrapperSpace.eq("uuid", space);
|
||||
WikiSpace wikiSpace = wikiSpaceService.getOne(wrapperSpace);
|
||||
// 不存在或未开放
|
||||
if (wikiSpace == null || wikiSpace.getOpenDoc() != 1) {
|
||||
WikiSpace wikiSpace = this.getWikiSpace(space);
|
||||
if (wikiSpace == null) {
|
||||
return DocResponseJson.warn("未找到该文档");
|
||||
}
|
||||
WikiPage wikiPageSel = wikiPageService.getById(pageId);
|
||||
@@ -138,5 +175,22 @@ public class WikiOpenApiController {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取空间信息
|
||||
* @param space
|
||||
* @return
|
||||
*/
|
||||
private WikiSpace getWikiSpace(String space) {
|
||||
QueryWrapper<WikiSpace> wrapperSpace = new QueryWrapper<>();
|
||||
wrapperSpace.eq("uuid", space);
|
||||
wrapperSpace.eq("del_flag", 0);
|
||||
WikiSpace wikiSpace = wikiSpaceService.getOne(wrapperSpace);
|
||||
// 不存在或未开放
|
||||
if (wikiSpace == null || wikiSpace.getOpenDoc() != 1) {
|
||||
return null;
|
||||
}
|
||||
return wikiSpace;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -13,6 +13,7 @@ import com.zyplayer.doc.data.service.manage.*;
|
||||
import com.zyplayer.doc.wiki.controller.vo.UserPageAuthVo;
|
||||
import com.zyplayer.doc.wiki.framework.consts.SpaceType;
|
||||
import com.zyplayer.doc.wiki.framework.consts.WikiAuthType;
|
||||
import com.zyplayer.doc.wiki.service.WikiPageAuthService;
|
||||
import org.apache.commons.collections.CollectionUtils;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
@@ -49,6 +50,8 @@ public class WikiPageAuthController {
|
||||
UserAuthService userAuthService;
|
||||
@Resource
|
||||
AuthInfoService authInfoService;
|
||||
@Resource
|
||||
WikiPageAuthService wikiPageAuthService;
|
||||
|
||||
@PostMapping("/assign")
|
||||
public ResponseJson<List<WikiPageZan>> assign(Long pageId, String authList) {
|
||||
@@ -61,13 +64,9 @@ public class WikiPageAuthController {
|
||||
// if (SpaceType.isPublic(wikiSpaceSel.getType())) {
|
||||
// return DocResponseJson.warn("公共空间不需要编辑权限");
|
||||
// }
|
||||
if (!SpaceType.isPersonal(wikiSpaceSel.getType())) {
|
||||
return DocResponseJson.warn("只有个人空间才可以编辑权限");
|
||||
}
|
||||
if (!Objects.equals(currentUser.getUserId(), wikiSpaceSel.getCreateUserId())) {
|
||||
if (!DocUserUtil.haveCustomAuth(WikiAuthType.PAGE_AUTH_MANAGE.getName(), DocAuthConst.WIKI + pageId)) {
|
||||
return DocResponseJson.warn("您不是创建人或没有权限修改");
|
||||
}
|
||||
String canConfigAuth = wikiPageAuthService.canConfigAuth(wikiSpaceSel, pageId, currentUser.getUserId());
|
||||
if (canConfigAuth != null) {
|
||||
return DocResponseJson.warn(canConfigAuth);
|
||||
}
|
||||
List<String> authNameList = Stream.of(WikiAuthType.values()).map(WikiAuthType::getName).collect(Collectors.toList());
|
||||
QueryWrapper<AuthInfo> queryWrapper = new QueryWrapper<>();
|
||||
|
||||
@@ -14,7 +14,6 @@ import com.zyplayer.doc.data.repository.manage.mapper.WikiPageContentMapper;
|
||||
import com.zyplayer.doc.data.repository.manage.mapper.WikiPageMapper;
|
||||
import com.zyplayer.doc.data.repository.manage.param.SearchByEsParam;
|
||||
import com.zyplayer.doc.data.repository.manage.vo.SpaceNewsVo;
|
||||
import com.zyplayer.doc.data.repository.support.consts.DocAuthConst;
|
||||
import com.zyplayer.doc.data.service.elasticsearch.entity.EsWikiPage;
|
||||
import com.zyplayer.doc.data.service.elasticsearch.service.EsWikiPageService;
|
||||
import com.zyplayer.doc.data.service.elasticsearch.support.EsPage;
|
||||
@@ -24,7 +23,7 @@ import com.zyplayer.doc.data.utils.CacheUtil;
|
||||
import com.zyplayer.doc.wiki.controller.vo.WikiPageContentVo;
|
||||
import com.zyplayer.doc.wiki.controller.vo.WikiPageVo;
|
||||
import com.zyplayer.doc.wiki.framework.consts.SpaceType;
|
||||
import com.zyplayer.doc.wiki.framework.consts.WikiAuthType;
|
||||
import com.zyplayer.doc.wiki.service.WikiPageAuthService;
|
||||
import org.apache.commons.collections.CollectionUtils;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.dozer.Mapper;
|
||||
@@ -68,6 +67,8 @@ public class WikiPageController {
|
||||
@Resource
|
||||
WikiPageMapper wikiPageMapper;
|
||||
@Resource
|
||||
WikiPageAuthService wikiPageAuthService;
|
||||
@Resource
|
||||
Mapper mapper;
|
||||
@Autowired(required = false)
|
||||
EsWikiPageService esWikiPageService;
|
||||
@@ -133,6 +134,15 @@ public class WikiPageController {
|
||||
vo.setFileList(pageFiles);
|
||||
vo.setSelfZan((pageZan != null) ? 1 : 0);
|
||||
vo.setSelfUserId(currentUser.getUserId());
|
||||
// 上传附件、编辑、权限设置、删除 的权限
|
||||
String canEdit = wikiPageAuthService.canEdit(wikiSpaceSel, wikiPageSel.getEditType(), wikiPageSel.getId(), currentUser.getUserId());
|
||||
String canDelete = wikiPageAuthService.canDelete(wikiSpaceSel, wikiPageSel.getEditType(), wikiPageSel.getId(), currentUser.getUserId());
|
||||
String canUploadFile = wikiPageAuthService.canUploadFile(wikiSpaceSel, wikiPageSel.getId(), currentUser.getUserId());
|
||||
String canConfigAuth = wikiPageAuthService.canConfigAuth(wikiSpaceSel, wikiPageSel.getId(), currentUser.getUserId());
|
||||
vo.setCanEdit((canEdit == null) ? 1 : 0);
|
||||
vo.setCanDelete((canDelete == null) ? 1 : 0);
|
||||
vo.setCanUploadFile((canUploadFile == null) ? 1 : 0);
|
||||
vo.setCanConfigAuth((canConfigAuth == null) ? 1 : 0);
|
||||
// 高并发下会有覆盖问题,但不重要~
|
||||
Integer viewNum = Optional.ofNullable(wikiPageSel.getViewNum()).orElse(0);
|
||||
WikiPage wikiPageUp = new WikiPage();
|
||||
@@ -149,20 +159,11 @@ public class WikiPageController {
|
||||
DocUserDetails currentUser = DocUserUtil.getCurrentUser();
|
||||
Long id = wikiPage.getId();
|
||||
WikiPage wikiPageSel = wikiPageService.getById(id);
|
||||
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.haveCustomAuth(WikiAuthType.EDIT_PAGE.getName(), DocAuthConst.WIKI + id);
|
||||
if (!pageAuth) {
|
||||
return DocResponseJson.warn("您没有修改该文章的权限!");
|
||||
}
|
||||
String canEdit = wikiPageAuthService.canEdit(wikiSpaceSel, wikiPageSel.getEditType(), wikiPageSel.getId(), currentUser.getUserId());
|
||||
if (canEdit != null) {
|
||||
return DocResponseJson.warn(canEdit);
|
||||
}
|
||||
WikiPage wikiPageUp = new WikiPage();
|
||||
wikiPageUp.setId(wikiPage.getId());
|
||||
@@ -178,20 +179,11 @@ public class WikiPageController {
|
||||
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.haveCustomAuth(WikiAuthType.DELETE_PAGE.getName(), DocAuthConst.WIKI + pageId);
|
||||
if (!pageAuth) {
|
||||
return DocResponseJson.warn("您没有删除该文章的权限!");
|
||||
}
|
||||
String canDelete = wikiPageAuthService.canDelete(wikiSpaceSel, wikiPageSel.getEditType(), wikiPageSel.getId(), currentUser.getUserId());
|
||||
if (canDelete != null) {
|
||||
return DocResponseJson.warn(canDelete);
|
||||
}
|
||||
// 执行删除
|
||||
WikiPage wikiPage = new WikiPage();
|
||||
@@ -220,20 +212,11 @@ public class WikiPageController {
|
||||
Long pageId = wikiPage.getId();
|
||||
if (pageId != null && pageId > 0) {
|
||||
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.haveCustomAuth(WikiAuthType.EDIT_PAGE.getName(), DocAuthConst.WIKI + pageId);
|
||||
if (!pageAuth) {
|
||||
return DocResponseJson.warn("您没有修改该文章的权限!");
|
||||
}
|
||||
String canEdit = wikiPageAuthService.canEdit(wikiSpaceSel, wikiPageSel.getEditType(), wikiPageSel.getId(), currentUser.getUserId());
|
||||
if (canEdit != null) {
|
||||
return DocResponseJson.warn(canEdit);
|
||||
}
|
||||
wikiPage.setSpaceId(null);
|
||||
wikiPage.setEditType(null);
|
||||
@@ -250,6 +233,9 @@ public class WikiPageController {
|
||||
wikiPageContentService.update(pageContent, wrapper);
|
||||
} else {
|
||||
WikiSpace wikiSpaceSel = wikiSpaceService.getById(wikiPage.getSpaceId());
|
||||
if (wikiSpaceSel == null) {
|
||||
return DocResponseJson.warn("未找到指定的空间!");
|
||||
}
|
||||
// 空间不是自己的
|
||||
if (SpaceType.isOthersPrivate(wikiSpaceSel.getType(), currentUser.getUserId(), wikiSpaceSel.getCreateUserId())) {
|
||||
return DocResponseJson.warn("您没有权限新增该空间的文章!");
|
||||
|
||||
@@ -8,12 +8,10 @@ import com.zyplayer.doc.data.config.security.DocUserUtil;
|
||||
import com.zyplayer.doc.data.repository.manage.entity.WikiPage;
|
||||
import com.zyplayer.doc.data.repository.manage.entity.WikiPageFile;
|
||||
import com.zyplayer.doc.data.repository.manage.entity.WikiSpace;
|
||||
import com.zyplayer.doc.data.repository.support.consts.DocAuthConst;
|
||||
import com.zyplayer.doc.data.service.manage.WikiPageFileService;
|
||||
import com.zyplayer.doc.data.service.manage.WikiPageService;
|
||||
import com.zyplayer.doc.data.service.manage.WikiSpaceService;
|
||||
import com.zyplayer.doc.wiki.framework.consts.SpaceType;
|
||||
import com.zyplayer.doc.wiki.framework.consts.WikiAuthType;
|
||||
import com.zyplayer.doc.wiki.service.WikiPageAuthService;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
@@ -41,6 +39,8 @@ public class WikiPageFileController {
|
||||
WikiSpaceService wikiSpaceService;
|
||||
@Resource
|
||||
WikiPageService wikiPageService;
|
||||
@Resource
|
||||
WikiPageAuthService wikiPageAuthService;
|
||||
|
||||
// @PostMapping("/list")
|
||||
// public ResponseJson<List<WikiPageFile>> list(WikiPageFile wikiPageFile) {
|
||||
@@ -70,16 +70,10 @@ public class WikiPageFileController {
|
||||
}
|
||||
WikiPage wikiPageSel = wikiPageService.getById(pageId);
|
||||
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.haveCustomAuth(WikiAuthType.PAGE_FILE_UPLOAD.getName(), DocAuthConst.WIKI + pageId);
|
||||
if (!pageAuth) {
|
||||
return DocResponseJson.warn("您没有修改该文章附件的权限!");
|
||||
}
|
||||
// 权限判断
|
||||
String canUploadFile = wikiPageAuthService.canUploadFile(wikiSpaceSel, pageId, currentUser.getUserId());
|
||||
if (canUploadFile != null) {
|
||||
return DocResponseJson.warn(canUploadFile);
|
||||
}
|
||||
if (id != null && id > 0) {
|
||||
wikiPageFile.setUpdateUserId(currentUser.getUserId());
|
||||
|
||||
@@ -12,6 +12,10 @@ public class WikiPageContentVo {
|
||||
private List<WikiPageFile> fileList;
|
||||
private Integer selfZan;
|
||||
private Long selfUserId;
|
||||
private Integer canEdit;
|
||||
private Integer canDelete;
|
||||
private Integer canUploadFile;
|
||||
private Integer canConfigAuth;
|
||||
|
||||
public WikiPage getWikiPage() {
|
||||
return wikiPage;
|
||||
@@ -52,4 +56,36 @@ public class WikiPageContentVo {
|
||||
public void setSelfUserId(Long selfUserId) {
|
||||
this.selfUserId = selfUserId;
|
||||
}
|
||||
|
||||
public Integer getCanEdit() {
|
||||
return canEdit;
|
||||
}
|
||||
|
||||
public void setCanEdit(Integer canEdit) {
|
||||
this.canEdit = canEdit;
|
||||
}
|
||||
|
||||
public Integer getCanDelete() {
|
||||
return canDelete;
|
||||
}
|
||||
|
||||
public void setCanDelete(Integer canDelete) {
|
||||
this.canDelete = canDelete;
|
||||
}
|
||||
|
||||
public Integer getCanConfigAuth() {
|
||||
return canConfigAuth;
|
||||
}
|
||||
|
||||
public void setCanConfigAuth(Integer canConfigAuth) {
|
||||
this.canConfigAuth = canConfigAuth;
|
||||
}
|
||||
|
||||
public Integer getCanUploadFile() {
|
||||
return canUploadFile;
|
||||
}
|
||||
|
||||
public void setCanUploadFile(Integer canUploadFile) {
|
||||
this.canUploadFile = canUploadFile;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,107 @@
|
||||
package com.zyplayer.doc.wiki.service;
|
||||
|
||||
import com.zyplayer.doc.data.config.security.DocUserUtil;
|
||||
import com.zyplayer.doc.data.repository.manage.entity.WikiSpace;
|
||||
import com.zyplayer.doc.data.repository.support.consts.DocAuthConst;
|
||||
import com.zyplayer.doc.wiki.framework.consts.SpaceType;
|
||||
import com.zyplayer.doc.wiki.framework.consts.WikiAuthType;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.Objects;
|
||||
|
||||
@Service
|
||||
public class WikiPageAuthService {
|
||||
|
||||
/**
|
||||
* 是否具有编辑权限
|
||||
* @param wikiSpaceSel
|
||||
* @param editType
|
||||
* @param pageId
|
||||
* @param currentUserId
|
||||
* @return
|
||||
*/
|
||||
public String canEdit(WikiSpace wikiSpaceSel, Integer editType, Long pageId, Long currentUserId) {
|
||||
if (wikiSpaceSel == null || Objects.equals(editType, 1)) {
|
||||
return "当前页面不允许编辑!";
|
||||
}
|
||||
// 私人空间不允许调用接口获取文章
|
||||
if (SpaceType.isOthersPrivate(wikiSpaceSel.getType(), currentUserId, wikiSpaceSel.getCreateUserId())) {
|
||||
return "您没有权限修改该空间的文章!";
|
||||
}
|
||||
// 空间不是自己的,也没有权限
|
||||
if (SpaceType.isOthersPersonal(wikiSpaceSel.getType(), currentUserId, wikiSpaceSel.getCreateUserId())) {
|
||||
boolean pageAuth = DocUserUtil.haveCustomAuth(WikiAuthType.EDIT_PAGE.getName(), DocAuthConst.WIKI + pageId);
|
||||
if (!pageAuth) {
|
||||
return "您没有修改该文章的权限!";
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* 是否具有权限编辑权限
|
||||
* @param wikiSpaceSel
|
||||
* @param pageId
|
||||
* @param currentUserId
|
||||
* @return
|
||||
*/
|
||||
public String canConfigAuth(WikiSpace wikiSpaceSel, Long pageId, Long currentUserId) {
|
||||
if (!SpaceType.isPersonal(wikiSpaceSel.getType())) {
|
||||
return "只有个人空间才可以编辑权限";
|
||||
}
|
||||
if (!Objects.equals(currentUserId, wikiSpaceSel.getCreateUserId())) {
|
||||
if (!DocUserUtil.haveCustomAuth(WikiAuthType.PAGE_AUTH_MANAGE.getName(), DocAuthConst.WIKI + pageId)) {
|
||||
return "您不是创建人或没有权限修改";
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* 是否具有附件上传权限
|
||||
* @param wikiSpaceSel
|
||||
* @param pageId
|
||||
* @param currentUserId
|
||||
* @return
|
||||
*/
|
||||
public String canUploadFile(WikiSpace wikiSpaceSel, Long pageId, Long currentUserId) {
|
||||
// 私人空间
|
||||
if (SpaceType.isOthersPrivate(wikiSpaceSel.getType(), currentUserId, wikiSpaceSel.getCreateUserId())) {
|
||||
return "您没有该空间的文件上传权限!";
|
||||
}
|
||||
// 空间不是自己的,也没有权限
|
||||
if (SpaceType.isOthersPersonal(wikiSpaceSel.getType(), currentUserId, wikiSpaceSel.getCreateUserId())) {
|
||||
boolean pageAuth = DocUserUtil.haveCustomAuth(WikiAuthType.PAGE_FILE_UPLOAD.getName(), DocAuthConst.WIKI + pageId);
|
||||
if (!pageAuth) {
|
||||
return "您没有修改该文章附件的权限!";
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* 是否具有删除权限
|
||||
* @param wikiSpaceSel
|
||||
* @param editType
|
||||
* @param pageId
|
||||
* @param currentUserId
|
||||
* @return
|
||||
*/
|
||||
public String canDelete(WikiSpace wikiSpaceSel, Integer editType, Long pageId, Long currentUserId) {
|
||||
if (wikiSpaceSel == null || Objects.equals(editType, 1)) {
|
||||
return "当前页面不允许编辑!";
|
||||
}
|
||||
// 私人空间不允许调用接口获取文章
|
||||
if (SpaceType.isOthersPrivate(wikiSpaceSel.getType(), currentUserId, wikiSpaceSel.getCreateUserId())) {
|
||||
return "您没有权限修改该空间的文章!";
|
||||
}
|
||||
// 空间不是自己的,也没有权限
|
||||
if (SpaceType.isOthersPersonal(wikiSpaceSel.getType(), currentUserId, wikiSpaceSel.getCreateUserId())) {
|
||||
boolean pageAuth = DocUserUtil.haveCustomAuth(WikiAuthType.DELETE_PAGE.getName(), DocAuthConst.WIKI + pageId);
|
||||
if (!pageAuth) {
|
||||
return "您没有删除该文章的权限!";
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user