Переглянути джерело

add:机构层级查询特殊权限(评卷员)

caozixuan 3 роки тому
батько
коміт
5e2ce66b47

+ 5 - 1
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ExamPaperStructureServiceImpl.java

@@ -346,7 +346,11 @@ public class ExamPaperStructureServiceImpl extends ServiceImpl<ExamPaperStructur
         String paperNumber = basicPaperInfo.getPaperNumber();
         String courseCode = basicPaperInfo.getCourseCode();
         String courseName = basicPaperInfo.getCourseName();
-        String paperType = String.join(",", basicPaperInfo.getPaperTypes());
+        List<String> paperTypeList = basicPaperInfo.getPaperTypes();
+        if (paperTypeList == null || paperTypeList.size() == 0){
+            throw ExceptionResultEnum.ERROR.exception("缺少试卷类型");
+        }
+        String paperType = String.join(",", paperTypeList);
         ExamPaperStructureStatusEnum status = basicPaperInfo.getStatus();
         String objectiveStructure = JSON.toJSONString(paperStructureInfo.getObjectiveQuestionList());
         String subjectiveStructure = JSON.toJSONString(paperStructureInfo.getSubjectiveQuestionList());

+ 2 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/templete/execute/AsyncCloudMarkingTaskService.java

@@ -9,6 +9,7 @@ import com.qmth.teachcloud.common.enums.PushTypeEnum;
 import com.qmth.teachcloud.common.service.SysConfigService;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
+import org.springframework.context.annotation.Lazy;
 import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
@@ -24,6 +25,7 @@ public class AsyncCloudMarkingTaskService {
     @Resource
     private SysConfigService sysConfigService;
 
+    @Lazy
     @Resource
     private DataSyncService dataSyncService;
 

+ 1 - 0
distributed-print-business/src/main/resources/mapper/ExamPaperStructureMapper.xml

@@ -6,6 +6,7 @@
         SELECT
             eps.id,
             epp.school_id schoolId,
+            be.id examId,
             bs.id semesterId,
             bs.name semesterName,
             epp.third_relate_id thirdRelateId,

+ 3 - 4
distributed-print/src/main/java/com/qmth/distributed/print/api/SysOrgController.java

@@ -2,10 +2,10 @@ package com.qmth.distributed.print.api;
 
 import com.qmth.boot.api.constant.ApiConstant;
 import com.qmth.distributed.print.business.service.PrintCommonService;
-import com.qmth.teachcloud.common.bean.dto.OrgDto;
 import com.qmth.teachcloud.common.contant.SystemConstant;
 import com.qmth.teachcloud.common.entity.SysOrg;
 import com.qmth.teachcloud.common.enums.OrgTypeEnum;
+import com.qmth.teachcloud.common.enums.userPush.SpecialPrivilegeEnum;
 import com.qmth.teachcloud.common.service.SysOrgService;
 import com.qmth.teachcloud.common.util.Result;
 import com.qmth.teachcloud.common.util.ResultUtil;
@@ -18,7 +18,6 @@ import org.springframework.web.bind.annotation.*;
 
 import javax.annotation.Resource;
 import javax.validation.Valid;
-import java.util.List;
 
 /**
  * <p>
@@ -46,8 +45,8 @@ public class SysOrgController {
      */
     @ApiOperation(value = "查询")
     @RequestMapping(value = "/list", method = RequestMethod.POST)
-    public Result list() {
-        return ResultUtil.ok(sysOrgService.listOrgTree());
+    public Result list(@RequestParam(value = "specialPrivilege", required = false) SpecialPrivilegeEnum specialPrivilege) {
+        return ResultUtil.ok(sysOrgService.listOrgTree(specialPrivilege));
     }
 
     /**

+ 2 - 1
teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/SysOrgService.java

@@ -5,6 +5,7 @@ import com.qmth.teachcloud.common.bean.dto.OrgDto;
 import com.qmth.teachcloud.common.entity.SysOrg;
 import com.qmth.teachcloud.common.entity.SysUser;
 import com.qmth.teachcloud.common.enums.OrgTypeEnum;
+import com.qmth.teachcloud.common.enums.userPush.SpecialPrivilegeEnum;
 
 import java.util.List;
 import java.util.Set;
@@ -19,7 +20,7 @@ import java.util.Set;
  */
 public interface SysOrgService extends IService<SysOrg> {
 
-    List<OrgDto> listOrgTree();
+    List<OrgDto> listOrgTree(SpecialPrivilegeEnum specialPrivilegeEnum);
 
     /**
      * 获取所有机构

+ 20 - 2
teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/impl/SysOrgServiceImpl.java

@@ -16,6 +16,7 @@ import com.qmth.teachcloud.common.enums.ExceptionResultEnum;
 import com.qmth.teachcloud.common.enums.FieldUniqueEnum;
 import com.qmth.teachcloud.common.enums.OrgTypeEnum;
 import com.qmth.teachcloud.common.enums.RoleTypeEnum;
+import com.qmth.teachcloud.common.enums.userPush.SpecialPrivilegeEnum;
 import com.qmth.teachcloud.common.mapper.SysOrgMapper;
 import com.qmth.teachcloud.common.service.*;
 import com.qmth.teachcloud.common.util.ResultUtil;
@@ -59,14 +60,31 @@ public class SysOrgServiceImpl extends ServiceImpl<SysOrgMapper, SysOrg> impleme
     BasicCampusService basicCampusService;
 
     @Override
-    public List<OrgDto> listOrgTree() {
+    public List<OrgDto> listOrgTree(SpecialPrivilegeEnum specialPrivilegeEnum) {
         Long schoolId = Long.valueOf(ServletUtil.getRequestHeaderSchoolId().toString());
         List<SysUserResult> sysUserResultList = sysUserService.findSysUserResultList();
+        List<SysUserResult> finalSysUserResultList = sysUserResultList.stream()
+                .filter(e -> {
+                    if (Objects.isNull(specialPrivilegeEnum)){
+                        return true;
+                    }else {
+                        // 用户特殊权限
+                        SpecialPrivilegeEnum userP = sysUserService.findUserSpecialPrivilegeByUserId(e.getId());
+                        // 如果用户是复合权限,条件为复合、评卷员、科组长都可以
+                        if (SpecialPrivilegeEnum.COMPOSITE.equals(userP)){
+                            return SpecialPrivilegeEnum.COMPOSITE.equals(specialPrivilegeEnum) || SpecialPrivilegeEnum.MARKER.equals(specialPrivilegeEnum) || SpecialPrivilegeEnum.SUBJECT_HEADER.equals(specialPrivilegeEnum);
+                        }else {
+                            // 如果用户不是复合条件,用户权限和条件权限对应
+                            return specialPrivilegeEnum.equals(userP);
+                        }
+                    }
+                }).collect(Collectors.toList());
+
         List<OrgDto> orgList = this.listOrgAll(schoolId);
         Map<Long, OrgDto> map = orgList.stream()
                 .peek(e -> {
                     // 加入机构下所有人员查询
-                    e.setSysUserList(sysUserResultList.stream().filter(f -> f.getOrgId().equals(e.getId())).collect(Collectors.toList()));
+                    e.setSysUserList(finalSysUserResultList.stream().filter(f -> f.getOrgId().equals(e.getId())).collect(Collectors.toList()));
                 })
                 .collect(Collectors.toMap(OrgDto::getId, Function.identity(), (dto1, dto2) -> dto1));
 

+ 2 - 1
teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/impl/TeachcloudCommonServiceImpl.java

@@ -23,6 +23,7 @@ import com.qmth.teachcloud.common.contant.SpringContextHolder;
 import com.qmth.teachcloud.common.contant.SystemConstant;
 import com.qmth.teachcloud.common.entity.*;
 import com.qmth.teachcloud.common.enums.*;
+import com.qmth.teachcloud.common.enums.userPush.SpecialPrivilegeEnum;
 import com.qmth.teachcloud.common.service.*;
 import com.qmth.teachcloud.common.util.*;
 import org.apache.commons.lang3.StringUtils;
@@ -881,7 +882,7 @@ public class TeachcloudCommonServiceImpl implements TeachcloudCommonService {
         if (orgId == null) {
             return null;
         }
-        List<OrgDto> orgDtos = sysOrgService.listOrgTree();
+        List<OrgDto> orgDtos = sysOrgService.listOrgTree(null);
         Set<Long> stringSet = new HashSet<>();
         stringSet.add(orgId);
         stringSet = getOrgIds(stringSet, orgDtos, orgId);

+ 2 - 1
teachcloud-report/src/main/java/com/qmth/teachcloud/report/api/SysOrgController.java

@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.qmth.boot.api.constant.ApiConstant;
 import com.qmth.teachcloud.common.bean.dto.OrgDto;
 import com.qmth.teachcloud.common.entity.SysOrg;
+import com.qmth.teachcloud.common.enums.userPush.SpecialPrivilegeEnum;
 import com.qmth.teachcloud.common.service.BasicCourseService;
 import com.qmth.teachcloud.common.service.SysOrgService;
 import com.qmth.teachcloud.common.util.Result;
@@ -45,7 +46,7 @@ public class SysOrgController {
     @ApiOperation(value = "查询")
     @RequestMapping(value = "/list", method = RequestMethod.POST)
     public Result list() {
-        List<OrgDto> orgDtoList = sysOrgService.listOrgTree();
+        List<OrgDto> orgDtoList = sysOrgService.listOrgTree(null);
         return ResultUtil.ok(orgDtoList);
     }