Commit 67927463 by zhangxingmin

测试发送邮件

parent b82fdaca
...@@ -14,4 +14,7 @@ public interface ApiEmailTaskRecipientsService { ...@@ -14,4 +14,7 @@ public interface ApiEmailTaskRecipientsService {
Result<List<EmailTaskRecipients>> saveEmailTaskRecipientsBySessionId(String taskBizId, String status, Result<List<EmailTaskRecipients>> saveEmailTaskRecipientsBySessionId(String taskBizId, String status,
String sessionId, Integer source); String sessionId, Integer source);
Result<List<EmailTaskRecipients>> queryEmailTaskRecipientsBySessionId(String taskBizId, String status,
String sessionId, Integer source);
} }
...@@ -62,33 +62,7 @@ public class ApiEmailSendServiceImpl implements ApiEmailSendService { ...@@ -62,33 +62,7 @@ public class ApiEmailSendServiceImpl implements ApiEmailSendService {
public Result<ApiSendEmailResponse> sendEmail(ApiSendEmailRequest request) { public Result<ApiSendEmailResponse> sendEmail(ApiSendEmailRequest request) {
ApiSendEmailResponse response = new ApiSendEmailResponse(); ApiSendEmailResponse response = new ApiSendEmailResponse();
try { try {
//保存邮件任务到数据库 EmailTask mailTask = buildEmailTask(request);
EmailTask mailTask = new EmailTask();
//邮件任务唯一业务ID
mailTask.setTaskBizId(RandomStringGenerator.generateBizId16(CommonEnum.UID_TYPE_EMAIL_TASK.getCode()));
//任务名称:邮件主题 + 邮件发送任务
mailTask.setTaskName(request.getSubject() + "邮件发送任务");
//关联发件人唯一业务ID
mailTask.setSenderBizId(request.getSenderBizId());
//发件人邮箱
mailTask.setSendEmail(request.getSendEmail());
//邮件主题
mailTask.setSubject(request.getSubject());
//邮件内容
mailTask.setContent(request.getContent());
//发送邮件的附件路径(多个用分号分隔)
mailTask.setAttachmentPath(request.getAttachmentPath());
//计划发送时间(为空表示立即发送,不为空表示定时发送)
mailTask.setScheduleTime(request.getScheduleTime());
//任务状态:计划发送时间(为空表示立即发送状态为发送中,不为空表示发送状态为定时发送)
String taskStatus = !Objects.isNull(request.getScheduleTime()) ? EmailTaskStatusEnum.SCHEDULED.getItemValue() : EmailTaskStatusEnum.SENDING.getItemValue();
mailTask.setStatus(taskStatus);
//变量分组唯一业务ID
mailTask.setVariableGroupBizId(request.getVariableGroupBizId());
//邮件内容的填充的变量字段(数组分号分隔,英文字段名)
// mailTask.setFillVariable(!CollectionUtils.isEmpty(request.getFillVariableList()) ? String.join(";") : "");
//导入临时表的当前会话id(前端使用,用于查询。存于前端缓存)(冗余字段,选择联系人和导入联系人excel都有值)
mailTask.setSessionId(request.getSessionId());
iEmailTaskService.saveOrUpdate(mailTask); iEmailTaskService.saveOrUpdate(mailTask);
//邮件任务唯一业务ID //邮件任务唯一业务ID
...@@ -99,7 +73,7 @@ public class ApiEmailSendServiceImpl implements ApiEmailSendService { ...@@ -99,7 +73,7 @@ public class ApiEmailSendServiceImpl implements ApiEmailSendService {
// 保存收件人信息 // 保存收件人信息
//根据当前当前会话id和数据来源查询导入数据,保存到邮件任务收件人关联表中,供后续使用 //根据当前当前会话id和数据来源查询导入数据,保存到邮件任务收件人关联表中,供后续使用
Result<List<EmailTaskRecipients>> result = apiEmailTaskRecipientsService Result<List<EmailTaskRecipients>> result = apiEmailTaskRecipientsService
.saveEmailTaskRecipientsBySessionId(taskBizId,taskStatus,request.getSessionId(),source); .saveEmailTaskRecipientsBySessionId(taskBizId,mailTask.getStatus(),request.getSessionId(),source);
List<EmailTaskRecipients> recipientsList = result.getData(); List<EmailTaskRecipients> recipientsList = result.getData();
//计划发送时间(为空表示立即发送,不为空表示定时发送) //计划发送时间(为空表示立即发送,不为空表示定时发送)
...@@ -218,8 +192,59 @@ public class ApiEmailSendServiceImpl implements ApiEmailSendService { ...@@ -218,8 +192,59 @@ public class ApiEmailSendServiceImpl implements ApiEmailSendService {
*/ */
@Override @Override
public Result<ApiSendEmailResponse> testSendEmail(ApiSendEmailRequest request) { public Result<ApiSendEmailResponse> testSendEmail(ApiSendEmailRequest request) {
return null; ApiSendEmailResponse response = new ApiSendEmailResponse();
EmailTask mailTask = buildEmailTask(request);
//邮件任务唯一业务ID
String taskBizId = mailTask.getTaskBizId();
//变量分组唯一业务ID不为空,来源是1-excel导入联系人 为空是0-选择联系人导入
Integer source = StringUtils.isNotBlank(request.getVariableGroupBizId()) ? 1 : 0;
// 保存收件人信息
//根据当前当前会话id和数据来源查询导入数据
Result<List<EmailTaskRecipients>> result = apiEmailTaskRecipientsService
.queryEmailTaskRecipientsBySessionId(taskBizId,mailTask.getStatus(),request.getSessionId(),source);
List<EmailTaskRecipients> recipientsList = result.getData();
//立即发送
sendImmediatelyEmail(mailTask,recipientsList);
response.setScheduleTime(request.getScheduleTime());
response.setTaskBizId(taskBizId);
return Result.success(response);
} }
/**
* 构造邮箱任务对象
* @param request
* @return
*/
public EmailTask buildEmailTask(ApiSendEmailRequest request){
//保存邮件任务到数据库
EmailTask mailTask = new EmailTask();
//邮件任务唯一业务ID
mailTask.setTaskBizId(RandomStringGenerator.generateBizId16(CommonEnum.UID_TYPE_EMAIL_TASK.getCode()));
//任务名称:邮件主题 + 邮件发送任务
mailTask.setTaskName(request.getSubject() + "邮件发送任务");
//关联发件人唯一业务ID
mailTask.setSenderBizId(request.getSenderBizId());
//发件人邮箱
mailTask.setSendEmail(request.getSendEmail());
//邮件主题
mailTask.setSubject(request.getSubject());
//邮件内容
mailTask.setContent(request.getContent());
//发送邮件的附件路径(多个用分号分隔)
mailTask.setAttachmentPath(request.getAttachmentPath());
//计划发送时间(为空表示立即发送,不为空表示定时发送)
mailTask.setScheduleTime(request.getScheduleTime());
//任务状态:计划发送时间(为空表示立即发送状态为发送中,不为空表示发送状态为定时发送)
String taskStatus = !Objects.isNull(request.getScheduleTime()) ? EmailTaskStatusEnum.SCHEDULED.getItemValue() : EmailTaskStatusEnum.SENDING.getItemValue();
mailTask.setStatus(taskStatus);
//变量分组唯一业务ID
mailTask.setVariableGroupBizId(request.getVariableGroupBizId());
//邮件内容的填充的变量字段(数组分号分隔,英文字段名)
// mailTask.setFillVariable(!CollectionUtils.isEmpty(request.getFillVariableList()) ? String.join(";") : "");
//导入临时表的当前会话id(前端使用,用于查询。存于前端缓存)(冗余字段,选择联系人和导入联系人excel都有值)
mailTask.setSessionId(request.getSessionId());
return mailTask;
}
} }
...@@ -82,16 +82,38 @@ public class ApiEmailTaskRecipientsServiceImpl implements ApiEmailTaskRecipients ...@@ -82,16 +82,38 @@ public class ApiEmailTaskRecipientsServiceImpl implements ApiEmailTaskRecipients
return Result.success(saveRecipientsList); return Result.success(saveRecipientsList);
} }
// /** /**
// * 根据当前当前会话id和数据来源查询导入数据,保存到邮件任务收件人关联表中 * 根据当前当前会话id和数据来源查询导入数据
// * @param taskBizId 邮件任务唯一业务ID * @param taskBizId 邮件任务唯一业务ID
// * @param status 收件人邮件状态 * @param status 收件人邮件状态
// * @param sessionId 会话id * @param sessionId 会话id
// * @param source 数据的来源 0-选择联系人导入 1-excel导入联系人 * @param source 数据的来源 0-选择联系人导入 1-excel导入联系人
// * @return * @return
// */ */
// public Result<List<EmailTaskRecipients>> queryEmailTaskRecipientsBySessionId(String taskBizId,String status, @Override
// String sessionId,Integer source) { public Result<List<EmailTaskRecipients>> queryEmailTaskRecipientsBySessionId(String taskBizId,String status,
// String sessionId,Integer source) {
// } //根据当前当前会话id和数据来源查询的导入数据
List<EmailContactImport> emailContactImportList = iEmailContactImportService.queryList(EmailContactImportDto
.builder()
.sessionId(sessionId)
.source(source)
.build());
List<EmailTaskRecipients> saveRecipientsList = new ArrayList<>();
if (!CollectionUtils.isEmpty(emailContactImportList)) {
//不为空,保存到邮件任务收件人关联表中
saveRecipientsList = emailContactImportList
.stream()
.map(dto -> {
EmailTaskRecipients recipient = new EmailTaskRecipients();
BeanUtils.copyProperties(dto,recipient);
recipient.setTaskBizId(taskBizId);
recipient.setStatus(status);
return recipient;
}).collect(Collectors.toList());
}
return Result.success(saveRecipientsList);
}
} }
...@@ -7,8 +7,14 @@ import java.time.LocalDateTime; ...@@ -7,8 +7,14 @@ import java.time.LocalDateTime;
@Data @Data
public class ApiSendEmailResponse { public class ApiSendEmailResponse {
/**
* xx-job的id
*/
private String jobId; private String jobId;
/**
* 任务业务id
*/
private String taskBizId; private String taskBizId;
/** /**
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment