|
@@ -11,11 +11,13 @@ import com.storlead.sales.mail.mkt.service.MktMailStatusService;
|
|
|
import lombok.extern.log4j.Log4j2;
|
|
import lombok.extern.log4j.Log4j2;
|
|
|
import org.springframework.dao.DuplicateKeyException;
|
|
import org.springframework.dao.DuplicateKeyException;
|
|
|
import org.springframework.stereotype.Service;
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
+import org.springframework.util.CollectionUtils;
|
|
|
|
|
|
|
|
|
|
+import java.util.Collection;
|
|
|
import java.util.Date;
|
|
import java.util.Date;
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
|
- * mkt_mail_status 埋点:发送态 / 打开 / 回复。
|
|
|
|
|
|
|
+ * mkt_mail_status 埋点:发送态 / 打开 / 回复;status_updated_at 为业务变更时间,synced_at 为业务同步时间。
|
|
|
*/
|
|
*/
|
|
|
@Log4j2
|
|
@Log4j2
|
|
|
@Service
|
|
@Service
|
|
@@ -35,12 +37,18 @@ public class MktMailStatusServiceImpl extends MyBaseServiceImpl<MktMailStatusMap
|
|
|
return;
|
|
return;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ Date now = new Date();
|
|
|
MktMailStatusEntity row = new MktMailStatusEntity();
|
|
MktMailStatusEntity row = new MktMailStatusEntity();
|
|
|
row.setMailId(mail.getId());
|
|
row.setMailId(mail.getId());
|
|
|
row.setSendStatus(mail.getStatus() == null ? 0 : mail.getStatus());
|
|
row.setSendStatus(mail.getStatus() == null ? 0 : mail.getStatus());
|
|
|
row.setOpened(0);
|
|
row.setOpened(0);
|
|
|
|
|
+ row.setOpenCount(0);
|
|
|
row.setIsRead(0);
|
|
row.setIsRead(0);
|
|
|
row.setReplied(0);
|
|
row.setReplied(0);
|
|
|
|
|
+ row.setStatusUpdatedAt(now);
|
|
|
|
|
+ row.setSyncedAt(null);
|
|
|
|
|
+ row.setCreateTime(now);
|
|
|
|
|
+ row.setUpdateTime(now);
|
|
|
row.setOwnerBy(mail.getOwnerBy());
|
|
row.setOwnerBy(mail.getOwnerBy());
|
|
|
row.setCreateBy(mail.getCreateBy() == null ? mail.getOwnerBy() : mail.getCreateBy());
|
|
row.setCreateBy(mail.getCreateBy() == null ? mail.getOwnerBy() : mail.getCreateBy());
|
|
|
row.setIsDelete(CommonConstant.DEL_FLAG_0);
|
|
row.setIsDelete(CommonConstant.DEL_FLAG_0);
|
|
@@ -66,6 +74,7 @@ public class MktMailStatusServiceImpl extends MyBaseServiceImpl<MktMailStatusMap
|
|
|
update.eq(MktMailStatusEntity::getIsDelete, CommonConstant.DEL_FLAG_0);
|
|
update.eq(MktMailStatusEntity::getIsDelete, CommonConstant.DEL_FLAG_0);
|
|
|
update.set(MktMailStatusEntity::getSendStatus, sendStatus);
|
|
update.set(MktMailStatusEntity::getSendStatus, sendStatus);
|
|
|
update.set(MktMailStatusEntity::getStatusUpdatedAt, now);
|
|
update.set(MktMailStatusEntity::getStatusUpdatedAt, now);
|
|
|
|
|
+ update.set(MktMailStatusEntity::getUpdateTime, now);
|
|
|
this.update(update);
|
|
this.update(update);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -81,9 +90,12 @@ public class MktMailStatusServiceImpl extends MyBaseServiceImpl<MktMailStatusMap
|
|
|
update.eq(MktMailStatusEntity::getIsDelete, CommonConstant.DEL_FLAG_0);
|
|
update.eq(MktMailStatusEntity::getIsDelete, CommonConstant.DEL_FLAG_0);
|
|
|
update.set(MktMailStatusEntity::getOpened, 1);
|
|
update.set(MktMailStatusEntity::getOpened, 1);
|
|
|
update.set(MktMailStatusEntity::getIsRead, 1);
|
|
update.set(MktMailStatusEntity::getIsRead, 1);
|
|
|
|
|
+ update.setSql("open_count = IFNULL(open_count, 0) + 1");
|
|
|
update.setSql("first_open_time = IFNULL(first_open_time, NOW())");
|
|
update.setSql("first_open_time = IFNULL(first_open_time, NOW())");
|
|
|
|
|
+ update.set(MktMailStatusEntity::getLastOpenTime, now);
|
|
|
update.setSql("first_read_time = IFNULL(first_read_time, NOW())");
|
|
update.setSql("first_read_time = IFNULL(first_read_time, NOW())");
|
|
|
update.set(MktMailStatusEntity::getStatusUpdatedAt, now);
|
|
update.set(MktMailStatusEntity::getStatusUpdatedAt, now);
|
|
|
|
|
+ update.set(MktMailStatusEntity::getUpdateTime, now);
|
|
|
this.update(update);
|
|
this.update(update);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -100,6 +112,35 @@ public class MktMailStatusServiceImpl extends MyBaseServiceImpl<MktMailStatusMap
|
|
|
update.set(MktMailStatusEntity::getReplied, 1);
|
|
update.set(MktMailStatusEntity::getReplied, 1);
|
|
|
update.setSql("first_reply_time = IFNULL(first_reply_time, NOW())");
|
|
update.setSql("first_reply_time = IFNULL(first_reply_time, NOW())");
|
|
|
update.set(MktMailStatusEntity::getStatusUpdatedAt, now);
|
|
update.set(MktMailStatusEntity::getStatusUpdatedAt, now);
|
|
|
|
|
+ update.set(MktMailStatusEntity::getUpdateTime, now);
|
|
|
|
|
+ this.update(update);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ @Override
|
|
|
|
|
+ public void markSynced(Long mailId) {
|
|
|
|
|
+ if (mailId == null) {
|
|
|
|
|
+ return;
|
|
|
|
|
+ }
|
|
|
|
|
+ Date now = new Date();
|
|
|
|
|
+ LambdaUpdateWrapper<MktMailStatusEntity> update = new LambdaUpdateWrapper<>();
|
|
|
|
|
+ update.eq(MktMailStatusEntity::getMailId, mailId);
|
|
|
|
|
+ update.eq(MktMailStatusEntity::getIsDelete, CommonConstant.DEL_FLAG_0);
|
|
|
|
|
+ update.set(MktMailStatusEntity::getSyncedAt, now);
|
|
|
|
|
+ update.set(MktMailStatusEntity::getUpdateTime, now);
|
|
|
|
|
+ this.update(update);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ @Override
|
|
|
|
|
+ public void markSynced(Collection<Long> mailIds) {
|
|
|
|
|
+ if (CollectionUtils.isEmpty(mailIds)) {
|
|
|
|
|
+ return;
|
|
|
|
|
+ }
|
|
|
|
|
+ Date now = new Date();
|
|
|
|
|
+ LambdaUpdateWrapper<MktMailStatusEntity> update = new LambdaUpdateWrapper<>();
|
|
|
|
|
+ update.in(MktMailStatusEntity::getMailId, mailIds);
|
|
|
|
|
+ update.eq(MktMailStatusEntity::getIsDelete, CommonConstant.DEL_FLAG_0);
|
|
|
|
|
+ update.set(MktMailStatusEntity::getSyncedAt, now);
|
|
|
|
|
+ update.set(MktMailStatusEntity::getUpdateTime, now);
|
|
|
this.update(update);
|
|
this.update(update);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -114,12 +155,18 @@ public class MktMailStatusServiceImpl extends MyBaseServiceImpl<MktMailStatusMap
|
|
|
if (getByMailId(mailId) != null) {
|
|
if (getByMailId(mailId) != null) {
|
|
|
return;
|
|
return;
|
|
|
}
|
|
}
|
|
|
|
|
+ Date now = new Date();
|
|
|
MktMailStatusEntity row = new MktMailStatusEntity();
|
|
MktMailStatusEntity row = new MktMailStatusEntity();
|
|
|
row.setMailId(mailId);
|
|
row.setMailId(mailId);
|
|
|
row.setSendStatus(0);
|
|
row.setSendStatus(0);
|
|
|
row.setOpened(0);
|
|
row.setOpened(0);
|
|
|
|
|
+ row.setOpenCount(0);
|
|
|
row.setIsRead(0);
|
|
row.setIsRead(0);
|
|
|
row.setReplied(0);
|
|
row.setReplied(0);
|
|
|
|
|
+ row.setStatusUpdatedAt(now);
|
|
|
|
|
+ row.setSyncedAt(null);
|
|
|
|
|
+ row.setCreateTime(now);
|
|
|
|
|
+ row.setUpdateTime(now);
|
|
|
row.setIsDelete(CommonConstant.DEL_FLAG_0);
|
|
row.setIsDelete(CommonConstant.DEL_FLAG_0);
|
|
|
row.setEnabled(Boolean.TRUE);
|
|
row.setEnabled(Boolean.TRUE);
|
|
|
try {
|
|
try {
|