浏览代码

小小训练营活动

zouxuan 3 年之前
父节点
当前提交
c1abf3f06c

+ 2 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/ImSendGroupMessageService.java

@@ -16,4 +16,6 @@ public interface ImSendGroupMessageService extends BaseService<Long, ImSendGroup
     void updateGroupMessage(ImSendGroupMessage imSendGroupMessage);
 
     void deleteGroupMessage(Long id);
+
+    void deleteGroupList(Long imSendGroupMessageId, String groupIds);
 }

+ 19 - 5
mec-biz/src/main/java/com/ym/mec/biz/service/impl/ImSendGroupMessageServiceImpl.java

@@ -22,10 +22,8 @@ import java.awt.image.BufferedImage;
 import java.io.ByteArrayOutputStream;
 import java.io.IOException;
 import java.net.URL;
-import java.util.Date;
-import java.util.List;
-import java.util.Objects;
-import java.util.Optional;
+import java.util.*;
+import java.util.stream.Collectors;
 
 @Service
 public class ImSendGroupMessageServiceImpl extends BaseServiceImpl<Long, ImSendGroupMessage>  implements ImSendGroupMessageService {
@@ -94,7 +92,23 @@ public class ImSendGroupMessageServiceImpl extends BaseServiceImpl<Long, ImSendG
         imSendGroupMessageDao.delete(id);
     }
 
-    private void send(ImSendGroupMessage messageDto) throws Exception {
+	@Override
+	@Transactional(rollbackFor = Exception.class)
+	public void deleteGroupList(Long imSendGroupMessageId, String groupIds) {
+		ImSendGroupMessage sendGroupMessage =
+				Optional.of(imSendGroupMessageDao.get(imSendGroupMessageId)).orElseThrow(() -> new BizException("消息不存在"));
+		if(sendGroupMessage.getSendFlag()){
+			throw new BizException("消息已发送");
+		}
+		//剔除指定的群列表
+		List<String> groupIdList = Arrays.stream(groupIds.split(",")).collect(Collectors.toList());
+		List<String> targetIdList = Arrays.stream(sendGroupMessage.getTargetIds().split(",")).collect(Collectors.toList());
+		targetIdList.removeAll(groupIdList);
+		sendGroupMessage.setTargetIds(String.join(",", targetIdList));
+		imSendGroupMessageDao.update(sendGroupMessage);
+	}
+
+	private void send(ImSendGroupMessage messageDto) throws Exception {
 		if (Objects.equals(messageDto.getMessageType(), ImSendTypeEnum.IMG)) {
 			URL url = new URL(messageDto.getFileUrl());
 			String path = url.getPath();

+ 15 - 2
mec-im/src/main/java/com/ym/controller/GroupController.java

@@ -1,5 +1,6 @@
 package com.ym.controller;
 
+import com.google.common.collect.Lists;
 import com.ym.mec.common.entity.ImMessageDto;
 import com.ym.pojo.NoticeMessage;
 import com.ym.service.GroupService;
@@ -7,6 +8,7 @@ import com.ym.service.MessageService;
 import io.rong.messages.FileMessage;
 import io.rong.messages.ImgMessage;
 import io.rong.messages.TxtMessage;
+import io.rong.models.Result;
 import io.rong.models.group.GroupMember;
 import io.rong.models.group.GroupModel;
 import io.rong.models.group.UserGroup;
@@ -19,7 +21,9 @@ import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestMethod;
 import org.springframework.web.bind.annotation.RestController;
 
+import java.util.Arrays;
 import java.util.List;
+import java.util.stream.Collectors;
 
 /**
  * Created by weiqinxiao on 2019/2/25.
@@ -50,11 +54,20 @@ public class GroupController{
             TxtMessage txtMessage = new TxtMessage(imMessageDto.getMessageContent(),imMessageDto.getExtra());
             groupMessage.setContent(txtMessage);
         }
-        groupMessage.setTargetId(imMessageDto.getTargetIds());
         groupMessage.setSenderId(imMessageDto.getSenderId());
         groupMessage.setObjectName(imMessageDto.getObjectName());
         groupMessage.setIsIncludeSender(1);
-        return messageService.groupSend(groupMessage);
+        //融云只支持3个群以内的群发
+        String[] targetIds = imMessageDto.getTargetIds();
+        List<String> imGroupIds = Arrays.stream(targetIds).collect(Collectors.toList());
+        List<List<String>> partition = Lists.partition(imGroupIds, 3);
+        Result result = null;
+        for (List<String> integers : partition) {
+            String[] strings = integers.toArray(new String[integers.size()]);
+            groupMessage.setTargetId(strings);
+            result = messageService.groupSend(groupMessage);
+        }
+        return result;
     }
 
     @RequestMapping(value = "/sendDirection", method = RequestMethod.POST)

+ 8 - 0
mec-web/src/main/java/com/ym/mec/web/controller/ImSendGroupMessageController.java

@@ -57,6 +57,14 @@ public class ImSendGroupMessageController extends BaseController {
         imSendGroupMessageService.deleteGroupMessage(id);
         return succeed();
     }
+    @ApiOperation("删除未发送消息的群列表")
+    @PostMapping(value = "/deleteGroupList")
+    public HttpResponseResult deleteGroupList(Long imSendGroupMessageId,String groupIds) throws Exception {
+        Optional.ofNullable(groupIds).orElseThrow(() -> new BizException("群组id不能为空"));
+        Optional.ofNullable(imSendGroupMessageId).orElseThrow(() -> new BizException("群消息id不能为空"));
+        imSendGroupMessageService.deleteGroupList(imSendGroupMessageId,groupIds);
+        return succeed();
+    }
 
     @ApiOperation("查询群列表(没有在消息列表的)")
     @PostMapping(value = "/queryGroupPage")