Prechádzať zdrojové kódy

Merge branch 'dev_v2.2.0' into release_v2.2.0

xiaof 3 rokov pred
rodič
commit
94dfac8769

+ 3 - 0
teachcloud-common/src/main/java/com/qmth/teachcloud/common/mapper/BasicCourseMapper.java

@@ -9,6 +9,7 @@ import com.qmth.teachcloud.common.entity.BasicCourse;
 import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
+import java.util.Map;
 import java.util.Set;
 
 /**
@@ -44,5 +45,7 @@ public interface BasicCourseMapper extends BaseMapper<BasicCourse> {
                                                  @Param("schoolId") Long schoolId,
                                                  @Param("orgIds") Set<Long> orgIds);
 
+    List<Map<String,Object>> findExamTaskByCourseCode(@Param("schoolId") Long schoolId,@Param("courseCodeSet") Set<String> courseCodeSet);
+
 
 }

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

@@ -197,10 +197,15 @@ public class BasicClazzServiceImpl extends ServiceImpl<BasicClazzMapper, BasicCl
     @Override
     public List<ClazzDatasourceResult> findClazzDatasource(Long campusId) {
         Long schoolId = SystemConstant.convertIdToLong(ServletUtil.getRequestHeaderSchoolId().toString());
-        return this.list(new QueryWrapper<BasicClazz>().lambda()
-                .eq(BasicClazz::getEnable, true)
-                .eq(BasicClazz::getCampusId, campusId)
-                .eq(BasicClazz::getSchoolId, schoolId)).stream()
+        QueryWrapper<BasicClazz> basicClazzQueryWrapper = new QueryWrapper<>();
+
+        basicClazzQueryWrapper.lambda().eq(BasicClazz::getEnable, true)
+                .eq(BasicClazz::getSchoolId, schoolId);
+        if (SystemConstant.longNotNull(campusId)) {
+            basicClazzQueryWrapper.lambda().eq(BasicClazz::getCampusId, campusId);
+        }
+
+        return this.list(basicClazzQueryWrapper).stream()
                 .map(e -> {
                     ClazzDatasourceResult clazzDatasourceResult = new ClazzDatasourceResult();
                     clazzDatasourceResult.setId(e.getId());

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

@@ -24,6 +24,7 @@ import org.springframework.util.LinkedMultiValueMap;
 
 import javax.annotation.Resource;
 import java.util.*;
+import java.util.stream.Collectors;
 
 /**
  * <p>
@@ -59,7 +60,7 @@ public class BasicCourseServiceImpl extends ServiceImpl<BasicCourseMapper, Basic
     @Override
     public void verifyCourseInfo(Long schoolId, String courseCode, String courseName, Long userId) {
         QueryWrapper<BasicCourse> queryWrapper = new QueryWrapper<>();
-        queryWrapper.lambda().eq(BasicCourse::getSchoolId, schoolId).eq(BasicCourse::getCode, courseCode);
+        queryWrapper.lambda().eq(BasicCourse::getSchoolId, schoolId).eq(BasicCourse::getCode, courseCode).eq(BasicCourse::getEnable,true);
 
         BasicCourse tmp = this.getOne(queryWrapper);
         if (tmp != null) {
@@ -68,15 +69,17 @@ public class BasicCourseServiceImpl extends ServiceImpl<BasicCourseMapper, Basic
                         .exception("课程代码和课程名称不匹配,课程代码为 :'" + courseCode + "',输入的课程名称 :'" + courseName + "',实际该代码对应的课程名称 :'" + tmp.getName() + "'。");
             }
         } else {
-            BasicCourse basicCourse = new BasicCourse();
-            basicCourse.setName(courseName);
-            basicCourse.setCode(courseCode);
-            basicCourse.setSchoolId(schoolId);
-            basicCourse.setId(SystemConstant.getDbUuid());
-            basicCourse.setCreateId(userId);
-            basicCourse.setOrgId(sysUserService.getById(userId).getOrgId());
-            basicCourse.setCreateTime(System.currentTimeMillis());
-            this.saveOrUpdate(basicCourse);
+//            BasicCourse basicCourse = new BasicCourse();
+//            basicCourse.setName(courseName);
+//            basicCourse.setCode(courseCode);
+//            basicCourse.setSchoolId(schoolId);
+//            basicCourse.setId(SystemConstant.getDbUuid());
+//            basicCourse.setCreateId(userId);
+//            basicCourse.setOrgId(sysUserService.getById(userId).getOrgId());
+//            basicCourse.setCreateTime(System.currentTimeMillis());
+//            basicCourse.setTeachingRoomId();
+//            this.saveOrUpdate(basicCourse);
+            throw ExceptionResultEnum.ERROR.exception("考务文件中 【课程代码】为 :" + courseCode + ",【课程名称】为 : " + courseName + ",在基础课程信息中不存在,请先添加课程");
         }
     }
 
@@ -151,10 +154,28 @@ public class BasicCourseServiceImpl extends ServiceImpl<BasicCourseMapper, Basic
     @Transactional(rollbackFor = Exception.class)
     @Override
     public Boolean removeBasicCourseBatch(List<Long> idList) {
+        Long schoolId = SystemConstant.convertIdToLong(ServletUtil.getRequestHeaderSchoolId().toString());
         if (idList.size() == 0) {
             throw ExceptionResultEnum.ERROR.exception("请选择要删除的目标");
         }
         SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
+        // 业务判断
+        Set<String> courseCodeSet = idList.stream().map(e -> {
+            BasicCourse basicCourse = this.getById(e);
+            if (Objects.isNull(basicCourse)){
+                throw ExceptionResultEnum.ERROR.exception("未找到课程");
+            }
+            return basicCourse.getCode();
+        }).collect(Collectors.toSet());
+        List<Map<String,Object>> mapList = basicCourseMapper.findExamTaskByCourseCode(schoolId,courseCodeSet);
+        if (mapList.size() > 0){
+            StringBuilder courseNames = new StringBuilder();
+            for (Map<String, Object> map : mapList) {
+                courseNames.append(map.get("courseName")).append(",");
+            }
+            throw ExceptionResultEnum.ERROR.exception("【课程】 : " + courseNames.substring(0,courseNames.length() - 1) + " 已经生成了命题任务,不允许删除");
+        }
+
         basicUserCourseService.remove(new QueryWrapper<BasicUserCourse>().lambda().in(BasicUserCourse::getCourseId, idList).eq(BasicUserCourse::getSchoolId, sysUser.getSchoolId()));
 
         UpdateWrapper<BasicCourse> updateWrapper = new UpdateWrapper<>();

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

@@ -338,6 +338,8 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
                     commonCacheService.removeUserRolePrivilegeCache(sysUser.getId());
                     commonService.addUserRolePrivilege(sysUser, userSaveParams.getRoleIds());
                     commonService.removeUserInfo(sysUser.getId(), true);
+                }else if (!dbUser.getOrgId().equals(sysUser.getOrgId())){
+                    commonService.removeUserInfo(sysUser.getId(), true);
                 }
                 //如果修改了机构或手机号,需更新用户缓存
                 if (Objects.nonNull(dbUser.getOrgId())) {
@@ -709,6 +711,8 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
                     List<SysUserRole> sysUserRoleCell = commonService.disposeUserPrivilege(userCell, userSaveParams.getRoleIds());
                     sysUserRoleList.addAll(sysUserRoleCell);
                     willRemoveUserPri.add(userCell.getId());
+                }else if (!dbUser.getOrgId().equals(userCell.getOrgId())){
+                    commonService.removeUserInfo(userCell.getId(), true);
                 }
                 //如果修改了机构或手机号,需更新用户缓存
                 if (Objects.nonNull(dbUser.getOrgId())) {

+ 15 - 0
teachcloud-common/src/main/resources/mapper/BasicCourseMapper.xml

@@ -103,5 +103,20 @@
         GROUP BY bc.id
         ORDER BY createTime DESC
     </select>
+    <select id="findExamTaskByCourseCode" resultType="java.util.Map">
+        SELECT
+            course_code AS courseCode, course_name AS courseName
+        FROM
+            exam_task
+        <where>
+            AND school_id = #{schoolId}
+            <if test="courseCodeSet != null">
+                AND course_code IN
+                <foreach collection="courseCodeSet" item="item" index="index" open="(" separator="," close=")">
+                    #{item}
+                </foreach>
+            </if>
+        </where>
+    </select>
 
 </mapper>