瀏覽代碼

管乐迷需求迭代

zouxuan 2 年之前
父節點
當前提交
477a68a08c

+ 7 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/StudentTeacherMapperDao.java

@@ -41,4 +41,11 @@ public interface StudentTeacherMapperDao extends BaseDAO<Integer, StudentTeacher
     void updatePracticeTeacher();
 
     void updateVipTeacher();
+
+    List<StudentTeacherMapper> findByCourseIds(@Param("courseIds") List<Long> courseIds);
+
+
+    void batchInsert(@Param("list") List<StudentTeacherMapper> list);
+
+    void delByStudent(@Param("studentIds") List<Integer> studentIds, @Param("teacherType") String teacherType);
 }

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

@@ -4130,7 +4130,7 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 		if (updateList.size() > 0) {
             courseScheduleDao.batchUpdate(updateList);
 			//更新用户网管、vip课老师
-//			studentTeacherMapperService.updateStudentTeacherMapper(updateList);
+			studentTeacherMapperService.updateStudentTeacherMapper(updateList);
 			try {
 				tenantAssetsInfoService.deductAmount(updateList);
 			}catch (Exception e){

+ 12 - 10
mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentTeacherMapperServiceImpl.java

@@ -43,17 +43,19 @@ public class StudentTeacherMapperServiceImpl extends BaseServiceImpl<Integer,Stu
         if(CollectionUtils.isEmpty(courseScheduleList)){
             return;
         }
-        courseScheduleList= courseScheduleList.stream().filter(e->e.getType() == VIP || e.getType() == PRACTICE ||
-                e.getType() == SINGLE || e.getType() == MIX).collect(Collectors.toList());
-        if(CollectionUtils.isEmpty(courseScheduleList)){
+        List<Long> collect = courseScheduleList.stream().filter(e -> e.getType() == VIP || e.getType() == PRACTICE).map(e -> e.getId()).collect(Collectors.toList());
+        if(CollectionUtils.isEmpty(collect)){
             return;
         }
-        List<Long> courseIdList = courseScheduleList.stream().map(e -> e.getId()).collect(Collectors.toList());
-        //获取vip需要更新、新增的数据
-//        List<StudentTeacherMapper> mapperList = studentTeacherMapperDao.initInsertList(courseIdList);
-        List<Long> vipCourseIds = courseScheduleList.stream().filter(e -> e.getType() == VIP).map(e -> e.getId()).collect(Collectors.toList());
-        //获取需要更新的学员
-
-        List<Long> practiceCourseIds = courseScheduleList.stream().filter(e -> e.getType() == PRACTICE).map(e -> e.getId()).collect(Collectors.toList());
+        List<StudentTeacherMapper> list = studentTeacherMapperDao.findByCourseIds(collect);
+        if(CollectionUtils.isEmpty(list)){
+            return;
+        }
+        Map<String, List<StudentTeacherMapper>> listMap = list.stream().collect(Collectors.groupingBy(StudentTeacherMapper::getTeacherType));
+        for (String teacherType : listMap.keySet()) {
+            List<Integer> studentIds = listMap.get(teacherType).stream().map(e -> e.getStudentId()).collect(Collectors.toList());
+            studentTeacherMapperDao.delByStudent(studentIds,teacherType);
+        }
+        studentTeacherMapperDao.batchInsert(list);
     }
 }

+ 24 - 1
mec-biz/src/main/resources/config/mybatis/StudentTeacherMapperMapper.xml

@@ -21,6 +21,12 @@
 	<delete id="delAll">
 		DELETE FROM student_teacher_mapper WHERE teacher_type_ IN ('MIX','NORMAL')
 	</delete>
+	<delete id="delByStudent">
+		DELETE FROM student_teacher_mapper WHERE teacher_type_= #{teacherType} AND student_id_ IN
+		<foreach collection="studentIds" open="(" close=")" item="id" separator=",">
+			#{id}
+		</foreach>
+	</delete>
 
 	<insert id="create">
 		insert into student_teacher_mapper (student_id_, teacher_id_, teacher_type_)
@@ -29,8 +35,14 @@
 		left join class_group_student_mapper cgsm ON cgsm.class_group_id_ = cg.id_
 		where cg.del_flag_ = 0 AND cg.type_ IN ('MIX','NORMAL') AND cgsm.status_ != 'QUIT';
 	</insert>
+	<insert id="batchInsert">
+		insert into student_teacher_mapper (student_id_, teacher_id_, teacher_type_) VALUE
+		<foreach collection="list" separator="," item="bean">
+			(#{bean.studentId},#{bean.teacherId},#{bean.teacherType})
+		</foreach>
+	</insert>
 
-    <select id="queryTeacherIds" resultType="java.lang.Integer">
+	<select id="queryTeacherIds" resultType="java.lang.Integer">
 		select distinct stm.teacher_id_ from student_teacher_mapper stm
 		where stm.student_id_ = #{studentId}
 		<if test="teacherType != null and teacherType != ''">
@@ -65,4 +77,15 @@
 		AND stm.teacher_type_ = #{teacherType}
 		GROUP BY stm.student_id_
 	</select>
+	<select id="findByCourseIds" resultType="com.ym.mec.biz.dal.entity.StudentTeacherMapper">
+		select cssp.user_id_ studentId,CASE WHEN cs.type_ = 'VIP' THEN vg.user_id_ ELSE pg.user_id_ END teacherId,cs.type_ teacherType from mec_pro.course_schedule_student_payment cssp
+		left join mec_pro.course_schedule cs ON cs.id_ = cssp.course_schedule_id_
+		left join vip_group vg ON vg.id_ = cs.music_group_id_ AND cs.type_ = 'VIP'
+		left join practice_group pg ON pg.id_ = cs.music_group_id_ AND cs.type_ = 'PRACTICE'
+		where cssp.course_schedule_id_ IN
+		<foreach collection="courseIds" item="id" open="(" close=")" separator=",">
+			#{id}
+		</foreach>
+		group by cssp.user_id_
+	</select>
 </mapper>