Jelajahi Sumber

feat:vip线上不允许调整到线下

Joburgess 4 tahun lalu
induk
melakukan
f22a8c1d44

+ 17 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/StudentDao.java

@@ -204,4 +204,21 @@ public interface StudentDao extends com.ym.mec.common.dal.BaseDAO<Integer, Stude
      * @return java.util.List<com.ym.mec.biz.dal.entity.Student>
      */
     List<Student> getNoTeacherOrNoSubjectStudent();
+
+    /**
+     * @describe 从新学员中找出有VIP课的学员编号
+     * @author Joburgess
+     * @date 2021/6/3 0003
+     * @return java.util.List<java.lang.Integer>
+     */
+    List<Integer> getHasVipCourseStudentIdsFromNewStudents();
+
+    /**
+     * @describe 将指定学员更新为老学员
+     * @author Joburgess
+     * @date 2021/6/3 0003
+     * @param userIds:
+     * @return int
+     */
+    int updateNewStudentsToOld(@Param("userIds") List<Integer> userIds);
 }

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

@@ -3380,6 +3380,12 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 				}
 			}
 
+			if (VIP.equals(newCourseSchedule.getGroupType())){
+				if(TeachModeEnum.OFFLINE.equals(newCourseSchedule.getTeachMode())&&TeachModeEnum.ONLINE.equals(oldCourseSchedule.getTeachMode())){
+					throw new BizException("VIP课不支持从线上调整到线下");
+				}
+			}
+
             if(!CollectionUtils.isEmpty(newCourseSchedule.getTeachingTeacherIdList())){
                 if (newCourseSchedule.getTeachingTeacherIdList().contains(newCourseSchedule.getActualTeacherId())){
                     throw new BizException("主教和助教不可重复");

+ 8 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentServiceImpl.java

@@ -205,6 +205,7 @@ public class StudentServiceImpl extends BaseServiceImpl<Integer, Student> implem
     }
 
     @Override
+    @Transactional(rollbackFor = Exception.class)
     public void updateStudentTeacherAndSubject() {
         List<Student> noTeacherOrNoSubjectStudent = studentDao.getNoTeacherOrNoSubjectStudent();
         if (CollectionUtils.isEmpty(noTeacherOrNoSubjectStudent)) {
@@ -215,6 +216,7 @@ public class StudentServiceImpl extends BaseServiceImpl<Integer, Student> implem
         if (CollectionUtils.isEmpty(studentClassInfo)) {
             return;
         }
+        //更新学员指导老师和声部信息
         List<Student> needUpdateStudents = new ArrayList<>();
         Map<Integer, List<StudentClassInfoDto>> scm = studentClassInfo.stream().collect(Collectors.groupingBy(StudentClassInfoDto::getStudentId));
         for (Student student : noTeacherOrNoSubjectStudent) {
@@ -237,6 +239,12 @@ public class StudentServiceImpl extends BaseServiceImpl<Integer, Student> implem
         if (!CollectionUtils.isEmpty(needUpdateStudents)) {
             studentDao.batchUpdate(needUpdateStudents);
         }
+
+        //更新新学员状态
+        List<Integer> newStudentIds = studentDao.getHasVipCourseStudentIdsFromNewStudents();
+        if(!CollectionUtils.isEmpty(newStudentIds)){
+            studentDao.updateNewStudentsToOld(newStudentIds);
+        }
     }
 
     @Override

+ 15 - 0
mec-biz/src/main/resources/config/mybatis/StudentMapper.xml

@@ -688,6 +688,13 @@
         SELECT * FROM student WHERE teacher_id_ IS NULL OR subject_id_list_ IS NULL OR cooperation_organ_id_ IS NULL;
     </select>
 
+    <select id="getHasVipCourseStudentIdsFromNewStudents" resultType="int">
+        SELECT DISTINCT s.user_id_
+        FROM student s
+        LEFT JOIN course_schedule_student_payment cssp ON s.user_id_=cssp.user_id_
+        WHERE s.is_new_user_=1 AND cssp.group_type_='VIP'
+    </select>
+
     <update id="updateGrade"><![CDATA[
         UPDATE student SET current_grade_num_=current_grade_num_+1
         WHERE current_grade_num_>=1
@@ -695,4 +702,12 @@
         ]]>
     </update>
 
+    <update id="updateNewStudentsToOld">
+        UPDATE student SET is_new_user_=0
+        WHERE user_id_ IN
+        <foreach collection="userIds" item="userId" open="(" close=")" separator=",">
+            #{userId}
+        </foreach>
+    </update>
+
 </mapper>