From f28c945131c2c701823b76a6c4fa9cfa133810ba Mon Sep 17 00:00:00 2001 From: fit2cloud-chenyw Date: Thu, 15 Sep 2022 15:04:50 +0800 Subject: [PATCH] =?UTF-8?q?perf(=E7=B3=BB=E7=BB=9F=E7=AE=A1=E7=90=86-?= =?UTF-8?q?=E5=AE=9A=E6=97=B6=E6=8A=A5=E5=91=8A):=20=E4=BC=98=E5=8C=96?= =?UTF-8?q?=E4=BC=81=E4=B8=9A=E5=BE=AE=E4=BF=A1=E3=80=81=E9=92=89=E9=92=89?= =?UTF-8?q?=E6=B6=88=E6=81=AF=E6=B8=A0=E9=81=93?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../sys/SystemParameterController.java | 2 +- .../strategy/impl/EmailTaskHandler.java | 58 ++++++++++++++++++- 2 files changed, 57 insertions(+), 3 deletions(-) diff --git a/backend/src/main/java/io/dataease/controller/sys/SystemParameterController.java b/backend/src/main/java/io/dataease/controller/sys/SystemParameterController.java index 773d5b0853..63543ee308 100644 --- a/backend/src/main/java/io/dataease/controller/sys/SystemParameterController.java +++ b/backend/src/main/java/io/dataease/controller/sys/SystemParameterController.java @@ -115,7 +115,7 @@ public class SystemParameterController { return GlobalFileUtil.down(fileId, fileName); } - @GetMapping("/showpicture/{fileId}") + @GetMapping(value = "/showpicture/{fileId}", produces = {MediaType.IMAGE_JPEG_VALUE, MediaType.IMAGE_PNG_VALUE}) public ResponseEntity showPicture(@PathVariable("fileId") String fileId) throws Exception { return GlobalFileUtil.showPicture(fileId); diff --git a/backend/src/main/java/io/dataease/job/sechedule/strategy/impl/EmailTaskHandler.java b/backend/src/main/java/io/dataease/job/sechedule/strategy/impl/EmailTaskHandler.java index 32cac1edc0..6b7becc484 100644 --- a/backend/src/main/java/io/dataease/job/sechedule/strategy/impl/EmailTaskHandler.java +++ b/backend/src/main/java/io/dataease/job/sechedule/strategy/impl/EmailTaskHandler.java @@ -5,6 +5,7 @@ import io.dataease.auth.entity.TokenInfo; import io.dataease.auth.service.AuthUserService; import io.dataease.auth.service.impl.AuthUserServiceImpl; import io.dataease.auth.util.JWTUtils; +import io.dataease.commons.exception.DEException; import io.dataease.dto.PermissionProxy; import io.dataease.ext.ExtTaskMapper; import io.dataease.commons.utils.CommonBeanFactory; @@ -16,10 +17,16 @@ import io.dataease.job.sechedule.strategy.TaskHandler; import io.dataease.plugins.common.entity.GlobalTaskEntity; import io.dataease.plugins.common.entity.GlobalTaskInstance; import io.dataease.plugins.config.SpringContextUtil; +import io.dataease.plugins.xpack.dingtalk.dto.entity.DingtalkMsgResult; +import io.dataease.plugins.xpack.dingtalk.service.DingtalkXpackService; import io.dataease.plugins.xpack.email.dto.request.XpackEmailTaskRequest; import io.dataease.plugins.xpack.email.dto.request.XpackPixelEntity; import io.dataease.plugins.xpack.email.dto.response.XpackEmailTemplateDTO; import io.dataease.plugins.xpack.email.service.EmailXpackService; +import io.dataease.plugins.xpack.lark.dto.entity.LarkMsgResult; +import io.dataease.plugins.xpack.lark.service.LarkXpackService; +import io.dataease.plugins.xpack.wecom.dto.entity.WecomMsgResult; +import io.dataease.plugins.xpack.wecom.service.WecomXpackService; import io.dataease.service.chart.ViewExportExcel; import io.dataease.service.system.EmailService; import org.apache.commons.lang3.ObjectUtils; @@ -30,6 +37,7 @@ import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.io.File; +import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.Optional; @@ -176,9 +184,54 @@ public class EmailTaskHandler extends TaskHandler implements Job { proxy.setUserId(user.getUserId()); files = viewExportExcel.export(panelId, viewIdList, proxy); } - - emailService.sendWithImageAndFiles(recipients, emailTemplateDTO.getTitle(), contentStr, bytes, files); + List channels = null; + String recisetting = emailTemplateDTO.getRecisetting(); + if (StringUtils.isBlank(recisetting)) { + channels = new ArrayList<>(); + channels.add("email"); + } else { + channels = Arrays.stream(recisetting.split(",")).collect(Collectors.toList()); + } + + List reciLists = Arrays.stream(recipients.split(",")).collect(Collectors.toList()); + for (int i = 0; i < channels.size(); i++) { + String channel = channels.get(i); + switch (channel) { + case "email" : + emailService.sendWithImageAndFiles(recipients, emailTemplateDTO.getTitle(), contentStr, bytes, files); + break; + case "wecom" : + if (SpringContextUtil.getBean(AuthUserService.class).supportWecom()) { + WecomXpackService wecomXpackService = SpringContextUtil.getBean(WecomXpackService.class); + WecomMsgResult wecomMsgResult = wecomXpackService.pushOaMsg(reciLists, emailTemplateDTO.getTitle(), contentStr, bytes, files); + if (wecomMsgResult.getErrcode() != 0) { + DEException.throwException(wecomMsgResult.getErrmsg()); + } + } + break; + case "dingtalk" : + if (SpringContextUtil.getBean(AuthUserService.class).supportDingtalk()) { + DingtalkXpackService dingtalkXpackService = SpringContextUtil.getBean(DingtalkXpackService.class); + DingtalkMsgResult dingtalkMsgResult = dingtalkXpackService.pushOaMsg(reciLists, emailTemplateDTO.getTitle(), contentStr, bytes, files); + if (dingtalkMsgResult.getErrcode() != 0) { + DEException.throwException(dingtalkMsgResult.getErrmsg()); + } + } + break; + case "lark" : + if (SpringContextUtil.getBean(AuthUserService.class).supportLark()) { + LarkXpackService larkXpackService = SpringContextUtil.getBean(LarkXpackService.class); + LarkMsgResult larkMsgResult = larkXpackService.pushOaMsg(reciLists, emailTemplateDTO.getTitle(), contentStr, bytes, files); + if (larkMsgResult.getCode() != 0) { + DEException.throwException(larkMsgResult.getMsg()); + } + } + break; + default: + break; + } + } success(taskInstance); } catch (Exception e) { error(taskInstance, e); @@ -186,6 +239,7 @@ public class EmailTaskHandler extends TaskHandler implements Job { } } + private XpackPixelEntity buildPixel(XpackEmailTemplateDTO emailTemplateDTO) { XpackPixelEntity pixelEntity = new XpackPixelEntity(); String pixelStr = emailTemplateDTO.getPixel();