瀏覽代碼

聚合多数据源数据查询

marxjaw 2 月之前
父節點
當前提交
031aae709e
共有 19 個文件被更改,包括 572 次插入135 次删除
  1. 56 77
      yt-app/app-service/src/main/java/com/ytpm/controller/dyz/UserController.java
  2. 5 0
      yt-app/app-service/src/main/java/com/ytpm/dao/dyz/AdRecordMapper.java
  3. 20 0
      yt-app/app-service/src/main/java/com/ytpm/dao/nofeeds/NFAdRecordMapper.java
  4. 1 1
      yt-app/app-service/src/main/java/com/ytpm/dao/nofeeds/NFLoginRecordMapper.java
  5. 15 0
      yt-app/app-service/src/main/java/com/ytpm/dao/nofeeds/NFUserMapper.java
  6. 21 0
      yt-app/app-service/src/main/java/com/ytpm/dao/qnjz/QNAdRecordMapper.java
  7. 1 1
      yt-app/app-service/src/main/java/com/ytpm/dao/qnjz/QNLoginRecordMapper.java
  8. 15 0
      yt-app/app-service/src/main/java/com/ytpm/dao/qnjz/QNUserMapper.java
  9. 6 0
      yt-app/app-service/src/main/java/com/ytpm/dao/qnmjz/QnmAdRecordMapper.java
  10. 2 0
      yt-app/app-service/src/main/java/com/ytpm/dao/qnmjz/QnmLoginRecordMapper.java
  11. 101 53
      yt-app/app-service/src/main/java/com/ytpm/service/dyz/impl/AdServiceImpl.java
  12. 18 0
      yt-app/app-service/src/main/resources/mapper/dyz/AdRecordMapper.xml
  13. 108 0
      yt-app/app-service/src/main/resources/mapper/nofeeds/NFAdRecordMapper.xml
  14. 27 0
      yt-app/app-service/src/main/resources/mapper/nofeeds/NFUserMapper.xml
  15. 108 0
      yt-app/app-service/src/main/resources/mapper/qnjz/QNAdRecordMapper.xml
  16. 27 0
      yt-app/app-service/src/main/resources/mapper/qnjz/QNUserMapper.xml
  17. 32 0
      yt-app/app-service/src/main/resources/mapper/qnmjz/QnmAdRecordMapper.xml
  18. 9 1
      yt-app/app-service/src/main/resources/mapper/qnmjz/QnmLoginRecordMapper.xml
  19. 0 2
      yt-common/src/main/java/com/ytpm/app/model/YtDyzAdRecord.java

+ 56 - 77
yt-app/app-service/src/main/java/com/ytpm/controller/dyz/UserController.java

@@ -24,6 +24,9 @@ import com.ytpm.dao.nofeeds.NFUserMapper;
 import com.ytpm.dao.qnjz.QNAdRecordMapper;
 import com.ytpm.dao.qnjz.QNLoginRecordMapper;
 import com.ytpm.dao.qnjz.QNUserMapper;
+import com.ytpm.dao.qnmjz.QnmAdRecordMapper;
+import com.ytpm.dao.qnmjz.QnmLoginRecordMapper;
+import com.ytpm.dao.qnmjz.QnmUserMapper;
 import com.ytpm.general.RepMessage;
 import com.ytpm.general.Result;
 import com.ytpm.general.ResultTable;
@@ -58,18 +61,24 @@ public class UserController {
     @Resource
     private NFUserMapper nfUserMapper;
     @Resource
+    private QnmUserMapper qnmUserMapper;
+    @Resource
     private LoginRecordMapper loginRecordMapper;
     @Resource
     private QNLoginRecordMapper qnLoginRecordMapper;
     @Resource
     private NFLoginRecordMapper nfLoginRecordMapper;
     @Resource
+    private QnmLoginRecordMapper qnmLoginRecordMapper;
+    @Resource
     private AdRecordMapper adRecordMapper;
     @Resource
     private QNAdRecordMapper qnAdRecordMapper;
     @Resource
     private NFAdRecordMapper nfAdRecordMapper;
     @Resource
+    private QnmAdRecordMapper qnmAdRecordMapper;
+    @Resource
     private QuestionMapper questionMapper;
 
     private static final DateTimeFormatter DATE_TIME_FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
@@ -85,6 +94,7 @@ public class UserController {
         List<YtAppUserListView> dyzUserList = appUserMapper.queryAll(param);
         List<YtAppUserListView> qnUserList = qnUserMapper.queryAll(param);
         List<YtAppUserListView> nfUserList = nfUserMapper.queryAll(param);
+        List<YtAppUserListView> qnmUserList = qnmUserMapper.queryAll(param);
         if (CollUtil.isNotEmpty(dyzUserList)) {
             resultList.addAll(dyzUserList);
         }
@@ -94,6 +104,9 @@ public class UserController {
         if (CollUtil.isNotEmpty(nfUserList)) {
             resultList.addAll(nfUserList);
         }
+        if (CollUtil.isNotEmpty(qnmUserList)) {
+            resultList.addAll(qnmUserList);
+        }
         int total = resultList.size()/param.getLimit();
         long a =  resultList.size() % param.getLimit();
         if(resultList.size() % param.getLimit() != 0){
@@ -101,9 +114,19 @@ public class UserController {
         }
         int totalSize = resultList.size();
         //判断最后一页时返回剩余数据
-        List<YtAppUserListView> result = param.getPage().compareTo(total)>=0?
-                resultList.stream().limit(a).collect(Collectors.toList()):
-                resultList.stream().limit(param.getLimit()).collect(Collectors.toList());
+        List<YtAppUserListView> result;
+        if(param.getPage().compareTo(total)>=0){
+            result = resultList.stream().limit(a).collect(Collectors.toList());
+        }else {
+            if(param.getPage()>1){
+                int skip = (param.getPage() - 1) *param.getLimit();
+                result = resultList.stream().skip(skip).limit(param.getLimit()).collect(Collectors.toList());
+            }else{
+                result = resultList.stream().limit(param.getLimit()).collect(Collectors.toList());
+            }
+
+        }
+                ;
         dyzUserList.clear();
         qnUserList.clear();
         nfUserList.clear();
@@ -113,15 +136,20 @@ public class UserController {
         List<YtDyzAdRecord> adRecords = adRecordMapper.getByUserIds(collect);
         List<YtDyzAdRecord> qnAdRecords = qnAdRecordMapper.getByUserIds(collect);
         List<YtDyzAdRecord> nfAdRecords = nfAdRecordMapper.getByUserIds(collect);
+        List<YtDyzAdRecord> qnmAdRecords = qnmAdRecordMapper.getByUserIds(collect);
         if(CollUtil.isNotEmpty(qnAdRecords)){
             adRecords.addAll(qnAdRecords);
         }
         if(CollUtil.isNotEmpty(nfAdRecords)){
             adRecords.addAll(nfAdRecords);
         }
+        if(CollUtil.isNotEmpty(qnmAdRecords)){
+            adRecords.addAll(qnmAdRecords);
+        }
         List<YtDyzLoginRecord> dyzLogins = loginRecordMapper.getLoginRecordByIds(collect);
         List<YtDyzLoginRecord> qnLogins = qnLoginRecordMapper.getLoginRecordByIds(collect);
         List<YtDyzLoginRecord> nfLogins = nfLoginRecordMapper.getLoginRecordByIds(collect);
+        List<YtDyzLoginRecord> qnmLogins = qnmLoginRecordMapper.getLoginRecordByIds(collect);
 
         if(CollUtil.isNotEmpty(qnLogins)){
             dyzLogins.addAll(qnLogins);
@@ -129,6 +157,9 @@ public class UserController {
         if(CollUtil.isNotEmpty(nfLogins)){
             dyzLogins.addAll(nfLogins);
         }
+        if(CollUtil.isNotEmpty(qnmLogins)){
+            dyzLogins.addAll(qnmLogins);
+        }
         Map<String, List<YtDyzAdRecord>> userAdMap = adRecords.stream().collect(
                 Collectors.groupingBy(YtDyzAdRecord::getUserId));
         Map<String, List<YtDyzLoginRecord>> loginMap = dyzLogins.stream().collect(
@@ -179,83 +210,14 @@ public class UserController {
         if(Objects.nonNull(nfRevenue)){
             result = result.add(nfRevenue);
         }
-        return result;
-    }
-
-    /**
-     * 计算广告记录列表中今日的收益
-     *
-     * @param records 广告记录列表
-     * @return 今日收益总额(BigDecimal)
-     */
-    public static BigDecimal calculateTodayIncome(List<YtDyzAdRecord> records) {
-        // 空列表快速返回
-        if (records == null || records.isEmpty()) {
-            return BigDecimal.ZERO;
-        }
-
-        // 获取今天的日期范围
-        LocalDate today = LocalDate.now();
-        LocalDateTime startOfDay = today.atStartOfDay();
-        LocalDateTime endOfDay = today.plusDays(1).atStartOfDay();
-
-        // 预计算今天的日期字符串前缀(优化性能)
-        String todayPrefix = today.format(DateTimeFormatter.ISO_DATE) + " ";
-
-        return calculateTodayIncome(records, startOfDay, endOfDay, todayPrefix);
-    }
-
-    /**
-     * 计算广告记录列表中今日的收益(带日期范围参数,适用于批量处理)
-     *
-     * @param records     广告记录列表
-     * @param startOfDay  今日开始时间
-     * @param endOfDay    今日结束时间
-     * @param todayPrefix 今日日期前缀(格式:"yyyy-MM-dd ")
-     * @return 今日收益总额(BigDecimal)
-     */
-    public static BigDecimal calculateTodayIncome(
-            List<YtDyzAdRecord> records,
-            LocalDateTime startOfDay,
-            LocalDateTime endOfDay,
-            String todayPrefix) {
-
-        // 空列表快速返回
-        if (records == null || records.isEmpty()) {
-            return BigDecimal.ZERO;
-        }
-
-        BigDecimal totalToday = BigDecimal.ZERO;
-
-        for (YtDyzAdRecord record : records) {
-            String dateStr = record.getFinishTime();
-
-            // 1. 日期字符串是否存在且以今日日期开头
-            if (dateStr == null || !dateStr.startsWith(todayPrefix)) {
-                continue;
-            }
-            try {
-                // 2. 解析日期时间
-                LocalDateTime recordTime = LocalDateTime.parse(dateStr, DATE_TIME_FORMATTER);
-
-                // 3. 检查是否在今日范围内
-                if (recordTime.isBefore(startOfDay) || recordTime.isAfter(endOfDay.minusNanos(1))) {
-                    continue;
-                }
-                // 4. 累加
-                BigDecimal revenue = record.getRevenue();
-                if (revenue != null) {
-                    totalToday = totalToday.add(revenue);
-                }
-            } catch (Exception e) {
-                e.printStackTrace();
-            }
+        BigDecimal qnmRevenue = qnmAdRecordMapper.getRevenueByTime(param);
+        if(Objects.nonNull(qnmRevenue)){
+            result = result.add(qnmRevenue);
         }
-        return totalToday;
+        return result;
     }
 
 
-
     /**
      * 主键查询用户信息
      */
@@ -301,7 +263,24 @@ public class UserController {
      */
     @GetMapping("/adRecords")
     public ResultTable<YtDyzAdRecord> adRecords(@RequestParam(name = "userId",required = true) String userId,@RequestParam(name = "adsourceType",required = false)Integer adsourceType) {
-        return ResultTable.resultTableOk(new PageInfo<YtDyzAdRecord>(adRecordMapper.getByUserId(userId,adsourceType)));
+        List<YtDyzAdRecord> result = new ArrayList<>();
+        List<YtDyzAdRecord> adrecords = adRecordMapper.getByUserId(userId, adsourceType);
+        if(CollUtil.isNotEmpty(adrecords)){
+            result.addAll(adrecords);
+        }
+        List<YtDyzAdRecord> qnrecords = qnAdRecordMapper.getByUserId(userId, adsourceType);
+        if(CollUtil.isNotEmpty(qnrecords)){
+            result.addAll(qnrecords);
+        }
+        List<YtDyzAdRecord> nfrecords = nfAdRecordMapper.getByUserId(userId, adsourceType);
+        if(CollUtil.isNotEmpty(nfrecords)){
+            result.addAll(nfrecords);
+        }
+        List<YtDyzAdRecord> qnmRecords = qnmAdRecordMapper.getByUserId(userId, adsourceType);
+        if(CollUtil.isNotEmpty(qnmRecords)){
+            result.addAll(qnmRecords);
+        }
+        return ResultTable.resultTableOk(new PageInfo<YtDyzAdRecord>(result));
     }
 
     @PostMapping("/queryUserByTime")

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

@@ -74,4 +74,9 @@ public interface AdRecordMapper {
      * 根据时间统计收益
      */
     BigDecimal getRevenueByTime(YtAppUserListParam param);
+
+    /**
+     * 查询今日广告
+     */
+    List<YtDyzAdRecord> getTodayRecord(@Param("appIds")String appIds,@Param("type")Integer type);
 }

+ 20 - 0
yt-app/app-service/src/main/java/com/ytpm/dao/nofeeds/NFAdRecordMapper.java

@@ -1,7 +1,10 @@
 package com.ytpm.dao.nofeeds;
 
+import com.ytpm.agent.view.AgentAdGroupStaticsVO;
 import com.ytpm.app.model.YtDyzAdRecord;
 import com.ytpm.app.param.YtAppUserListParam;
+import com.ytpm.middle.view.NetWorkEcpmVO;
+import com.ytpm.middle.view.NetWorkRevenueVO;
 import org.apache.ibatis.annotations.Param;
 import org.mapstruct.Mapper;
 
@@ -27,4 +30,21 @@ public interface NFAdRecordMapper {
      * 根据时间统计收益
      */
     BigDecimal getRevenueByTime(YtAppUserListParam param);
+
+    int countByAppIds(@Param("appIds")String appIds);
+    /**
+     * 根据广告平台ID获取收益
+     */
+    List<NetWorkRevenueVO> getRevenueByIds(@Param("appIds") String appIds, @Param("type") int type, @Param("networkIds") String networkIds);
+    /**
+     * 根据广告平台ID获取平均ecpm
+     */
+    List<NetWorkEcpmVO> getEcpmByIds(@Param("appIds")String appIds, @Param("type")int type, @Param("networkIds") String networkIds);
+
+    /**
+     * 查询广告平台分组统计
+     */
+    List<AgentAdGroupStaticsVO> getAdGroupStatics(@Param("appIds")String appIds);
+
+    List<YtDyzAdRecord> getTodayRecord(@Param("appIds") String appIds,@Param("type")Integer type);
 }

+ 1 - 1
yt-app/app-service/src/main/java/com/ytpm/dao/nofeeds/NFLoginRecordMapper.java

@@ -21,5 +21,5 @@ public interface NFLoginRecordMapper {
 
     List<String> queryLoginCount(AppUserQueryParam appUserQueryParam);
 
-    List<YtDyzLoginRecord> getLoginRecordByIds(String collect);
+    List<YtDyzLoginRecord> getLoginRecordByIds(@Param("userIds") String userIds);
 }

+ 15 - 0
yt-app/app-service/src/main/java/com/ytpm/dao/nofeeds/NFUserMapper.java

@@ -130,4 +130,19 @@ public interface NFUserMapper {
      * 查询用户排行榜数据
      */
     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);
 }

+ 21 - 0
yt-app/app-service/src/main/java/com/ytpm/dao/qnjz/QNAdRecordMapper.java

@@ -1,7 +1,10 @@
 package com.ytpm.dao.qnjz;
 
+import com.ytpm.agent.view.AgentAdGroupStaticsVO;
 import com.ytpm.app.model.YtDyzAdRecord;
 import com.ytpm.app.param.YtAppUserListParam;
+import com.ytpm.middle.view.NetWorkEcpmVO;
+import com.ytpm.middle.view.NetWorkRevenueVO;
 import org.apache.ibatis.annotations.Param;
 import org.mybatis.spring.annotation.MapperScan;
 
@@ -27,4 +30,22 @@ public interface QNAdRecordMapper {
      * 根据时间统计收益
      */
     BigDecimal getRevenueByTime(YtAppUserListParam param);
+
+    int countByAppIds(@Param("appIds")String appIds);
+
+    /**
+     * 根据广告平台ID获取平均ecpm
+     */
+    List<NetWorkEcpmVO> getEcpmByIds(@Param("appIds")String appIds, @Param("type")int type, @Param("networkIds") String networkIds);
+
+    /**
+     * 查询广告平台分组统计
+     */
+    List<AgentAdGroupStaticsVO> getAdGroupStatics(@Param("appIds")String appIds);
+    /**
+     * 根据广告平台ID获取收益
+     */
+    List<NetWorkRevenueVO> getRevenueByIds(@Param("appIds") String appIds, @Param("type") int type, @Param("networkIds") String networkIds);
+
+    List<YtDyzAdRecord> getTodayRecord(@Param("appIds") String appIds,@Param("type")Integer type);
 }

+ 1 - 1
yt-app/app-service/src/main/java/com/ytpm/dao/qnjz/QNLoginRecordMapper.java

@@ -21,5 +21,5 @@ public interface QNLoginRecordMapper {
 
     List<String> queryLoginCount(AppUserQueryParam appUserQueryParam);
 
-    List<YtDyzLoginRecord> getLoginRecordByIds(String collect);
+    List<YtDyzLoginRecord> getLoginRecordByIds(@Param("userIds") String userIds);
 }

+ 15 - 0
yt-app/app-service/src/main/java/com/ytpm/dao/qnjz/QNUserMapper.java

@@ -130,4 +130,19 @@ public interface QNUserMapper {
      * 查询用户排行榜数据
      */
     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/dao/qnmjz/QnmAdRecordMapper.java

@@ -1,9 +1,11 @@
 package com.ytpm.dao.qnmjz;
 
 import com.ytpm.app.model.YtDyzAdRecord;
+import com.ytpm.app.param.YtAppUserListParam;
 import org.apache.ibatis.annotations.Param;
 import org.mybatis.spring.annotation.MapperScan;
 
+import java.math.BigDecimal;
 import java.util.List;
 
 @MapperScan
@@ -21,4 +23,8 @@ public interface QnmAdRecordMapper {
      * 查询激励视频记录
      */
     List<YtDyzAdRecord> getByUserIds(@Param("userIds") String userIds);
+    /**
+     * 根据时间统计收益
+     */
+    BigDecimal getRevenueByTime(YtAppUserListParam param);
 }

+ 2 - 0
yt-app/app-service/src/main/java/com/ytpm/dao/qnmjz/QnmLoginRecordMapper.java

@@ -20,4 +20,6 @@ public interface QnmLoginRecordMapper {
     List<YtDyzLoginRecord> getLoginRecords(@Param("userId")String userId);
 
     List<String> queryLoginCount(AppUserQueryParam appUserQueryParam);
+
+    List<YtDyzLoginRecord> getLoginRecordByIds(@Param("userIds") String userIds);
 }

+ 101 - 53
yt-app/app-service/src/main/java/com/ytpm/service/dyz/impl/AdServiceImpl.java

@@ -1,6 +1,8 @@
 package com.ytpm.service.dyz.impl;
 
 import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.date.DatePattern;
+import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.util.IdUtil;
 import cn.hutool.core.util.RandomUtil;
 import com.ytpm.advertise.enums.AdPlatformTypeEnum;
@@ -15,6 +17,10 @@ import com.ytpm.app.model.YtDyzUser;
 import com.ytpm.app.param.DyzAdRecordParam;
 import com.ytpm.dao.dyz.AdRecordMapper;
 import com.ytpm.dao.dyz.AppUserMapper;
+import com.ytpm.dao.nofeeds.NFAdRecordMapper;
+import com.ytpm.dao.nofeeds.NFUserMapper;
+import com.ytpm.dao.qnjz.QNAdRecordMapper;
+import com.ytpm.dao.qnjz.QNUserMapper;
 import com.ytpm.feign.RiskFeign;
 import com.ytpm.general.RepMessage;
 import com.ytpm.general.Result;
@@ -32,18 +38,20 @@ import com.ytpm.middle.view.NetWorkRevenueVO;
 import com.ytpm.middle.view.UserRankingListVO;
 import com.ytpm.service.dyz.AdService;
 import org.springframework.beans.BeanUtils;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Qualifier;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.cloud.context.config.annotation.RefreshScope;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Propagation;
 import org.springframework.transaction.annotation.Transactional;
 
+import javax.annotation.Resource;
 import java.math.BigDecimal;
+import java.math.RoundingMode;
+import java.sql.Date;
+import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
 import java.util.ArrayList;
 import java.util.Arrays;
-import java.util.Collections;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
@@ -55,12 +63,19 @@ import java.util.stream.Collectors;
 @RefreshScope
 public class AdServiceImpl implements AdService {
 
-    @Autowired
+    @Resource
     private AdRecordMapper adRecordMapper;
-    @Autowired
+    @Resource
+    private QNAdRecordMapper qnAdRecordMapper;
+    @Resource
+    private NFAdRecordMapper nfAdRecordMapper;
+    @Resource
     private AppUserMapper appUserMapper;
-    @Qualifier("com.ytpm.feign.RiskFeign")
-    @Autowired
+    @Resource
+    private QNUserMapper qnUserMapper;
+    @Resource
+    private NFUserMapper nfUserMapper;
+    @Resource
     private RiskFeign riskFeign;
     @Value("${risk.config.banned.tips}")
     private String tips;
@@ -172,10 +187,26 @@ public class AdServiceImpl implements AdService {
     @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));
+        int dyzAdCount = adRecordMapper.countByAppIds(appIds);
+        int qnAdCount = qnAdRecordMapper.countByAppIds(appIds);
+        int nfAdCount = nfAdRecordMapper.countByAppIds(appIds);
+        view.setAdCount(dyzAdCount+qnAdCount+nfAdCount);
+        int dyzUserCount = appUserMapper.countUserByAppIds(appIds);
+        int qnUserCount = qnUserMapper.countUserByAppIds(appIds);
+        int nfUserCount = nfUserMapper.countUserByAppIds(appIds);
+        view.setUserCount(dyzUserCount+qnUserCount+nfUserCount);
+        BigDecimal totalRevenue = new BigDecimal(0);
+        BigDecimal dyzRevenue = appUserMapper.countRevenueByAppIds(appIds);
+        if(Objects.nonNull(dyzRevenue)){totalRevenue = totalRevenue.add(dyzRevenue);}
+        BigDecimal qnRevenue = qnUserMapper.countRevenueByAppIds(appIds);
+        if(Objects.nonNull(qnRevenue)){totalRevenue = totalRevenue.add(qnRevenue);}
+        BigDecimal nfRevenue = nfUserMapper.countRevenueByAppIds(appIds);
+        if(Objects.nonNull(nfRevenue)){totalRevenue = totalRevenue.add(nfRevenue);}
+        view.setRevenue(totalRevenue);
+        int bannedCount = appUserMapper.countBannedByAppIds(appIds);
+        int qnBannedCount = qnUserMapper.countBannedByAppIds(appIds);
+        int nfBannedCount = nfUserMapper.countBannedByAppIds(appIds);
+        view.setRiskCount(bannedCount+qnBannedCount+nfBannedCount);
         return view;
     }
 
@@ -209,49 +240,66 @@ public class AdServiceImpl implements AdService {
     @Override
     public List<AgentAdGroupStaticsVO> getAgentProfit(String appIds) {
         //查询今日的 按小时 按广告平台分组数据
-        List<AgentAdGroupStaticsVO> vos = adRecordMapper.getAdGroupStatics(appIds);
-        String networkIds = vos.stream().map(AgentAdGroupStaticsVO::getNetowrkId).collect(Collectors.joining(","));
-        //根据广告平台查询 收益分组 1-今日  2-昨日 3-本月
-        List<NetWorkRevenueVO> revenueToday = adRecordMapper.getRevenueByIds(appIds, 1, networkIds);
-        List<NetWorkRevenueVO> revenueYestDay = adRecordMapper.getRevenueByIds(appIds, 2, networkIds);
-        List<NetWorkRevenueVO> revenueMonth = adRecordMapper.getRevenueByIds(appIds, 3, networkIds);
-        Map<String, BigDecimal> revenueTodayMap = revenueToday.stream().collect(
-                Collectors.toMap(NetWorkRevenueVO::getNetWorkId, NetWorkRevenueVO::getNetWorkRevenue));
-        Map<String, BigDecimal> revenueYestdayMap = revenueYestDay.stream().collect(
-                Collectors.toMap(NetWorkRevenueVO::getNetWorkId, NetWorkRevenueVO::getNetWorkRevenue));
-        Map<String, BigDecimal> revenueMonthMap = revenueMonth.stream().collect(
-                Collectors.toMap(NetWorkRevenueVO::getNetWorkId, NetWorkRevenueVO::getNetWorkRevenue));
-        //根据广告平台查询 ecpm分组 1-今日  2-昨日 3-本月
-        List<NetWorkEcpmVO> ecpmToday = adRecordMapper.getEcpmByIds(appIds, 1, networkIds);
-        List<NetWorkEcpmVO> ecpmYestDay = adRecordMapper.getEcpmByIds(appIds, 2, networkIds);
-        List<NetWorkEcpmVO> ecpmMonth = adRecordMapper.getEcpmByIds(appIds, 3, networkIds);
-        Map<String, BigDecimal> ecpmTodayMap = ecpmToday.stream().collect(
-                Collectors.toMap(NetWorkEcpmVO::getNetWorkId, NetWorkEcpmVO::getNetWorkEcpm));
-        Map<String, BigDecimal> ecpmYestdayMap = ecpmYestDay.stream().collect(
-                Collectors.toMap(NetWorkEcpmVO::getNetWorkId, NetWorkEcpmVO::getNetWorkEcpm));
-        Map<String, BigDecimal> ecpmMonthMap = ecpmMonth.stream().collect(
-                Collectors.toMap(NetWorkEcpmVO::getNetWorkId, NetWorkEcpmVO::getNetWorkEcpm));
-        for (AgentAdGroupStaticsVO vo : vos) {
-            //今日收益
-            List<AgentNetworkRevenueGroupVO> networkRevenueGroups = vo.getNetworkRevenueGroups();
-            if(CollUtil.isNotEmpty(networkRevenueGroups)){
-                Map<String, BigDecimal> revenueMap = networkRevenueGroups.stream().collect(
-                        Collectors.toMap(AgentNetworkRevenueGroupVO::getHour, AgentNetworkRevenueGroupVO::getRevenue));
-                vo.setTodayHourRevenueMap(revenueMap);
+        List<AgentAdGroupStaticsVO> vos = new ArrayList<>();
+        // 需要查询各 app 今日的广告记录 然后在内存中按照  广告平台分组 计算平均ecpm值, 并且设置每小时的
+        List<YtDyzAdRecord> records = new ArrayList<>();
+        List<YtDyzAdRecord> dyzRecords = adRecordMapper.getTodayRecord(appIds,1);
+        if(CollUtil.isNotEmpty(dyzRecords)){records.addAll(dyzRecords);}
+        List<YtDyzAdRecord> qnRecords = qnAdRecordMapper.getTodayRecord(appIds,1);
+        if(CollUtil.isNotEmpty(qnRecords)){records.addAll(qnRecords);}
+        List<YtDyzAdRecord> nfRecords = nfAdRecordMapper.getTodayRecord(appIds,1);
+        if(CollUtil.isNotEmpty(nfRecords)){records.addAll(nfRecords);}
+        //昨日所有
+        List<YtDyzAdRecord> yestRecords = new ArrayList<>();
+        List<YtDyzAdRecord> dyzYestRecords = adRecordMapper.getTodayRecord(appIds,2);
+        if(CollUtil.isNotEmpty(dyzYestRecords)){yestRecords.addAll(dyzYestRecords);}
+        List<YtDyzAdRecord> qnYestRecords = qnAdRecordMapper.getTodayRecord(appIds,2);
+        if(CollUtil.isNotEmpty(qnYestRecords)){yestRecords.addAll(qnYestRecords);}
+        List<YtDyzAdRecord> nfYestRecords = nfAdRecordMapper.getTodayRecord(appIds,2);
+        if(CollUtil.isNotEmpty(nfYestRecords)){yestRecords.addAll(nfYestRecords);}
+        //本月所有
+        List<YtDyzAdRecord> monthRecords = new ArrayList<>();
+        List<YtDyzAdRecord> dyzMonthRecords = adRecordMapper.getTodayRecord(appIds,3);
+        if(CollUtil.isNotEmpty(dyzMonthRecords)){monthRecords.addAll(dyzMonthRecords);}
+        List<YtDyzAdRecord> qnMonthRecords = qnAdRecordMapper.getTodayRecord(appIds,3);
+        if(CollUtil.isNotEmpty(qnMonthRecords)){monthRecords.addAll(qnMonthRecords);}
+        List<YtDyzAdRecord> nfMonthRecords = nfAdRecordMapper.getTodayRecord(appIds,3);
+        if(CollUtil.isNotEmpty(nfMonthRecords)){monthRecords.addAll(nfMonthRecords);}
+        //广告平台分组
+        Map<String, List<YtDyzAdRecord>> networkMap = records.stream().collect(
+                Collectors.groupingBy(YtDyzAdRecord::getNetworkFormId));
+        //按广告平台分组统计昨天和本月的收益&ecpm
+        BigDecimal yestRevenue = yestRecords.stream().map(YtDyzAdRecord::getRevenue).reduce(BigDecimal.ZERO, BigDecimal::add);
+        BigDecimal yestEcpm = yestRecords.stream().map(YtDyzAdRecord::getEcpm).reduce(BigDecimal.ZERO, BigDecimal::add);
+        BigDecimal monthRevenue = monthRecords.stream().map(YtDyzAdRecord::getRevenue).reduce(BigDecimal.ZERO, BigDecimal::add);
+        BigDecimal monthEcpm = monthRecords.stream().map(YtDyzAdRecord::getEcpm).reduce(BigDecimal.ZERO, BigDecimal::add);
+        AgentAdGroupStaticsVO vo;
+        for (Map.Entry<String, List<YtDyzAdRecord>> adEntry : networkMap.entrySet()) {
+            vo = new AgentAdGroupStaticsVO();
+            vo.setNetowrkId(adEntry.getKey());
+            vo.setNetowrkName(networkMap.get(adEntry.getKey()).get(0).getNetworkName());
+            //设置收益
+            vo.setTodayRevenue(adEntry.getValue().stream().map(YtDyzAdRecord::getRevenue).reduce(BigDecimal.ZERO, BigDecimal::add));
+            vo.setYesterdayRevenue(yestRevenue);
+            vo.setMonthRevenue(monthRevenue);
+            //设置ecpm
+            BigDecimal totalEcpm = adEntry.getValue().stream().map(YtDyzAdRecord::getEcpm).reduce(BigDecimal.ZERO, BigDecimal::add);
+            vo.setTodayEcpm(totalEcpm.divide(new BigDecimal(adEntry.getValue().size()), 2, RoundingMode.HALF_UP));
+            vo.setYesterdayEcpm(yestEcpm.divide(new BigDecimal(yestRecords.size()),2,RoundingMode.HALF_UP));
+            vo.setMonthEcpm(monthEcpm.divide(new BigDecimal(monthRecords.size()),2,RoundingMode.HALF_UP));
+            //设置分小时报表
+            Map<LocalDateTime, List<YtDyzAdRecord>> hourMap = adEntry.getValue().stream().collect(Collectors.groupingBy(s ->
+                    DateUtil.parse(s.getFinishTime(),"yyyy-MM-dd HH").toLocalDateTime()));
+            Map<String, BigDecimal> ecpmMap = new HashMap<>();
+            Map<String, BigDecimal> revenueMap = new HashMap<>();
+            for (Map.Entry<LocalDateTime, List<YtDyzAdRecord>> entry : hourMap.entrySet()) {
+                BigDecimal reduce = entry.getValue().stream().map(YtDyzAdRecord::getEcpm).reduce(BigDecimal.ZERO, BigDecimal::add);
+                ecpmMap.put(entry.getKey().toString(),reduce.divide(new BigDecimal(entry.getValue().size()), RoundingMode.HALF_UP));
+                revenueMap.put(entry.getKey().toString(),hourMap.get(entry.getKey()).stream().map(YtDyzAdRecord::getRevenue).reduce(BigDecimal.ZERO, BigDecimal::add));
             }
-            vo.setTodayRevenue(revenueTodayMap.get(vo.getNetowrkId()));
-            vo.setYesterdayRevenue(revenueYestdayMap.get(vo.getNetowrkId()));
-            vo.setMonthRevenue(revenueMonthMap.get(vo.getNetowrkId()));
-            //今日ecpm
-            List<AgentNetworkEcpmGroupVO> networkEcpmGroups = vo.getNetworkEcpmGroups();
-            if(CollUtil.isNotEmpty(networkEcpmGroups)){
-                Map<String, BigDecimal> ecpmMap = networkEcpmGroups.stream().collect(Collectors.toMap(AgentNetworkEcpmGroupVO::getHour, s->s.getEcpm().divide(BigDecimal.valueOf(s.getCount()),2,BigDecimal.ROUND_HALF_UP)));
-                //统计每个小时的计数加起来为全天总次数
-                vo.setTodayHourEcpmMap(ecpmMap);
-            }
-            vo.setTodayEcpm(ecpmTodayMap.get(vo.getNetowrkId()));
-            vo.setYesterdayEcpm(ecpmYestdayMap.get(vo.getNetowrkId()));
-            vo.setMonthEcpm(ecpmMonthMap.get(vo.getNetowrkId()));
+            vo.setTodayHourEcpmMap(ecpmMap);
+            vo.setTodayHourRevenueMap(revenueMap);
+            vos.add(vo);
         }
         return vos;
     }

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

@@ -296,4 +296,22 @@
         </if>
         group by netWorkId
     </select>
+    <select id="getTodayRecord" resultType="com.ytpm.app.model.YtDyzAdRecord">
+        select
+            record_id, user_id, app_id, nick_name, placement_id, ad_source_id, ad_source_type, ad_source_index, revenue, ecpm, network_form_id, network_name, network_placement_id, finish_time, begin_time, result_json
+        from yt_dyz_ad_record
+        where app_id in
+        <foreach collection="appIds.split(',')" separator="," item="item" open="(" close=")">
+            #{item}
+        </foreach>
+        <if test="type != null and type ==1">
+            and DATE(finish_time) = DATE(now())
+        </if>
+        <if test="type != null and type ==2">
+            and DATE(finish_time) = DATE_SUB(CURDATE(), INTERVAL 1 DAY)
+        </if>
+        <if test="type != null and type ==3">
+            and DATE_FORMAT(finish_time, '%Y-%m') = DATE_FORMAT(CURDATE(), '%Y-%m')
+        </if>
+    </select>
 </mapper>

+ 108 - 0
yt-app/app-service/src/main/resources/mapper/nofeeds/NFAdRecordMapper.xml

@@ -61,6 +61,15 @@
         </foreach>
         order by finish_time
     </select>
+    <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="getRevenueByTime" resultType="java.math.BigDecimal">
         select
         sum(ar.revenue)
@@ -93,4 +102,103 @@
             </if>
         </where>
     </select>
+    <select id="getRevenueByIds" resultType="com.ytpm.middle.view.NetWorkRevenueVO">
+        SELECT
+        network_form_id networkId,
+        network_name networkName,
+        sum( revenue ) netWorkRevenue
+        FROM
+        yt_dyz_ad_record
+        WHERE
+        network_form_id in
+        <foreach collection="networkIds.split(',')" separator="," item="item" open="(" close=")">
+            #{item}
+        </foreach>
+        and app_id in
+        <foreach collection="appIds.split(',')" separator="," item="item" open="(" close=")">
+            #{item}
+        </foreach>
+        <if test="type != null and type ==1">
+            and DATE(finish_time) = DATE(now())
+        </if>
+        <if test="type != null and type ==2">
+            and DATE(finish_time) = DATE_SUB(CURDATE(), INTERVAL 1 DAY)
+        </if>
+        <if test="type != null and type ==3">
+            and DATE_FORMAT(finish_time, '%Y-%m') = DATE_FORMAT(CURDATE(), '%Y-%m')
+        </if>
+        group by networkId
+    </select>
+    <select id="getEcpmByIds" resultType="com.ytpm.middle.view.NetWorkEcpmVO">
+        SELECT
+        network_form_id netWorkId,
+        network_name netWorkName,
+        avg( ecpm ) networkEcpm
+        FROM
+        yt_dyz_ad_record
+        WHERE
+        network_form_id in
+        <foreach collection="networkIds.split(',')" separator="," item="item" open="(" close=")">
+            #{item}
+        </foreach>
+        and app_id in
+        <foreach collection="appIds.split(',')" separator="," item="item" open="(" close=")">
+            #{item}
+        </foreach>
+        <if test="type != null and type ==1">
+            and DATE(finish_time) = DATE(now())
+        </if>
+        <if test="type != null and type ==2">
+            and DATE(finish_time) = DATE_SUB(CURDATE(), INTERVAL 1 DAY)
+        </if>
+        <if test="type != null and type ==3">
+            and DATE_FORMAT(finish_time, '%Y-%m') = DATE_FORMAT(CURDATE(), '%Y-%m')
+        </if>
+        group by netWorkId
+    </select>
+    <resultMap id="AdGroupStaticsMap" type="com.ytpm.agent.view.AgentAdGroupStaticsVO">
+        <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" />
+            <result column="ad_source_type" property="adSourceType" />
+        </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" />
+            <result column="ad_source_type" property="adSourceType" />
+        </collection>
+    </resultMap>
+    <select id="getTodayRecord" resultType="com.ytpm.app.model.YtDyzAdRecord">
+        select
+        record_id, user_id, app_id, nick_name, placement_id, ad_source_id, ad_source_type, ad_source_index, revenue, ecpm, network_form_id, network_name, network_placement_id, finish_time, begin_time, result_json
+        from yt_dyz_ad_record
+        where app_id in
+        <foreach collection="appIds.split(',')" separator="," item="item" open="(" close=")">
+            #{item}
+        </foreach>
+        and DATE_FORMAT(finish_time, '%Y-%m-%d') = current_date()
+    </select>
+    <select id="getAdGroupStatics" resultMap="AdGroupStaticsMap">
+        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,
+        ad_source_type
+        FROM
+        yt_dyz_ad_record
+        WHERE
+        app_id in
+        <foreach collection="appIds.split(',')" separator="," item="item" open="(" close=")">
+            #{item}
+        </foreach>
+        AND DATE( finish_time ) = DATE(now())
+        group by network_form_id,`hour`
+    </select>
 </mapper>

+ 27 - 0
yt-app/app-service/src/main/resources/mapper/nofeeds/NFUserMapper.xml

@@ -383,6 +383,33 @@
         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>
     <select id="getUserRanking" resultType="com.ytpm.middle.view.UserRankingListVO">
         SELECT
         u.user_id,

+ 108 - 0
yt-app/app-service/src/main/resources/mapper/qnjz/QNAdRecordMapper.xml

@@ -61,6 +61,15 @@
         </foreach>
         order by finish_time
     </select>
+    <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="getRevenueByTime" resultType="java.math.BigDecimal">
         select
         sum(ar.revenue)
@@ -93,4 +102,103 @@
             </if>
         </where>
     </select>
+    <select id="getTodayRecord" resultType="com.ytpm.app.model.YtDyzAdRecord">
+        select
+        record_id, user_id, app_id, nick_name, placement_id, ad_source_id, ad_source_type, ad_source_index, revenue, ecpm, network_form_id, network_name, network_placement_id, finish_time, begin_time, result_json
+        from yt_dyz_ad_record
+        where app_id in
+        <foreach collection="appIds.split(',')" separator="," item="item" open="(" close=")">
+            #{item}
+        </foreach>
+        and DATE_FORMAT(finish_time, '%Y-%m-%d') = current_date()
+    </select>
+    <select id="getRevenueByIds" resultType="com.ytpm.middle.view.NetWorkRevenueVO">
+        SELECT
+        network_form_id networkId,
+        network_name networkName,
+        sum( revenue ) netWorkRevenue
+        FROM
+        yt_dyz_ad_record
+        WHERE
+        network_form_id in
+        <foreach collection="networkIds.split(',')" separator="," item="item" open="(" close=")">
+            #{item}
+        </foreach>
+        and app_id in
+        <foreach collection="appIds.split(',')" separator="," item="item" open="(" close=")">
+            #{item}
+        </foreach>
+        <if test="type != null and type ==1">
+            and DATE(finish_time) = DATE(now())
+        </if>
+        <if test="type != null and type ==2">
+            and DATE(finish_time) = DATE_SUB(CURDATE(), INTERVAL 1 DAY)
+        </if>
+        <if test="type != null and type ==3">
+            and DATE_FORMAT(finish_time, '%Y-%m') = DATE_FORMAT(CURDATE(), '%Y-%m')
+        </if>
+        group by networkId
+    </select>
+    <select id="getEcpmByIds" resultType="com.ytpm.middle.view.NetWorkEcpmVO">
+        SELECT
+        network_form_id netWorkId,
+        network_name netWorkName,
+        avg( ecpm ) networkEcpm
+        FROM
+        yt_dyz_ad_record
+        WHERE
+        network_form_id in
+        <foreach collection="networkIds.split(',')" separator="," item="item" open="(" close=")">
+            #{item}
+        </foreach>
+        and app_id in
+        <foreach collection="appIds.split(',')" separator="," item="item" open="(" close=")">
+            #{item}
+        </foreach>
+        <if test="type != null and type ==1">
+            and DATE(finish_time) = DATE(now())
+        </if>
+        <if test="type != null and type ==2">
+            and DATE(finish_time) = DATE_SUB(CURDATE(), INTERVAL 1 DAY)
+        </if>
+        <if test="type != null and type ==3">
+            and DATE_FORMAT(finish_time, '%Y-%m') = DATE_FORMAT(CURDATE(), '%Y-%m')
+        </if>
+        group by netWorkId
+    </select>
+    <resultMap id="AdGroupStaticsMap" type="com.ytpm.agent.view.AgentAdGroupStaticsVO">
+        <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" />
+            <result column="ad_source_type" property="adSourceType" />
+        </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" />
+            <result column="ad_source_type" property="adSourceType" />
+        </collection>
+    </resultMap>
+    <select id="getAdGroupStatics" resultMap="AdGroupStaticsMap">
+        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,
+        ad_source_type
+        FROM
+        yt_dyz_ad_record
+        WHERE
+        app_id in
+        <foreach collection="appIds.split(',')" separator="," item="item" open="(" close=")">
+            #{item}
+        </foreach>
+        AND DATE( finish_time ) = DATE(now())
+        group by network_form_id,`hour`
+    </select>
 </mapper>

+ 27 - 0
yt-app/app-service/src/main/resources/mapper/qnjz/QNUserMapper.xml

@@ -383,6 +383,33 @@
             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>
     <select id="getUserRanking" resultType="com.ytpm.middle.view.UserRankingListVO">
         SELECT
             u.user_id,

+ 32 - 0
yt-app/app-service/src/main/resources/mapper/qnmjz/QnmAdRecordMapper.xml

@@ -61,4 +61,36 @@
         </foreach>
         order by finish_time
     </select>
+    <select id="getRevenueByTime" resultType="java.math.BigDecimal">
+        select
+        sum(ar.revenue)
+        from yt_dyz_ad_record ar
+        join yt_dyz_user au on ar.user_id = au.user_id
+        <where>
+            <if test="userId != null and userId !=''">
+                and ar.user_id = #{userId}
+            </if>
+            <if test="nickName != null and nickName !=''">
+                and au.nick_name like concat('%',#{nickName},'%')
+            </if>
+            <if test="ditchId != null">
+                and au.ditch_id = #{ditchId}
+            </if>
+            <if test="userStatus != null">
+                and au.user_status = #{userStatus}
+            </if>
+            <if test="appIds != null and appIds != ''">
+                and ar.app_id in
+                <foreach collection="appIds.split(',')" separator="," item="item" open="(" close=")">
+                    #{item}
+                </foreach>
+            </if>
+            <if test="registryTimeBegin != null ">
+                and DATE_FORMAT(au.registry_time,'%Y-%m-%d') <![CDATA[>=]]> #{registryTimeBegin}
+            </if>
+            <if test="registryTimeEnd != null ">
+                and DATE_FORMAT(au.registry_time,'%Y-%m-%d') <![CDATA[<=]]> #{registryTimeEnd}
+            </if>
+        </where>
+    </select>
 </mapper>

+ 9 - 1
yt-app/app-service/src/main/resources/mapper/qnmjz/QnmLoginRecordMapper.xml

@@ -32,7 +32,15 @@
         from yt_dyz_login_record
         where user_id = #{userId}
     </select>
-
+    <select id="getLoginRecordByIds" resultType="com.ytpm.app.model.YtDyzLoginRecord">
+        select
+        record_id, user_id, login_time, device_brand, device_model, login_ip, operator, ip_addr
+        from yt_dyz_login_record
+        where user_id in
+        <foreach collection="userIds.split(',')" open="(" close=")" separator="," item="item">
+            #{item}
+        </foreach>
+    </select>
     <select id="queryLoginCount" resultType="String">
         select ydlr.user_id
         from yt_dyz_login_record ydlr

+ 0 - 2
yt-common/src/main/java/com/ytpm/app/model/YtDyzAdRecord.java

@@ -1,6 +1,5 @@
 package com.ytpm.app.model;
 
-import com.fasterxml.jackson.annotation.JsonFormat;
 import com.ytpm.advertise.view.ComprehensiveCommonView;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
@@ -10,7 +9,6 @@ import lombok.EqualsAndHashCode;
 import lombok.NoArgsConstructor;
 
 import java.math.BigDecimal;
-import java.util.Date;
 
 @AllArgsConstructor
 @NoArgsConstructor