liujc 2 vuotta sitten
vanhempi
commit
06e8a7a816

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

@@ -2013,4 +2013,5 @@ public interface CourseScheduleDao extends BaseDAO<Long, CourseSchedule> {
      */
     List<CourseSchedule> liveCourseRemind();
 
+    void updateRemindStatus(@Param("ids") List<Long> ids);
 }

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

@@ -253,6 +253,15 @@ public enum MessageTypeEnum implements BaseEnum<String, MessageTypeEnum> {
     //小小训练营-训练营开始训练推送
     JIGUANG_TEMP_LITTLE_ARTIST_START_TRAIN("JIGUANG_TEMP_LITTLE_ARTIST_START_TRAIN","训练营开始训练推送-极光推送"),
 
+    // 老师直播课上课通知
+    JIGUANG_LIVE_COURSE_START("JIGUANG_LIVE_COURSE_START","老师直播课上课通知-极光推送"),
+
+    // 学生直播课上课通知
+    JIGUANG_LIVE_COURSE_START_STUDENT("JIGUANG_LIVE_COURSE_START_STUDENT","学生直播课上课通知-极光推送"),
+
+    // 群聊直播课上课通知
+    IM_LIVE_COURSE_START_GROUP("IM_LIVE_COURSE_START_GROUP","群聊直播课上课通知-极光推送"),
+
     ;
 
     MessageTypeEnum(String code, String msg) {

+ 46 - 23
mec-biz/src/main/java/com/ym/mec/biz/service/impl/VipGroupServiceImpl.java

@@ -18,6 +18,7 @@ import com.google.common.collect.Maps;
 import com.ym.mec.biz.dal.dto.*;
 import com.ym.mec.biz.dal.dto.VipGroupClassGroupMapper;
 import com.ym.mec.biz.dal.entity.*;
+import com.ym.mec.biz.dal.enums.*;
 import com.ym.mec.biz.dal.mapper.LiveGroupPlusMapper;
 import com.ym.mec.biz.dal.wrapper.LiveGroupWrapper;
 import com.ym.mec.biz.service.*;
@@ -67,25 +68,6 @@ import com.ym.mec.biz.dal.dao.VipGroupDefaultClassesCycleDao;
 import com.ym.mec.biz.dal.dao.VipGroupDefaultClassesUnitPriceDao;
 import com.ym.mec.biz.dal.dao.VipGroupStudentCoursePriceDao;
 import com.ym.mec.biz.dal.entity.StudentApplyRefunds.StudentApplyRefundsStatus;
-import com.ym.mec.biz.dal.enums.ActivityCourseType;
-import com.ym.mec.biz.dal.enums.AuditStatusEnum;
-import com.ym.mec.biz.dal.enums.ClassGroupStudentStatusEnum;
-import com.ym.mec.biz.dal.enums.ClassGroupTypeEnum;
-import com.ym.mec.biz.dal.enums.CouponDetailTypeEnum;
-import com.ym.mec.biz.dal.enums.CourseStatusEnum;
-import com.ym.mec.biz.dal.enums.DealStatusEnum;
-import com.ym.mec.biz.dal.enums.GroupType;
-import com.ym.mec.biz.dal.enums.MessageTypeEnum;
-import com.ym.mec.biz.dal.enums.OrderTypeEnum;
-import com.ym.mec.biz.dal.enums.PlatformCashAccountDetailTypeEnum;
-import com.ym.mec.biz.dal.enums.ReturnFeeEnum;
-import com.ym.mec.biz.dal.enums.SalarySettlementTypeEnum;
-import com.ym.mec.biz.dal.enums.StudentAttendanceStatusEnum;
-import com.ym.mec.biz.dal.enums.SysUserRoleEnum;
-import com.ym.mec.biz.dal.enums.TeachModeEnum;
-import com.ym.mec.biz.dal.enums.TeachTypeEnum;
-import com.ym.mec.biz.dal.enums.VipGroupStatusEnum;
-import com.ym.mec.biz.dal.enums.YesOrNoEnum;
 import com.ym.mec.biz.dal.page.ActivityUserQueryInfo;
 import com.ym.mec.biz.dal.page.StudentVipGroupQueryInfo;
 import com.ym.mec.biz.dal.page.VipGroupAttendanceQueryInfo;
@@ -4865,14 +4847,12 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
         // 手机号
         List<SimpleUserDto> usersSimpleInfo = teacherDao.getUsersSimpleInfo(studentIds.stream().map(Long::intValue).collect(Collectors.toList()));
 
-        Set<Integer> subjectIds = new HashSet<>();
         Set<Integer> coopIds = new HashSet<>();
-        Set<Integer> organIds = new HashSet<>();
+        Set<Integer> organIds;
         studentMap.values().forEach(student -> {
-            subjectIds.add(Integer.parseInt(student.getSubjectIdList()));
             coopIds.add(student.getCooperationOrganId());
-            organIds.add(student.getOrganId());
         });
+        organIds = usersSimpleInfo.stream().map( o -> Integer.parseInt(o.getOrganIds())).collect(Collectors.toSet());
         // 分部
         Map<Integer, Organization> organizationMap = organizationService.getMapById(new ArrayList<>(organIds));
 
@@ -4975,8 +4955,51 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
         // 查询30分钟内要开始的并且没有直播通知的直播课
         List<CourseSchedule> courseSchedules = courseScheduleDao.liveCourseRemind();
 
+        if (CollectionUtils.isEmpty(courseSchedules)) {
+            return;
+        }
+
+        for (CourseSchedule courseSchedule : courseSchedules) {
+
+            // 获取班级名
+            ClassGroup classGroup = classGroupDao.get(courseSchedule.getClassGroupId());
+            if (Objects.isNull(classGroup)) {
+                continue;
+            }
+
+            // 通知老师
+            Integer actualTeacherId = courseSchedule.getActualTeacherId();
+            if (actualTeacherId != null) {
+                Map<Integer, String> userMap = new HashMap<>();
+                userMap.put(actualTeacherId, actualTeacherId.toString());
+
+                sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG, MessageTypeEnum.JIGUANG_LIVE_COURSE_START,
+                        userMap, null, 0, null, "TEACHER", classGroup.getName());
+            }
+
+            // 通知学生
+            List<SimpleUserDto> courseStudents = courseScheduleStudentPaymentService.getCourseStudents(Lists.newArrayList(courseSchedule.getId()));
+            if (!CollectionUtils.isEmpty(courseStudents)) {
+                Map<Integer, String> userMap = new HashMap<>();
+                courseStudents.forEach(data -> {
+                    userMap.put(data.getUserId(), data.getUserId().toString());
+                });
+
+                sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG, MessageTypeEnum.JIGUANG_LIVE_COURSE_START_STUDENT,
+                        userMap, null, 0, null, "STUDENT", classGroup.getName());
+            }
+
+            // im消息 TODO
+            sysMessageService.batchSendImGroupMessage(MessageTypeEnum.IM_LIVE_COURSE_START_GROUP, courseSchedule.getActualTeacherId().toString(), "extra",
+                    new String[]{classGroup.getId().toString()},null);
+
+        }
 
+        // id 集合
+        List<Long> ids = courseSchedules.stream().map(CourseSchedule::getId).collect(Collectors.toList());
 
+        // 更新通知状态
+        courseScheduleDao.updateRemindStatus(ids);
 
     }
 }

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

@@ -46,6 +46,7 @@
         <result column="settlement_report_flag_" property="settlementReportFlag"/>
         <result column="service_provider_" property="serviceProvider"/>
         <result column="mute_all_" property="muteAll"/>
+        <result column="live_remind_" property="liveRemind"/>
     </resultMap>
 
     <resultMap type="com.ym.mec.biz.dal.dto.Mapper" id="Mapper">
@@ -4248,4 +4249,13 @@
           and cs.class_date_ = date_format(now(),'%Y-%m-%d')
           and cs.start_class_time_ &lt;= date_format(now(),'%H:%i:%s')
     </select>
+
+    <update id="updateRemindStatus">
+        update course_schedule
+        set live_remind_ = 1
+        where id_  in
+        <foreach collection="ids" item="id" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+    </update>
 </mapper>

+ 4 - 0
mec-client-api/src/main/java/com/ym/mec/task/TaskRemoteService.java

@@ -303,4 +303,8 @@ public interface TaskRemoteService {
 
     @GetMapping("task/degreeStatusChange")
     void degreeStatusChange() ;
+
+    // 直播课程提醒
+    @GetMapping("task/liveCourseRemind")
+    void liveCourseRemind() ;
 }

+ 5 - 0
mec-client-api/src/main/java/com/ym/mec/task/fallback/TaskRemoteServiceFallback.java

@@ -354,4 +354,9 @@ public class TaskRemoteServiceFallback implements TaskRemoteService {
     public void degreeStatusChange() {
         logger.error("考级状态变更失败");
     }
+
+    @Override
+    public void liveCourseRemind() {
+        logger.error("直播课提醒失败");
+    }
 }

+ 19 - 0
mec-task/src/main/java/com/ym/mec/task/jobs/LiveCourseRemindTask.java

@@ -0,0 +1,19 @@
+package com.ym.mec.task.jobs;
+
+import com.ym.mec.task.TaskRemoteService;
+import com.ym.mec.task.core.BaseTask;
+import com.ym.mec.task.core.TaskException;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+@Service
+public class LiveCourseRemindTask extends BaseTask {
+
+	@Autowired
+	private TaskRemoteService taskRemoteService;
+
+	@Override
+	public void execute() throws TaskException {
+		taskRemoteService.liveCourseRemind();
+	}
+}