Browse Source

1、陪练课调整

Joburgess 5 years ago
parent
commit
9223a49e67

+ 2 - 11
mec-biz/src/main/java/com/ym/mec/biz/service/PracticeGroupService.java

@@ -90,23 +90,14 @@ public interface PracticeGroupService extends BaseService<Long, PracticeGroup> {
      */
      */
 	List<Date> getEnableApplyDates(Date startDay,Date endDay);
 	List<Date> getEnableApplyDates(Date startDay,Date endDay);
 
 
-    /**
-     * @describe 陪练课预约
-     * @author Joburgess
-     * @date 2020/1/31
-     * @param practiceGroup: 预约信息
-     * @return java.util.Map
-     */
-    Map practiceApply(PracticeGroup practiceGroup);
-
 	/**
 	/**
-	 * @describe 陪练课预约2
+	 * @describe 陪练课预约
 	 * @author Joburgess
 	 * @author Joburgess
 	 * @date 2020/1/31
 	 * @date 2020/1/31
 	 * @param practiceGroup: 预约信息
 	 * @param practiceGroup: 预约信息
 	 * @return java.util.Map
 	 * @return java.util.Map
 	 */
 	 */
-	Map practiceApply2(PracticeGroup practiceGroup);
+	Map practiceApply(PracticeGroup practiceGroup);
 
 
 	/**
 	/**
 	 * 获取陪练课列表
 	 * 获取陪练课列表

+ 22 - 307
mec-biz/src/main/java/com/ym/mec/biz/service/impl/PracticeGroupServiceImpl.java

@@ -947,11 +947,30 @@ public class PracticeGroupServiceImpl extends BaseServiceImpl<Long, PracticeGrou
         }
         }
 
 
         List<Date> tempEnableApplyDates = new ArrayList<>();
         List<Date> tempEnableApplyDates = new ArrayList<>();
+        Date yesterday=null;
+        Date tomorrow=null;
+        if(Objects.nonNull(firstClassTime)){
+            Calendar tempCalendar=Calendar.getInstance();
+            tempCalendar.setTime(firstClassTime);
+            tempCalendar.add(Calendar.DATE,-1);
+            yesterday=tempCalendar.getTime();
+            tempCalendar.add(Calendar.DATE,2);
+            tomorrow=tempCalendar.getTime();
+        }
         for (Date enableApplyDate : enableApplyDates) {
         for (Date enableApplyDate : enableApplyDates) {
             Date enableApplyDateCourseEndTime = DateUtil.addMinutes(enableApplyDate, practiceCourseMinutes);
             Date enableApplyDateCourseEndTime = DateUtil.addMinutes(enableApplyDate, practiceCourseMinutes);
-            if (Objects.nonNull(firstClassTime) && DateUtil.isSameDay(enableApplyDate, firstClassTime)) {
-                continue;
+            if (Objects.nonNull(firstClassTime)) {
+                if(DateUtil.isSameDay(enableApplyDate, firstClassTime)){
+                    continue;
+                }
+                if(DateUtil.isSameDay(enableApplyDate, tomorrow)){
+                    continue;
+                }
+                if(DateUtil.isSameDay(enableApplyDate, yesterday)){
+                    continue;
+                }
             }
             }
+
             if (teacherId == 100473) {
             if (teacherId == 100473) {
                 checkTeacherLeaveDate = false;
                 checkTeacherLeaveDate = false;
                 Calendar tempCalendar = Calendar.getInstance();
                 Calendar tempCalendar = Calendar.getInstance();
@@ -1409,312 +1428,8 @@ public class PracticeGroupServiceImpl extends BaseServiceImpl<Long, PracticeGrou
     }
     }
 
 
     @Override
     @Override
-    @Transactional(rollbackFor = Exception.class)
-    public Map practiceApply(PracticeGroup practiceGroup) {
-        Map result = new HashMap();
-        SysConfig practiceSubjectIdListConfig = sysConfigService.findByParamName(SysConfigService.PRACTICE_SUBJECT_ID_LIST);
-        if (!Arrays.asList(practiceSubjectIdListConfig.getParanValue().split(",")).contains(practiceGroup.getSubjectId().toString())) {
-            result.put("status", "DISABLE_SUBJECT");
-            return result;
-        }
-        Integer practiceCourseMinutes = 25;
-        SysConfig practiceCourseMinutesConfig = sysConfigService.findByParamName(SysConfigService.PRACTICE_COURSE_MINUTES);
-        if (Objects.nonNull(practiceCourseMinutesConfig)) {
-            practiceCourseMinutes = practiceCourseMinutesConfig.getParanValue(Integer.class);
-        }
-        SysConfig practiceCourseSalaryConfig = sysConfigService.findByParamName(SysConfigService.PRACTICE_COURSE_SALARY);
-        Date now = new Date();
-        if (practiceGroup.getFirstCourseTime().before(activityStartDate)
-                || practiceGroup.getFirstCourseTime().after(activityEndDate)) {
-            result.put("status", "APPLY_DATE_OVERFLOW");
-            return result;
-        }
-        if (practiceGroup.getSecondCourseTime().before(activityStartDate)
-                || practiceGroup.getSecondCourseTime().after(activityEndDate)) {
-            result.put("status", "APPLY_DATE_OVERFLOW");
-            return result;
-        }
-        if (DateUtil.isSameDay(practiceGroup.getFirstCourseTime(), practiceGroup.getSecondCourseTime())) {
-            result.put("status", "TWO_DATE_ON_ONE_DAY");
-            return result;
-        }
-
-        List<Date> allCourseDates = new ArrayList<>();
-        allCourseDates.add(practiceGroup.getFirstCourseTime());
-        allCourseDates.add(practiceGroup.getSecondCourseTime());
-        allCourseDates.add(DateUtil.addDays(practiceGroup.getFirstCourseTime(), 7));
-        if (DateUtil.isSameDay(allCourseDates.get(1), allCourseDates.get(2))) {
-            Date tempDate = allCourseDates.get(2);
-            allCourseDates.remove(2);
-            allCourseDates.add(DateUtil.addDays(tempDate, 7));
-        }
-        allCourseDates.add(DateUtil.addDays(practiceGroup.getSecondCourseTime(), 7));
-        if (DateUtil.isSameDay(allCourseDates.get(2), allCourseDates.get(3))) {
-            Date tempDate = allCourseDates.get(3);
-            allCourseDates.remove(3);
-            allCourseDates.add(DateUtil.addDays(tempDate, 7));
-        }
-        if (allCourseDates.get(2).before(activityStartDate)
-                || allCourseDates.get(2).after(courseExpireDate)) {
-            result.put("status", "APPLY_DATE_OVERFLOW");
-            return result;
-        }
-        if (allCourseDates.get(3).before(activityStartDate)
-                || allCourseDates.get(3).after(courseExpireDate)) {
-            result.put("status", "APPLY_DATE_OVERFLOW");
-            return result;
-        }
-        allCourseDates.sort(Comparator.comparing(Date::getTime));
-
-        studentDao.lockUser(practiceGroup.getStudentId());
-
-        Integer applyTimes = practiceGroupDao.countUserPracticeApplyRecord(practiceGroup.getStudentId());
-
-        if (applyTimes >= 1) {
-            result.put("status", "IS_APPLIED");
-            return result;
-        }
-        applyTimes += 1;
-
-        practiceGroup.setCoursesStartDate(allCourseDates.get(0));
-        practiceGroup.setCoursesExpireDate(DateUtil.addMinutes(allCourseDates.get(3), practiceCourseMinutes));
-        Integer teacherId = searchTeacherId(practiceGroup);
-        if (Objects.isNull(teacherId)) {
-            result.put("status", "NO_TEACHER");
-            return result;
-        }
-        practiceGroup.setUserId(teacherId);
-        Teacher teacher = teacherService.getDetail(teacherId);
-        Employee employee = employeeDao.get(teacherId);
-        if (Objects.isNull(employee) || StringUtils.isEmpty(employee.getOrganIdList()) || employee.getOrganIdList().contains(",")) {
-            practiceGroup.setOrganId(teacher.getTeacherOrganId());
-        } else {
-            practiceGroup.setOrganId(Integer.parseInt(employee.getOrganIdList()));
-        }
-        Subject subject = subjectDao.get(practiceGroup.getSubjectId());
-        if (Objects.isNull(subject)) {
-            result.put("status", "DISABLE_SUBJECT");
-            return result;
-        }
-        SysUser sysUser = sysUserFeignService.queryUserById(practiceGroup.getStudentId());
-        practiceGroup.setName(subject.getName() + "•" + sysUser.getUsername());
-        practiceGroup.setSingleClassMinutes(practiceCourseMinutes);
-        practiceGroupDao.insert(practiceGroup);
-
-        //创建班级信息
-        ClassGroup classGroup = new ClassGroup();
-        classGroup.setSubjectIdList(practiceGroup.getSubjectId().toString());
-        classGroup.setExpectStudentNum(1);
-        classGroup.setStudentNum(1);
-        classGroup.setName(practiceGroup.getName());
-        classGroup.setTotalClassTimes(allCourseDates.size());
-        classGroup.setType(ClassGroupTypeEnum.PRACTICE);
-        classGroup.setDelFlag(0);
-        classGroup.setGroupType(GroupType.PRACTICE);
-        classGroup.setMusicGroupId(practiceGroup.getId().toString());
-        classGroup.setCreateTime(now);
-        classGroup.setUpdateTime(now);
-        classGroupDao.insert(classGroup);
-
-        //创建班级老师关联记录
-        ClassGroupTeacherMapper classGroupTeacherMapper = new ClassGroupTeacherMapper();
-        classGroupTeacherMapper.setMusicGroupId(practiceGroup.getId().toString());
-        classGroupTeacherMapper.setClassGroupId(classGroup.getId());
-        classGroupTeacherMapper.setTeacherRole(TeachTypeEnum.BISHOP);
-        classGroupTeacherMapper.setUserId(teacherId);
-        classGroupTeacherMapper.setGroupType(GroupType.PRACTICE);
-        classGroupTeacherMapper.setCreateTime(now);
-        classGroupTeacherMapper.setUpdateTime(now);
-        classGroupTeacherMapperDao.insert(classGroupTeacherMapper);
-
-        //创建班级与老师课酬记录
-        ClassGroupTeacherSalary classGroupTeacherSalary = new ClassGroupTeacherSalary();
-        classGroupTeacherSalary.setMusicGroupId(practiceGroup.getId().toString());
-        classGroupTeacherSalary.setClassGroupId(classGroup.getId());
-        classGroupTeacherSalary.setTeacherRole(TeachTypeEnum.BISHOP);
-        classGroupTeacherSalary.setUserId(teacherId);
-        classGroupTeacherSalary.setSalary(new BigDecimal(practiceCourseSalaryConfig.getParanValue(Integer.class)));
-        classGroupTeacherSalary.setOnlineClassesSalary(new BigDecimal(practiceCourseSalaryConfig.getParanValue(Integer.class)));
-        classGroupTeacherSalary.setGroupType(GroupType.PRACTICE);
-        classGroupTeacherSalary.setCreateTime(now);
-        classGroupTeacherSalary.setUpdateTime(now);
-        classGroupTeacherSalaryDao.insert(classGroupTeacherSalary);
-
-        //班级学生关联表
-        ClassGroupStudentMapper classGroupStudentMapper = new ClassGroupStudentMapper();
-        classGroupStudentMapper.setMusicGroupId(practiceGroup.getId().toString());
-        classGroupStudentMapper.setClassGroupId(classGroup.getId());
-        classGroupStudentMapper.setUserId(practiceGroup.getStudentId());
-        classGroupStudentMapper.setCreateTime(now);
-        classGroupStudentMapper.setStatus(ClassGroupStudentStatusEnum.NORMAL);
-        classGroupStudentMapper.setGroupType(GroupType.PRACTICE);
-        classGroupStudentMapperDao.insert(classGroupStudentMapper);
-
-        List<CourseScheduleTeacherSalary> courseScheduleTeacherSalaries = new ArrayList<>();
-        List<CourseScheduleStudentPayment> courseScheduleStudentPayments = new ArrayList<>();
-        List<TeacherAttendance> teacherAttendances = new ArrayList<>();
-
-        for (Date courseDate : allCourseDates) {
-            //课表
-            CourseSchedule courseSchedule = new CourseSchedule();
-            courseSchedule.setMusicGroupId(practiceGroup.getId().toString());
-            courseSchedule.setClassGroupId(classGroup.getId());
-            courseSchedule.setStatus(CourseStatusEnum.NOT_START);
-            courseSchedule.setClassDate(courseDate);
-            courseSchedule.setStartClassTime(courseDate);
-            courseSchedule.setEndClassTime(DateUtil.addMinutes(courseDate, practiceCourseMinutes));
-            courseSchedule.setTeacherId(teacherId);
-            courseSchedule.setActualTeacherId(teacherId);
-            courseSchedule.setCreateTime(now);
-            courseSchedule.setUpdateTime(now);
-            courseSchedule.setTeachMode(TeachModeEnum.ONLINE);
-            courseSchedule.setType(CourseSchedule.CourseScheduleType.PRACTICE);
-            courseSchedule.setGroupType(GroupType.PRACTICE);
-            courseSchedule.setName(practiceGroup.getName());
-            courseScheduleDao.insert(courseSchedule);
-
-            //课程与老师薪水表
-            CourseScheduleTeacherSalary courseScheduleTeacherSalary = new CourseScheduleTeacherSalary();
-            courseScheduleTeacherSalary.setCourseScheduleId(courseSchedule.getId());
-            courseScheduleTeacherSalary.setGroupType(GroupType.PRACTICE);
-            courseScheduleTeacherSalary.setMusicGroupId(practiceGroup.getId().toString());
-            courseScheduleTeacherSalary.setTeacherRole(classGroupTeacherMapper.getTeacherRole());
-            courseScheduleTeacherSalary.setUserId(teacherId);
-            courseScheduleTeacherSalary.setExpectSalary(new BigDecimal(practiceCourseSalaryConfig.getParanValue()));
-            courseScheduleTeacherSalary.setCreateTime(now);
-            courseScheduleTeacherSalary.setUpdateTime(now);
-            courseScheduleTeacherSalary.setClassGroupId(classGroup.getId());
-            courseScheduleTeacherSalaries.add(courseScheduleTeacherSalary);
-
-            //学生缴费记录
-            CourseScheduleStudentPayment courseScheduleStudentPayment = new CourseScheduleStudentPayment();
-            courseScheduleStudentPayment.setGroupType(GroupType.PRACTICE);
-            courseScheduleStudentPayment.setMusicGroupId(practiceGroup.getId().toString());
-            courseScheduleStudentPayment.setCourseScheduleId(courseSchedule.getId());
-            courseScheduleStudentPayment.setUserId(practiceGroup.getStudentId());
-            courseScheduleStudentPayment.setExpectPrice(BigDecimal.ZERO);
-            courseScheduleStudentPayment.setClassGroupId(classGroup.getId());
-            courseScheduleStudentPayment.setCreateTime(now);
-            courseScheduleStudentPayment.setUpdateTime(now);
-            courseScheduleStudentPayments.add(courseScheduleStudentPayment);
-
-            //教师签到记录
-            TeacherAttendance teacherAttendance = new TeacherAttendance();
-            teacherAttendance.setMusicGroupId(practiceGroup.getId().toString());
-            teacherAttendance.setTeacherId(teacherId);
-            teacherAttendance.setClassGroupId(classGroup.getId());
-            teacherAttendance.setGroupType(GroupType.PRACTICE);
-            teacherAttendance.setCourseScheduleId(courseSchedule.getId());
-            teacherAttendance.setCreateTime(now);
-            teacherAttendances.add(teacherAttendance);
-        }
-        courseScheduleTeacherSalaryDao.batchInsert(courseScheduleTeacherSalaries);
-        courseScheduleStudentPaymentDao.batchInsert(courseScheduleStudentPayments);
-        teacherAttendanceDao.batchInsert(teacherAttendances);
-
-        Student student = studentDao.get(practiceGroup.getStudentId());
-        if (Objects.isNull(student)) {
-            student = new Student();
-            student.setUserId(practiceGroup.getStudentId());
-            student.setSubjectIdList(practiceGroup.getSubjectId().toString());
-            studentDao.insert(student);
-        } else {
-            if (Objects.isNull(student.getSubjectIdList())) {
-                student.setSubjectIdList(practiceGroup.getSubjectId().toString());
-            } else {
-                String[] studentIdStrings = student.getSubjectIdList().split(",");
-                List<String> studentIds = new ArrayList<>(Arrays.asList(studentIdStrings));
-                if (!studentIds.contains(practiceGroup.getSubjectId().toString())) {
-                    studentIds.add(practiceGroup.getSubjectId().toString());
-                }
-                student.setSubjectIdList(StringUtils.join(studentIds.toArray(), ","));
-            }
-            studentDao.update(student);
-        }
-
-        List<CourseSchedule> studentRepeatCourse1 = courseScheduleDao.findStudentCoursesWithIncludeDateRange(practiceGroup.getStudentId(), allCourseDates.get(0), DateUtil.addMinutes(allCourseDates.get(2), practiceCourseMinutes));
-        if (CollectionUtils.isEmpty(studentRepeatCourse1)) {
-            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
-            result.put("status", "STUDENT_COURSE_REPEAT");
-            return result;
-//            throw new BizException("您预约的时间端和您现有的课程冲突");
-        }
-        List<CourseSchedule> studentRepeatCourse2 = courseScheduleDao.findStudentCoursesWithIncludeDateRange(practiceGroup.getStudentId(), allCourseDates.get(1), DateUtil.addMinutes(allCourseDates.get(3), practiceCourseMinutes));
-        if (CollectionUtils.isEmpty(studentRepeatCourse2)) {
-            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
-            result.put("status", "STUDENT_COURSE_REPEAT");
-            return result;
-//            throw new BizException("您预约的时间端和您现有的课程冲突");
-        }
-        List<CourseSchedule> studentRepeatCourse3 = courseScheduleDao.findStudentCoursesWithIncludeDateRange(practiceGroup.getStudentId(), allCourseDates.get(2), DateUtil.addMinutes(allCourseDates.get(3), practiceCourseMinutes));
-        if (CollectionUtils.isEmpty(studentRepeatCourse3)) {
-            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
-            result.put("status", "STUDENT_COURSE_REPEAT");
-            return result;
-//            throw new BizException("您预约的时间端和您现有的课程冲突");
-        }
-        List<CourseSchedule> studentRepeatCourse4 = courseScheduleDao.findStudentCoursesWithIncludeDateRange(practiceGroup.getStudentId(), allCourseDates.get(3), DateUtil.addMinutes(allCourseDates.get(3), practiceCourseMinutes));
-        if (CollectionUtils.isEmpty(studentRepeatCourse4)) {
-            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
-            result.put("status", "STUDENT_COURSE_REPEAT");
-            return result;
-//            throw new BizException("您预约的时间端和您现有的课程冲突");
-        }
-
-        //推送
-        List<CourseSchedule> courseSchedules1 = courseScheduleDao.findTeacherCoursesWithIncludeDateRange(teacherId, allCourseDates.get(2), DateUtil.addMinutes(allCourseDates.get(2), practiceCourseMinutes));
-        List<CourseSchedule> courseSchedules2 = courseScheduleDao.findTeacherCoursesWithIncludeDateRange(teacherId, allCourseDates.get(3), DateUtil.addMinutes(allCourseDates.get(3), practiceCourseMinutes));
-        if (!CollectionUtils.isEmpty(courseSchedules1) || !CollectionUtils.isEmpty(courseSchedules2)) {
-            if (courseSchedules1 == null) {
-                courseSchedules1 = new ArrayList<>();
-            }
-            if (courseSchedules2 == null) {
-                courseSchedules2 = new ArrayList<>();
-            }
-            courseSchedules1.addAll(courseSchedules2);
-            List<String> courseDates = new ArrayList<>();
-            List<String> courseNames = new ArrayList<>();
-            for (int i = 0; i < courseSchedules1.size(); i++) {
-                if (courseSchedules1.get(i).getGroupType().equals(GroupType.PRACTICE)) {
-                    if (courseSchedules1.get(i).getMusicGroupId().equals(practiceGroup.getId().toString())) {
-                        continue;
-                    } else {
-                        TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
-                        result.put("status", "TEACHER_PRACTICE_REPEAT");
-                        return result;
-//                        throw new BizException("指派的老师存在课程冲突");
-                    }
-                }
-                courseDates.add(DateUtil.dateToString(courseSchedules1.get(i).getStartClassTime(), "yyyy-MM-dd HH:mm:ss"));
-                courseNames.add(courseSchedules1.get(i).getName());
-            }
-            if (!CollectionUtils.isEmpty(courseDates)) {
-                String courseDatesStr = StringUtils.join(courseDates, "、");
-                String courseNamesStr = StringUtils.join(courseNames, "、");
-                Map<Integer, String> teacherMap = new HashMap<>();
-                teacherMap.put(teacherId, teacherId.toString());
-                sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG, MessageTypeEnum.PUSH_TEACHER_COURSE_COLLIDE,
-                        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()));
-
-        result.put("teacherName", teacher.getRealName());
-        result.put("enableApply", applyTimes < 1 ? 1 : 0);
-        result.put("status", "SUCCESS");
-        return result;
-    }
-
-
-    @Override
     @Transactional(rollbackFor = Exception.class, isolation = Isolation.READ_COMMITTED)
     @Transactional(rollbackFor = Exception.class, isolation = Isolation.READ_COMMITTED)
-    public Map practiceApply2(PracticeGroup practiceGroup) {
+    public Map practiceApply(PracticeGroup practiceGroup) {
         if(Objects.isNull(practiceGroup.getUserId())){
         if(Objects.isNull(practiceGroup.getUserId())){
             throw new BizException("请选择老师");
             throw new BizException("请选择老师");
         }
         }

+ 1 - 1
mec-student/src/main/java/com/ym/mec/student/controller/PracticeGroupController.java

@@ -96,7 +96,7 @@ public class PracticeGroupController extends BaseController {
             throw new BizException("请联系老师确认您的所属分部");
             throw new BizException("请联系老师确认您的所属分部");
         }
         }
         practiceGroup.setStudentId(sysUser.getId());
         practiceGroup.setStudentId(sysUser.getId());
-        return succeed(practiceGroupService.practiceApply2(practiceGroup));
+        return succeed(practiceGroupService.practiceApply(practiceGroup));
     }
     }
 
 
 }
 }