Просмотр исходного кода

学员首次在作业截止时间之前提交作业,在对应的班级群发送消息

zouxuan 4 лет назад
Родитель
Сommit
739ff0a98c

+ 0 - 1
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/StudentCourseHomework.java

@@ -232,5 +232,4 @@ public class StudentCourseHomework {
 	public String toString() {
 		return ToStringBuilder.reflectionToString(this);
 	}
-
 }

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

@@ -52,6 +52,7 @@ public enum MessageTypeEnum implements BaseEnum<String, MessageTypeEnum> {
     IM_HOMEWORK_REMIND("IM_HOMEWORK_REMIND", "作业提醒"),
     IM_HOMEWORK_REMIND_DETAIL("IM_HOMEWORK_REMIND_DETAIL", "作业提醒"),
     IM_HOMEWORK_SUBMIT_PUSH("IM_HOMEWORK_SUBMIT_PUSH", "作业提交提醒"),
+    IM_HOMEWORK_SUBMIT_PUSH_GROUP("IM_HOMEWORK_SUBMIT_PUSH_GROUP", "作业提交提醒"),
     IM_HOMEWORK_STUDENT_REPLY_PUSH("IM_HOMEWORK_STUDENT_REPLY_PUSH", "作业回复提醒"),
     IM_HOMEWORK_TEACHER_REPLY_PUSH("IM_HOMEWORK_TEACHER_REPLY_PUSH", "作业点评提醒"),
     STUDENT_PUSH_CLASS_MESSAGE("STUDENT_PUSH_CLASS_MESSAGE", "班级消息"),

+ 6 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/StudentCourseHomeworkService.java

@@ -70,4 +70,10 @@ public interface StudentCourseHomeworkService extends BaseService<Long, StudentC
      * @return com.ym.mec.common.page.PageInfo
      */
     PageInfo findStudentHomeworkRecord(CourseHomeworkQueryInfo queryInfo);
+
+    /**
+     * 提交作业
+     * @param studentCourseHomework
+     */
+    void add(StudentCourseHomework studentCourseHomework);
 }

+ 8 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/SysMessageService.java

@@ -37,6 +37,14 @@ public interface SysMessageService extends BaseService<Long, SysMessage> {
 	void batchSendImMessage(MessageTypeEnum messageType,String senderId,String extra, String[] targetIds,String url, Object... args);
 
 	/**
+	 * 推送im文本消息,包换调整链接
+	 * @param senderId
+	 * @param messageType
+	 * @return
+	 */
+	void batchSendImGroupMessage(MessageTypeEnum messageType,String senderId,String extra, String[] targetIds,String url, Object... args);
+
+	/**
 	 * 推送im自定义节拍器消息
 	 * @param senderId
 	 * @param roomId

+ 19 - 3
mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentCourseHomeworkServiceImpl.java

@@ -49,8 +49,9 @@ public class StudentCourseHomeworkServiceImpl extends BaseServiceImpl<Long, Stud
     @Autowired
     private CourseScheduleDao courseScheduleDao;
     @Autowired
+    private ClassGroupDao classGroupDao;
+    @Autowired
     private SysUserFeignService sysUserFeignService;
-
     @Autowired
     private SysMessageService sysMessageService;
     @Autowired
@@ -58,8 +59,6 @@ public class StudentCourseHomeworkServiceImpl extends BaseServiceImpl<Long, Stud
     @Autowired
     private TeacherDao teacherDao;
     @Autowired
-    private SysConfigDao sysConfigDao;
-    @Autowired
     private StudentExtracurricularExercisesSituationDao studentExtracurricularExercisesSituationDao;
 
     @Override
@@ -336,4 +335,21 @@ public class StudentCourseHomeworkServiceImpl extends BaseServiceImpl<Long, Stud
         pageInfo.setRows(dataList);
         return pageInfo;
     }
+
+    @Override
+    public void add(StudentCourseHomework studentCourseHomework) {
+        studentCourseHomework.setStatus(YesOrNoEnum.YES);
+        studentCourseHomeworkDao.insert(studentCourseHomework);
+        CourseHomework courseHomework = courseHomeworkDao.get(studentCourseHomework.getCourseHomeworkId());
+        Date date = new Date();
+        if(date.before(courseHomework.getExpiryDate())){
+            ClassGroup classGroup = classGroupDao.findByCourseSchedule(studentCourseHomework.getCourseScheduleId().intValue(), 0);
+            if(classGroup != null){
+                SysUser sysUser = sysUserFeignService.queryUserById(studentCourseHomework.getUserId());
+                sysMessageService.batchSendImGroupMessage(MessageTypeEnum.IM_HOMEWORK_SUBMIT_PUSH_GROUP,studentCourseHomework.getUserId().toString(),null,
+                        new String[]{classGroup.getId().toString()},
+                        null, sysUser.getUsername());
+            }
+        }
+    }
 }

+ 22 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/SysMessageServiceImpl.java

@@ -1,5 +1,6 @@
 package com.ym.mec.biz.service.impl;
 
+import com.alibaba.fastjson.JSON;
 import com.ym.mec.auth.api.client.SysUserFeignService;
 import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.biz.dal.dao.SysMessageDao;
@@ -192,6 +193,27 @@ public class SysMessageServiceImpl extends BaseServiceImpl<Long, SysMessage> imp
 		imFeignService.privateSend(privateMessage);
 	}
 
+	@Override
+	@Async
+	public void batchSendImGroupMessage(MessageTypeEnum type, String senderId,String extra, String[] targetIds, String url, Object... args) {
+		SysMessageConfig messageConfig = sysMessageConfigService.queryByType(type);
+		if (messageConfig == null) {
+			throw new BizException("消息类型错误");
+		}else if(messageConfig.getSendFlag() == null || messageConfig.getSendFlag() == 0){
+			return;
+		}
+		String content = MessageFormatter.arrayFormat(messageConfig.getContent(), args);
+		if(StringUtils.isNotEmpty(url)){
+			content += url;
+		}
+		ImGroupMessage groupMessage = new ImGroupMessage();
+		groupMessage.setObjectName("RC:TxtMsg");
+		groupMessage.setTargetId(targetIds);
+		groupMessage.setSenderId(senderId);
+		groupMessage.setContent(new ImTxtMessage(content,extra));
+		imFeignService.groupSend(groupMessage);
+	}
+
 	/*@Override
 	public void batchSendImPlayMidiMessage(String senderId,String roomId, String content) {
 		ImGroupMessage groupMessage = new ImGroupMessage();

+ 6 - 5
mec-client-api/src/main/java/com/ym/mec/im/ImFeignService.java

@@ -1,10 +1,11 @@
 package com.ym.mec.im;
 
 import com.ym.mec.common.entity.*;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.cloud.openfeign.FeignClient;
 import org.springframework.http.MediaType;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.scheduling.annotation.Async;
+import org.springframework.web.bind.annotation.*;
 
 import com.ym.mec.common.config.FeignConfiguration;
 import com.ym.mec.im.fallback.ImFeignServiceFallback;
@@ -92,11 +93,11 @@ public interface ImFeignService {
 	 * @return
 	 */
 	@PostMapping(value = "private/send")
-	//body模板
-	//{"senderId":"325","targetId":[1094986],"objectName":"RC:TxtMsg",
-	// "content":{"content":"www.baidu.com"}}
 	Object privateSend(@RequestBody ImPrivateMessage privateMessage);
 
+	@PostMapping(value = "group/send")
+	Object groupSend(@RequestBody ImGroupMessage imGroupMessage);
+
 	/**
 	 * 发送群组自定义消息
 	 * @param groupMessage

+ 7 - 0
mec-client-api/src/main/java/com/ym/mec/im/fallback/ImFeignServiceFallback.java

@@ -2,8 +2,10 @@ package com.ym.mec.im.fallback;
 
 import com.ym.mec.common.entity.*;
 import com.ym.mec.im.ImFeignService;
+import org.springframework.scheduling.annotation.Async;
 import org.springframework.stereotype.Component;
 
+import javax.xml.ws.Action;
 import java.util.List;
 
 @Component
@@ -59,6 +61,11 @@ public class ImFeignServiceFallback implements ImFeignService {
     public Object privateSend(ImPrivateMessage privateMessage) {
         return null;
     }
+
+    @Override
+    public Object groupSend(ImGroupMessage imGroupMessage) {
+        return null;
+    }
 /*
     @Override
     public Object privateSendCustom(ImGroupMessage groupMessage) {

+ 5 - 0
mec-common/common-core/src/main/java/com/ym/mec/common/entity/ImGroupMessage.java

@@ -7,6 +7,11 @@ public class ImGroupMessage extends ImMessageModel {
     public String[] toUserId;
     private String type;
 
+    public ImGroupMessage setContent(ImTxtMessage content) {
+        super.setContent(content);
+        return this;
+    }
+
     public ImGroupMessage() {
     }
 

+ 3 - 1
mec-im/src/main/java/com/ym/config/ResourceServerConfig.java

@@ -10,6 +10,8 @@ import org.springframework.security.oauth2.config.annotation.web.configuration.R
 public class ResourceServerConfig extends ResourceServerConfigurerAdapter {
     @Override
     public void configure(HttpSecurity http) throws Exception {
-        http.authorizeRequests().antMatchers("/v2/api-docs","/user/register","/group/join","/group/create","/room/leave","/room/statusSync","/room/statusImMsg","/group/batchDismiss","/private/send").permitAll().anyRequest().authenticated().and().csrf().disable();
+        http.authorizeRequests().antMatchers("/v2/api-docs","/user/register",
+                "/group/join","/group/create","/room/leave","/room/statusSync",
+                "/room/statusImMsg","/group/batchDismiss","/private/send","/group/send").permitAll().anyRequest().authenticated().and().csrf().disable();
     }
 }

+ 13 - 1
mec-im/src/main/java/com/ym/controller/GroupController.java

@@ -1,12 +1,16 @@
 package com.ym.controller;
 
+import com.ym.mec.common.entity.ImGroupMessage;
+import com.ym.mec.common.entity.ImTxtMessage;
 import com.ym.service.GroupService;
 import com.ym.service.MessageService;
+import io.rong.messages.TxtMessage;
 import io.rong.models.group.GroupMember;
 import io.rong.models.group.GroupModel;
 import io.rong.models.group.UserGroup;
 import io.rong.models.message.GroupMessage;
 import io.rong.models.message.MentionMessage;
+import io.rong.models.message.PrivateMessage;
 import io.rong.models.message.RecallMessage;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.RequestBody;
@@ -29,7 +33,15 @@ public class GroupController{
     GroupService groupService;
 
     @RequestMapping(value = "/send", method = RequestMethod.POST)
-    public Object send(@RequestBody GroupMessage groupMessage) throws Exception {
+    public Object send(@RequestBody ImGroupMessage imGroupMessage) throws Exception {
+        GroupMessage groupMessage = new GroupMessage();
+        ImTxtMessage content = (ImTxtMessage)imGroupMessage.getContent();
+        TxtMessage txtMessage = new TxtMessage(content.getContent(),content.getExtra());
+        groupMessage.setContent(txtMessage);
+        groupMessage.setTargetId(imGroupMessage.getTargetId());
+        groupMessage.setSenderId(imGroupMessage.getSenderId());
+        groupMessage.setObjectName(imGroupMessage.getObjectName());
+        groupMessage.setIsIncludeSender(1);
         return messageService.groupSend(groupMessage);
     }
 

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

@@ -39,8 +39,7 @@ public class StudentCourseHomeworkController extends BaseController {
     @ApiOperation(value = "提交作业")
     @PostMapping(value = "/add",produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
     public Object add(@RequestBody StudentCourseHomework studentCourseHomework){
-        studentCourseHomework.setStatus(YesOrNoEnum.YES);
-        studentCourseHomeworkService.insert(studentCourseHomework);
+        studentCourseHomeworkService.add(studentCourseHomework);
         return succeed();
     }