Browse Source

add:添加课后作业消息推送

liujunchi 2 years ago
parent
commit
6414fd7a5d

+ 4 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/enums/MessageTypeEnum.java

@@ -8,6 +8,10 @@ public enum MessageTypeEnum implements BaseEnum<String, MessageTypeEnum> {
     STUDENT_BUY_TEACHER_MUSIC_SHEET("STUDENT_BUY_TEACHER_MUSIC_SHEET","学员购买老师乐谱"),
     MUSIC_SHEET_AUTH_PASS("MUSIC_SHEET_AUTH_PASS","乐谱审核通过"),
     MUSIC_SHEET_AUTH_UNPASS("MUSIC_SHEET_AUTH_UNPASS","乐谱审核失败"),
+    STUDENT_BUY_MUSIC_SHEET_SUCCESS("STUDENT_BUY_MUSIC_SHEET_SUCCESS","学员购买乐谱成功"),
+    TEACHER_DECORATE_HOMEWORK("TEACHER_DECORATE_HOMEWORK","老师布置作业"),
+    TEACHER_REVIEW_HOMEWORK("TEACHER_REVIEW_HOMEWORK","老师点评作业"),
+    STUDENT_SUBMIT_HOMEWORK("STUDENT_SUBMIT_HOMEWORK","学生提交作业"),
     ;
 
     MessageTypeEnum(String code, String msg) {

+ 65 - 6
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/CourseHomeworkServiceImpl.java

@@ -2,6 +2,8 @@ package com.yonge.cooleshow.biz.dal.service.impl;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.yonge.cooleshow.auth.api.client.SysUserFeignService;
+import com.yonge.cooleshow.auth.api.entity.SysUser;
 import com.yonge.cooleshow.biz.dal.dao.CourseHomeworkDao;
 import com.yonge.cooleshow.biz.dal.dto.CourseHomeworkReviewDto;
 import com.yonge.cooleshow.biz.dal.dto.CourseHomeworkSaveDto;
@@ -10,14 +12,16 @@ import com.yonge.cooleshow.biz.dal.dto.search.HomeworkAdminSearch;
 import com.yonge.cooleshow.biz.dal.dto.search.HomeworkSearch;
 import com.yonge.cooleshow.biz.dal.entity.CourseHomework;
 import com.yonge.cooleshow.biz.dal.entity.CourseSchedule;
+import com.yonge.cooleshow.biz.dal.entity.CourseScheduleStudentPayment;
+import com.yonge.cooleshow.biz.dal.enums.ClientEnum;
 import com.yonge.cooleshow.biz.dal.enums.CourseScheduleEnum;
+import com.yonge.cooleshow.biz.dal.enums.MessageTypeEnum;
 import com.yonge.cooleshow.biz.dal.enums.YesOrNoEnum;
-import com.yonge.cooleshow.biz.dal.service.CourseHomeworkService;
-import com.yonge.cooleshow.biz.dal.service.CourseScheduleService;
-import com.yonge.cooleshow.biz.dal.service.StudentCourseHomeworkService;
+import com.yonge.cooleshow.biz.dal.service.*;
 import com.yonge.cooleshow.biz.dal.vo.CourseHomeworkDetailVo;
 import com.yonge.cooleshow.biz.dal.vo.CourseHomeworkVo;
 import com.yonge.cooleshow.common.exception.BizException;
+import com.yonge.toolset.thirdparty.message.MessageSenderPluginContext;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.annotation.Lazy;
 import org.springframework.stereotype.Service;
@@ -25,7 +29,9 @@ import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.CollectionUtils;
 
 import java.util.Date;
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 import java.util.stream.Collectors;
 
 
@@ -39,6 +45,15 @@ public class CourseHomeworkServiceImpl extends ServiceImpl<CourseHomeworkDao, Co
     @Autowired
     private StudentCourseHomeworkService studentCourseHomeworkService;
 
+    @Autowired
+    private SysMessageService sysMessageService;
+
+    @Autowired
+    private SysUserFeignService sysUserFeignService;
+
+    @Autowired
+    private CourseScheduleStudentPaymentService courseScheduleStudentPaymentService;
+
 	@Override
     public CourseHomeworkVo detail(Long id) {
         CourseHomeworkVo detail = baseMapper.detail(id);
@@ -114,7 +129,31 @@ public class CourseHomeworkServiceImpl extends ServiceImpl<CourseHomeworkDao, Co
         // 创建课后作业
         CourseHomework courseHomework = getCourseHomework(saveDto, courseSchedule);
 
-        return this.saveOrUpdate(courseHomework);
+        boolean flag = this.saveOrUpdate(courseHomework);
+
+        if (flag) {
+            // 发送给学生 ->老师布置作业消息
+            sendDecorateHomework(saveDto.getCourseScheduleId(), courseSchedule.getTeacherId());
+        }
+        return flag;
+
+    }
+
+    /**
+     * 发送给学生 ->老师布置作业消息
+     *
+     * @param courseScheduleId 课程id
+     * @param teacherId 老师id
+     */
+    private void sendDecorateHomework(Long courseScheduleId,Long teacherId) {
+        CourseScheduleStudentPayment courseScheduleStudentPayment = courseScheduleStudentPaymentService.getByCourseId(
+                courseScheduleId);
+        SysUser student = sysUserFeignService.queryUserById(courseScheduleStudentPayment.getUserId());
+        SysUser teacher = sysUserFeignService.queryUserById(teacherId);
+        Map<Long,String> studentReceivers = new HashMap<>();
+        studentReceivers.put(student.getId(), student.getPhone());
+        // todo url设置
+        sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG, MessageTypeEnum.TEACHER_DECORATE_HOMEWORK, studentReceivers, null, 0,null , ClientEnum.STUDENT.getCode(),teacher.getUsername(),"url");
     }
 
     /**
@@ -153,7 +192,17 @@ public class CourseHomeworkServiceImpl extends ServiceImpl<CourseHomeworkDao, Co
         if (!YesOrNoEnum.YES.getCode().equals(courseHomeworkDetailVo.getSubmitHomework().getCode())) {
             throw  new BizException("学生未提交作业,不能点评");
         }
-        return studentCourseHomeworkService.reviewCourseHome(courseHomeworkDetailVo.getStudentHomeworkId(),reviewDto.getReview());
+        boolean flag = studentCourseHomeworkService.reviewCourseHome(courseHomeworkDetailVo.getStudentHomeworkId(),reviewDto.getReview());
+        if (flag) {
+             // 发送消息给学生  老师点评作业
+            SysUser student = sysUserFeignService.queryUserById(courseHomeworkDetailVo.getStudentId());
+            SysUser teacher = sysUserFeignService.queryUserById(courseHomeworkDetailVo.getTeacherId());
+            Map<Long,String> studentReceivers = new HashMap<>();
+            studentReceivers.put(student.getId(), student.getPhone());
+            // todo url设置
+            sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG, MessageTypeEnum.TEACHER_REVIEW_HOMEWORK, studentReceivers, null, 0,null , ClientEnum.STUDENT.getCode(),teacher.getUsername(),"url");
+        }
+        return flag;
     }
 
     @Override
@@ -182,7 +231,17 @@ public class CourseHomeworkServiceImpl extends ServiceImpl<CourseHomeworkDao, Co
                 courseHomework.setCompletedNum(0);
             }
             courseHomework.setCompletedNum(courseHomework.getCompletedNum() + 1);
-            return this.updateById(courseHomework);
+            this.updateById(courseHomework);
+
+            // 发送学生提交作业消息给老师
+            SysUser student = sysUserFeignService.queryUserById(courseHomeworkDetailVo.getStudentId());
+            SysUser teacher = sysUserFeignService.queryUserById(courseHomeworkDetailVo.getTeacherId());
+            Map<Long,String> studentReceivers = new HashMap<>();
+            studentReceivers.put(student.getId(), student.getPhone());
+            // todo url设置
+            sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG, MessageTypeEnum.TEACHER_REVIEW_HOMEWORK, studentReceivers, null, 0,null , ClientEnum.STUDENT.getCode(),teacher.getUsername(),"url");
+            return true;
+
         } else {
             return false;
         }

+ 14 - 3
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/MusicSheetServiceImpl.java

@@ -417,14 +417,25 @@ public class MusicSheetServiceImpl extends ServiceImpl<MusicSheetDao,MusicSheet>
         if (StringUtil.isEmpty(teacher.getPhone())) {
             log.warn("teacher id {} name {} 手机号不存在,消息推送失败",teacher.getId(),teacher.getUsername());
         }
-        Map<Long,String> receivers = new HashMap<>();
-        receivers.put(teacherId, teacher.getPhone());
 
         MusicSheet musicSheet = this.getById(musicSheetId);
+        // 推送老师
+        Map<Long,String> teacherReceivers = new HashMap<>();
+        teacherReceivers.put(teacherId, teacher.getPhone());
 
         sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG,
-                                           MessageTypeEnum.STUDENT_BUY_TEACHER_MUSIC_SHEET, receivers, null, 
+                                           MessageTypeEnum.STUDENT_BUY_TEACHER_MUSIC_SHEET, teacherReceivers, null,
                                            0, null,ClientEnum.TEACHER.getCode(),student.getUsername(),musicSheet.getMusicSheetName());
+
+        // 推送学生
+        Map<Long,String> studentReceivers = new HashMap<>();
+        studentReceivers.put(studentId, student.getPhone());
+
+        // todo 乐谱连接
+        sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG,
+                                           MessageTypeEnum.STUDENT_BUY_MUSIC_SHEET_SUCCESS, studentReceivers, null,
+                                           0, null,ClientEnum.STUDENT.getCode(),musicSheet.getMusicSheetName(),"url");
+
         return true;
     }