YPZ 3 settimane fa
parent
commit
5ce04c4aa2

+ 19 - 0
java/storlead-sasa/storlead-trade/src/main/java/com/storlead/trade/service/impl/MarketingCampaignServiceImpl.java

@@ -333,6 +333,25 @@ public class MarketingCampaignServiceImpl
         // 达成率 = openCountLong / emailCount
         stats.setAchievementRate(sentCount > 0 ? Math.round(sentCount * 100f / emailCount) : 0);
 
+        // 已打开邮件的客户数(distinct customer_id where hasReader=1)
+        List<MarketEmailsEntity> openedEmailList = marketEmailsService.lambdaQuery()
+                .eq(MarketEmailsEntity::getMarketingCampaignId, id)
+                .eq(MarketEmailsEntity::getIsDelete, CommonConstant.DEL_FLAG_0)
+                .eq(MarketEmailsEntity::getHasReader, 1)
+                .isNotNull(MarketEmailsEntity::getCustomerId)
+                .select(MarketEmailsEntity::getCustomerId)
+                .list();
+        int openCustomerCount = (int) openedEmailList.stream()
+                .map(MarketEmailsEntity::getCustomerId)
+                .filter(java.util.Objects::nonNull)
+                .distinct()
+                .count();
+        stats.setOpenCustomerCount(openCustomerCount);
+        // 未打开邮件的客户数 = 总客户数(customer_base) - 已打开邮件的客户数
+        int totalCustomerCount = customerIdList.size();
+        int notOpenCustomerCount = Math.max(0, totalCustomerCount - openCustomerCount);
+        stats.setNotOpenCustomerCount(notOpenCustomerCount);
+
         detailVO.setStats(stats);
 
         return Result.result(detailVO);

+ 6 - 0
java/storlead-sasa/storlead-trade/src/main/java/com/storlead/trade/vo/CampaignStatsVO.java

@@ -31,4 +31,10 @@ public class CampaignStatsVO {
 
     @ApiModelProperty(value = "达成率(0-100)")
     private Integer achievementRate;
+
+    @ApiModelProperty(value = "已打开邮件的客户数(distinct customer_id, hasReader=1)")
+    private Integer openCustomerCount;
+
+    @ApiModelProperty(value = "未打开邮件的客户数(总客户数 - 已打开邮件的客户数)")
+    private Integer notOpenCustomerCount;
 }