Ver código fonte

代理商平台顶部数据显示
晓岚的 list 判空bug

marxjaw 3 meses atrás
pai
commit
43dbbf46bc

+ 24 - 0
yt-agent/agent-service/src/main/java/com/ytpm/controller/AgentIndexController.java

@@ -9,15 +9,18 @@ import com.ytpm.advertise.param.HourReportParam;
 import com.ytpm.advertise.view.ComprehensiveAppReport;
 import com.ytpm.advertise.view.HourReportRes;
 import com.ytpm.advertise.view.HourReportView;
+import com.ytpm.agent.model.YtApp;
 import com.ytpm.agent.param.AppListParam;
 import com.ytpm.agent.param.DateRangeParams;
 import com.ytpm.agent.param.IndexResParam;
 import com.ytpm.agent.view.AgentAppView;
 import com.ytpm.agent.view.AgentChannelView;
+import com.ytpm.agent.view.AgentTopCountView;
 import com.ytpm.agent.view.AgentUserInfo;
 import com.ytpm.agent.view.IndexHourReportView;
 import com.ytpm.app.param.AppQueryUserTodayTimeParam;
 import com.ytpm.app.param.AppUserQueryParam;
+import com.ytpm.dao.AppMapper;
 import com.ytpm.dao.ChannelMapper;
 import com.ytpm.feign.AdvertiseFeign;
 import com.ytpm.feign.AppFeign;
@@ -32,6 +35,7 @@ import io.swagger.annotations.ApiOperation;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.core.annotation.AuthenticationPrincipal;
+import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
@@ -80,6 +84,26 @@ public class AgentIndexController {
 
     @Resource
     private GetTakuInfoUtil getTakuInfoUtil;
+    @Resource
+    private AppMapper appMapper;
+
+
+    /**
+     * 查询顶部数据展示
+     */
+    @ApiOperation("查询顶部数据展示")
+    @GetMapping("/getTopCount")
+    public Result<AgentTopCountView> getTopCount(@ApiIgnore @AuthenticationPrincipal AgentUserInfo userInfo){
+        //查询用户所有应用
+        List<YtApp> ytApps = appMapper.queryAll(userInfo.getUserId());
+        if(CollUtil.isEmpty(ytApps)){
+            return Result.resultObjOk(new AgentTopCountView());
+        }
+        String appIds = ytApps.stream().map(YtApp::getAppId).collect(Collectors.joining(","));
+        //查询广告数 查询用户数 查询预估收益 查询风控数
+        AgentTopCountView view = appFeign.getAppTopCount(appIds);
+        return Result.resultObjOk(view);
+    }
 
     /**
      * 查询广告平台收益

+ 4 - 0
yt-app/app-feign/src/main/java/com/ytpm/feign/AppFeign.java

@@ -1,5 +1,6 @@
 package com.ytpm.feign;
 
+import com.ytpm.agent.view.AgentTopCountView;
 import com.ytpm.app.model.YtAppDefaultConfig;
 import com.ytpm.app.model.YtDyzAdRecord;
 import com.ytpm.app.model.YtDyzUser;
@@ -64,6 +65,9 @@ public interface AppFeign {
     @GetMapping("/ad/getAdCount")
     Map<String, BigDecimal> getAdCount(@RequestParam(name = "appIds")String appIds);
 
+    @GetMapping("/ad/getAppTopCount")
+    AgentTopCountView getAppTopCount(@RequestParam(name = "appIds")String appIds);
+
     @GetMapping("/ad/getAppRankingList")
     DashboardRankingListVO queryRankingList(@RequestParam(name = "sortBy") Integer sortBy,@RequestParam(name = "limit") Integer limit);
 

+ 7 - 0
yt-app/app-service/src/main/java/com/ytpm/controller/dyz/AdController.java

@@ -1,5 +1,6 @@
 package com.ytpm.controller.dyz;
 
+import com.ytpm.agent.view.AgentTopCountView;
 import com.ytpm.app.param.DyzAdRecordParam;
 import com.ytpm.general.Result;
 import com.ytpm.middle.view.DashboardRankingListVO;
@@ -69,4 +70,10 @@ public class AdController {
     public DashboardRevenueVO revenueStatics(@RequestParam(name = "apkIds")String apkIds){
         return adService.revenueStatics(apkIds);
     }
+
+    @ApiOperation("查询渠道商顶部数据")
+    @GetMapping("/getAppTopCount")
+    public AgentTopCountView getAppTopCount(@RequestParam(name = "appIds")String appIds){
+        return adService.getAppTopCount(appIds);
+    }
 }

+ 13 - 0
yt-app/app-service/src/main/java/com/ytpm/dao/dyz/AdRecordMapper.java

@@ -1,6 +1,7 @@
 package com.ytpm.dao.dyz;
 
 import com.ytpm.app.model.YtDyzAdRecord;
+import com.ytpm.middle.view.DashboardAppRevenueVO;
 import org.apache.ibatis.annotations.Param;
 import org.mapstruct.Mapper;
 
@@ -21,4 +22,16 @@ public interface AdRecordMapper {
      * 查询激励视频记录
      */
     List<YtDyzAdRecord> getByUserIds(@Param("userIds") String userIds);
+
+    /**
+     * 查询应用分小时收益数据
+     * @param appId
+     * @return
+     */
+    DashboardAppRevenueVO getHourRevenue(@Param("appId") String appId);
+
+    /**
+     * 根据应用统计激励广告数
+     */
+    int countByAppIds(@Param("appIds")String appIds);
 }

+ 15 - 0
yt-app/app-service/src/main/java/com/ytpm/dao/dyz/AppUserMapper.java

@@ -130,4 +130,19 @@ public interface AppUserMapper {
      * 查询用户排行榜数据
      */
     List<UserRankingListVO> getUserRanking(@Param("sortBy") int sortBy,@Param("limit") int limit);
+
+    /**
+     * 根据应用查询用户数量
+     */
+    int countUserByAppIds(@Param("appIds")String appIds);
+
+    /**
+     * 根据应用统计预估收益
+     */
+    BigDecimal countRevenueByAppIds(@Param("appIds")String appIds);
+
+    /**
+     * 根据应用查询风控用户数
+     */
+    int countBannedByAppIds(@Param("appIds")String appIds);
 }

+ 6 - 0
yt-app/app-service/src/main/java/com/ytpm/service/dyz/AdService.java

@@ -1,5 +1,6 @@
 package com.ytpm.service.dyz;
 
+import com.ytpm.agent.view.AgentTopCountView;
 import com.ytpm.app.param.DyzAdRecordParam;
 import com.ytpm.general.Result;
 import com.ytpm.middle.view.DashboardRankingListVO;
@@ -27,4 +28,9 @@ public interface AdService {
      * 查询各渠道应用收益分时统计
      */
     DashboardRevenueVO revenueStatics(String apkIds);
+
+    /**
+     * 查询代理商顶部数据统计
+     */
+    AgentTopCountView getAppTopCount(String appIds);
 }

+ 25 - 1
yt-app/app-service/src/main/java/com/ytpm/service/dyz/impl/AdServiceImpl.java

@@ -4,6 +4,7 @@ import cn.hutool.core.util.IdUtil;
 import com.ytpm.advertise.enums.AdPlatformTypeEnum;
 import com.ytpm.advertise.enums.AdSourceTypeEnum;
 import com.ytpm.agent.enums.UserStatusEnum;
+import com.ytpm.agent.view.AgentTopCountView;
 import com.ytpm.app.model.YtDyzAdRecord;
 import com.ytpm.app.model.YtDyzUser;
 import com.ytpm.app.param.DyzAdRecordParam;
@@ -15,6 +16,7 @@ import com.ytpm.general.Result;
 import com.ytpm.general.StatusCode;
 import com.ytpm.handle.CustomerException;
 import com.ytpm.middle.view.AppRankingListVO;
+import com.ytpm.middle.view.DashboardAppRevenueVO;
 import com.ytpm.middle.view.DashboardRankingListVO;
 import com.ytpm.middle.view.DashboardRevenueVO;
 import com.ytpm.middle.view.UserRankingListVO;
@@ -100,13 +102,35 @@ public class AdServiceImpl implements AdService {
      */
     @Override
     public DashboardRevenueVO revenueStatics(String apkIds) {
+        DashboardRevenueVO vo = new DashboardRevenueVO();
         //查询出各应用的用户及收益数据
         List<String> appIdList = Arrays.asList(apkIds.split(","));
+        int index = appIdList.size();
+        index--;
         // 由于子表数据庞大导致range查询低于const
-        CountDownLatch countDownLatch = new CountDownLatch(appIdList.size());
+        CountDownLatch countDownLatch = new CountDownLatch(index);
+        do {
+            String appId = appIdList.get(index);
+            //根据应用ID查询收益数据及个小时数据
+            DashboardAppRevenueVO appRevenueVO =  adRecordMapper.getHourRevenue(appId);
+
+        }while (index<0);
         return null;
     }
 
+    /**
+     * 查询代理商顶部数据
+     */
+    @Override
+    public AgentTopCountView getAppTopCount(String appIds) {
+        AgentTopCountView view = new AgentTopCountView();
+        view.setAdCount(adRecordMapper.countByAppIds(appIds));
+        view.setUserCount(appUserMapper.countUserByAppIds(appIds));
+        view.setRevenue(appUserMapper.countRevenueByAppIds(appIds));
+        view.setRiskCount(appUserMapper.countBannedByAppIds(appIds));
+        return view;
+    }
+
     /**
      * 保存记录
      *  始终创建新的事务以保障子方法的独立事务

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

@@ -42,6 +42,15 @@
          #{appId}
         )
     </insert>
+    <select id="countByAppIds" resultType="java.lang.Integer">
+        select
+            count(record_id)
+        from yt_dyz_ad_record
+        where ad_source_type = 1 and app_id in
+        <foreach collection="appIds.split(',')" separator="," item="item" open="(" close=")">
+            #{item}
+        </foreach>
+    </select>
     <select id="getByUserId" resultType="com.ytpm.app.model.YtDyzAdRecord">
         select
             record_id, user_id,app_id, nick_name, placement_id, ad_source_id, revenue, network_form_id, network_name, network_placement_id, finish_time, begin_time,result_json,ad_source_type,ad_source_index,ecpm
@@ -62,4 +71,7 @@
               </foreach>
         order by finish_time
     </select>
+    <select id="getHourRevenue" resultType="com.ytpm.middle.view.DashboardAppRevenueVO">
+
+    </select>
 </mapper>

+ 27 - 0
yt-app/app-service/src/main/resources/mapper/dyz/AppUserMapper.xml

@@ -413,4 +413,31 @@
             sum( ar.revenue ) DESC
         limit #{limit}
     </select>
+    <select id="countUserByAppIds" resultType="java.lang.Integer">
+        select
+            count(user_id)
+        from yt_dyz_user
+        where app_id in
+        <foreach collection="appIds.split(',')" separator="," item="item" open="(" close=")">
+            #{item}
+        </foreach>
+    </select>
+    <select id="countRevenueByAppIds" resultType="java.math.BigDecimal">
+        select
+            sum(total_income)
+        from yt_dyz_user
+        where app_id in
+        <foreach collection="appIds.split(',')" separator="," item="item" open="(" close=")">
+            #{item}
+        </foreach>
+    </select>
+    <select id="countBannedByAppIds" resultType="java.lang.Integer">
+        select
+            count(user_id)
+        from yt_dyz_user
+        where user_status > 1 and app_id in
+        <foreach collection="appIds.split(',')" separator="," item="item" open="(" close=")">
+            #{item}
+        </foreach>
+    </select>
 </mapper>

+ 28 - 0
yt-common/src/main/java/com/ytpm/agent/view/AgentTopCountView.java

@@ -0,0 +1,28 @@
+package com.ytpm.agent.view;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.math.BigDecimal;
+
+/**
+ * @author Administrator
+ * @date 2025/7/29 18:01
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+@ApiModel("代理商顶部数据统计")
+public class AgentTopCountView {
+    @ApiModelProperty("总广告数")
+    private int adCount;
+    @ApiModelProperty("总用户数")
+    private int userCount;
+    @ApiModelProperty("封禁人数")
+    private int riskCount;
+    @ApiModelProperty("预估收益")
+    private BigDecimal revenue;
+}

+ 33 - 0
yt-common/src/main/java/com/ytpm/middle/view/DashboardAppRevenueVO.java

@@ -0,0 +1,33 @@
+package com.ytpm.middle.view;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.math.BigDecimal;
+import java.util.Map;
+
+/**
+ * @author marx
+ * @date 2025/7/29 17:25
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+@ApiModel("应用收益统计数据")
+public class DashboardAppRevenueVO {
+    @ApiModelProperty("应用ID")
+    private String appId;
+    @ApiModelProperty("应用ID")
+    private String appName;
+    @ApiModelProperty("今日收益")
+    private BigDecimal todayRevenue;
+    @ApiModelProperty("昨日收益")
+    private BigDecimal yesterdayRevenue;
+    @ApiModelProperty("当月收益")
+    private BigDecimal monthRevenue;
+    @ApiModelProperty("分小时收益集合")
+    private Map<String,Integer> hourRevenueMap;
+}

+ 9 - 13
yt-common/src/main/java/com/ytpm/middle/view/DashboardRevenueVO.java

@@ -7,23 +7,19 @@ import lombok.Data;
 import lombok.NoArgsConstructor;
 
 import java.math.BigDecimal;
-import java.util.Map;
+import java.util.List;
 
 @Data
 @AllArgsConstructor
 @NoArgsConstructor
 @ApiModel("收益统计返回数据")
 public class DashboardRevenueVO {
-    @ApiModelProperty("应用ID")
-    private String appId;
-    @ApiModelProperty("应用ID")
-    private String appName;
-    @ApiModelProperty("今日收益")
-    private BigDecimal todayRevenue;
-    @ApiModelProperty("昨日收益")
-    private BigDecimal yesterdayRevenue;
-    @ApiModelProperty("当月收益")
-    private BigDecimal monthRevenue;
-    @ApiModelProperty("分小时收益集合")
-    private Map<String,Integer> hourRevenueMap;
+    @ApiModelProperty("今日总收益")
+    private BigDecimal todayTotalRevenue;
+    @ApiModelProperty("昨日总收益")
+    private BigDecimal yesterdayTotalRevenue;
+    @ApiModelProperty("当月总收益")
+    private BigDecimal monthTotalRevenue;
+    @ApiModelProperty("各应用收益列表")
+    private List<DashboardAppRevenueVO> appRevenueList;
 }

+ 1 - 1
yt-risk/risk-manage/src/main/java/com/ytpm/controller/RiskManageController.java

@@ -134,7 +134,7 @@ public class RiskManageController {
         List<YtPlatformBanned> bannedList =
                 riskService.queryBannedRecordGroupByUserId(appUserQueryParam.getStartTime(), appUserQueryParam.getEndTime(),appUserQueryParam.getAppIdList());
 
-        if (bannedList!=null || !bannedList.isEmpty()){
+        if (CollUtil.isNotEmpty(bannedList)){
             AppUserTodayBannedParam appUserTodayBannedParam = new AppUserTodayBannedParam();
             appUserTodayBannedParam.setStartTime(appUserQueryParam.getStartTime());
             appUserTodayBannedParam.setEndTime(appUserQueryParam.getEndTime());