Explorar el Código

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

zouxuan hace 5 años
padre
commit
ba02aa32bc

+ 13 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/CourseScheduleDao.java

@@ -581,6 +581,19 @@ public interface CourseScheduleDao extends BaseDAO<Long, CourseSchedule> {
     List<CourseSchedule> findAllCourseByDateZone(@Param("startTime") Date startTime,
                                         @Param("endTime") Date endTime);
 
+    List<CourseSchedule> findByClassDate(@Param("classDates") List<String> classDates);
+
+    /**
+     * @param startTime: 开始时间
+     * @param endTime:   结束时间
+     * @return java.util.List<com.ym.mec.biz.dal.entity.CourseSchedule>
+     * @describe 获取时间段内所有的课程(去除无关字段)
+     * @author Joburgess
+     * @date 2019/10/31
+     */
+    List<CourseSchedule> findAllCourseByDateZone2(@Param("startTime") Date startTime,
+                                                 @Param("endTime") Date endTime);
+
     /**
      * 查询学生明天的课程数
      *

+ 7 - 14
mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseScheduleServiceImpl.java

@@ -22,11 +22,13 @@ import com.ym.mec.jiari.JiaRiFeignService;
 import com.ym.mec.thirdparty.message.MessageSenderPluginContext.MessageSender;
 import com.ym.mec.util.collection.MapUtil;
 import com.ym.mec.util.date.DateUtil;
+
 import org.apache.commons.collections.ListUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Propagation;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.CollectionUtils;
 
@@ -358,20 +360,10 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 		if(CollectionUtils.isEmpty(courseSchedules)){
 			return;
 		}
-		//第一节课
-		CourseSchedule firstCourseSchedule;
-		//最后一节课
-		CourseSchedule latestCourseSchedule;
-		if(courseSchedules.size()==1){
-			firstCourseSchedule = courseSchedules.get(0);
-			latestCourseSchedule = courseSchedules.get(0);
-		}else{
-			firstCourseSchedule = courseSchedules.stream().min(Comparator.comparing(CourseSchedule::getStartClassTime)).get();
-			latestCourseSchedule = courseSchedules.stream().max(Comparator.comparing(CourseSchedule::getEndClassTime)).get();
-		}
-		//获取第一节课和最后一节课所包含的时间段内已存在的课程
-		List<CourseSchedule> existCourseSchedules = courseScheduleDao
-				.findAllCourseByDateZone(firstCourseSchedule.getStartClassTime(), latestCourseSchedule.getEndClassTime());
+		List<String> classDates = courseSchedules.stream().map(courseSchedule -> DateUtil.dateToString(courseSchedule.getClassDate(), "yyyy-MM-dd"))
+				.collect(Collectors.toList());
+
+		List<CourseSchedule> existCourseSchedules = courseScheduleDao.findByClassDate(classDates);
 
 		//只需要调整课程信息的课程编号列表
 		List<Long> updateCourseScheduleIds = courseSchedules
@@ -842,6 +834,7 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 	}
 
 	@Override
+    @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
 	public void vipCourseAdjust(VipGroupCourseAdjustInfoDto vipGroupCourseAdjustInfo) {
 		if(Objects.isNull(vipGroupCourseAdjustInfo.getVipGroupId())){
 			throw new BizException("请指定小课");

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

@@ -1263,6 +1263,37 @@
         WHERE (cs.class_date_ BETWEEN DATE_FORMAT(#{startTime},'%Y%m%d') AND DATE_FORMAT(#{endTime},'%Y%m%d'))
             AND (cs.del_flag_ IS NULL OR cs.del_flag_=0) AND (cg.del_flag_ IS NULL OR cg.del_flag_=0)
     </select>
+
+    <select id="findByClassDate" resultMap="CourseSchedule">
+      SELECT
+            cs.id_,
+            cs.class_group_id_,
+            CONCAT(cs.class_date_,' ',cs.start_class_time_) start_class_time_,
+            CONCAT(cs.class_date_,' ',cs.end_class_time_) end_class_time_,
+            cs.actual_teacher_id_
+        FROM
+            course_schedule cs
+        WHERE (cs.class_date_ IN
+              <foreach collection="classDates" item="classDate" open="(" close=")" separator=",">
+                  #{classDate}
+              </foreach>
+              )
+            AND (cs.del_flag_ IS NULL OR cs.del_flag_=0)
+    </select>
+
+
+    <select id="findAllCourseByDateZone2" resultMap="CourseSchedule">
+        SELECT
+            cs.id_,
+            cs.class_group_id_,
+            CONCAT(cs.class_date_,' ',cs.start_class_time_) start_class_time_,
+            CONCAT(cs.class_date_,' ',cs.end_class_time_) end_class_time_,
+            cs.actual_teacher_id_
+        FROM
+            course_schedule cs
+        WHERE (cs.class_date_ BETWEEN DATE_FORMAT(#{startTime},'%Y%m%d') AND DATE_FORMAT(#{endTime},'%Y%m%d'))
+            AND (cs.del_flag_ IS NULL OR cs.del_flag_=0)
+    </select>
     
     <select id="queryStudentCoursesTimesOfTomorrow" resultMap="Mapper">
     	select cssp.user_id_ key_,count(1) value_ from course_schedule cs right join course_schedule_student_payment cssp on cs.id_ = cssp.course_schedule_id_ where class_date_ = date(DATE_ADD(now(),INTERVAL 1 DAY)) group by cssp.user_id_