Browse Source

提交保护暂停

YPZ 2 tuần trước cách đây
mục cha
commit
0d02807de8

+ 16 - 4
java/storlead-sasa/storlead-trade/src/main/java/com/storlead/trade/service/impl/MarketEmailsServiceImpl.java

@@ -459,11 +459,21 @@ public class MarketEmailsServiceImpl extends MyBaseServiceImpl<MarketEmailsMappe
                 if (vo.getId() == null && e.getId() != null) {
                     vo.setId(e.getId());
                 }
-                // 取最早的 firstReplyTime + 同时记录主题/emailId
+                // 取最早的 firstReplyTime
                 if (e.getFirstReplyTime() != null) {
                     if (vo.getFirstReplyTime() == null || e.getFirstReplyTime().before(vo.getFirstReplyTime())) {
                         vo.setFirstReplyTime(e.getFirstReplyTime());
-                        vo.setReplyContent(e.getFirstReplyTheme());
+                    }
+                }
+                // 取最新且非空的回复主题(bestReplyContent 聚合)
+                String theme = e.getFirstReplyTheme();
+                if (theme != null && !theme.trim().isEmpty()) {
+                    if (vo.getBestReplyContent() == null) {
+                        vo.setBestReplyContent(theme);
+                    } else if (e.getFirstReplyTime() != null
+                            && (vo.getFirstReplyTime() == null || e.getFirstReplyTime().after(vo.getFirstReplyTime()))) {
+                        // 当前记录的 firstReplyTime 比已记录的 firstReplyTime 更新时,更新 bestReplyContent
+                        vo.setBestReplyContent(theme);
                     }
                 }
                 // MAX(has_protect) / MAX(has_suspend) 语义
@@ -475,10 +485,12 @@ public class MarketEmailsServiceImpl extends MyBaseServiceImpl<MarketEmailsMappe
                 }
             }
         }
-        // 默认未保护/未暂停为 0
+        // 默认未保护/未暂停为 0;bestReplyContent 写回 replyContent
         for (com.storlead.trade.vo.MarketEmailsReplyVO vo : aggMap.values()) {
             if (vo.getHasProtect() == null) vo.setHasProtect(0);
             if (vo.getHasSuspend() == null) vo.setHasSuspend(0);
+            vo.setReplyContent(vo.getBestReplyContent());
+            vo.setBestReplyContent(null);
         }
         // 按首次回复时间倒序(最近回复的排前)
         List<com.storlead.trade.vo.MarketEmailsReplyVO> voList = new java.util.ArrayList<>(aggMap.values());
@@ -492,7 +504,7 @@ public class MarketEmailsServiceImpl extends MyBaseServiceImpl<MarketEmailsMappe
         // 批量回填:客户名 / 客户等级 / 核心标签
         if (!voList.isEmpty()) {
             java.util.Set<Long> customerIdSet = new java.util.LinkedHashSet<>();
-            for (com.storlead.trade.vo.MarketEmailsReplyVO v : voList) {
+            for (MarketEmailsReplyVO v : voList) {
                 if (v.getCustomerId() != null) customerIdSet.add(v.getCustomerId());
             }
             if (!customerIdSet.isEmpty()) {

+ 3 - 0
java/storlead-sasa/storlead-trade/src/main/java/com/storlead/trade/vo/MarketEmailsReplyVO.java

@@ -65,6 +65,9 @@ public class MarketEmailsReplyVO implements Serializable {
     @ApiModelProperty(value = "回复内容(复用 first_reply_theme 字段,DB 未单独建 reply_content)")
     private String replyContent;
 
+    @ApiModelProperty(value = "临时字段:用于聚合时记录最佳回复主题(最新且非空),聚合结束后写入 replyContent,不暴露给前端")
+    private String bestReplyContent;
+
     @ApiModelProperty(value = "是否保护(0未保护、1保护)")
     private Integer hasProtect;