Bladeren bron

账号邮箱统计

18118724055@163.com 11 uur geleden
bovenliggende
commit
343068dfd3

+ 2 - 3
java/storlead-sasa/storlead-trade/src/main/java/com/storlead/trade/controller/MarketEmailsController.java

@@ -22,7 +22,6 @@ import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.RestController;
 
 import java.util.List;
-import java.util.Map;
 
 import javax.annotation.Resource;
 
@@ -167,8 +166,8 @@ public class MarketEmailsController {
     }
 
     @PostMapping("/account-total")
-    @ApiOperation("营销: 按发件箱 id 批量统计,返回 Map<outboxId, 统计>(总发送量、回复数、回复率、最新发送时间;outboxIds=1,2 或 outboxIds=1&outboxIds=2)")
-    public Result<Map<Long, MarketEmailsAccountStatsVO>> accountStats(@RequestParam("outboxIds") List<Long> outboxIds) {
+    @ApiOperation("营销: 按发件箱 id 批量统计,返回 List(总发送量、回复数、回复率、最新发送时间;outboxIds=1,2 或 outboxIds=1&outboxIds=2)")
+    public Result<List<MarketEmailsAccountStatsVO>> accountStats(@RequestParam("outboxIds") List<Long> outboxIds) {
         return Result.result(marketEmailsService.getAccountStats(outboxIds));
     }
 

+ 2 - 3
java/storlead-sasa/storlead-trade/src/main/java/com/storlead/trade/service/MarketEmailsService.java

@@ -13,7 +13,6 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import org.springframework.scheduling.annotation.Async;
 
 import java.util.List;
-import java.util.Map;
 
 public interface MarketEmailsService extends MyBaseService<MarketEmailsEntity> {
 
@@ -114,9 +113,9 @@ public interface MarketEmailsService extends MyBaseService<MarketEmailsEntity> {
     /**
      * 按发件箱 id 批量聚合:总发送量、回复数、回复率、最新发送时间。
      * 口径与今日发送一致:is_delete=0 且 status=1;回复数再叠加 has_reply=1。
-     * 返回 Map&lt;outboxId, 统计&gt;;入参只接受账号 id,无数据的 id 补 0。
+     * 入参只接受账号 id,无数据的 id 补 0,顺序与去重后的 outboxIds 一致。
      */
-    Map<Long, MarketEmailsAccountStatsVO> getAccountStats(List<Long> outboxIds);
+    List<MarketEmailsAccountStatsVO> getAccountStats(List<Long> outboxIds);
 
     /***
       * @Description: 通过id/marketingCampaignId/客户id关联的邮件状态

+ 8 - 7
java/storlead-sasa/storlead-trade/src/main/java/com/storlead/trade/service/impl/MarketEmailsServiceImpl.java

@@ -1055,8 +1055,8 @@ public class MarketEmailsServiceImpl extends MyBaseServiceImpl<MarketEmailsMappe
     }
 
     @Override
-    public Map<Long, MarketEmailsAccountStatsVO> getAccountStats(List<Long> outboxIds) {
-        Map<Long, MarketEmailsAccountStatsVO> result = new LinkedHashMap<>();
+    public List<MarketEmailsAccountStatsVO> getAccountStats(List<Long> outboxIds) {
+        List<MarketEmailsAccountStatsVO> result = new ArrayList<>();
         if (CollectionUtils.isEmpty(outboxIds)) {
             return result;
         }
@@ -1064,8 +1064,11 @@ public class MarketEmailsServiceImpl extends MyBaseServiceImpl<MarketEmailsMappe
         if (ids.isEmpty()) {
             return result;
         }
+        Map<Long, MarketEmailsAccountStatsVO> byId = new LinkedHashMap<>();
         for (Long id : ids) {
-            result.put(id, emptyAccountStats(id));
+            MarketEmailsAccountStatsVO vo = emptyAccountStats(id);
+            byId.put(id, vo);
+            result.add(vo);
         }
 
         QueryWrapper<MarketEmailsEntity> qw = new QueryWrapper<>();
@@ -1087,18 +1090,16 @@ public class MarketEmailsServiceImpl extends MyBaseServiceImpl<MarketEmailsMappe
                 continue;
             }
             Long id = toLongOrNull(row.get("outbox_id"));
-            if (id == null || !result.containsKey(id)) {
+            MarketEmailsAccountStatsVO vo = id == null ? null : byId.get(id);
+            if (vo == null) {
                 continue;
             }
-            MarketEmailsAccountStatsVO vo = new MarketEmailsAccountStatsVO();
             int sendCount = toInteger(row.get("send_count"));
             int replyCount = toInteger(row.get("reply_count"));
-            vo.setOutboxId(id);
             vo.setSendCount(sendCount);
             vo.setReplyCount(replyCount);
             vo.setReplyRate(toReplyRate(sendCount, replyCount));
             vo.setLastSendTime(toDate(row.get("last_send_time")));
-            result.put(id, vo);
         }
         return result;
     }