Explorar o código

fix:卷库查询和修改

caozixuan %!s(int64=3) %!d(string=hai) anos
pai
achega
09cb1feab9

+ 7 - 2
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ExamTaskDetailServiceImpl.java

@@ -21,6 +21,7 @@ import com.qmth.teachcloud.common.enums.ExceptionResultEnum;
 import com.qmth.teachcloud.common.enums.FlowStatusEnum;
 import com.qmth.teachcloud.common.enums.MqTagEnum;
 import com.qmth.teachcloud.common.enums.TaskTypeEnum;
+import com.qmth.teachcloud.common.service.SysUserService;
 import com.qmth.teachcloud.common.service.TBTaskService;
 import com.qmth.teachcloud.common.service.TeachcloudCommonService;
 import com.qmth.teachcloud.common.util.RedisUtil;
@@ -94,6 +95,9 @@ public class ExamTaskDetailServiceImpl extends ServiceImpl<ExamTaskDetailMapper,
     @Resource
     TExamTaskFlowService tExamTaskFlowService;
 
+    @Resource
+    SysUserService sysUserService;
+
     @Transactional
     @Override
     public boolean enable(ExamTaskDetail examTaskDetail) {
@@ -331,6 +335,7 @@ public class ExamTaskDetailServiceImpl extends ServiceImpl<ExamTaskDetailMapper,
 
     @Override
     public boolean paperUpdate(ExamTaskDetail examTaskDetail) {
+        SysUser requestUser = (SysUser) ServletUtil.getRequestUser();
 
         validPaperUpdate(examTaskDetail);
 
@@ -366,8 +371,8 @@ public class ExamTaskDetailServiceImpl extends ServiceImpl<ExamTaskDetailMapper,
         }
 
 
-        // 不需要审核,直接更新,否则加入待审核列表
-        if (examTask.getReview()) {
+        // 不需要审核,直接更新,否则加入待审核列表(状态为不需要审核的或者为管理员身份的都不重新走审核流程)
+        if (examTask.getReview() || !sysUserService.isAdminDataAuth(requestUser.getId())) {
             // 发起新流程
             Map<String, Object> map = new HashMap<>();
             map.computeIfAbsent(SystemConstant.APPROVE_ID, v -> String.valueOf(examTask.getUserId()));

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

@@ -910,7 +910,7 @@ public class ExamTaskServiceImpl extends ServiceImpl<ExamTaskMapper, ExamTask> i
         SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
         // 查询用户角色是否包含命题老师
         List<SysRole> list = sysUserRoleService.listRoleByUserId(sysUser.getId());
-        boolean containsQuestionTeacher = list.stream().filter(m -> RoleTypeEnum.QUESTION_TEACHER.equals(m.getType())).count() > 0;
+        boolean containsQuestionTeacher = list.stream().anyMatch(m -> RoleTypeEnum.QUESTION_TEACHER.equals(m.getType()));
         Long schoolId = Long.valueOf(ServletUtil.getRequestHeaderSchoolId().toString());
         Set<Long> orgIds = teachcloudCommonService.listSubOrgIds(null);
         Page<ExamTaskDetailDto> page = new Page<>(pageNumber, pageSize);

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

@@ -268,4 +268,12 @@ public interface SysUserService extends IService<SysUser> {
      * @return 机构集合
      */
     List<Long> findOrgIdListByUserId(Long userId);
+
+    /**
+     * 用户是管理员数据权限? 没有schoolId的用户和机构中包含 orgType为‘SCHOOL’
+     *
+     * @param userId 用户id
+     * @return true:是管理员权限、false:不是
+     */
+    boolean isAdminDataAuth(Long userId);
 }

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

@@ -181,7 +181,7 @@ public class BasicCourseServiceImpl extends ServiceImpl<BasicCourseMapper, Basic
                 for (Map<String, Object> map : mapList) {
                     courseNames.append(map.get("courseName")).append(",");
                 }
-                throw ExceptionResultEnum.ERROR.exception("课程 : " + courseNames.substring(0, courseNames.length() - 1) + " 已经生成了命题任务,不允许禁用");
+                throw ExceptionResultEnum.ERROR.exception("课程 : " + courseNames.substring(0, courseNames.length() - 1) + " 已经生成了命题任务,不允许禁用");
             }
         }
         // 课程批量启用禁用

+ 20 - 0
teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/impl/SysUserServiceImpl.java

@@ -1222,6 +1222,26 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
         return orgIdList.stream().distinct().collect(Collectors.toList());
     }
 
+    @Override
+    public boolean isAdminDataAuth(Long userId) {
+        boolean result = false;
+        List<SysOrg> sysOrgList = sysOrgService.list();
+        SysUser user = this.getById(userId);
+        if (Objects.isNull(user)) {
+            throw ExceptionResultEnum.ERROR.exception("用户不存在");
+        }
+        Long schoolId = user.getSchoolId();
+        if (SystemConstant.longNotNull(schoolId)) {
+            List<Long> orgIdList = this.findOrgIdListByUserId(userId);
+            if (sysOrgList.stream().anyMatch(e -> orgIdList.contains(e.getId()) && OrgTypeEnum.SCHOOL.equals(e.getType()))) {
+                result = true;
+            }
+        } else {
+            result = true;
+        }
+        return result;
+    }
+
     /**
      * 批量处理用户信息帮助类
      *