|
@@ -2,6 +2,11 @@ package com.ym.mec.biz.service.impl;
|
|
|
|
|
|
import static com.ym.mec.biz.dal.enums.MessageTypeEnum.STUDENT_PUSH_VIP_BUY;
|
|
|
|
|
|
+import java.awt.image.BufferedImage;
|
|
|
+import java.io.ByteArrayOutputStream;
|
|
|
+import java.io.IOException;
|
|
|
+import java.net.MalformedURLException;
|
|
|
+import java.net.URL;
|
|
|
import java.util.ArrayList;
|
|
|
import java.util.Collections;
|
|
|
import java.util.Date;
|
|
@@ -17,6 +22,8 @@ import java.util.concurrent.ExecutorService;
|
|
|
import java.util.concurrent.Executors;
|
|
|
|
|
|
import com.ym.mec.common.entity.*;
|
|
|
+import net.coobird.thumbnailator.Thumbnails;
|
|
|
+import org.apache.commons.codec.binary.Base64;
|
|
|
import org.apache.commons.lang3.StringUtils;
|
|
|
import org.slf4j.Logger;
|
|
|
import org.slf4j.LoggerFactory;
|
|
@@ -59,6 +66,8 @@ import com.ym.mec.util.collection.MapUtil;
|
|
|
import com.ym.mec.util.date.DateUtil;
|
|
|
import com.ym.mec.util.string.MessageFormatter;
|
|
|
|
|
|
+import javax.imageio.ImageIO;
|
|
|
+
|
|
|
@Service
|
|
|
public class SysMessageServiceImpl extends BaseServiceImpl<Long, SysMessage> implements SysMessageService {
|
|
|
|
|
@@ -269,10 +278,35 @@ public class SysMessageServiceImpl extends BaseServiceImpl<Long, SysMessage> imp
|
|
|
},executor);
|
|
|
}
|
|
|
|
|
|
+ public static String imageToBase64(BufferedImage bufferedImage,String suffix) {
|
|
|
+ Base64 encoder = new Base64();
|
|
|
+ ByteArrayOutputStream baos = new ByteArrayOutputStream();
|
|
|
+ try {
|
|
|
+ ImageIO.write(bufferedImage, suffix, baos);
|
|
|
+ } catch (IOException e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ return new String(encoder.encode((baos.toByteArray())));
|
|
|
+ }
|
|
|
+
|
|
|
@Override
|
|
|
- public void batchSendImGroupMessage(String messageContent,String senderId,String extra,String imgUrl, String[] targetIds) {
|
|
|
+ public void batchSendImGroupMessage(String[] targetIds,String senderId,String extra,String imgUrl ) throws Exception {
|
|
|
+ URL url = new URL(imgUrl);
|
|
|
+ //获取文件名
|
|
|
+ String path = url.getPath();
|
|
|
+ String suffix = path.substring(path.lastIndexOf(".") + 1);
|
|
|
+ BufferedImage bufferedImage = Thumbnails.of(url).scale(0.1f).outputQuality(0.25f).asBufferedImage();
|
|
|
+ ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
|
|
|
+ ImageIO.write(bufferedImage, suffix, outputStream);
|
|
|
+ byte[] bytes = outputStream.toByteArray();
|
|
|
+ outputStream.close();
|
|
|
+ int length = bytes.length;
|
|
|
+ //文件大小不能超过393216 Bytes
|
|
|
+ if (length > 393216) {
|
|
|
+ throw new BizException("文件过大请调整 像素 或 文件大小");
|
|
|
+ }
|
|
|
ImMessageDto imMessageDto =
|
|
|
- getImGroupMessage("RC:ImgMsg",senderId,targetIds,messageContent,extra);
|
|
|
+ getImGroupMessage("RC:ImgMsg",senderId,targetIds,imageToBase64(bufferedImage, suffix),extra);
|
|
|
imMessageDto.setFileUrl(imgUrl);
|
|
|
ExecutorService executor = Executors.newCachedThreadPool();
|
|
|
CompletableFuture.runAsync(()->{
|