Przeglądaj źródła

学校同步权限

caozixuan 3 lat temu
rodzic
commit
8d9e8bcad5

+ 1 - 0
teachcloud-common/src/main/java/com/qmth/teachcloud/common/contant/SystemConstant.java

@@ -78,6 +78,7 @@ public class SystemConstant {
     public static final String REGULAR_EXPRESSION_OF_CODE = "[a-zA-Z0-9](\\w+)?-?(\\w+)?—?(\\w+)?(\\((\\w+)?-?(\\w+)?—?(\\w+)?\\))?(\\((\\w+)?-?(\\w+)?—?(\\w+)?\\))?(\\w+)?";
     public static final String REGULAR_EXPRESSION_OF_PHONE = "((\\d{3,4})|(\\(\\d{3,4}\\)-))?\\d{7,8}";
     public static final String SYS_USER = "sysUser";
+    public static final Long DEFAULT_PRIVILEGE_SCHOOL = 2L;
 
     /**
      * oss url过期时间

+ 8 - 0
teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/TeachcloudCommonService.java

@@ -56,6 +56,7 @@ public interface TeachcloudCommonService {
 
     /**
      * 获取要新增的用户权限集合
+     *
      * @param sysUser
      * @param roleIds
      * @return
@@ -94,6 +95,13 @@ public interface TeachcloudCommonService {
      */
     public List<String> getPrivilegeUrl(PrivilegePropertyEnum privilegePropertyEnum);
 
+    /**
+     * 给学校赋予权限的公共方法(权限是否启用跟学校联动)
+     *
+     * @param schoolIdSet 所有学校主键set
+     */
+    public void addSchoolPrivilege(Set<Long> schoolIdSet);
+
     /**
      * 删除用户信息
      *

+ 8 - 8
teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/impl/OrgCenterDataDisposeServiceImpl.java

@@ -8,19 +8,13 @@ import com.qmth.teachcloud.common.entity.BasicSchool;
 import com.qmth.teachcloud.common.entity.SysOrg;
 import com.qmth.teachcloud.common.enums.ExceptionResultEnum;
 import com.qmth.teachcloud.common.enums.OrgTypeEnum;
-import com.qmth.teachcloud.common.service.BasicSchoolService;
-import com.qmth.teachcloud.common.service.CallApiOrgCenterService;
-import com.qmth.teachcloud.common.service.OrgCenterDataDisposeService;
-import com.qmth.teachcloud.common.service.SysOrgService;
+import com.qmth.teachcloud.common.service.*;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 import javax.annotation.Resource;
 import java.io.IOException;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
-import java.util.Objects;
+import java.util.*;
 import java.util.stream.Collectors;
 
 /**
@@ -36,6 +30,8 @@ public class OrgCenterDataDisposeServiceImpl implements OrgCenterDataDisposeServ
     private BasicSchoolService basicSchoolService;
     @Resource
     private SysOrgService sysOrgService;
+    @Resource
+    private TeachcloudCommonService teachcloudCommonService;
 
     @Transactional(rollbackFor = Exception.class)
     @Override
@@ -132,5 +128,9 @@ public class OrgCenterDataDisposeServiceImpl implements OrgCenterDataDisposeServ
         }
         basicSchoolService.saveOrUpdateBatch(updateSchoolList);
         sysOrgService.saveOrUpdateBatch(updateSysOrgList);
+
+        // 权限表未匹配到的学校权限新增
+        Set<Long> schoolIdSet = basicSchoolService.list().stream().map(BaseEntity::getId).collect(Collectors.toSet());
+        teachcloudCommonService.addSchoolPrivilege(schoolIdSet);
     }
 }

+ 52 - 0
teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/impl/TeachcloudCommonServiceImpl.java

@@ -33,6 +33,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.LinkedMultiValueMap;
 
 import javax.annotation.Resource;
@@ -92,6 +93,10 @@ public class TeachcloudCommonServiceImpl implements TeachcloudCommonService {
     @Resource
     FileStoreUtil fileStoreUtil;
 
+    @Resource
+    private BasicSchoolService basicSchoolService;
+
+
     /**
      * 获取用户菜单
      *
@@ -304,6 +309,53 @@ public class TeachcloudCommonServiceImpl implements TeachcloudCommonService {
         return Objects.nonNull(sysPrivilegeList) && sysPrivilegeList.size() > 0 ? sysPrivilegeList.stream().map(s -> s.getUrl()).collect(Collectors.toList()) : null;
     }
 
+    @Transactional
+    @Override
+    public void addSchoolPrivilege(Set<Long> schoolIdSet) {
+        Set<Long> pidSet = sysPrivilegeService.list().stream().map(SysPrivilege::getSchoolId).collect(Collectors.toSet());
+        // 权限表里没有该学校主键的
+        Set<Long> targetSchoolIdSet = schoolIdSet.stream().filter(e -> !pidSet.contains(e)).collect(Collectors.toSet());
+        QueryWrapper<SysPrivilege> queryWrapper = new QueryWrapper<>();
+        queryWrapper.lambda().eq(SysPrivilege::getSchoolId, SystemConstant.DEFAULT_PRIVILEGE_SCHOOL);
+        List<SysPrivilege> sysPrivileges = sysPrivilegeService.list(queryWrapper);
+        if (sysPrivileges.size() == 0){
+            throw ExceptionResultEnum.ERROR.exception("默认学校权限不存在");
+        }
+        Map<Long, Long> map = new HashMap<>();
+        List<SysPrivilege> newList = new ArrayList<>();
+        for (Long newSchoolId : targetSchoolIdSet) {
+            BasicSchool basicSchool = basicSchoolService.getById(newSchoolId);
+            if (Objects.isNull(basicSchool)){
+                throw ExceptionResultEnum.ERROR.exception("未找到学校信息");
+            }
+            for (SysPrivilege sysPrivilege : sysPrivileges) {
+                Long id = SystemConstant.getDbUuid();
+                map.put(sysPrivilege.getId(), id);
+                sysPrivilege.setId(id);
+                sysPrivilege.setSchoolId(newSchoolId);
+                sysPrivilege.setEnable(basicSchool.getEnable());
+                newList.add(sysPrivilege);
+            }
+        }
+        for (SysPrivilege sysPrivilege : newList) {
+            if(Objects.nonNull(sysPrivilege.getParentId())){
+                sysPrivilege.setParentId(map.get(sysPrivilege.getParentId()));
+            }
+            String relateId = sysPrivilege.getRelated();
+            if(StringUtils.isNotBlank(relateId)){
+                String[] relateIds = relateId.split(",");
+                List<String> newRelateIds = new ArrayList<>();
+                for (String id : relateIds) {
+                    Long lid = Long.valueOf(id.trim());
+                    newRelateIds.add(String.valueOf(map.get(lid)));
+                }
+                String newRelateId = String.join(",", newRelateIds);
+                sysPrivilege.setRelated(newRelateId);
+            }
+        }
+        sysPrivilegeService.saveBatch(newList);
+    }
+
     /**
      * 删除用户信息
      *