From 8bd22c4634a575fd788e422bcd505244c132962a Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E6=9A=AE=E5=85=89=EF=BC=9A=E5=9F=8E=E4=B8=AD=E5=9F=8E?=
<806783409@qq.com>
Date: Tue, 28 Mar 2023 08:32:39 +0800
Subject: [PATCH] =?UTF-8?q?=E9=9A=90=E7=A7=81=E7=A9=BA=E9=97=B4=E6=94=AF?=
=?UTF-8?q?=E6=8C=81=E5=88=86=E7=BB=84=E6=8E=88=E6=9D=83=E6=9F=A5=E7=9C=8B?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../data/service/manage/WikiSpaceService.java | 6 ++++-
.../manage/impl/WikiSpaceServiceImpl.java | 8 +++++-
.../wiki/controller/WikiSpaceController.java | 6 ++++-
.../wiki/framework/consts/WikiAuthType.java | 1 +
.../service/common/WikiPageAuthService.java | 25 +++++++++++++++++++
5 files changed, 43 insertions(+), 3 deletions(-)
diff --git a/zyplayer-doc-data/src/main/java/com/zyplayer/doc/data/service/manage/WikiSpaceService.java b/zyplayer-doc-data/src/main/java/com/zyplayer/doc/data/service/manage/WikiSpaceService.java
index aecdd80d..571ae555 100644
--- a/zyplayer-doc-data/src/main/java/com/zyplayer/doc/data/service/manage/WikiSpaceService.java
+++ b/zyplayer-doc-data/src/main/java/com/zyplayer/doc/data/service/manage/WikiSpaceService.java
@@ -3,6 +3,8 @@ package com.zyplayer.doc.data.service.manage;
import com.zyplayer.doc.data.repository.manage.entity.WikiSpace;
import com.baomidou.mybatisplus.extension.service.IService;
+import java.util.List;
+
/**
*
* 服务类
@@ -12,5 +14,7 @@ import com.baomidou.mybatisplus.extension.service.IService;
* @since 2019-03-13
*/
public interface WikiSpaceService extends IService {
-
+
+ List getViewAuthSpaceIds();
+
}
diff --git a/zyplayer-doc-data/src/main/java/com/zyplayer/doc/data/service/manage/impl/WikiSpaceServiceImpl.java b/zyplayer-doc-data/src/main/java/com/zyplayer/doc/data/service/manage/impl/WikiSpaceServiceImpl.java
index 257d8933..bd463298 100644
--- a/zyplayer-doc-data/src/main/java/com/zyplayer/doc/data/service/manage/impl/WikiSpaceServiceImpl.java
+++ b/zyplayer-doc-data/src/main/java/com/zyplayer/doc/data/service/manage/impl/WikiSpaceServiceImpl.java
@@ -6,6 +6,8 @@ import com.zyplayer.doc.data.service.manage.WikiSpaceService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
+import java.util.List;
+
/**
*
* 服务实现类
@@ -16,5 +18,9 @@ import org.springframework.stereotype.Service;
*/
@Service
public class WikiSpaceServiceImpl extends ServiceImpl implements WikiSpaceService {
-
+
+ @Override
+ public List getViewAuthSpaceIds() {
+ return null;
+ }
}
diff --git a/zyplayer-doc-wiki/src/main/java/com/zyplayer/doc/wiki/controller/WikiSpaceController.java b/zyplayer-doc-wiki/src/main/java/com/zyplayer/doc/wiki/controller/WikiSpaceController.java
index 84c71d85..78da2af9 100644
--- a/zyplayer-doc-wiki/src/main/java/com/zyplayer/doc/wiki/controller/WikiSpaceController.java
+++ b/zyplayer-doc-wiki/src/main/java/com/zyplayer/doc/wiki/controller/WikiSpaceController.java
@@ -60,7 +60,11 @@ public class WikiSpaceController {
LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>();
wrapper.eq(WikiSpace::getDelFlag, 0);
wrapper.eq(wikiSpace.getId() != null, WikiSpace::getId, wikiSpace.getId());
- wrapper.and(con -> con.and(conSub -> conSub.eq(WikiSpace::getType, 3).eq(WikiSpace::getCreateUserId, currentUser.getUserId())).or().in(WikiSpace::getType, 1, 2));
+ wrapper.and(con ->
+ con.and(conSub -> conSub.eq(WikiSpace::getType, 3).eq(WikiSpace::getCreateUserId, currentUser.getUserId()))
+ .or(conSub -> conSub.eq(WikiSpace::getType, 3).eq(WikiSpace::getCreateUserId, currentUser.getUserId()))
+ .or().in(WikiSpace::getType, 1, 2)
+ );
// 收藏的空间
List favoriteList = wikiSpaceFavoriteService.myFavoriteSpaceList();
Set favoriteSpaceIds = favoriteList.stream().map(WikiSpaceFavorite::getSpaceId).collect(Collectors.toSet());
diff --git a/zyplayer-doc-wiki/src/main/java/com/zyplayer/doc/wiki/framework/consts/WikiAuthType.java b/zyplayer-doc-wiki/src/main/java/com/zyplayer/doc/wiki/framework/consts/WikiAuthType.java
index a127cb3c..961f09be 100644
--- a/zyplayer-doc-wiki/src/main/java/com/zyplayer/doc/wiki/framework/consts/WikiAuthType.java
+++ b/zyplayer-doc-wiki/src/main/java/com/zyplayer/doc/wiki/framework/consts/WikiAuthType.java
@@ -9,6 +9,7 @@ package com.zyplayer.doc.wiki.framework.consts;
public enum WikiAuthType {
@Deprecated
CREATE_PAGE(1, "WIKI_CREATE_PAGE_"),
+ VIEW_PAGE(2, "WIKI_VIEW_PAGE_"),
EDIT_PAGE(2, "WIKI_EDIT_PAGE_"),
@Deprecated
COMMENT_PAGE(3, "WIKI_COMMENT_PAGE_"),
diff --git a/zyplayer-doc-wiki/src/main/java/com/zyplayer/doc/wiki/service/common/WikiPageAuthService.java b/zyplayer-doc-wiki/src/main/java/com/zyplayer/doc/wiki/service/common/WikiPageAuthService.java
index bc11dd34..32d0dc61 100644
--- a/zyplayer-doc-wiki/src/main/java/com/zyplayer/doc/wiki/service/common/WikiPageAuthService.java
+++ b/zyplayer-doc-wiki/src/main/java/com/zyplayer/doc/wiki/service/common/WikiPageAuthService.java
@@ -23,6 +23,31 @@ import java.util.Objects;
public class WikiPageAuthService {
private final UserGroupAuthMapper userGroupAuthMapper;
+
+ /**
+ * 是否具有查看权限
+ */
+ public String canView(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.VIEW_PAGE.getCode(), DocSysType.WIKI.getType(), DocSysModuleType.Wiki.PAGE.getType(), pageId);
+ if (!pageAuth) {
+ // 在空间上直接授权了分组的权限,在这个分组里就具有权限
+ Long authId = userGroupAuthMapper.haveAuth(wikiSpaceSel.getId(), DocSysType.WIKI.getType(), WikiAuthType.VIEW_PAGE.getType(), currentUserId);
+ if (authId == null) {
+ return "您没有查看该文章的权限!";
+ }
+ }
+ }
+ return null;
+ }
/**
* 是否具有编辑权限