|
|
@@ -1,10 +1,11 @@
|
|
|
package com.ytpm.controller.dyz;
|
|
|
|
|
|
+import cn.hutool.core.collection.CollUtil;
|
|
|
import cn.hutool.core.date.DateUtil;
|
|
|
-import com.github.pagehelper.PageHelper;
|
|
|
import com.github.pagehelper.PageInfo;
|
|
|
import com.ytpm.advertise.enums.AdSourceTypeEnum;
|
|
|
import com.ytpm.app.model.YtDyzAdRecord;
|
|
|
+import com.ytpm.app.model.YtDyzLoginRecord;
|
|
|
import com.ytpm.app.model.YtDyzUser;
|
|
|
import com.ytpm.app.param.AppQueryUserTodayTimeParam;
|
|
|
import com.ytpm.app.param.AppUserParam;
|
|
|
@@ -17,10 +18,15 @@ import com.ytpm.dao.dyz.AdRecordMapper;
|
|
|
import com.ytpm.dao.dyz.AppUserMapper;
|
|
|
import com.ytpm.dao.dyz.LoginRecordMapper;
|
|
|
import com.ytpm.dao.dyz.QuestionMapper;
|
|
|
+import com.ytpm.dao.nofeeds.NFAdRecordMapper;
|
|
|
+import com.ytpm.dao.nofeeds.NFLoginRecordMapper;
|
|
|
+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.general.RepMessage;
|
|
|
import com.ytpm.general.Result;
|
|
|
import com.ytpm.general.ResultTable;
|
|
|
-import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.web.bind.annotation.GetMapping;
|
|
|
import org.springframework.web.bind.annotation.PostMapping;
|
|
|
import org.springframework.web.bind.annotation.RequestBody;
|
|
|
@@ -28,61 +34,117 @@ import org.springframework.web.bind.annotation.RequestMapping;
|
|
|
import org.springframework.web.bind.annotation.RequestParam;
|
|
|
import org.springframework.web.bind.annotation.RestController;
|
|
|
|
|
|
+import javax.annotation.Resource;
|
|
|
import java.math.BigDecimal;
|
|
|
import java.time.LocalDate;
|
|
|
import java.time.LocalDateTime;
|
|
|
import java.time.ZoneId;
|
|
|
import java.time.format.DateTimeFormatter;
|
|
|
+import java.util.ArrayList;
|
|
|
import java.util.Date;
|
|
|
import java.util.List;
|
|
|
import java.util.Map;
|
|
|
+import java.util.Objects;
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
@RestController
|
|
|
@RequestMapping("/user")
|
|
|
public class UserController {
|
|
|
|
|
|
- @Autowired
|
|
|
+ @Resource
|
|
|
private AppUserMapper appUserMapper;
|
|
|
- @Autowired
|
|
|
+ @Resource
|
|
|
+ private QNUserMapper qnUserMapper;
|
|
|
+ @Resource
|
|
|
+ private NFUserMapper nfUserMapper;
|
|
|
+ @Resource
|
|
|
private LoginRecordMapper loginRecordMapper;
|
|
|
- @Autowired
|
|
|
- AdRecordMapper adRecordMapper;
|
|
|
- @Autowired
|
|
|
+ @Resource
|
|
|
+ private QNLoginRecordMapper qnLoginRecordMapper;
|
|
|
+ @Resource
|
|
|
+ private NFLoginRecordMapper nfLoginRecordMapper;
|
|
|
+ @Resource
|
|
|
+ private AdRecordMapper adRecordMapper;
|
|
|
+ @Resource
|
|
|
+ private QNAdRecordMapper qnAdRecordMapper;
|
|
|
+ @Resource
|
|
|
+ private NFAdRecordMapper nfAdRecordMapper;
|
|
|
+ @Resource
|
|
|
private QuestionMapper questionMapper;
|
|
|
|
|
|
private static final DateTimeFormatter DATE_TIME_FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
|
|
|
|
|
|
/**
|
|
|
* 查询app 所有玩家
|
|
|
+ * 汇聚分库应用
|
|
|
*/
|
|
|
@PostMapping("/queryAll")
|
|
|
public ResultTable<YtAppUserListView> queryAll(@RequestBody YtAppUserListParam param) {
|
|
|
- PageHelper.startPage(param.getPage(), param.getLimit());
|
|
|
- List<YtAppUserListView> dyzUsers = appUserMapper.queryAll(param);
|
|
|
- if (dyzUsers.isEmpty()) return ResultTable.resultTableOk(new PageInfo<YtAppUserListView>(dyzUsers));
|
|
|
- List<YtDyzAdRecord> adRecords = adRecordMapper.getByUserIds(
|
|
|
- dyzUsers.stream().map(YtAppUserListView::getUserId).collect(Collectors.joining(",")));
|
|
|
+ //查询主应用
|
|
|
+ List<YtAppUserListView> resultList = new ArrayList<>();
|
|
|
+ List<YtAppUserListView> dyzUserList = appUserMapper.queryAll(param);
|
|
|
+ List<YtAppUserListView> qnUserList = qnUserMapper.queryAll(param);
|
|
|
+ List<YtAppUserListView> nfUserList = nfUserMapper.queryAll(param);
|
|
|
+ if (CollUtil.isNotEmpty(dyzUserList)) {
|
|
|
+ resultList.addAll(dyzUserList);
|
|
|
+ }
|
|
|
+ if (CollUtil.isNotEmpty(qnUserList)) {
|
|
|
+ resultList.addAll(qnUserList);
|
|
|
+ }
|
|
|
+ if (CollUtil.isNotEmpty(nfUserList)) {
|
|
|
+ resultList.addAll(nfUserList);
|
|
|
+ }
|
|
|
+ int total = resultList.size()/param.getLimit();
|
|
|
+ long a = resultList.size() % param.getLimit();
|
|
|
+ if(resultList.size() % param.getLimit() != 0){
|
|
|
+ total++;
|
|
|
+ }
|
|
|
+ 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());
|
|
|
+ dyzUserList.clear();
|
|
|
+ qnUserList.clear();
|
|
|
+ nfUserList.clear();
|
|
|
+ resultList.clear();
|
|
|
+ String collect = result.stream().map(YtAppUserListView::getUserId).collect(Collectors.joining(","));
|
|
|
+
|
|
|
+ List<YtDyzAdRecord> adRecords = adRecordMapper.getByUserIds(collect);
|
|
|
+ List<YtDyzAdRecord> qnAdRecords = qnAdRecordMapper.getByUserIds(collect);
|
|
|
+ List<YtDyzAdRecord> nfAdRecords = nfAdRecordMapper.getByUserIds(collect);
|
|
|
+ if(CollUtil.isNotEmpty(qnAdRecords)){
|
|
|
+ adRecords.addAll(qnAdRecords);
|
|
|
+ }
|
|
|
+ if(CollUtil.isNotEmpty(nfAdRecords)){
|
|
|
+ adRecords.addAll(nfAdRecords);
|
|
|
+ }
|
|
|
+ List<YtDyzLoginRecord> dyzLogins = loginRecordMapper.getLoginRecordByIds(collect);
|
|
|
+ List<YtDyzLoginRecord> qnLogins = qnLoginRecordMapper.getLoginRecordByIds(collect);
|
|
|
+ List<YtDyzLoginRecord> nfLogins = nfLoginRecordMapper.getLoginRecordByIds(collect);
|
|
|
+
|
|
|
+ if(CollUtil.isNotEmpty(qnLogins)){
|
|
|
+ dyzLogins.addAll(qnLogins);
|
|
|
+ }
|
|
|
+ if(CollUtil.isNotEmpty(nfLogins)){
|
|
|
+ dyzLogins.addAll(nfLogins);
|
|
|
+ }
|
|
|
Map<String, List<YtDyzAdRecord>> userAdMap = adRecords.stream().collect(
|
|
|
Collectors.groupingBy(YtDyzAdRecord::getUserId));
|
|
|
- setUserExtInfo(dyzUsers,userAdMap);
|
|
|
- return ResultTable.resultTableOk(new PageInfo<YtAppUserListView>(dyzUsers));
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * 根据时间统计收益
|
|
|
- */
|
|
|
- @PostMapping("/getRevenueByTime")
|
|
|
- public BigDecimal getRevenueByTime(@RequestBody YtAppUserListParam param) {
|
|
|
- return adRecordMapper.getRevenueByTime(param);
|
|
|
+ Map<String, List<YtDyzLoginRecord>> loginMap = dyzLogins.stream().collect(
|
|
|
+ Collectors.groupingBy(YtDyzLoginRecord::getUserId));
|
|
|
+ setUserExtInfo(result,userAdMap,loginMap);
|
|
|
+ return ResultTable.resultTableOk(result , (long) totalSize,param.getLimit(),param.getPage(),total);
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
- * 设置用户扩展信息
|
|
|
+ * 设置视频记录和登录信息
|
|
|
*/
|
|
|
- private void setUserExtInfo(List<YtAppUserListView> dyzUsers, Map<String, List<YtDyzAdRecord>> userAdMap) {
|
|
|
- for (YtAppUserListView user : dyzUsers) {
|
|
|
- user.setLoginRecordList(loginRecordMapper.getLoginRecords(user.getUserId()));
|
|
|
+ private void setUserExtInfo(List<YtAppUserListView> result, Map<String, List<YtDyzAdRecord>> userAdMap,Map<String, List<YtDyzLoginRecord>> loginMap) {
|
|
|
+ for (YtAppUserListView user : result) {
|
|
|
+ if(loginMap.containsKey(user.getUserId())){
|
|
|
+ user.setLoginRecordList(loginMap.get(user.getUserId()));
|
|
|
+ }
|
|
|
//获取今日收益 | 今日视频播放数
|
|
|
if (userAdMap.containsKey(user.getUserId())) {
|
|
|
List<YtDyzAdRecord> ytDyzAdRecords = userAdMap.get(user.getUserId());
|
|
|
@@ -98,6 +160,28 @@ public class UserController {
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 根据时间统计收益
|
|
|
+ */
|
|
|
+ @PostMapping("/getRevenueByTime")
|
|
|
+ public BigDecimal getRevenueByTime(@RequestBody YtAppUserListParam param) {
|
|
|
+ BigDecimal result = new BigDecimal(0);
|
|
|
+ BigDecimal dyzRevenue = adRecordMapper.getRevenueByTime(param);
|
|
|
+ if(Objects.nonNull(dyzRevenue)){
|
|
|
+ result = result.add(dyzRevenue);
|
|
|
+ }
|
|
|
+ BigDecimal qnRevenue = qnAdRecordMapper.getRevenueByTime(param);
|
|
|
+ if(Objects.nonNull(qnRevenue)){
|
|
|
+ result = result.add(qnRevenue);
|
|
|
+ }
|
|
|
+ BigDecimal nfRevenue = nfAdRecordMapper.getRevenueByTime(param);
|
|
|
+ if(Objects.nonNull(nfRevenue)){
|
|
|
+ result = result.add(nfRevenue);
|
|
|
+ }
|
|
|
+ return result;
|
|
|
+ }
|
|
|
+
|
|
|
/**
|
|
|
* 计算广告记录列表中今日的收益
|
|
|
*
|