瀏覽代碼

Merge branch 'master' of http://git.dayaedu.com/yonge/mec

zouxuan 5 年之前
父節點
當前提交
b4a77adff6

+ 2 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/TeacherDao.java

@@ -259,4 +259,6 @@ public interface TeacherDao extends BaseDAO<Integer, Teacher> {
      * @return
      */
     CourseHomework getCourseScheduleHomework(Integer courseScheduleId);
+
+    List<Integer> lockTeachers(@Param("userIds") List<Integer> userIds);
 }

+ 3 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/PracticeGroupServiceImpl.java

@@ -185,6 +185,7 @@ public class PracticeGroupServiceImpl extends BaseServiceImpl<Long, PracticeGrou
         SysConfig practiceCourseMinutesConfig = sysConfigService.findByParamName(SysConfigService.PRACTICE_COURSE_MINUTES);
         Integer practiceCourseMinutes = practiceCourseMinutesConfig.getParanValue(Integer.class);
         List<Integer> teacherIds = organAndSubjectTeachers.stream().map(TeacherBasicDto::getId).collect(Collectors.toList());
+        teacherDao.lockTeachers(teacherIds);
         Date now = new Date();
         Calendar calendar = Calendar.getInstance();
         if (now.before(applyStartDay)) {
@@ -372,6 +373,7 @@ public class PracticeGroupServiceImpl extends BaseServiceImpl<Long, PracticeGrou
         Integer schoolId = userMusicGroups.get(0).getSchoolId();
 
         List<Integer> teacherIds = schoolSubjectTeachersMap.get(schoolId).get(practiceGroup.getSubjectId());
+        teacherDao.lockTeachers(teacherIds);
         SysConfig practiceCourseMinutesConfig = sysConfigService.findByParamName(SysConfigService.PRACTICE_COURSE_MINUTES);
         Integer practiceCourseMinutes = practiceCourseMinutesConfig.getParanValue(Integer.class);
         Date now = new Date();
@@ -573,6 +575,7 @@ public class PracticeGroupServiceImpl extends BaseServiceImpl<Long, PracticeGrou
         SysConfig practiceCourseMinutesConfig = sysConfigService.findByParamName(SysConfigService.PRACTICE_COURSE_MINUTES);
         Integer practiceCourseMinutes = practiceCourseMinutesConfig.getParanValue(Integer.class);
         List<Integer> teacherIds = new ArrayList<>();
+        teacherDao.lockTeachers(teacherIds);
 
         //如果是广州分部的,并且声部满足条件的需要特殊处理
         if (sysUser.getOrganId().equals(GUANGZHOU_ORGAN_ID) && GUANGZHOU_SUBJECTIDS.contains(subjectId)) {

+ 0 - 1
mec-biz/src/main/resources/config/mybatis/CourseScheduleMapper.xml

@@ -2122,7 +2122,6 @@
         <foreach collection="userIds" item="userId" open="(" close=")" separator=",">
             #{userId}
         </foreach>
-        FOR UPDATE
     </select>
     <select id="findStudentPracticeCourses" resultMap="courseScheduleDto">
         SELECT

+ 7 - 0
mec-biz/src/main/resources/config/mybatis/TeacherMapper.xml

@@ -667,4 +667,11 @@
     <select id="getCourseScheduleHomework" resultMap="com.ym.mec.biz.dal.dao.CourseHomeworkDao.CourseHomework">
         SELECT * FROM course_homework WHERE course_schedule_id_ = #{courseScheduleId} LIMIT 1
     </select>
+    <select id="lockTeachers" resultType="int">
+        SELECT id_ FROM teacher WHERE id_ IN
+        <foreach collection="userIds" item="userId" open="(" close=")" separator=",">
+            #{userId}
+        </foreach>
+        FOR UPDATE
+    </select>
 </mapper>

+ 5 - 0
mec-gateway/mec-gateway-web/src/main/resources/application.yml

@@ -112,7 +112,12 @@ hystrix:
       execution:
         isolation:
           thread:
+            #发生熔断的超时时间
             timeoutInMilliseconds: 60000
+          semaphore:
+            maxConcurrentRequests: 500
+          circuitBreaker:
+            sleepWindowInMilliseconds: 5000
 
 
 #spring boot admin 相关配置