From 164d398ca50d65afecbf974255aa014233c75aba Mon Sep 17 00:00:00 2001 From: fit2cloud-chenyw Date: Wed, 23 Nov 2022 11:32:47 +0800 Subject: [PATCH] =?UTF-8?q?feat(=E5=AE=9A=E6=97=B6=E6=8A=A5=E5=91=8A):=20?= =?UTF-8?q?=E5=AF=8C=E6=96=87=E6=9C=AC=E7=BC=96=E8=BE=91=E5=99=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../sechedule/strategy/impl/EmailTaskHandler.java | 13 ++++++------- .../strategy/impl/EmailTaskViewHandler.java | 7 ++----- .../dataease/plugins/server/XEmailTaskServer.java | 6 +++++- .../src/main/resources/db/migration/V44__1.17.sql | 7 +++++++ 4 files changed, 20 insertions(+), 13 deletions(-) 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 e0ce934228..da97c6c019 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 @@ -41,6 +41,7 @@ import org.apache.commons.lang3.StringUtils; import org.quartz.*; import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Service; +import org.springframework.web.util.HtmlUtils; import javax.annotation.Resource; import java.io.File; @@ -67,9 +68,7 @@ public class EmailTaskHandler extends TaskHandler implements Job { protected JobDataMap jobDataMap(GlobalTaskEntity taskEntity) { JobDataMap jobDataMap = new JobDataMap(); jobDataMap.put("taskEntity", taskEntity); - EmailXpackService emailXpackService = SpringContextUtil.getBean(EmailXpackService.class); - XpackEmailTemplateDTO emailTemplateDTO = emailXpackService.emailTemplate(taskEntity.getTaskId()); - jobDataMap.put("emailTemplate", emailTemplateDTO); + SysUserEntity creator = authUserServiceImpl.getUserByIdNoCache(taskEntity.getCreator()); jobDataMap.put("creator", creator); return jobDataMap; @@ -109,10 +108,9 @@ public class EmailTaskHandler extends TaskHandler implements Job { Long instanceId = saveInstance(taskInstance); taskInstance.setInstanceId(instanceId); - XpackEmailTemplateDTO emailTemplate = (XpackEmailTemplateDTO) jobDataMap.get("emailTemplate"); SysUserEntity creator = (SysUserEntity) jobDataMap.get("creator"); LogUtil.info("start execute send panel report task..."); - proxy(taskEntity.getTaskType()).sendReport(taskInstance, emailTemplate, creator, isTempTask); + proxy(taskEntity.getTaskType()).sendReport(taskInstance, creator, isTempTask); if (isTempTask) { removeTask(scheduleManager, taskEntity); } @@ -160,13 +158,14 @@ public class EmailTaskHandler extends TaskHandler implements Job { } @Async("priorityExecutor") - public void sendReport(GlobalTaskInstance taskInstance, XpackEmailTemplateDTO emailTemplateDTO, SysUserEntity user, Boolean isTempTask) { + public void sendReport(GlobalTaskInstance taskInstance, SysUserEntity user, Boolean isTempTask) { EmailXpackService emailXpackService = SpringContextUtil.getBean(EmailXpackService.class); AuthUserServiceImpl userService = SpringContextUtil.getBean(AuthUserServiceImpl.class); SysUserService sysUserService = SpringContextUtil.getBean(SysUserService.class); List files = null; try { + XpackEmailTemplateDTO emailTemplateDTO = emailXpackService.emailTemplate(taskInstance.getTaskId()); XpackEmailTaskRequest taskForm = emailXpackService.taskForm(taskInstance.getTaskId()); if (ObjectUtils.isEmpty(taskForm) || (!isTempTask && CronUtils.taskExpire(taskForm.getEndTime()))) { removeInstance(taskInstance); @@ -202,7 +201,7 @@ public class EmailTaskHandler extends TaskHandler implements Job { String contentStr = ""; if (ObjectUtils.isNotEmpty(content)) { - contentStr = new String(content, "UTF-8"); + contentStr = HtmlUtils.htmlUnescape(new String(content, "UTF-8")); } diff --git a/backend/src/main/java/io/dataease/job/sechedule/strategy/impl/EmailTaskViewHandler.java b/backend/src/main/java/io/dataease/job/sechedule/strategy/impl/EmailTaskViewHandler.java index 5eff2cb4eb..79a53d3120 100644 --- a/backend/src/main/java/io/dataease/job/sechedule/strategy/impl/EmailTaskViewHandler.java +++ b/backend/src/main/java/io/dataease/job/sechedule/strategy/impl/EmailTaskViewHandler.java @@ -4,20 +4,17 @@ import io.dataease.auth.entity.SysUserEntity; import io.dataease.plugins.common.entity.GlobalTaskInstance; -import io.dataease.plugins.xpack.email.dto.response.XpackEmailTemplateDTO; import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Service; -import javax.annotation.Resource; - @Service("emailTaskViewHandler") public class EmailTaskViewHandler extends EmailTaskHandler { @Async("priorityExecutor") - public void sendReport(GlobalTaskInstance taskInstance, XpackEmailTemplateDTO emailTemplateDTO, SysUserEntity user, Boolean isTempTask) { - super.sendReport(taskInstance, emailTemplateDTO, user, isTempTask); + public void sendReport(GlobalTaskInstance taskInstance, SysUserEntity user, Boolean isTempTask) { + super.sendReport(taskInstance, user, isTempTask); } } diff --git a/backend/src/main/java/io/dataease/plugins/server/XEmailTaskServer.java b/backend/src/main/java/io/dataease/plugins/server/XEmailTaskServer.java index 1609e13d27..ecd35e8214 100644 --- a/backend/src/main/java/io/dataease/plugins/server/XEmailTaskServer.java +++ b/backend/src/main/java/io/dataease/plugins/server/XEmailTaskServer.java @@ -28,6 +28,7 @@ import org.apache.commons.lang3.StringUtils; import org.apache.shiro.authz.annotation.RequiresPermissions; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; +import org.springframework.web.util.HtmlUtils; import springfox.documentation.annotations.ApiIgnore; import java.io.*; @@ -136,6 +137,9 @@ public class XEmailTaskServer { String emailContent; try { emailContent = new String(bytes, "UTF-8"); + if (StringUtils.isNotBlank(emailContent)) { + emailContent = HtmlUtils.htmlUnescape(emailContent); + } } catch (Exception e) { throw new RuntimeException(e); } @@ -176,7 +180,7 @@ public class XEmailTaskServer { } String imageUrl = "/system/ui/image/" + fileId; String html = "
" + - "

" + content + "

" + + content + "" + "
"; diff --git a/backend/src/main/resources/db/migration/V44__1.17.sql b/backend/src/main/resources/db/migration/V44__1.17.sql index 30b3206948..c8f6bdb2f3 100644 --- a/backend/src/main/resources/db/migration/V44__1.17.sql +++ b/backend/src/main/resources/db/migration/V44__1.17.sql @@ -39,3 +39,10 @@ WHERE (`component` = 'msg/setting'); ALTER TABLE `panel_group` ADD COLUMN `panel_sort` bigint(13) NULL COMMENT '排序' AFTER `watermark_open`; + + + + +ALTER TABLE `sys_task_email` + CHANGE COLUMN `content` `content` MEDIUMBLOB NULL DEFAULT NULL COMMENT '内容' ; +