Jelajahi Sumber

fix up of bug

marxjaw 3 bulan lalu
induk
melakukan
6446ab4c45

+ 6 - 3
yt-app/app-service/src/main/java/com/ytpm/service/dyz/impl/AdServiceImpl.java

@@ -222,10 +222,13 @@ public class AdServiceImpl implements AdService {
             //今日ecpm
             List<AgentNetworkEcpmGroupVO> networkEcpmGroups = vo.getNetworkEcpmGroups();
             if(CollUtil.isNotEmpty(networkEcpmGroups)){
-                Map<String, BigDecimal> ecpmMap = networkEcpmGroups.stream().collect(
-                        Collectors.toMap(AgentNetworkEcpmGroupVO::getHour, AgentNetworkEcpmGroupVO::getEcpm));
+                Map<String, BigDecimal> ecpmMap = networkEcpmGroups.stream().collect(Collectors.toMap(AgentNetworkEcpmGroupVO::getHour, AgentNetworkEcpmGroupVO::getEcpm));
+                Map<String, AgentNetworkEcpmGroupVO> hourMap = networkEcpmGroups.stream().collect(
+                        Collectors.toMap(AgentNetworkEcpmGroupVO::getHour, o->o));
+                //统计每个小时的计数加起来为全天总次数
                 vo.setTodayHourEcpmMap(ecpmMap);
-                int count = ecpmMap.values().size();
+                int count = hourMap.values().stream().mapToInt(AgentNetworkEcpmGroupVO::getCount).sum();
+                //分小时总值求和得到全天总值, 全天总值÷全天次数 得平均值
                 vo.setTodayEcpm(ecpmMap.values().stream().reduce(BigDecimal.ZERO, BigDecimal::add).divide(BigDecimal.valueOf(count), 2, BigDecimal.ROUND_HALF_UP));
             }
             vo.setYesterdayEcpm(adRecordMapper.getNetworkEcpmByType(appIds,2,vo.getNetowrkId()));

+ 3 - 0
yt-app/app-service/src/main/resources/mapper/dyz/AdRecordMapper.xml

@@ -181,10 +181,12 @@
         <id column="network_form_id" property="netowrkId" />
         <result column="network_name" property="netowrkName" />
         <collection property="networkEcpmGroups" ofType="com.ytpm.agent.view.AgentNetworkEcpmGroupVO">
+            <result column="count" property="count" />
             <result column="hour" property="hour" />
             <result column="ecpm" property="ecpm" />
         </collection>
         <collection property="networkRevenueGroups" ofType="com.ytpm.agent.view.AgentNetworkRevenueGroupVO">
+            <result column="count" property="count" />
             <result column="hour" property="hour" />
             <result column="revenue" property="revenue" />
         </collection>
@@ -193,6 +195,7 @@
         SELECT
             network_form_id,
             network_name,
+            count(*) count,
             DATE_FORMAT(finish_time,'%Y-%m-%d %H:00:00') as `hour`,
             sum( revenue ) revenue,
             sum( ecpm ) ecpm

+ 2 - 0
yt-common/src/main/java/com/ytpm/agent/view/AgentNetworkEcpmGroupVO.java

@@ -18,6 +18,8 @@ import java.math.BigDecimal;
 @NoArgsConstructor
 @ApiModel("代理商广告ecpm分组统计类")
 public class AgentNetworkEcpmGroupVO {
+    @ApiModelProperty("分小时统计条数")
+    private int count;
     @ApiModelProperty("分小时")
     private String hour;
     @ApiModelProperty("ecpm")

+ 2 - 0
yt-common/src/main/java/com/ytpm/agent/view/AgentNetworkRevenueGroupVO.java

@@ -18,6 +18,8 @@ import java.math.BigDecimal;
 @NoArgsConstructor
 @ApiModel("代理商广告收益分组统计类")
 public class AgentNetworkRevenueGroupVO {
+    @ApiModelProperty("分小时统计条数")
+    private int count;
     @ApiModelProperty("分小时")
     private String hour;
     @ApiModelProperty("revenue")