|
@@ -10,16 +10,15 @@ import com.doc.biz.service.IDocDirLevelService;
|
|
|
import com.doc.biz.service.IDocDirService;
|
|
|
import com.doc.biz.service.IDocFavoriteService;
|
|
|
import com.doc.biz.service.IDocSpaceService;
|
|
|
+import com.doc.common.core.domain.entity.SysRole;
|
|
|
import com.doc.common.utils.DateUtils;
|
|
|
import com.doc.common.utils.SecurityUtils;
|
|
|
import com.doc.common.utils.StringUtils;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
import javax.annotation.Resource;
|
|
|
-import java.util.ArrayList;
|
|
|
-import java.util.HashMap;
|
|
|
-import java.util.List;
|
|
|
-import java.util.Map;
|
|
|
+import java.util.*;
|
|
|
+import java.util.stream.Collectors;
|
|
|
|
|
|
/**
|
|
|
* 文档目录管理Service业务层处理
|
|
@@ -202,23 +201,53 @@ public class DocDirServiceImpl implements IDocDirService {
|
|
|
List<DocSpace> spaceList = docSpaceService.getSpaceByUser(userId);
|
|
|
result.put("space", spaceList);
|
|
|
List<Long> spaceIds = new ArrayList<>();
|
|
|
+ List<DocDir> dirs = new ArrayList<>();
|
|
|
spaceList.forEach(space -> {
|
|
|
if (StringUtils.isEmpty(type) || type.equals(space.getSpaceType())) {
|
|
|
spaceIds.add(space.getSpaceId());
|
|
|
+
|
|
|
+ DocDir dir = new DocDir();
|
|
|
+ dir.setSpaceId(space.getSpaceId());
|
|
|
+
|
|
|
+ addRole(dir, space.getSpaceType());
|
|
|
+ dirs.addAll(docDirMapper.selectDocDirList(dir));
|
|
|
+
|
|
|
}
|
|
|
});
|
|
|
- result.put("dir", docDirMapper.selectDirByUser(spaceIds, userId));
|
|
|
+ result.put("dir", dirs);
|
|
|
return result;
|
|
|
}
|
|
|
|
|
|
+
|
|
|
/**
|
|
|
- * 根据权限控制查询目录列表
|
|
|
+ * 添加公共目录和部门目录权限控制
|
|
|
*
|
|
|
- * @param docDir 对象
|
|
|
- * @return 结果
|
|
|
+ * @param dir 目录
|
|
|
+ * @param type 空间类型
|
|
|
*/
|
|
|
@Override
|
|
|
- public List<DocDir> selectDocDirList4type(DocDir docDir) {
|
|
|
- return null;
|
|
|
+ public void addRole(DocDir dir, String type) {
|
|
|
+ String pubKey = "1";
|
|
|
+ String deptKey = "2";
|
|
|
+ if (!pubKey.equals(type) && !deptKey.equals(type)) {
|
|
|
+ //如果是个人目录,则直接返回
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ String pubRole = "system";
|
|
|
+ String deptRole = "dept";
|
|
|
+ //如果不是个人空间,则需要按权限
|
|
|
+ List<SysRole> roles = SecurityUtils.getLoginUser().getUser().getRoles();
|
|
|
+ Set<String> roleKeys = roles.stream().map(SysRole::getRoleKey).collect(Collectors.toSet());
|
|
|
+ //如果是公共空间,且不为系统管理员
|
|
|
+ boolean pubFlag = pubKey.equals(type) && !roleKeys.contains(pubRole);
|
|
|
+ //如果是部门空间,且不为部门管理员
|
|
|
+ boolean deptFlag = deptKey.equals(type) && !roleKeys.contains(deptRole);
|
|
|
+ if (pubFlag || deptFlag) {
|
|
|
+ //则需要判断组织目录是否有权限访问
|
|
|
+ Map<String, Object> params = new HashMap<>(4);
|
|
|
+ params.put("flag", 1);
|
|
|
+ params.put("uid", SecurityUtils.getUserId());
|
|
|
+ dir.setParams(params);
|
|
|
+ }
|
|
|
}
|
|
|
}
|