Browse Source

1、乐团课新增排课教师课酬计算逻辑调整
2、陪练课接口
3、陪练课指派教师广东分部特殊处理

Joburgess 5 years ago
parent
commit
f1af901905

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

@@ -1066,4 +1066,17 @@ public interface CourseScheduleDao extends BaseDAO<Long, CourseSchedule> {
     List<CourseSchedule> findTeacherCoursesWithIncludeDateRange(@Param("userId") Integer userId,
                                                                 @Param("startTime") Date startTime,
                                                                 @Param("endTime") Date endTime);
+
+    /**
+     * @describe 获取学生课程中包含指定时间区间的课程
+     * @author Joburgess
+     * @date 2020/2/4
+     * @param userId:
+     * @param startTime:
+     * @param endTime:
+     * @return java.util.List<com.ym.mec.biz.dal.entity.CourseSchedule>
+     */
+    List<CourseSchedule> findStudentCoursesWithIncludeDateRange(@Param("userId") Integer userId,
+                                                                @Param("startTime") Date startTime,
+                                                                @Param("endTime") Date endTime);
 }

+ 31 - 10
mec-biz/src/main/java/com/ym/mec/biz/service/impl/PracticeGroupServiceImpl.java

@@ -346,11 +346,12 @@ public class PracticeGroupServiceImpl extends BaseServiceImpl<Long, PracticeGrou
         if (Objects.isNull(sysUser.getOrganId())) {
             throw new BizException("未找到用户分部属性");
         }
+        Map result = new HashMap();
         List<TeacherBasicDto> organAndSubjectTeachers = teacherDao.findTeaTeachersByOrganAndSubject(sysUser.getOrganId(), subjectId);
         if (CollectionUtils.isEmpty(organAndSubjectTeachers)) {
-            throw new BizException("未找到合适教师");
+            result.put("teacherFreeDates",new ArrayList<>());
+            return result;
         }
-        Map result = new HashMap();
         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());
@@ -516,7 +517,8 @@ public class PracticeGroupServiceImpl extends BaseServiceImpl<Long, PracticeGrou
         if (Objects.isNull(subject)) {
             throw new BizException("声部不存在");
         }
-        practiceGroup.setName(subject.getName() + "•陪练课");
+        SysUser sysUser = sysUserFeignService.queryUserById(practiceGroup.getStudentId());
+        practiceGroup.setName("陪练课•" + sysUser.getUsername());
         practiceGroup.setSingleClassMinutes(practiceCourseMinutes);
         practiceGroupDao.insert(practiceGroup);
 
@@ -651,12 +653,22 @@ public class PracticeGroupServiceImpl extends BaseServiceImpl<Long, PracticeGrou
             studentDao.update(student);
         }
 
-        List<ImGroupMember> imGroupMemberList = new ArrayList<>();
-        imGroupMemberList.add(new ImGroupMember(practiceGroup.getUserId().toString()));
-        imGroupMemberList.add(new ImGroupMember(practiceGroup.getStudentId().toString()));
-        ImGroupMember[] imGroupMembers = imGroupMemberList.toArray(new ImGroupMember[imGroupMemberList.size()]);
-        // 创建群组
-        imFeignService.groupCreate(new ImGroupModel(classGroup.getId().toString(), imGroupMembers, classGroup.getName()));
+        List<CourseSchedule> studentRepeatCourse1=courseScheduleDao.findStudentCoursesWithIncludeDateRange(practiceGroup.getStudentId(),allCourseDates.get(0),DateUtil.addMinutes(allCourseDates.get(2),practiceCourseMinutes));
+        if(CollectionUtils.isEmpty(studentRepeatCourse1)){
+            throw new BizException("您在预约的时间段内有其他课程");
+        }
+        List<CourseSchedule> studentRepeatCourse2=courseScheduleDao.findStudentCoursesWithIncludeDateRange(practiceGroup.getStudentId(),allCourseDates.get(1),DateUtil.addMinutes(allCourseDates.get(3),practiceCourseMinutes));
+        if(CollectionUtils.isEmpty(studentRepeatCourse2)){
+            throw new BizException("您在预约的时间段内有其他课程");
+        }
+        List<CourseSchedule> studentRepeatCourse3=courseScheduleDao.findStudentCoursesWithIncludeDateRange(practiceGroup.getStudentId(),allCourseDates.get(2),DateUtil.addMinutes(allCourseDates.get(3),practiceCourseMinutes));
+        if(CollectionUtils.isEmpty(studentRepeatCourse3)){
+            throw new BizException("您在预约的时间段内有其他课程");
+        }
+        List<CourseSchedule> studentRepeatCourse4=courseScheduleDao.findStudentCoursesWithIncludeDateRange(practiceGroup.getStudentId(),allCourseDates.get(3),DateUtil.addMinutes(allCourseDates.get(3),practiceCourseMinutes));
+        if(CollectionUtils.isEmpty(studentRepeatCourse4)){
+            throw new BizException("您在预约的时间段内有其他课程");
+        }
 
         //推送
         List<CourseSchedule> courseSchedules1=courseScheduleDao.findTeacherCoursesWithIncludeDateRange(teacherId,allCourseDates.get(2),DateUtil.addMinutes(allCourseDates.get(2),practiceCourseMinutes));
@@ -669,10 +681,12 @@ public class PracticeGroupServiceImpl extends BaseServiceImpl<Long, PracticeGrou
                 courseSchedules2=new ArrayList<>();
             }
             courseSchedules1.addAll(courseSchedules2);
-            SysUser sysUser = sysUserFeignService.queryUserById(practiceGroup.getStudentId());
             String[] courseDates=new String[courseSchedules1.size()];
             String[] courseNames=new String[courseSchedules1.size()];
             for (int i=0;i<courseSchedules1.size();i++) {
+                if(courseSchedules1.get(i).getGroupType().equals(GroupType.PRACTICE)){
+                    throw new BizException("指派的老师在预约的时间段内存在陪练课");
+                }
                 courseDates[i]=DateUtil.dateToString(courseSchedules1.get(i).getStartClassTime(),"yyyy-MM-dd HH:mm:ss");
                 courseNames[i]=courseSchedules1.get(i).getName();
             }
@@ -684,6 +698,13 @@ public class PracticeGroupServiceImpl extends BaseServiceImpl<Long, PracticeGrou
                     teacherMap,null,0,null,"TEACHER",Objects.isNull(sysUser.getUsername())?sysUser.getPhone():sysUser.getUsername(),courseDatesStr,courseNamesStr,courseNamesStr);
         }
 
+        List<ImGroupMember> imGroupMemberList = new ArrayList<>();
+        imGroupMemberList.add(new ImGroupMember(practiceGroup.getUserId().toString()));
+        imGroupMemberList.add(new ImGroupMember(practiceGroup.getStudentId().toString()));
+        ImGroupMember[] imGroupMembers = imGroupMemberList.toArray(new ImGroupMember[imGroupMemberList.size()]);
+        // 创建群组
+        imFeignService.groupCreate(new ImGroupModel(classGroup.getId().toString(), imGroupMembers, classGroup.getName()));
+
         Map result = new HashMap();
         result.put("teacherName", teacher.getRealName());
         result.put("enableApply", applyTimes < 1 ? 1 : 0);

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

@@ -2147,6 +2147,8 @@
         SELECT
             cs.id_,
             cs.class_group_id_,
+            cs.group_type_,
+            cs.music_group_id_,
             cs.status_,
             cs.subsidy_,
             cs.class_date_,
@@ -2171,4 +2173,34 @@
             csts.user_id_ = #{userId}
             AND #{startTime} &lt; CONCAT( cs.class_date_, ' ', cs.end_class_time_ ) AND #{endTime} &gt; CONCAT( cs.class_date_, ' ', cs.start_class_time_ );
     </select>
+    <select id="findStudentCoursesWithIncludeDateRange" resultMap="CourseSchedule">
+        SELECT
+            cs.id_,
+            cs.class_group_id_,
+            cs.group_type_,
+            cs.music_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_student_payment cssp
+            LEFT JOIN course_schedule cs ON cssp.course_schedule_id_ = cs.id_
+        WHERE
+            cssp.user_id_ = #{userId}
+            AND #{startTime} &lt; CONCAT( cs.class_date_, ' ', cs.end_class_time_ ) AND #{endTime} &gt; CONCAT( cs.class_date_, ' ', cs.start_class_time_ );
+    </select>
 </mapper>