Procházet zdrojové kódy

1、陪练课调整
2、付费陪练课

Joburgess před 5 roky
rodič
revize
d4872c6a6f

+ 18 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/ClassGroupDao.java

@@ -73,6 +73,15 @@ public interface ClassGroupDao extends BaseDAO<Integer, ClassGroup> {
     List<ClassGroup> findClassGroupByIds(@Param("ids") String ids);
 
     /**
+     * @describe 获取班级列表
+     * @author Joburgess
+     * @date 2020/2/20
+     * @param classGroupIds: 班级编号列表
+     * @return java.util.List<com.ym.mec.biz.dal.entity.ClassGroup>
+     */
+    List<ClassGroup> findClassGroupWithIds(@Param("classGroupIds") List<Integer> classGroupIds);
+
+    /**
      * 根据教师编号获取教师所在乐团,带了哪些班级
      *
      * @param params
@@ -478,6 +487,15 @@ public interface ClassGroupDao extends BaseDAO<Integer, ClassGroup> {
     int batchUpdateClassGroupCourseTimes(@Param("classGroupCourseTimes") Map<Integer, Integer> classGroupCourseTimes);
 
     /**
+     * @describe
+     * @author Joburgess
+     * @date 2020/2/20
+     * @param classGroups:
+     * @return int
+     */
+    int batchUpdate(@Param("classGroups") List<ClassGroup> classGroups);
+
+    /**
      * 批量软删除班级
      *
      * @param classGroupIds

+ 9 - 1
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/CourseScheduleDao.java

@@ -6,7 +6,6 @@ import com.ym.mec.biz.dal.entity.CourseSchedule.CourseScheduleType;
 import com.ym.mec.biz.dal.enums.CourseStatusEnum;
 import com.ym.mec.biz.dal.enums.GroupType;
 import com.ym.mec.common.dal.BaseDAO;
-import com.ym.mec.common.page.PageInfo;
 import org.apache.ibatis.annotations.Param;
 import org.apache.ibatis.annotations.Select;
 
@@ -1190,4 +1189,13 @@ public interface CourseScheduleDao extends BaseDAO<Long, CourseSchedule> {
      * @return
      */
     int countCurrentCourseTime(Long courseScheduleId);
+
+    /**
+     * @describe 获取班级课程列表
+     * @author Joburgess
+     * @date 2020/2/20
+     * @param classGroupIds: 班级编号列表
+     * @return java.util.List<com.ym.mec.biz.dal.entity.CourseSchedule>
+     */
+    List<CourseSchedule> findCourseSchedulesByClassGroups(@Param("classGroupIds") List<Integer> classGroupIds);
 }

+ 9 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/ClassGroupService.java

@@ -373,6 +373,15 @@ public interface ClassGroupService extends BaseService<Integer, ClassGroup> {
     void updateClassGroupInfo(Integer classGroupId);
 
     /**
+     * @describe 批量更新班级上的课次信息
+     * @author Joburgess
+     * @date 2020/2/20
+     * @param classGroupIds: 班级编号列表
+     * @return void
+     */
+    void updateClassGroupsCourseInfo(List<Integer> classGroupIds);
+
+    /**
      * 清除班级未开始课程
      * @param classGroupId
      * @return

+ 34 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/ClassGroupServiceImpl.java

@@ -2316,6 +2316,40 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
 
     @Override
     @Transactional(rollbackFor = Exception.class)
+    public void updateClassGroupsCourseInfo(List<Integer> classGroupIds) {
+        if(CollectionUtils.isEmpty(classGroupIds)){
+            return;
+        }
+        List<ClassGroup> classGroups = classGroupDao.findClassGroupWithIds(classGroupIds);
+        if(CollectionUtils.isEmpty(classGroups)){
+            return;
+        }
+        Map<Integer, ClassGroup> idClassGroupMap = classGroups.stream().collect(Collectors.toMap(ClassGroup::getId, classGroup -> classGroup));
+        List<CourseSchedule> classGroupsCourseSchedules = courseScheduleDao.findCourseSchedulesByClassGroups(classGroupIds);
+        Map<Integer, List<CourseSchedule>> classGroupCourseMap = classGroupsCourseSchedules.stream().collect(Collectors.groupingBy(CourseSchedule::getClassGroupId));
+        Date now=new Date();
+        for (Map.Entry<Integer, ClassGroup> classGroupEntry : idClassGroupMap.entrySet()) {
+            List<CourseSchedule> courseSchedules = classGroupCourseMap.get(classGroupEntry.getKey());
+            if(CollectionUtils.isEmpty(courseSchedules)){
+                classGroupEntry.getValue().setTotalClassTimes(0);
+                classGroupEntry.getValue().setCurrentClassTimes(0);
+                continue;
+            }
+            int totalClassTimes=courseSchedules.size();
+            int currentClassTimes=0;
+            for (CourseSchedule courseSchedule : courseSchedules) {
+                if(courseSchedule.getEndClassTime().before(now)){
+                    currentClassTimes+=1;
+                }
+            }
+            classGroupEntry.getValue().setTotalClassTimes(totalClassTimes);
+            classGroupEntry.getValue().setCurrentClassTimes(currentClassTimes);
+        }
+        classGroupDao.batchUpdate(classGroups);
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
     public boolean delClassNoStartCourse(Integer classGroupId) {
         Date date = new Date();
         ClassGroup classGroup = classGroupDao.get(classGroupId);

+ 5 - 1
mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseScheduleServiceImpl.java

@@ -1975,7 +1975,11 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 		
 		if(newCourseSchedules.size() > 0){
 			courseScheduleDao.batchUpdate(newCourseSchedules);
-		}
+            List<Integer> classGroupIds = newCourseSchedules.stream().filter(courseSchedule -> Objects.nonNull(courseSchedule.getClassGroupId())).map(CourseSchedule::getClassGroupId).collect(Collectors.toList());
+            if(!CollectionUtils.isEmpty(classGroupIds)){
+                classGroupService.updateClassGroupsCourseInfo(classGroupIds);
+            }
+        }
 		
 		if(insertCourseScheduleStudentPaymentList.size() > 0){
 			courseScheduleStudentPaymentDao.batchInsert(insertCourseScheduleStudentPaymentList);

+ 49 - 0
mec-biz/src/main/resources/config/mybatis/ClassGroupMapper.xml

@@ -1009,6 +1009,49 @@
       where id_=1
     </update>
 
+    <update id="batchUpdate">
+        <foreach collection="classGroups" item="classGroup" separator=";">
+            UPDATE class_group
+            <set>
+                <if test="classGroup.subjectIdList != null">
+                    subject_id_list_ = #{classGroup.subjectIdList},
+                </if>
+                <if test="classGroup.studentNum != null">
+                    student_num_ = #{classGroup.studentNum},
+                </if>
+                update_time_ = NOW(),
+                <if test="classGroup.musicGroupId != null">
+                    music_group_id_ = #{classGroup.musicGroupId},
+                </if>
+                <if test="classGroup.type != null">
+                    type_ = #{classGroup.type,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},
+                </if>
+                <if test="classGroup.groupType != null">
+                    group_type_ = #{classGroup.groupType,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},
+                </if>
+                <if test="classGroup.name != null">
+                    name_ = #{classGroup.name},
+                </if>
+                <if test="classGroup.expectStudentNum != null">
+                    expect_student_num_ = #{classGroup.expectStudentNum},
+                </if>
+                <if test="classGroup.totalClassTimes != null">
+                    total_class_times_ = #{classGroup.totalClassTimes},
+                </if>
+                <if test="classGroup.currentClassTimes!=null">
+                    current_class_times_=#{classGroup.currentClassTimes},
+                </if>
+                <if test="classGroup.img!=null">
+                    img_=#{classGroup.img},
+                </if>
+                <if test="classGroup.delFlag != null">
+                    del_flag_ = #{classGroup.delFlag},
+                </if>
+            </set>
+            WHERE id_ = #{classGroup.id}
+        </foreach>
+    </update>
+
     <resultMap id="SuperClassGroupInfo" type="com.ym.mec.biz.dal.dto.SuperClassGroupDto" extends="ClassGroup">
 
     </resultMap>
@@ -1115,4 +1158,10 @@
         </foreach>
         AND cg.group_type_ = 'VIP'
     </select>
+    <select id="findClassGroupWithIds" resultMap="ClassGroup">
+        SELECT * FROM class_group WHERE id_ IN
+        <foreach collection="classGroupIds" item="classGroupId" open="(" close=")" separator=",">
+            #{classGroupId}
+        </foreach>
+    </select>
 </mapper>

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

@@ -2373,4 +2373,37 @@
         (SELECT CONCAT(class_date_," ",start_class_time_) class_date_,class_group_id_ FROM course_schedule WHERE id_ = #{courseScheduleId} AND del_flag_ = 0) c
         WHERE cs.class_group_id_ = c.class_group_id_ AND CONCAT(cs.class_date_," ",cs.start_class_time_) &lt;= c.class_date_ AND cs.del_flag_ = 0
     </select>
+    <select id="findCourseSchedulesByClassGroups" resultMap="CourseSchedule">
+        SELECT
+            cs.id_,
+            cs.group_type_,
+            cs.music_group_id_,
+            cs.class_group_id_,
+            cs.status_,
+            cs.subsidy_,
+            cs.class_date_,
+            CONCAT(cs.class_date_,' ',cs.start_class_time_) start_class_time_,
+            CONCAT(cs.class_date_,' ',cs.end_class_time_) end_class_time_,
+            cs.start_class_time_ start_class_time_str_,
+            cs.end_class_time_ end_class_time_str_,
+            cs.teacher_id_,
+            cs.actual_teacher_id_,
+            cs.create_time_,
+            cs.update_time_,
+            cs.teach_mode_,
+            cs.type_,
+            cs.name_,
+            cs.student_num_,
+            cs.leave_student_num_,
+            cs.schoole_id_
+        FROM
+        	course_schedule cs
+        WHERE
+          cs.class_group_id_ IN
+          <foreach collection="classGroupIds" item="classGroupId" open="(" close=")" separator=",">
+              #{classGroupId}
+          </foreach>
+          AND ( cs.del_flag_ != 1 OR cs.del_flag_ IS NULL )
+        ORDER BY start_class_time_
+    </select>
 </mapper>