Browse Source

1、网管课初始类型
2、网管试听课

Joburgess 5 năm trước cách đây
mục cha
commit
f5214004bf

+ 1 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/PracticeGroupDao.java

@@ -281,4 +281,5 @@ public interface PracticeGroupDao extends com.ym.mec.common.dal.BaseDAO<Long, Pr
      * @return java.util.List<com.ym.mec.biz.dal.entity.PracticeGroup>
      */
     List<PracticeGroup> findStudentTrialPractices(@Param("studentId") Integer studentId);
+    int countStudentTrialPractices(@Param("studentId") Integer studentId);
 }

+ 4 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/enums/MessageTypeEnum.java

@@ -58,6 +58,10 @@ public enum MessageTypeEnum implements BaseEnum<String, MessageTypeEnum> {
     HOMEWORK_STUDENT_REPLY_PUSH("HOMEWORK_STUDENT_REPLY_PUSH", "学生作业回复提醒"),
     HOMEWORK_TEACHER_REPLY_PUSH("HOMEWORK_TEACHER_REPLY_PUSH", "教师回复作业提醒"),
 
+    /**试听课*/
+    TRIAL_PRACTICE_CREATE_STUDENT_PUSH("TRIAL_PRACTICE_CREATE_STUDENT_PUSH", "试听课安排"),
+    TRIAL_PRACTICE_CREATE_TEACHER_PUSH("TRIAL_PRACTICE_CREATE_TEACHER_PUSH", "试听课安排"),
+
     /** 课外训练消息 */
     EXTRA_REMIND_PUSH("EXTRA_REMIND_PUSH", "作业提醒"),
     EXTRA_REMIND_IM("EXTRA_REMIND_IM", "作业提醒"),

+ 52 - 3
mec-biz/src/main/java/com/ym/mec/biz/service/impl/EduPracticeGroupServiceImpl.java

@@ -884,7 +884,14 @@ public class EduPracticeGroupServiceImpl implements EduPracticeGroupService{
             return BaseController.failed(HttpStatus.EXPECTATION_FAILED, "两次课程的时间需安排在七天内");
         }
 
-        SysUser sysUser = sysUserFeignService.queryUserById(practiceGroupBuyParams.getStudentId());
+        studentDao.lockUser(practiceGroupBuyParams.getStudentId());
+
+        int studentTrialPracticeNum = practiceGroupDao.countStudentTrialPractices(practiceGroupBuyParams.getStudentId());
+        if(studentTrialPracticeNum>=3){
+            return BaseController.failed(HttpStatus.EXPECTATION_FAILED, "指定的学生已存在三组试听课");
+        }
+
+        SysUser student = teacherDao.getUser(practiceGroupBuyParams.getStudentId());
 
         Subject subject = subjectDao.get(practiceGroupBuyParams.getSubjectId());
         if (Objects.isNull(subject)) {
@@ -909,14 +916,16 @@ public class EduPracticeGroupServiceImpl implements EduPracticeGroupService{
             throw new BizException("课程开始时间不得小于当前时间");
         }
 
-        practiceGroupBuyParams.setName(subject.getName() + "•" + sysUser.getUsername());
+        practiceGroupBuyParams.setName(subject.getName() + "•" + student.getUsername());
 
         TeacherFreeTime teacherFreeTime = teacherFreeTimeDao.findTeacherFreeTime(practiceGroupBuyParams.getUserId());
         if (Objects.isNull(teacherFreeTime)) {
             return BaseController.failed(HttpStatus.MULTIPLE_CHOICES,"抱歉啦,当前所选时段组合,「" + teacher.getRealName() + "」老师已被预约,请重新选择时段或更换老师后重试。");
         }
 
-        practiceGroupBuyParams.setOrganId(sysUser.getOrganId());
+        practiceGroupBuyParams.setCoursesStartDate(courseDates.get(0));
+        practiceGroupBuyParams.setCoursesExpireDate(DateUtil.addMinutes(courseDates.get(1),practiceCourseMinutes));
+        practiceGroupBuyParams.setOrganId(student.getOrganId());
         practiceGroupBuyParams.setSingleClassMinutes(practiceCourseMinutes);
         practiceGroupBuyParams.setGroupStatus(GroupStatusEnum.NORMAL);
         practiceGroupBuyParams.setType(PracticeGroupType.TRIAL);
@@ -1058,6 +1067,46 @@ public class EduPracticeGroupServiceImpl implements EduPracticeGroupService{
             }
             return BaseController.failed(HttpStatus.FOUND, errMessage);
         }
+
+        try{
+            DateTimeFormatter mmdd = DateTimeFormatter.ofPattern("M月d日");
+            DateTimeFormatter hhmm = DateTimeFormatter.ofPattern("H:mm");
+            LocalDateTime oneCourseStartTime = LocalDateTime.ofInstant(courseDates.get(0).toInstant(), DateUtil.zoneId);
+            String oneCourseMMdd=mmdd.format(oneCourseStartTime);
+            String oneCourseHHmm=hhmm.format(oneCourseStartTime);
+            String oneCourseStartTimeDayOfWeekName = DateUtil.weekNumNormalWeekNameMap.get(oneCourseStartTime.getDayOfWeek().getValue());
+            String oneCourseTimeStr = oneCourseMMdd + "(" + oneCourseStartTimeDayOfWeekName + ")" + oneCourseHHmm;
+            LocalDateTime twoCourseStartTime = LocalDateTime.ofInstant(courseDates.get(1).toInstant(), DateUtil.zoneId);
+            String twoCourseMMdd=mmdd.format(twoCourseStartTime);
+            String twoCourseHHmm=hhmm.format(twoCourseStartTime);
+            String twoCourseStartTimeDayOfWeekName = DateUtil.weekNumNormalWeekNameMap.get(twoCourseStartTime.getDayOfWeek().getValue());
+            String twoCourseTimeStr = twoCourseMMdd + "(" + twoCourseStartTimeDayOfWeekName + ")" + twoCourseHHmm;
+
+            Map<Integer, String> userMap = new HashMap<>();
+            userMap.put(practiceGroupBuyParams.getStudentId(), practiceGroupBuyParams.getStudentId().toString());
+            sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG, MessageTypeEnum.TRIAL_PRACTICE_CREATE_STUDENT_PUSH,
+                    userMap, null, 0, null, "STUDENT", student.getUsername(), teacher.getRealName(),
+                    oneCourseTimeStr, twoCourseTimeStr);
+//            Map<Integer, String> userPhoneMap = new HashMap<>();
+//            userPhoneMap.put(practiceGroupBuyParams.getStudentId(), student.getPhone());
+//            sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.YIMEI, MessageTypeEnum.TRIAL_PRACTICE_CREATE_STUDENT_PUSH,
+//                    userPhoneMap, null, 0, null, "STUDENT", student.getUsername(), teacher.getRealName(),
+//                    oneCourseTimeStr, twoCourseTimeStr);
+
+            Map<Integer, String> teacherMap = new HashMap<>();
+            teacherMap.put(practiceGroupBuyParams.getUserId(), practiceGroupBuyParams.getUserId().toString());
+            sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG, MessageTypeEnum.TRIAL_PRACTICE_CREATE_TEACHER_PUSH,
+                    teacherMap, null, 0, null, "TEACHER", teacher.getRealName(), practiceGroupBuyParams.getName(),
+                    oneCourseTimeStr, twoCourseTimeStr);
+//            Map<Integer, String> teacherPhoneMap = new HashMap<>();
+//            teacherPhoneMap.put(practiceGroupBuyParams.getUserId(), teacher.getPhone());
+//            sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.YIMEI, MessageTypeEnum.TRIAL_PRACTICE_CREATE_TEACHER_PUSH,
+//                    teacherPhoneMap, null, 0, null, "TEACHER", teacher.getRealName(), practiceGroupBuyParams.getName(),
+//                    oneCourseTimeStr, twoCourseTimeStr);
+        }catch (Exception e){
+            e.printStackTrace();
+        }
+
         return BaseController.succeed();
     }
 

+ 9 - 0
mec-biz/src/main/resources/config/mybatis/PracticeGroupMapper.xml

@@ -587,4 +587,13 @@
         GROUP BY pg.id_
         ORDER BY pg.id_
     </select>
+    <select id="countStudentTrialPractices" resultType="int">
+        SELECT
+            COUNT(pg.id_)
+        FROM
+            practice_group pg
+        WHERE
+            pg.student_id_ = #{studentId}
+            AND pg.type_ = 'TRIAL'
+    </select>
 </mapper>