Ver Fonte

feat: agent新增用户ecpm分类统计查询接口;

hidewnd há 2 semanas atrás
pai
commit
8dc112038e

+ 7 - 0
yt-agent/agent-service/src/main/java/com/ytpm/controller/YtAppUserController.java

@@ -9,6 +9,7 @@ import com.ytpm.app.param.YtAppUserListParam;
 import com.ytpm.app.view.AppUserStaticsView;
 import com.ytpm.app.view.YtAppUserListView;
 import com.ytpm.app.view.YtUserEcpmListView;
+import com.ytpm.app.view.YtUserEcpmStatisticView;
 import com.ytpm.general.Result;
 import com.ytpm.general.ResultTable;
 import com.ytpm.service.YtAppUserService;
@@ -70,6 +71,12 @@ public class YtAppUserController {
         return appUserService.ecpmList(param);
     }
 
+    @PostMapping("/ecpm/statistic")
+    @ApiOperation(value = "统计用户ecpm数据")
+    public Result<YtUserEcpmStatisticView> ecpmStatistic(@RequestBody AdRecordListParam param){
+        return appUserService.ecpmStatistic(param);
+    }
+
     /**
      * 批量审核
      */

+ 3 - 0
yt-agent/agent-service/src/main/java/com/ytpm/service/YtAppUserService.java

@@ -7,6 +7,7 @@ import com.ytpm.app.param.YtAppUserListParam;
 import com.ytpm.app.view.AppUserStaticsView;
 import com.ytpm.app.view.YtAppUserListView;
 import com.ytpm.app.view.YtUserEcpmListView;
+import com.ytpm.app.view.YtUserEcpmStatisticView;
 import com.ytpm.general.Result;
 import com.ytpm.general.ResultTable;
 import com.ytpm.middle.view.MessageVO;
@@ -51,4 +52,6 @@ public interface YtAppUserService {
      * 批量审核
      */
     Result<String> batchAudit(AuditUserParam auditParam);
+
+    Result<YtUserEcpmStatisticView> ecpmStatistic(AdRecordListParam param);
 }

+ 24 - 10
yt-agent/agent-service/src/main/java/com/ytpm/service/impl/YtAppUserServiceImpl.java

@@ -1,6 +1,7 @@
 package com.ytpm.service.impl;
 
 import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.util.StrUtil;
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
@@ -18,22 +19,16 @@ import com.ytpm.app.param.YtAppUserListParam;
 import com.ytpm.app.view.AppUserStaticsView;
 import com.ytpm.app.view.YtAppUserListView;
 import com.ytpm.app.view.YtUserEcpmListView;
-import com.ytpm.dao.AgentAppMapper;
-import com.ytpm.dao.AgentStaticsMapper;
-import com.ytpm.dao.AppMapper;
-import com.ytpm.dao.MessageMapper;
-import com.ytpm.dao.RiskMapper;
-import com.ytpm.general.PageMeta;
-import com.ytpm.general.RepMessage;
-import com.ytpm.general.Result;
-import com.ytpm.general.ResultTable;
-import com.ytpm.general.StatusCode;
+import com.ytpm.app.view.YtUserEcpmStatisticView;
+import com.ytpm.dao.*;
+import com.ytpm.general.*;
 import com.ytpm.middle.model.YtPlatformMessage;
 import com.ytpm.middle.view.MessageRecordVO;
 import com.ytpm.middle.view.MessageVO;
 import com.ytpm.risk.view.RiskTemplateView;
 import com.ytpm.service.YtAppUserService;
 import com.ytpm.utils.FeignClientInvoker;
+import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
@@ -47,6 +42,7 @@ import java.util.Objects;
 /**
  * App用户业务逻辑
  */
+@Slf4j
 @Service
 public class YtAppUserServiceImpl implements YtAppUserService {
 
@@ -237,6 +233,24 @@ public class YtAppUserServiceImpl implements YtAppUserService {
         return Result.resultOk(RepMessage.CONFIRM_SUCCESS);
     }
 
+    @Override
+    public Result<YtUserEcpmStatisticView> ecpmStatistic(AdRecordListParam param) {
+        YtUserEcpmStatisticView statisticView = null;
+        YtApp ytApp = appMapper.selectPrimary(param.getAppId());
+        YtPlatformUserApp app = agentAppMapper.selectByPrimaryKey(ytApp.getSuperiorId());
+        try {
+            Object object = feignInvoker.invoke(app.getServiceName(), "adRecordsStatistic", param);
+            if (object != null) {
+                JSONObject json = JSONObject.parseObject(JSON.toJSONString(object));
+                statisticView = JSONObject.parseObject(json.getString("data"), YtUserEcpmStatisticView.class);
+            }
+        } catch (Exception e) {
+            log.error(StrUtil.format("远程调用接口[adRecordsStatistic]失败: {}", e.getMessage()), e);
+            return Result.resultErr(e.getMessage());
+        }
+        return Result.resultObjOk(statisticView);
+    }
+
     /**
      * 修改消息已读状态
      */

+ 22 - 0
yt-common/src/main/java/com/ytpm/app/view/YtUserEcpmStatisticView.java

@@ -0,0 +1,22 @@
+package com.ytpm.app.view;
+
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+
+/**
+ * @author hidewnd
+ * @date 2026/1/19 10:29
+ */
+@Data
+public class YtUserEcpmStatisticView implements Serializable {
+
+    @ApiModelProperty("合计收益")
+    private BigDecimal totalRevenue;
+
+    @ApiModelProperty("合计ECPM")
+    private BigDecimal totalEcpm;
+}

+ 4 - 0
yt-ios-lemon/lemon-ios-feign/src/main/java/com/ytpm/lemonios/feign/base/BaseFeign.java

@@ -15,6 +15,7 @@ import com.ytpm.app.param.*;
 import com.ytpm.app.view.RiskYtDyzUserView;
 import com.ytpm.app.view.WxDefaultConfig;
 import com.ytpm.app.view.YtAppUserListView;
+import com.ytpm.app.view.YtUserEcpmStatisticView;
 import com.ytpm.general.Result;
 import com.ytpm.general.ResultTable;
 import com.ytpm.middle.view.DashboardRankingListVO;
@@ -55,6 +56,9 @@ public interface BaseFeign {
     @PostMapping("/user/adRecords/page")
     ResultTable<YtDyzAdRecord> adRecordsPage(@RequestBody AdRecordListParam param);
 
+    @PostMapping("/user/adRecords/statistic")
+    Result<YtUserEcpmStatisticView> adRecordsStatistic(@RequestBody AdRecordListParam param);
+
     @GetMapping("/user/adRecords/count/month")
     Result<Integer> queryRecordMonthCount(@RequestParam(name = "userId") String userId,
                                           @RequestParam(name = "adSourceType", required = false) Integer adSourceType,

+ 12 - 4
yt-ios-lemon/lemon-ios-service/src/main/java/com/ytpm/lemonios/controller/UserController.java

@@ -26,10 +26,7 @@ import com.ytpm.app.param.AppUserQueryParam;
 import com.ytpm.app.param.AppUserTodayBannedParam;
 import com.ytpm.app.param.LoginRiskYtDyzUserParam;
 import com.ytpm.app.param.YtAppUserListParam;
-import com.ytpm.app.view.HourCountView;
-import com.ytpm.app.view.IpAdRecordView;
-import com.ytpm.app.view.RiskYtDyzUserView;
-import com.ytpm.app.view.YtAppUserListView;
+import com.ytpm.app.view.*;
 import com.ytpm.general.RepMessage;
 import com.ytpm.general.Result;
 import com.ytpm.general.ResultTable;
@@ -298,6 +295,17 @@ public class UserController {
         return ResultTable.resultTableOk(new PageInfo<>(adRecords));
     }
 
+    /**
+     * 用户广告数据分类统计
+     */
+    @PostMapping("/adRecords/statistic")
+    public Result<YtUserEcpmStatisticView> adRecordsStatistic(@RequestBody AdRecordListParam param){
+        YtDyzUser user = appUserMapper.selectById(param.getUserId());
+        param.setIosId(user.getIosId());
+        YtUserEcpmStatisticView view = adRecordMapper.selectAdStatistic(param);
+        return Result.resultObjOk(view);
+    }
+
     /**
      * 查询广告记录统计数
      */

+ 3 - 0
yt-ios-lemon/lemon-ios-service/src/main/java/com/ytpm/lemonios/dao/AdRecordMapper.java

@@ -4,6 +4,7 @@ import com.ytpm.agent.param.AdRecordListParam;
 import com.ytpm.app.model.YtDyzAdRecord;
 import com.ytpm.app.param.YtAppUserListParam;
 import com.ytpm.app.view.IpAdRecordView;
+import com.ytpm.app.view.YtUserEcpmStatisticView;
 import com.ytpm.middle.view.AppRevenueHourVO;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
@@ -40,6 +41,8 @@ public interface AdRecordMapper {
 
     List<YtDyzAdRecord> getByUserByParam(AdRecordListParam param);
 
+    YtUserEcpmStatisticView selectAdStatistic(AdRecordListParam param);
+
     /**
      * 查询应用分小时收益数据
      */

+ 17 - 0
yt-ios-lemon/lemon-ios-service/src/main/resources/mapper/AdRecordMapper.xml

@@ -261,6 +261,23 @@
         </if>
         order by finish_time desc
     </select>
+
+    <select id="selectAdStatistic" resultType="com.ytpm.app.view.YtUserEcpmStatisticView">
+        select sum(ecpm) as total_ecpm, sum(revenue) as total_revenue
+        <if test="loginStatus != null and loginStatus == 1">
+            from yt_dyz_ad_record_visitor
+            where (user_id = #{userId} or ios_id = #{iosId})
+        </if>
+        <if test="loginStatus == null or loginStatus != 1">
+            from yt_dyz_ad_record
+            where user_id = #{userId}
+        </if>
+        <if test="adsourceType != null and adsourceType!=888">
+            and ad_source_type = #{adsourceType}
+        </if>
+    </select>
+
+
     <select id="getByUserIds" 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,

+ 4 - 0
yt-question/yt-question-feign/src/main/java/com/ytpm/question/base/BaseFeign.java

@@ -16,6 +16,7 @@ import com.ytpm.app.param.AppUserTodayBannedParam;
 import com.ytpm.app.param.YtAppUserListParam;
 import com.ytpm.app.view.WxDefaultConfig;
 import com.ytpm.app.view.YtAppUserListView;
+import com.ytpm.app.view.YtUserEcpmStatisticView;
 import com.ytpm.general.Result;
 import com.ytpm.general.ResultTable;
 import com.ytpm.middle.view.DashboardRankingListVO;
@@ -67,6 +68,9 @@ public interface BaseFeign {
     @PostMapping("/user/adRecords/page")
     ResultTable<YtDyzAdRecord> adRecordsPage(@RequestBody AdRecordListParam param);
 
+    @PostMapping("/user/adRecords/statistic")
+    Result<YtUserEcpmStatisticView> adRecordsStatistic(@RequestBody AdRecordListParam param);
+
     @GetMapping("/user/adRecords/count/month")
     Result<Integer> queryRecordMonthCount(@RequestParam(name = "userId") String userId,
                                           @RequestParam(name = "adSourceType", required = false) Integer adSourceType,

+ 10 - 0
yt-question/yt-question-service/src/main/java/com/ytpm/question/controller/UserController.java

@@ -22,6 +22,7 @@ import com.ytpm.app.param.AppUserTodayBannedParam;
 import com.ytpm.app.param.YtAppUserListParam;
 import com.ytpm.app.view.HourCountView;
 import com.ytpm.app.view.YtAppUserListView;
+import com.ytpm.app.view.YtUserEcpmStatisticView;
 import com.ytpm.feign.RiskFeign;
 import com.ytpm.general.RepMessage;
 import com.ytpm.general.Result;
@@ -252,6 +253,15 @@ public class UserController {
         return ResultTable.resultTableOk(new PageInfo<>(adrecords));
     }
 
+    /**
+     * 用户广告数据分类统计
+     */
+    @PostMapping("/adRecords/statistic")
+    public Result<YtUserEcpmStatisticView> adRecordsStatistic(@RequestBody AdRecordListParam param){
+        YtUserEcpmStatisticView view = adRecordMapper.selectAdStatistic(param);
+        return Result.resultObjOk(view);
+    }
+
     /**
      * 查询广告记录统计数
      */

+ 3 - 0
yt-question/yt-question-service/src/main/java/com/ytpm/question/dao/AdRecordMapper.java

@@ -3,6 +3,7 @@ package com.ytpm.question.dao;
 import com.ytpm.agent.param.AdRecordListParam;
 import com.ytpm.app.model.YtDyzAdRecord;
 import com.ytpm.app.param.YtAppUserListParam;
+import com.ytpm.app.view.YtUserEcpmStatisticView;
 import com.ytpm.middle.view.AppRevenueHourVO;
 import com.ytpm.question.view.AgentNetworkAgg;
 import org.apache.ibatis.annotations.Mapper;
@@ -35,6 +36,8 @@ public interface AdRecordMapper {
 
     List<YtDyzAdRecord> getByUserByParam(AdRecordListParam param);
 
+    YtUserEcpmStatisticView selectAdStatistic(AdRecordListParam param);
+
     /**
      * 查询用户广告记录统计数
      */

+ 15 - 0
yt-question/yt-question-service/src/main/resources/mapper/AdRecordMapper.xml

@@ -254,6 +254,21 @@
         </if>
         order by finish_time desc
     </select>
+    <select id="selectAdStatistic" resultType="com.ytpm.app.view.YtUserEcpmStatisticView">
+        select sum(ecpm) as total_ecpm, sum(revenue) as total_revenue
+        <if test="loginStatus != null and loginStatus == 1">
+            from yt_dyz_ad_record_visitor
+        </if>
+        <if test="loginStatus == null or loginStatus != 1">
+            from yt_dyz_ad_record
+        </if>
+        where user_id = #{userId}
+        <if test="adsourceType != null and adsourceType!=888">
+            and ad_source_type = #{adsourceType}
+        </if>
+    </select>
+
+
     <select id="getByUserIds" 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