|
@@ -27,6 +27,7 @@ import com.storlead.sales.mail.mkt.pojo.MktOpenStatsVO;
|
|
|
import com.storlead.sales.mail.mkt.pojo.MktSendMailDTO;
|
|
import com.storlead.sales.mail.mkt.pojo.MktSendMailDTO;
|
|
|
import com.storlead.sales.mail.mkt.service.MktMailAttachmentService;
|
|
import com.storlead.sales.mail.mkt.service.MktMailAttachmentService;
|
|
|
import com.storlead.sales.mail.mkt.service.MktMailMessageService;
|
|
import com.storlead.sales.mail.mkt.service.MktMailMessageService;
|
|
|
|
|
+import com.storlead.sales.mail.mkt.service.MktMailStatusService;
|
|
|
import com.storlead.sales.mail.mkt.support.MktMailHeaders;
|
|
import com.storlead.sales.mail.mkt.support.MktMailHeaders;
|
|
|
import com.storlead.sales.mail.mkt.util.MktMailSender;
|
|
import com.storlead.sales.mail.mkt.util.MktMailSender;
|
|
|
import lombok.extern.log4j.Log4j2;
|
|
import lombok.extern.log4j.Log4j2;
|
|
@@ -88,6 +89,9 @@ public class MktMailMessageServiceImpl extends MyBaseServiceImpl<MktMailMessageM
|
|
|
@Resource
|
|
@Resource
|
|
|
private MktMailAttachmentService mktMailAttachmentService;
|
|
private MktMailAttachmentService mktMailAttachmentService;
|
|
|
|
|
|
|
|
|
|
+ @Resource
|
|
|
|
|
+ private MktMailStatusService mktMailStatusService;
|
|
|
|
|
+
|
|
|
@Resource
|
|
@Resource
|
|
|
private MailFileProperties mailFileProperties;
|
|
private MailFileProperties mailFileProperties;
|
|
|
|
|
|
|
@@ -122,6 +126,7 @@ public class MktMailMessageServiceImpl extends MyBaseServiceImpl<MktMailMessageM
|
|
|
entity.setDelaySendTime(dto.getDelaySendTime());
|
|
entity.setDelaySendTime(dto.getDelaySendTime());
|
|
|
ensureTrackToken(entity, dto.getIsTrack());
|
|
ensureTrackToken(entity, dto.getIsTrack());
|
|
|
this.saveOrUpdate(entity);
|
|
this.saveOrUpdate(entity);
|
|
|
|
|
+ mktMailStatusService.ensureStatus(entity);
|
|
|
bindTempAttachments(entity.getId(), dto.getFileIds(), operatorId);
|
|
bindTempAttachments(entity.getId(), dto.getFileIds(), operatorId);
|
|
|
copyFormalToTemp(entity.getId(), dto.getOldFileIds(), operatorId);
|
|
copyFormalToTemp(entity.getId(), dto.getOldFileIds(), operatorId);
|
|
|
return entity;
|
|
return entity;
|
|
@@ -153,6 +158,7 @@ public class MktMailMessageServiceImpl extends MyBaseServiceImpl<MktMailMessageM
|
|
|
entity.setStatus(STATUS_DELAY);
|
|
entity.setStatus(STATUS_DELAY);
|
|
|
entity.setDelaySendTime(dto.getDelaySendTime());
|
|
entity.setDelaySendTime(dto.getDelaySendTime());
|
|
|
this.saveOrUpdate(entity);
|
|
this.saveOrUpdate(entity);
|
|
|
|
|
+ mktMailStatusService.ensureStatus(entity);
|
|
|
bindTempAttachments(entity.getId(), dto.getFileIds(), operatorId);
|
|
bindTempAttachments(entity.getId(), dto.getFileIds(), operatorId);
|
|
|
copyFormalToTemp(entity.getId(), dto.getOldFileIds(), operatorId);
|
|
copyFormalToTemp(entity.getId(), dto.getOldFileIds(), operatorId);
|
|
|
return entity;
|
|
return entity;
|
|
@@ -161,6 +167,7 @@ public class MktMailMessageServiceImpl extends MyBaseServiceImpl<MktMailMessageM
|
|
|
entity.setStatus(STATUS_SENDING);
|
|
entity.setStatus(STATUS_SENDING);
|
|
|
entity.setDelaySendTime(null);
|
|
entity.setDelaySendTime(null);
|
|
|
this.saveOrUpdate(entity);
|
|
this.saveOrUpdate(entity);
|
|
|
|
|
+ mktMailStatusService.ensureStatus(entity);
|
|
|
bindTempAttachments(entity.getId(), dto.getFileIds(), operatorId);
|
|
bindTempAttachments(entity.getId(), dto.getFileIds(), operatorId);
|
|
|
// 正式附件拷入临时表,MIME 与成功后转正式统一按 mailId 处理,避免重复挂载
|
|
// 正式附件拷入临时表,MIME 与成功后转正式统一按 mailId 处理,避免重复挂载
|
|
|
copyFormalToTemp(entity.getId(), dto.getOldFileIds(), operatorId);
|
|
copyFormalToTemp(entity.getId(), dto.getOldFileIds(), operatorId);
|
|
@@ -201,6 +208,9 @@ public class MktMailMessageServiceImpl extends MyBaseServiceImpl<MktMailMessageM
|
|
|
claiming.in(MktMailMessageEntity::getId, ids);
|
|
claiming.in(MktMailMessageEntity::getId, ids);
|
|
|
claiming.eq(MktMailMessageEntity::getStatus, STATUS_DELAY);
|
|
claiming.eq(MktMailMessageEntity::getStatus, STATUS_DELAY);
|
|
|
this.update(claiming);
|
|
this.update(claiming);
|
|
|
|
|
+ for (Long id : ids) {
|
|
|
|
|
+ mktMailStatusService.markSendStatus(id, STATUS_SENDING);
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
int success = 0;
|
|
int success = 0;
|
|
|
for (MktMailMessageEntity item : dueList) {
|
|
for (MktMailMessageEntity item : dueList) {
|
|
@@ -222,6 +232,7 @@ public class MktMailMessageServiceImpl extends MyBaseServiceImpl<MktMailMessageM
|
|
|
fail.set(MktMailMessageEntity::getStatus, STATUS_FAIL);
|
|
fail.set(MktMailMessageEntity::getStatus, STATUS_FAIL);
|
|
|
fail.set(MktMailMessageEntity::getFailReason, ex.getMessage());
|
|
fail.set(MktMailMessageEntity::getFailReason, ex.getMessage());
|
|
|
this.update(fail);
|
|
this.update(fail);
|
|
|
|
|
+ mktMailStatusService.markSendStatus(item.getId(), STATUS_FAIL);
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
return success;
|
|
return success;
|
|
@@ -314,6 +325,11 @@ public class MktMailMessageServiceImpl extends MyBaseServiceImpl<MktMailMessageM
|
|
|
}
|
|
}
|
|
|
MktMailMessageEntity latest = this.getById(before.getId());
|
|
MktMailMessageEntity latest = this.getById(before.getId());
|
|
|
fireOpenCallbacks(latest == null ? before : latest, firstOpen);
|
|
fireOpenCallbacks(latest == null ? before : latest, firstOpen);
|
|
|
|
|
+ try {
|
|
|
|
|
+ mktMailStatusService.markOpened(before.getId());
|
|
|
|
|
+ } catch (Exception e) {
|
|
|
|
|
+ log.error("mkt_mail_status markOpened error, mailId={}", before.getId(), e);
|
|
|
|
|
+ }
|
|
|
return true;
|
|
return true;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -421,6 +437,7 @@ public class MktMailMessageServiceImpl extends MyBaseServiceImpl<MktMailMessageM
|
|
|
fail.set(MktMailMessageEntity::getStatus, STATUS_FAIL);
|
|
fail.set(MktMailMessageEntity::getStatus, STATUS_FAIL);
|
|
|
fail.set(MktMailMessageEntity::getFailReason, reason);
|
|
fail.set(MktMailMessageEntity::getFailReason, reason);
|
|
|
this.update(fail);
|
|
this.update(fail);
|
|
|
|
|
+ mktMailStatusService.markSendStatus(mailId, STATUS_FAIL);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
private MimeMessage buildMimeMessage(Session session,
|
|
private MimeMessage buildMimeMessage(Session session,
|