zhangxin 8 vuotta sitten
vanhempi
commit
887113d99c

+ 2 - 12
mooctest-site-server/src/main/java/cn/iselab/mooctest/site/models/Message.java

@@ -21,17 +21,14 @@ public class Message {
     @Column(name = "participant_id")
     private Long participantId;
 
-    @Column(name = "group_id")
-    private Long groupId;
-
     @Column(name = "message")
     private String message;
 
     @Column(name = "is_pushed")
-    private Boolean isPushed;
+    private Boolean isPushed = Boolean.FALSE;
 
     @Column(name = "create_time")
-    private Timestamp createTime;
+    private Timestamp createTime = new Timestamp(System.currentTimeMillis());
 
     public Long getId() {
         return id;
@@ -81,11 +78,4 @@ public class Message {
         isPushed = pushed;
     }
 
-    public Long getGroupId() {
-        return groupId;
-    }
-
-    public void setGroupId(Long groupId) {
-        this.groupId = groupId;
-    }
 }

+ 5 - 5
mooctest-site-server/src/main/java/cn/iselab/mooctest/site/web/ctrl/MessageController.java

@@ -53,16 +53,16 @@ public class MessageController {
     }
 
     @RequestMapping(value = UrlConstants.API + "message/count", method = RequestMethod.GET)
-    public Integer getUncheckedMessageCount(){
+    public Integer getUncheckedMessageCount() {
         User user = (User) SecurityUtils.getSubject().getSession().getAttribute("User");
         return messageLogic.getUncheckedMessages(user.getId()).size();
     }
 
     /**
      * 修改消息状态为已读
-     * */
+     */
     @RequestMapping(value = UrlConstants.API + "message", method = RequestMethod.PUT)
-    public List<MessageVO> updateMessage(@RequestBody List<MessageVO> messageVOs){
+    public List<MessageVO> updateMessage(@RequestBody List<MessageVO> messageVOs) {
         User user = (User) SecurityUtils.getSubject().getSession().getAttribute("User");
         return messageLogic.updateMessage(messageVOs, user.getId());
     }
@@ -72,9 +72,9 @@ public class MessageController {
      */
 //    @RequiresRoles("manager")
 //    @RequestMapping(value = UrlConstants.API + "multiMessage", method = RequestMethod.POST)
-//    public MessageVO sendMessagetoGroupMember(@RequestBody List<MessageVO> messageVOs) {
+//    public List<MessageVO> sendMessageToParticipants(@RequestBody List<MessageVO> messageVOs) {
 //        User user = (User) SecurityUtils.getSubject().getSession().getAttribute("User");
-//
+//        return messageLogic.sendMultiMessage(user.getId(), messageVOs);
 //    }
 
 }

+ 0 - 20
mooctest-site-server/src/main/java/cn/iselab/mooctest/site/web/data/MessageVO.java

@@ -21,26 +21,6 @@ public class MessageVO {
 
     private Long createTime;
 
-    private Long groupId;
-
-    private String groupName;
-
-    public Long getGroupId() {
-        return groupId;
-    }
-
-    public void setGroupId(Long groupId) {
-        this.groupId = groupId;
-    }
-
-    public String getGroupName() {
-        return groupName;
-    }
-
-    public void setGroupName(String groupName) {
-        this.groupName = groupName;
-    }
-
     public Long getId() {
         return id;
     }

+ 4 - 6
mooctest-site-server/src/main/java/cn/iselab/mooctest/site/web/data/wrapper/MessageVOWrapper.java

@@ -1,6 +1,5 @@
 package cn.iselab.mooctest.site.web.data.wrapper;
 
-import cn.iselab.mooctest.site.models.Group;
 import cn.iselab.mooctest.site.models.Message;
 import cn.iselab.mooctest.site.service.GroupService;
 import cn.iselab.mooctest.site.web.data.MessageVO;
@@ -25,10 +24,10 @@ public class MessageVOWrapper extends BaseWrapper<MessageVO, Message> {
 
         messageVO.setMessage(message.getMessage());
         messageVO.setCreateTime(message.getCreateTime().getTime());
-        messageVO.setGroupId(message.getGroupId());
-
-        Group group = groupService.getGroup(message.getGroupId());
-        messageVO.setGroupName(group.getName());
+        messageVO.setParticipantId(message.getParticipantId());
+        messageVO.setPushed(message.getPushed());
+        messageVO.setOwnerId(message.getOwnerId());
+        messageVO.setId(message.getId());
         return messageVO;
     }
 
@@ -36,7 +35,6 @@ public class MessageVOWrapper extends BaseWrapper<MessageVO, Message> {
     public Message unwrap(MessageVO data) {
         Message message = new Message();
 
-        message.setId(data.getId());
         message.setPushed(data.getPushed());
         message.setParticipantId(data.getParticipantId());
         message.setOwnerId(data.getOwnerId());

+ 2 - 0
mooctest-site-server/src/main/java/cn/iselab/mooctest/site/web/logic/MessageLogic.java

@@ -19,4 +19,6 @@ public interface MessageLogic {
     List<MessageVO> getMessages(Long id);
 
     List<MessageVO> updateMessage(List<MessageVO> messageVOs, Long userId);
+
+    List<MessageVO> sendMultiMessage(Long id, List<MessageVO> messageVOs);
 }

+ 32 - 3
mooctest-site-server/src/main/java/cn/iselab/mooctest/site/web/logic/impl/MessageLogicImpl.java

@@ -16,6 +16,7 @@ import org.springframework.stereotype.Service;
 import java.sql.Timestamp;
 import java.util.ArrayList;
 import java.util.List;
+import java.util.stream.Collectors;
 
 /**
  * @author sean
@@ -36,7 +37,9 @@ public class MessageLogicImpl implements MessageLogic {
     @Override
     public List<MessageVO> sendMessageToGroup(Long id, String message, Long groupId) {
         Group group = groupService.getGroup(groupId);
-
+        if (group == null){
+            throw new HttpBadRequestException("group not exist");
+        }
         List<User> userList = groupService.getUserByGroupId(groupId);
         List<MessageVO> messageVOs = new ArrayList<>();
 
@@ -47,7 +50,6 @@ public class MessageLogicImpl implements MessageLogic {
             m.setParticipantId(user.getId());
             m.setPushed(Boolean.FALSE);
             m.setCreateTime(new Timestamp(System.currentTimeMillis()));
-            m.setGroupId(groupId);
             m = messageService.updateMessage(m);
             messageVOs.add(messageVOWrapper.wrap(m));
         }
@@ -58,6 +60,9 @@ public class MessageLogicImpl implements MessageLogic {
     @Override
     public MessageVO sendMessageToGroupMember(Long ownerId, Long participantId, Long groupId, String message) {
         Group group = groupService.getGroup(groupId);
+        if (group == null) {
+            throw new HttpBadRequestException("group not exist");
+        }
 
         if (!groupService.checkUserExist(participantId, groupId)) {
             throw new UnauthorizedException("Unauthorized");
@@ -69,7 +74,6 @@ public class MessageLogicImpl implements MessageLogic {
         m.setOwnerId(ownerId);
         m.setPushed(Boolean.FALSE);
         m.setCreateTime(new Timestamp(System.currentTimeMillis()));
-        m.setGroupId(groupId);
         m = messageService.updateMessage(m);
 
         return messageVOWrapper.wrap(m);
@@ -108,4 +112,29 @@ public class MessageLogicImpl implements MessageLogic {
         });
         return messageVOWrapper.wrap(messages);
     }
+
+    @Override
+    public List<MessageVO> sendMultiMessage(Long id, List<MessageVO> messageVOs) {
+        List<Group> groupList = groupService.getGroupsByOwnerId(id);
+        List<Long> participantIds = messageVOs.stream().map(messageVO -> messageVO.getParticipantId()).collect(Collectors.toList());
+        List<MessageVO> messageVOList = new ArrayList<>();
+        for (Group group : groupList) {
+            if (participantIds.stream().allMatch(participantId ->
+                    groupService.checkUserExist(participantId, group.getId()))) {
+                participantIds.stream().forEach(userid -> {
+                    Message message = new Message();
+                    message.setParticipantId(userid);
+                    message.setOwnerId(id);
+                    message.setMessage(messageVOs.get(1).getMessage());
+                    message = messageService.updateMessage(message);
+                    messageVOList.add(messageVOWrapper.wrap(message));
+                });
+            }
+        }
+        if (messageVOList.size() == 0) {
+            throw new UnauthorizedException("Authorized! user not in your group");
+        } else {
+            return messageVOList;
+        }
+    }
 }