瀏覽代碼

添加邮件

YPZ 1 天之前
父節點
當前提交
ff85e528e0

+ 16 - 0
java/storlead-mail/storlead-mail-api/src/main/java/com/storlead/mail/webclient/dto/MktMailStatusChangeRemoteDTO.java

@@ -40,4 +40,20 @@ public class MktMailStatusChangeRemoteDTO {
     @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     @ApiModelProperty("同步时间标记;同步成功后由 SaaS 回写刷新")
     private LocalDateTime statusUpdatedAt;
+
+    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty("首次打开时间(B 侧 mkt_mail_status 维护)")
+    private LocalDateTime firstOpenTime;
+
+    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty("首次回复时间(B 侧 mkt_mail_status 维护)")
+    private LocalDateTime firstReplyTime;
+
+    @ApiModelProperty("首次回复邮件id(B 侧 mkt_mail_status 维护,对应邮件库回复邮件主键)")
+    private Long firstReplyEmailId;
+
+    @ApiModelProperty("回复邮件主题(B 侧 mkt_mail_status 维护)")
+    private String firstReplyTheme;
 }

+ 20 - 0
java/storlead-sasa/storlead-trade/src/main/java/com/storlead/trade/service/impl/MarketEmailsStatusSyncServiceImpl.java

@@ -149,6 +149,26 @@ public class MarketEmailsStatusSyncServiceImpl implements MarketEmailsStatusSync
             update.set(MarketEmailsEntity::getHasReply, 1);
             changed = true;
         }
+        //补充首次打开时间(仅在业务表为空时写入,保持“首次”语义)
+        if (existing.getFirstOpenTime() == null && change.getFirstOpenTime() != null) {
+            update.set(MarketEmailsEntity::getFirstOpenTime, change.getFirstOpenTime());
+            changed = true;
+        }
+        //补充首次回复时间
+        if (existing.getFirstReplyTime() == null && change.getFirstReplyTime() != null) {
+            update.set(MarketEmailsEntity::getFirstReplyTime, change.getFirstReplyTime());
+            changed = true;
+        }
+        //补充首次回复邮件id
+        if (existing.getFirstReplyEmailId() == null && change.getFirstReplyEmailId() != null) {
+            update.set(MarketEmailsEntity::getFirstReplyEmailId, change.getFirstReplyEmailId());
+            changed = true;
+        }
+        //补充回复邮件主题
+        if (existing.getFirstReplyTheme() == null && change.getFirstReplyTheme() != null) {
+            update.set(MarketEmailsEntity::getFirstReplyTheme, change.getFirstReplyTheme());
+            changed = true;
+        }
         if (!changed) {
             return ApplyResult.MATCHED_NO_CHANGE;
         }