zouxuan 2 роки тому
батько
коміт
9321e8ff9d

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

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

+ 33 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/StudentCourseScheduleRecordDto.java

@@ -64,6 +64,15 @@ public class StudentCourseScheduleRecordDto {
     @ApiModelProperty(value = "是否达标1是0否")
     private Integer qualifiedFlag = 1;
 
+    @ApiModelProperty(value = "教学内容")
+    private String teachingContent;
+
+    @ApiModelProperty("教学要点")
+    private String teachingPoint;
+
+    @ApiModelProperty("直播课回放记录")
+    private Boolean hasVideoRecord;
+
     public Integer getQualifiedFlag() {
         return qualifiedFlag;
     }
@@ -191,4 +200,28 @@ public class StudentCourseScheduleRecordDto {
 	public void setTeachingAddress(String teachingAddress) {
 		this.teachingAddress = teachingAddress;
 	}
+
+    public String getTeachingContent() {
+        return teachingContent;
+    }
+
+    public void setTeachingContent(String teachingContent) {
+        this.teachingContent = teachingContent;
+    }
+
+    public String getTeachingPoint() {
+        return teachingPoint;
+    }
+
+    public void setTeachingPoint(String teachingPoint) {
+        this.teachingPoint = teachingPoint;
+    }
+
+    public Boolean getHasVideoRecord() {
+        return hasVideoRecord;
+    }
+
+    public void setHasVideoRecord(Boolean hasVideoRecord) {
+        this.hasVideoRecord = hasVideoRecord;
+    }
 }

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

@@ -293,6 +293,15 @@ public enum MessageTypeEnum implements BaseEnum<String, MessageTypeEnum> {
 
     // 学校端注册短信通知
     JIGUANG_SCHOOL_COURSE_CREATE("JIGUANG_SCHOOL_COURSE_CREATE","课程创建"),
+    // 老师直播课上课通知
+    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) {

+ 47 - 24
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;
@@ -4871,14 +4853,12 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
         // 手机号
         List<SimpleUserDto> usersSimpleInfo = teacherDao.getUsersSimpleInfo(studentIds.stream().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));
 
@@ -4894,7 +4874,7 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
         }
 
         for (LiveGroupWrapper.LiveGroupStudentList record : records) {
-            Student student = studentMap.get(record.getStudentId());
+            Student student = studentMap.get(record.getStudentId().longValue());
             if (Objects.nonNull(student)) {
                 record.setStudentName(student.getUsername());
                 record.setOrganName(organizationMap.getOrDefault(student.getOrganId(), new Organization()).getName());
@@ -4981,8 +4961,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);
 
     }
 }

+ 14 - 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">
@@ -116,6 +117,8 @@
         <result column="class_group_id_" property="classGroupId"/>
         <result column="school_name_" property="teachingAddress" />
         <result column="qualified_flag_" property="qualifiedFlag" />
+        <result column="teaching_content_" property="teachingContent" />
+        <result column="teaching_point_" property="teachingPoint" />
     </resultMap>
 
     <resultMap type="com.ym.mec.biz.dal.dto.StudentCourseInfoDto" id="StudentCourseInfoDto">
@@ -1159,6 +1162,8 @@
         CONCAT(cs.class_date_,' ',cs.end_class_time_) end_class_time_,
         cs.actual_teacher_id_ teacher_id_,
         cs.teach_mode_,
+        cs.teaching_content_,
+        cs.teaching_point_,
         s.name_ school_name_,
         sa.qualified_flag_
         FROM course_schedule_student_payment cssp
@@ -4312,4 +4317,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();
+	}
+}

+ 4 - 1
mec-web/src/main/java/com/ym/mec/web/controller/TeacherDefaultVipGroupSalaryController.java

@@ -7,6 +7,7 @@ import io.swagger.annotations.ApiImplicitParam;
 import io.swagger.annotations.ApiImplicitParams;
 import io.swagger.annotations.ApiOperation;
 
+import java.util.Arrays;
 import java.util.Date;
 import java.util.List;
 import java.util.stream.Collectors;
@@ -50,8 +51,10 @@ public class TeacherDefaultVipGroupSalaryController extends BaseController {
 
         PageInfo<TeacherDefaultVipGroupSalary> salaryPageInfo = teacherDefaultVipGroupSalaryService.queryPage(queryInfo);
 
+        List<String> groupTypes = Arrays.stream(groupType.split(",")).collect(Collectors.toList());
+
         List<TeacherDefaultVipGroupSalary> collect = salaryPageInfo.getRows().stream()
-                .filter(x -> x.getGroupType().equals(groupType)).collect(Collectors.toList());
+                .filter(x -> groupTypes.contains(x.getGroupType())).collect(Collectors.toList());
         // 重置过滤后的数据
         salaryPageInfo.setRows(collect);
 

+ 3 - 1
mec-web/src/main/java/com/ym/mec/web/controller/VipGroupCategoryController.java

@@ -18,6 +18,7 @@ import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.web.bind.annotation.*;
 
 import java.math.BigDecimal;
+import java.util.Arrays;
 import java.util.Date;
 import java.util.List;
 import java.util.Optional;
@@ -67,9 +68,10 @@ public class VipGroupCategoryController extends BaseController {
 	@PreAuthorize("@pcs.hasPermissions('vipGroupCategory/findTeacherDefaultSalary')")
 	public Object findTeacherDefaultSalary(Integer userId, @RequestParam(defaultValue = "VIP") String groupType) {
 
+		List<String> groupTypes = Arrays.stream(groupType.split(",")).collect(Collectors.toList());
 		// 返回LIVE, VIP课薪资设置
 		List<VipGroupCategory> teacherSalary = vipGroupCategoryService.findTeacherSalary(userId).stream()
-				.filter(x -> x.getGroupType().equals(groupType)).collect(Collectors.toList());
+				.filter(x -> groupTypes.contains(x.getGroupType())).collect(Collectors.toList());
 		
 		return succeed(teacherSalary);
 	}