Bladeren bron

监考端接口

wangliang 4 jaren geleden
bovenliggende
commit
b04742d2fd

+ 14 - 6
themis-backend/src/main/java/com/qmth/themis/backend/api/TEExamController.java

@@ -8,6 +8,7 @@ import com.qmth.themis.business.annotation.ApiJsonProperty;
 import com.qmth.themis.business.base.BasePage;
 import com.qmth.themis.business.cache.RedisKeyHelper;
 import com.qmth.themis.business.constant.SystemConstant;
+import com.qmth.themis.business.dto.AuthDto;
 import com.qmth.themis.business.dto.ExamPropCountDto;
 import com.qmth.themis.business.dto.MqDto;
 import com.qmth.themis.business.dto.cache.TEStudentCacheDto;
@@ -348,21 +349,28 @@ public class TEExamController {
         if (Objects.isNull(tbSession)) {
             throw new BusinessException(ExceptionResultEnum.LOGIN_NO);
         }
-        //首先查询当前监考老师所要监控的roomCode
+        //首先查询当前用户所要监控的roomCode
         QueryWrapper<TBExamInvigilateUser> examInvigilateUserQueryWrapper = new QueryWrapper<>();
-        examInvigilateUserQueryWrapper.lambda().in(TBExamInvigilateUser::getUserId, tbUser.getId()).eq(TBExamInvigilateUser::getOrgId, tbUser.getOrgId());
+        AuthDto authDto = (AuthDto) redisUtil.get(SystemConstant.userOauth + "::" + tbUser.getId());
+        //如果有监考员角色,只能查看自己所监考的考场,巡考员则可以查看全部考场
+        examInvigilateUserQueryWrapper.lambda().eq(TBExamInvigilateUser::getOrgId, tbUser.getOrgId());
+        if (authDto.getRoleCodes().toString().contains(RoleEnum.INVIGILATE.name())) {
+            examInvigilateUserQueryWrapper.lambda().in(TBExamInvigilateUser::getUserId, tbUser.getId());
+        }
         List<TBExamInvigilateUser> tbExamInvigilateUserList = tbExamInvigilateUserService.list(examInvigilateUserQueryWrapper);
         Set<String> roomCodeSet = null;
         if (Objects.nonNull(tbExamInvigilateUserList) && tbExamInvigilateUserList.size() > 0) {
             roomCodeSet = tbExamInvigilateUserList.stream().map(s -> s.getRoomCode()).collect(Collectors.toSet());
         }
-        if (Objects.isNull(roomCodeSet) || roomCodeSet.size() == 0) {
+        if (authDto.getRoleCodes().toString().contains(RoleEnum.INVIGILATE.name()) && (Objects.isNull(roomCodeSet) || roomCodeSet.size() == 0)) {
             throw new BusinessException("当前监考老师未设置任何监考考场");
+        } else if (Objects.isNull(roomCodeSet) || roomCodeSet.size() == 0) {
+            throw new BusinessException("当前考试批次未设置任何监考考场");
         }
         //根据roomCode获取当前老师所要监考的全部应考学生数
-        QueryWrapper<TEExamStudent> teExamStudentServiceQueryWrapper = new QueryWrapper<>();
-        teExamStudentServiceQueryWrapper.lambda().in(TEExamStudent::getRoomCode, roomCodeSet);
-        List<TEExamStudent> teExamStudentList = teExamStudentService.list(teExamStudentServiceQueryWrapper);
+        QueryWrapper<TEExamStudent> teExamStudentQueryWrapper = new QueryWrapper<>();
+        teExamStudentQueryWrapper.lambda().in(TEExamStudent::getRoomCode, roomCodeSet);
+        List<TEExamStudent> teExamStudentList = teExamStudentService.list(teExamStudentQueryWrapper);
         Set<String> studentSet = null;
         Set<Long> examActivityIdSet = null;
         Integer allCount = 0;

+ 1 - 0
themis-business/src/main/resources/db/init.sql

@@ -616,6 +616,7 @@ INSERT INTO `t_b_role_privilege` VALUES (96, 'STUDENT', 103);
 INSERT INTO `t_b_role_privilege` VALUES (97, 'STUDENT', 104);
 INSERT INTO `t_b_role_privilege` VALUES (98, 'STUDENT', 105);
 INSERT INTO `t_b_role_privilege` VALUES (99, 'INVIGILATE', 106);
+INSERT INTO `t_b_role_privilege` VALUES (100, 'INSPECTION', 97);
 COMMIT;
 
 -- ----------------------------