فهرست منبع

Merge branch 'dev_v2.2.0' into release_v2.2.0

xiaof 3 سال پیش
والد
کامیت
65e5276ebe

+ 16 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ExamTaskServiceImpl.java

@@ -533,6 +533,21 @@ public class ExamTaskServiceImpl extends ServiceImpl<ExamTaskMapper, ExamTask> i
                     blurryUserDtoList = listUsers(examTaskTemp.getCourseCode(), null);
                 }
                 examTaskDto.setUsers(blurryUserDtoList);
+                String userName = examTaskTempDto.getUserName();
+                String userAccount = examTaskTempDto.getUserAccount();
+                if (SystemConstant.strNotNull(userName) && SystemConstant.strNotNull(userAccount)){
+                    List<BlurryUserDto> match = blurryUserDtoList.stream()
+                            .filter(e -> e.getLoginName().equals(userAccount) && e.getName().equals(userName))
+                            .collect(Collectors.toList());
+                    if (match.size() > 1){
+                        throw ExceptionResultEnum.ERROR.exception("数据异常");
+                    }
+                    if (match.size() == 1){
+                        BlurryUserDto tmp = match.get(0);
+                        examTaskDto.setUserId(String.valueOf(tmp.getId()));
+                        examTaskDto.setUserName(tmp.getName());
+                    }
+                }
 
 //                // 校验命题老师
 //                if (StringUtils.isBlank(examTaskTemp.getUserAccount())) {
@@ -556,6 +571,7 @@ public class ExamTaskServiceImpl extends ServiceImpl<ExamTaskMapper, ExamTask> i
                 tasks.add(examTaskDto);
             }
         }
+
         // 设置重复信息,页面做二次校验
         examTaskImportDto.setErrorMsg(stringJoiner.toString());
         examTaskImportDto.setTasks(tasks);

+ 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);
+
     /**
      * 删除用户信息
      *

+ 3 - 3
teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/impl/BasicClazzServiceImpl.java

@@ -185,10 +185,10 @@ public class BasicClazzServiceImpl extends ServiceImpl<BasicClazzMapper, BasicCl
 
     @Override
     public List<ClazzDatasourceResult> findClazzDatasource() {
-        Set<Long> orgIds = teachcloudCommonService.listSubOrgIds(null);
+        Long schoolId = SystemConstant.convertIdToLong(ServletUtil.getRequestHeaderSchoolId().toString());
         return this.list(new QueryWrapper<BasicClazz>().lambda()
-                .eq(BasicClazz::getEnable,true)
-                .in(BasicClazz::getOrgId,orgIds)).stream()
+                .eq(BasicClazz::getEnable, true)
+                .eq(BasicClazz::getSchoolId, schoolId)).stream()
                 .map(e -> {
                     ClazzDatasourceResult clazzDatasourceResult = new ClazzDatasourceResult();
                     clazzDatasourceResult.setId(e.getId());

+ 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);
+    }
+
     /**
      * 删除用户信息
      *