|
|
@@ -4,30 +4,45 @@ import cn.hutool.core.bean.BeanUtil;
|
|
|
import cn.hutool.core.collection.CollUtil;
|
|
|
import com.github.pagehelper.PageHelper;
|
|
|
import com.github.pagehelper.PageInfo;
|
|
|
+import com.ytpm.advertise.param.ComprehensiveReportParam;
|
|
|
+import com.ytpm.advertise.view.ComprehensiveAdSourceReport;
|
|
|
+import com.ytpm.advertise.view.ComprehensiveAppReport;
|
|
|
+import com.ytpm.advertise.view.ComprehensiveCommonView;
|
|
|
+import com.ytpm.advertise.view.ComprehensiveReportView;
|
|
|
+import com.ytpm.advertise.view.ReportAdSourceView;
|
|
|
import com.ytpm.agent.model.YtApp;
|
|
|
import com.ytpm.agent.view.AgentUserInfo;
|
|
|
import com.ytpm.app.model.YtAppUserLoginRecord;
|
|
|
+import com.ytpm.app.model.YtDyzAdRecord;
|
|
|
import com.ytpm.app.model.YtDyzLoginRecord;
|
|
|
import com.ytpm.app.model.YtDyzUser;
|
|
|
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.AgentStaticsMapper;
|
|
|
import com.ytpm.dao.AppMapper;
|
|
|
import com.ytpm.dao.AppUserLoginMapper;
|
|
|
import com.ytpm.dao.AppUserMapper;
|
|
|
import com.ytpm.dao.AppVideoWatchMapper;
|
|
|
import com.ytpm.dao.AppWithdrawMapper;
|
|
|
+import com.ytpm.feign.AdvertiseFeign;
|
|
|
import com.ytpm.feign.AppFeign;
|
|
|
+import com.ytpm.general.Result;
|
|
|
import com.ytpm.general.ResultTable;
|
|
|
import com.ytpm.service.YtAppUserService;
|
|
|
+import com.ytpm.util.DateUtil;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
import javax.annotation.Resource;
|
|
|
+import java.time.LocalDate;
|
|
|
import java.util.ArrayList;
|
|
|
import java.util.Arrays;
|
|
|
+import java.util.Collections;
|
|
|
import java.util.List;
|
|
|
+import java.util.Map;
|
|
|
import java.util.Objects;
|
|
|
+import java.util.stream.Collectors;
|
|
|
|
|
|
/**
|
|
|
* App用户业务逻辑
|
|
|
@@ -49,6 +64,8 @@ public class YtAppUserServiceImpl implements YtAppUserService {
|
|
|
private AgentStaticsMapper staticsMapper;
|
|
|
@Resource
|
|
|
private AppFeign appFeign;
|
|
|
+ @Resource
|
|
|
+ private AdvertiseFeign advertiseFeign;
|
|
|
|
|
|
|
|
|
/**
|
|
|
@@ -114,6 +131,60 @@ public class YtAppUserServiceImpl implements YtAppUserService {
|
|
|
return ResultTable.resultTableOk(new PageInfo<>(list));
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 查询用户的ecpm
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public ResultTable<YtUserEcpmListView> ecpmList(String userId) {
|
|
|
+ ResultTable<YtDyzAdRecord> table = appFeign.adRecords(userId);
|
|
|
+ List<YtDyzAdRecord> data = table.getData();
|
|
|
+ if(CollUtil.isNotEmpty(data)){
|
|
|
+ return ResultTable.resultTableOk(new PageInfo<>(data));
|
|
|
+ }
|
|
|
+ //远程调用获取广告报告
|
|
|
+ ComprehensiveReportView<ComprehensiveAdSourceReport> resultData = getComprehensiveReport(data);
|
|
|
+ List<ComprehensiveAdSourceReport> records = resultData.getRecords();
|
|
|
+ //组装数据返回前端
|
|
|
+ combineEcpmData(records,data);
|
|
|
+ return ResultTable.resultTableOk(new PageInfo<>(data));
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 组装ECPM数据返回
|
|
|
+ */
|
|
|
+ private void combineEcpmData(List<ComprehensiveAdSourceReport> records, List<YtDyzAdRecord> data) {
|
|
|
+ Map<Integer,ComprehensiveAdSourceReport> adSourceReportMap = records.stream().collect(
|
|
|
+ Collectors.toMap(s->s.getAdSource().getAdsource_id(), O->O));
|
|
|
+ for (YtDyzAdRecord datum : data) {
|
|
|
+ if(!adSourceReportMap.containsKey(datum.getAdSourceId()))continue;
|
|
|
+ ComprehensiveAdSourceReport report = adSourceReportMap.get(datum.getAdSourceId());
|
|
|
+ datum.setRequest(report.getRequest());
|
|
|
+ datum.setFillrate(report.getFillrate());
|
|
|
+ datum.setImpression(report.getImpression());
|
|
|
+ datum.setClick(report.getClick());
|
|
|
+ datum.setEcpm(report.getEcpm());
|
|
|
+ datum.setRevenue(report.getRevenue());
|
|
|
+ datum.setImpression_api(report.getImpression_api());
|
|
|
+ datum.setClick_api(report.getClick_api());
|
|
|
+ datum.setEcpm_api(report.getEcpm_api());
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 远程调用广告API获取报告
|
|
|
+ */
|
|
|
+ private ComprehensiveReportView<ComprehensiveAdSourceReport> getComprehensiveReport(List<YtDyzAdRecord> data) {
|
|
|
+ List<Integer> collect = data.stream().map(YtDyzAdRecord::getAdSourceId).collect(Collectors.toList());
|
|
|
+ ComprehensiveReportParam param = new ComprehensiveReportParam();
|
|
|
+ param.setStartdate(DateUtil.getDateNum(LocalDate.now().minusDays(7)));
|
|
|
+ param.setEnddate(DateUtil.getDateNum(LocalDate.now()));
|
|
|
+ param.setTime_zone("UTC-8");
|
|
|
+ param.setAdsource_id_list(collect);
|
|
|
+ param.setGroup_by(Collections.singletonList("adsource"));
|
|
|
+ Result<ComprehensiveReportView> result = advertiseFeign.comprehensive(param);
|
|
|
+ return result.getData();
|
|
|
+ }
|
|
|
+
|
|
|
/**
|
|
|
* 查询用户当日播放视频总数
|
|
|
*/
|