瀏覽代碼

作者:张哲
时间:2023/08/22
类型:优化
描述:下载权限部门和人员分开

zizg 1 年之前
父節點
當前提交
737ad0088f

+ 5 - 2
src/main/java/com/redxun/knowledge/entity/dao/Knowledge.java

@@ -92,8 +92,11 @@ public class Knowledge extends BaseExtEntity<java.lang.String> {
     private OrganizationDto organizationIds;
 
     //指定可下载附件的人员和组织
-    @TableField(value = "ALLOW_DOWNLOAD")
-    private String allowDownload;
+    @TableField(value = "DOWNLOAD_USER_ID")
+    private String downloadUserId;
+
+    @TableField(value = "DOWNLOAD_DEPT_ID")
+    private String downloadDeptId;
 
 
     @Override

+ 4 - 1
src/main/java/com/redxun/knowledge/entity/dto/KnowledgeDto.java

@@ -1,5 +1,6 @@
 package com.redxun.knowledge.entity.dto;
 
+import com.baomidou.mybatisplus.annotation.TableField;
 import com.fasterxml.jackson.annotation.JsonCreator;
 import com.mysql.cj.jdbc.Clob;
 import com.redxun.knowledge.entity.validate.AddGroup;
@@ -53,5 +54,7 @@ public class KnowledgeDto {
     private OrganizationDto organizationIds;
 
     //指定可下载附件的人员和组织
-    private String allowDownload;
+    private String downloadUserId;
+
+    private String downloadDeptId;
 }

+ 7 - 1
src/main/java/com/redxun/knowledge/entity/vo/KnowledgeVo.java

@@ -173,8 +173,14 @@ public class KnowledgeVo {
 
     private Integer isWithdraw;
 
+    private String downloadUserId;
+
+    private String downloadDeptId;
+
     //可下载附件的人员或部门名称
-    private String allowDownload;
+    private String downloadUserName;
+
+    private String downloadDeptName;
 
     //是否可下载 可下载 返回0 不可下载 返回1
     private Integer isAllowDownload;

+ 1 - 0
src/main/java/com/redxun/knowledge/mapper/KnowledgeApproveMapper.java

@@ -35,4 +35,5 @@ public interface KnowledgeApproveMapper extends BaseDao<KnowledgeApprove> {
 
     List<KnowledgeApprove> selectByKnowledgerId(@Param("knowledgeId") String knowledgeId);
 
+    List<String> findAllDeptIdByParent(@Param("deptId") String deptId);
 }

+ 4 - 0
src/main/java/com/redxun/knowledge/mapper/KnowledgeMapper.java

@@ -61,4 +61,8 @@ public interface KnowledgeMapper extends BaseDao<Knowledge> {
      * @param categoryId
      */
     void transferCategory(@Param("knowledgeIds") List<String> knowledgeIds, @Param("categoryId") String categoryId);
+
+    List<String> selectFullNameByUserIds(@Param("userIdList") String[] downloadUserId);
+
+    List<String> selectFullNameByDeptIds(@Param("deptIdList") String[] downloadDeptId);
 }

+ 31 - 37
src/main/java/com/redxun/knowledge/service/KnowledgeServiceImpl.java

@@ -161,7 +161,8 @@ public class KnowledgeServiceImpl extends SuperServiceImpl<KnowledgeMapper, Know
             knowledge.setCreateTime(new Date());
             knowledge.setUpdateBy(users.getUserId());
             knowledge.setUpdateTime(new Date());
-            knowledge.setAllowDownload(knowledgeDto.getAllowDownload());
+            knowledge.setDownloadUserId(knowledgeDto.getDownloadUserId());
+            knowledge.setDownloadDeptId(knowledgeDto.getDownloadDeptId());
             if (!ObjectUtil.valueAllNull(knowledgeDto.getOrganizationIds())){
                 String organizationId = JSON.toJSON(knowledgeDto.getOrganizationIds()).toString();
                 knowledge.setOrganizationId(organizationId);
@@ -256,23 +257,18 @@ public class KnowledgeServiceImpl extends SuperServiceImpl<KnowledgeMapper, Know
                 knowledgeVo.setKnowledgeCategoryAdminVo(knowledgeCategoryService.findAllParentByCategoryId(knowledge.getCategoryId()));
             }
             //指定了附件下载权限会判断
-            if (StringUtils.isNotEmpty(knowledge.getAllowDownload())){
+            if (StringUtils.isNotEmpty(knowledge.getDownloadUserId()) || StringUtils.isNotEmpty(knowledge.getDownloadDeptId())){
                 //附件下载权限
-                knowledgeVo.setIsAllowDownload(isAllowDownload(knowledge.getAllowDownload()));
+                knowledgeVo.setIsAllowDownload(isAllowDownload(knowledge.getDownloadUserId(),knowledge.getDownloadDeptId()));
                 //附件可下载人员或部门字符串复制
-                List<String> allowDownloadList = Arrays.asList(knowledge.getAllowDownload().split(","));
-                String allowDownloadNameResult = allowDownloadList.parallelStream().map(h -> {
-                    String allowDownloadName = null;
-                    OsUserDto osUserDto = userService.queryOsUserDto(h);
-                    if (osUserDto != null) {
-                        allowDownloadName = osUserDto.getFullName();
-                    } else {
-                        OsGroupDto osGroupDto = userService.findDeptByDeptId(h);
-                        allowDownloadName = osGroupDto.getName();
-                    }
-                    return allowDownloadName;
-                }).collect(Collectors.joining(","));
-                knowledgeVo.setAllowDownload(allowDownloadNameResult);
+                if (StringUtils.isNotEmpty(knowledge.getDownloadUserId())){
+                    List<String> fullNameList = knowledgeMapper.selectFullNameByUserIds(knowledge.getDownloadUserId().split(","));
+                    knowledgeVo.setDownloadUserName(fullNameList.stream().collect(Collectors.joining(",")));
+                }
+                if (StringUtils.isNotEmpty(knowledge.getDownloadDeptId())){
+                    List<String> fullNameList = knowledgeMapper.selectFullNameByDeptIds(knowledge.getDownloadDeptId().split(","));
+                    knowledgeVo.setDownloadDeptName(fullNameList.stream().collect(Collectors.joining(",")));
+                }
             }
             if (knowledge.getIsDraft() == 0){
                 return knowledgeVo;
@@ -396,23 +392,18 @@ public class KnowledgeServiceImpl extends SuperServiceImpl<KnowledgeMapper, Know
                 e.setIsWithdraw(1);
             }
             //指定了附件下载权限会判断
-            if (StringUtils.isNotEmpty(e.getAllowDownload())){
+            if (StringUtils.isNotEmpty(e.getDownloadUserId()) || StringUtils.isNotEmpty(e.getDownloadDeptId())){
                 //附件下载权限
-                e.setIsAllowDownload(isAllowDownload(e.getAllowDownload()));
-                //附件可下载人员或部门字符串赋值
-                List<String> allowDownloadList = Arrays.asList(e.getAllowDownload().split(","));
-                String allowDownloadNameResult = allowDownloadList.parallelStream().map(h -> {
-                    String allowDownloadName = null;
-                    OsUserDto osUserDto = userService.queryOsUserDto(h);
-                    if (osUserDto != null) {
-                        allowDownloadName = osUserDto.getFullName();
-                    } else {
-                        OsGroupDto osGroupDto = userService.findDeptByDeptId(h);
-                        allowDownloadName = osGroupDto.getName();
-                    }
-                    return allowDownloadName;
-                }).collect(Collectors.joining(","));
-                e.setAllowDownload(allowDownloadNameResult);
+                e.setIsAllowDownload(isAllowDownload(e.getDownloadUserId(),e.getDownloadDeptId()));
+                //附件可下载人员或部门字符串复制
+                if (StringUtils.isNotEmpty(e.getDownloadUserId())){
+                    List<String> fullNameList = knowledgeMapper.selectFullNameByUserIds(e.getDownloadUserId().split(","));
+                    e.setDownloadUserName(fullNameList.stream().collect(Collectors.joining(",")));
+                }
+                if (StringUtils.isNotEmpty(e.getDownloadDeptId())){
+                    List<String> fullNameList = knowledgeMapper.selectFullNameByDeptIds(e.getDownloadDeptId().split(","));
+                    e.setDownloadDeptName(fullNameList.stream().collect(Collectors.joining(",")));
+                }
             }
 
         });
@@ -1021,17 +1012,20 @@ public class KnowledgeServiceImpl extends SuperServiceImpl<KnowledgeMapper, Know
      * 判断是否有下载附件权限(有权限 返回0; 没权限 返回1)
      * @return
      */
-    private Integer isAllowDownload(String allowDownload){
+    private Integer isAllowDownload(String downloadUserId,String downloadDeptId){
         String userId = userService.queryLoginUser();
-        List<String> deptAuthority = knowledgeApproveMapper.deptAuthority(userId);  //部门权限字符串
+        String deptId = userService.queryLoginUserDeptId();
+        //可下载部门数组
+        List<String> deptAuthority = knowledgeApproveMapper.findAllDeptIdByParent(deptId);
+        String[] downloadDeptIdStr = downloadDeptId.split(",");
         boolean flag = false;
-        for (int i = 0; i < deptAuthority.size(); i++) {
-            if (deptAuthority.get(i).contains(allowDownload)) {
+        for (int i = 0; i < downloadDeptIdStr.length; i++) {
+            if (deptAuthority.contains(downloadDeptIdStr[i])) {
                 flag = true;
                 break;
             }
         }
-        List<String> approverIdList = Arrays.asList(allowDownload.split(","));
+        List<String> approverIdList = Arrays.asList(downloadUserId.split(","));
         // 如果有权限
         if (!approverIdList.contains(userId) && !flag) {
             // 不是该部门的人,不能查看

+ 6 - 0
src/main/resources/mapper/knowledge/KnowledgeApproveMapper.xml

@@ -149,6 +149,12 @@
         order by SORT
     </select>
 
+    <select id="findAllDeptIdByParent" resultType="string">
+        SELECT os.GROUP_ID_ FROM LEARNING_USER_DEV.OS_GROUP os
+            START WITH os.GROUP_ID_ = #{deptId}
+        CONNECT BY PRIOR os.GROUP_ID_ = os.PARENT_ID_
+    </select>
+
 </mapper>
 
 

+ 27 - 3
src/main/resources/mapper/knowledge/KnowledgeMapper.xml

@@ -28,13 +28,16 @@
         <result property="updateTime" column="UPDATE_TIME_" jdbcType="DATE"/>
         <result property="documentId" column="DOCUMENT_ID" jdbcType="DATE"/>
         <result property="isDraft" column="IS_DRAFT" jdbcType="INTEGER"/>
+        <result property="downloadUserId" column="DOWNLOAD_USER_ID" jdbcType="VARCHAR"/>
+        <result property="downloadDeptId" column="DOWNLOAD_DEPT_ID" jdbcType="VARCHAR"/>
     </resultMap>
 
     <sql id="COLUMNS">
         PK_ID
         ,CATEGORY_ID,TITLES,TYPE,SUMMARY,VIEWS,AUTHOR,CONTENT,ATTACHMENT,
         ATTACHMENT_NAME,ATTACHMENT_TYPE,APPROVAL_STATUS,APPROVAL_BATCH,ORGANIZATION_ID,IS_DEL,
-        COMPANY_ID_,CREATE_DEP_ID_,TENANT_ID_,CREATE_BY_,CREATE_TIME_,UPDATE_BY_,UPDATE_TIME_,DOCUMENT_ID,IS_DRAFT
+        COMPANY_ID_,CREATE_DEP_ID_,TENANT_ID_,CREATE_BY_,CREATE_TIME_,UPDATE_BY_,UPDATE_TIME_,DOCUMENT_ID,IS_DRAFT,
+        DOWNLOAD_USER_ID,DOWNLOAD_DEPT_ID
     </sql>
 
 
@@ -207,7 +210,8 @@
         INSERT INTO KM_KNOWLEDGE(
         PK_ID,CATEGORY_ID,TITLES,TYPE,SUMMARY,AUTHOR,CONTENT,ATTACHMENT,
         ATTACHMENT_NAME,ATTACHMENT_TYPE,APPROVAL_STATUS,APPROVAL_BATCH,ORGANIZATION_ID,
-        COMPANY_ID_,CREATE_DEP_ID_,TENANT_ID_,CREATE_BY_,CREATE_TIME_,UPDATE_BY_,UPDATE_TIME_,DOCUMENT_ID,IS_DRAFT
+        COMPANY_ID_,CREATE_DEP_ID_,TENANT_ID_,CREATE_BY_,CREATE_TIME_,UPDATE_BY_,UPDATE_TIME_,DOCUMENT_ID,IS_DRAFT,
+        DOWNLOAD_USER_ID,DOWNLOAD_DEPT_ID
         )VALUES(
         #{pkId,jdbcType=VARCHAR},
         #{categoryId},
@@ -230,7 +234,9 @@
         #{updateBy},
         #{updateTime},
         #{documentId},
-        #{isDraft}
+        #{isDraft},
+        #{downloadUserId},
+        #{downloadDeptId}
         );
         END;
     </insert>
@@ -336,6 +342,24 @@
         </foreach>
     </update>
 
+    <select id="selectFullNameByUserIds" resultType="string">
+        select FULLNAME_
+        from LEARNING_USER_DEV.OS_USER alias
+        where USER_ID_ in
+        <foreach collection="userIdList" open="(" close=")" item="userId" separator=",">
+            #{userId}
+        </foreach>
+    </select>
+
+    <select id="selectFullNameByDeptIds" resultType="string">
+        select NAME_
+        from LEARNING_USER_DEV.OS_GROUP alias
+        where GROUP_ID_ in
+        <foreach collection="deptIdList" open="(" close=")" item="deptId" separator=",">
+            #{deptId}
+        </foreach>
+    </select>
+
 
 </mapper>