|
@@ -64,6 +64,8 @@ public class UserAnalyseServiceImpl implements UserAnalyseService {
|
|
// 1. 生成时间轴
|
|
// 1. 生成时间轴
|
|
List<String> dates = generateTimeAxis(reqDto.getFromDate(), reqDto.getToDate(), reqDto.getTimeUnit());
|
|
List<String> dates = generateTimeAxis(reqDto.getFromDate(), reqDto.getToDate(), reqDto.getTimeUnit());
|
|
result.setDates(dates);
|
|
result.setDates(dates);
|
|
|
|
+ LocalDateTime fromDate = getStartTime(reqDto.getFromDate().toString(), "day");
|
|
|
|
+ LocalDateTime toDate = getEndTime(reqDto.getToDate().toString(), "day");
|
|
|
|
|
|
// 2. 处理版本列表(为空时按null处理)
|
|
// 2. 处理版本列表(为空时按null处理)
|
|
List<String> versions = reqDto.getVersion();
|
|
List<String> versions = reqDto.getVersion();
|
|
@@ -84,6 +86,15 @@ public class UserAnalyseServiceImpl implements UserAnalyseService {
|
|
.map(date -> {
|
|
.map(date -> {
|
|
LocalDateTime startTime = getStartTime(date, reqDto.getTimeUnit());
|
|
LocalDateTime startTime = getStartTime(date, reqDto.getTimeUnit());
|
|
LocalDateTime endTime = getEndTime(date, reqDto.getTimeUnit());
|
|
LocalDateTime endTime = getEndTime(date, reqDto.getTimeUnit());
|
|
|
|
+ // 如果startTime早于fromDate
|
|
|
|
+ if (startTime.isBefore(fromDate)) {
|
|
|
|
+ startTime = fromDate;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ // 如果endTime晚于toDate
|
|
|
|
+ if (endTime.isAfter(toDate)) {
|
|
|
|
+ endTime = toDate;
|
|
|
|
+ }
|
|
return statNewUserCount(startTime, endTime, reqDto.getAppId(), version, reqDto.getChannel());
|
|
return statNewUserCount(startTime, endTime, reqDto.getAppId(), version, reqDto.getChannel());
|
|
})
|
|
})
|
|
.collect(Collectors.toList());
|
|
.collect(Collectors.toList());
|
|
@@ -144,6 +155,8 @@ public class UserAnalyseServiceImpl implements UserAnalyseService {
|
|
if (dates.isEmpty()) {
|
|
if (dates.isEmpty()) {
|
|
return page; // 无数据直接返回
|
|
return page; // 无数据直接返回
|
|
}
|
|
}
|
|
|
|
+ LocalDateTime fromDate = getStartTime(reqDto.getFromDate().toString(), "day");
|
|
|
|
+ LocalDateTime toDate = getEndTime(reqDto.getToDate().toString(), "day");
|
|
|
|
|
|
// 获取渠道和版本
|
|
// 获取渠道和版本
|
|
List<String> channel = reqDto.getChannel();
|
|
List<String> channel = reqDto.getChannel();
|
|
@@ -158,6 +171,15 @@ public class UserAnalyseServiceImpl implements UserAnalyseService {
|
|
// 获取时间范围
|
|
// 获取时间范围
|
|
LocalDateTime startTime = getStartTime(date, reqDto.getTimeUnit());
|
|
LocalDateTime startTime = getStartTime(date, reqDto.getTimeUnit());
|
|
LocalDateTime endTime = getEndTime(date, reqDto.getTimeUnit());
|
|
LocalDateTime endTime = getEndTime(date, reqDto.getTimeUnit());
|
|
|
|
+ // 如果startTime早于fromDate
|
|
|
|
+ if (startTime.isBefore(fromDate)) {
|
|
|
|
+ startTime = fromDate;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ // 如果endTime晚于toDate
|
|
|
|
+ if (endTime.isAfter(toDate)) {
|
|
|
|
+ endTime = toDate;
|
|
|
|
+ }
|
|
// 查询新增用户数
|
|
// 查询新增用户数
|
|
BigDecimal newUser = BigDecimal.valueOf(statNewUserCount(startTime, endTime, reqDto.getAppId(), version, channel));
|
|
BigDecimal newUser = BigDecimal.valueOf(statNewUserCount(startTime, endTime, reqDto.getAppId(), version, channel));
|
|
// 查询活跃用户数
|
|
// 查询活跃用户数
|
|
@@ -477,6 +499,10 @@ public class UserAnalyseServiceImpl implements UserAnalyseService {
|
|
List<String> dates = generateTimeAxis(reqDto.getFromDate(), reqDto.getToDate(), reqDto.getTimeUnit());
|
|
List<String> dates = generateTimeAxis(reqDto.getFromDate(), reqDto.getToDate(), reqDto.getTimeUnit());
|
|
result.setDates(dates);
|
|
result.setDates(dates);
|
|
|
|
|
|
|
|
+ LocalDateTime fromDate = getStartTime(reqDto.getFromDate().toString(), "day");
|
|
|
|
+ LocalDateTime toDate = getEndTime(reqDto.getToDate().toString(), "day");
|
|
|
|
+
|
|
|
|
+
|
|
// 2. 处理版本列表(为空时按null处理)
|
|
// 2. 处理版本列表(为空时按null处理)
|
|
List<String> versions = reqDto.getVersion();
|
|
List<String> versions = reqDto.getVersion();
|
|
List<String> processVersions = (versions == null || versions.isEmpty())
|
|
List<String> processVersions = (versions == null || versions.isEmpty())
|
|
@@ -496,6 +522,15 @@ public class UserAnalyseServiceImpl implements UserAnalyseService {
|
|
.map(date -> {
|
|
.map(date -> {
|
|
LocalDateTime startTime = getStartTime(date, reqDto.getTimeUnit());
|
|
LocalDateTime startTime = getStartTime(date, reqDto.getTimeUnit());
|
|
LocalDateTime endTime = getEndTime(date, reqDto.getTimeUnit());
|
|
LocalDateTime endTime = getEndTime(date, reqDto.getTimeUnit());
|
|
|
|
+ // 如果startTime早于fromDate
|
|
|
|
+ if (startTime.isBefore(fromDate)) {
|
|
|
|
+ startTime = fromDate;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ // 如果endTime晚于toDate
|
|
|
|
+ if (endTime.isAfter(toDate)) {
|
|
|
|
+ endTime = toDate;
|
|
|
|
+ }
|
|
return statActiveUserCount(startTime, endTime, reqDto.getAppId(), version, reqDto.getChannel());
|
|
return statActiveUserCount(startTime, endTime, reqDto.getAppId(), version, reqDto.getChannel());
|
|
})
|
|
})
|
|
.collect(Collectors.toList());
|
|
.collect(Collectors.toList());
|
|
@@ -549,6 +584,9 @@ public class UserAnalyseServiceImpl implements UserAnalyseService {
|
|
public GetActiveUserBaseVO getActiveCompose(UserAnalyseQueryBaseDTO reqDto) {
|
|
public GetActiveUserBaseVO getActiveCompose(UserAnalyseQueryBaseDTO reqDto) {
|
|
// 1. 获取时间坐标轴
|
|
// 1. 获取时间坐标轴
|
|
List<String> dates = generateTimeAxis(reqDto.getFromDate(), reqDto.getToDate(), reqDto.getTimeUnit());
|
|
List<String> dates = generateTimeAxis(reqDto.getFromDate(), reqDto.getToDate(), reqDto.getTimeUnit());
|
|
|
|
+ LocalDateTime fromDate = getStartTime(reqDto.getFromDate().toString(), "day");
|
|
|
|
+ LocalDateTime toDate = getEndTime(reqDto.getToDate().toString(), "day");
|
|
|
|
+
|
|
// 获取版本信息
|
|
// 获取版本信息
|
|
String version = null;
|
|
String version = null;
|
|
if (reqDto.getVersion() != null && !reqDto.getVersion().isEmpty()){
|
|
if (reqDto.getVersion() != null && !reqDto.getVersion().isEmpty()){
|
|
@@ -561,6 +599,16 @@ public class UserAnalyseServiceImpl implements UserAnalyseService {
|
|
for (String date : dates) {
|
|
for (String date : dates) {
|
|
LocalDateTime startTime = getStartTime(date, reqDto.getTimeUnit());
|
|
LocalDateTime startTime = getStartTime(date, reqDto.getTimeUnit());
|
|
LocalDateTime endTime = getEndTime(date, reqDto.getTimeUnit());
|
|
LocalDateTime endTime = getEndTime(date, reqDto.getTimeUnit());
|
|
|
|
+
|
|
|
|
+ // 如果startTime早于fromDate
|
|
|
|
+ if (startTime.isBefore(fromDate)) {
|
|
|
|
+ startTime = fromDate;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ // 如果endTime晚于toDate
|
|
|
|
+ if (endTime.isAfter(toDate)) {
|
|
|
|
+ endTime = toDate;
|
|
|
|
+ }
|
|
// 活跃用户数
|
|
// 活跃用户数
|
|
BigDecimal activeCount = BigDecimal.valueOf(statActiveUserCount(startTime, endTime, reqDto.getAppId(), version, reqDto.getChannel()));
|
|
BigDecimal activeCount = BigDecimal.valueOf(statActiveUserCount(startTime, endTime, reqDto.getAppId(), version, reqDto.getChannel()));
|
|
activeCounts.add( activeCount);
|
|
activeCounts.add( activeCount);
|
|
@@ -710,6 +758,9 @@ public class UserAnalyseServiceImpl implements UserAnalyseService {
|
|
}
|
|
}
|
|
// 1. 生成时间轴
|
|
// 1. 生成时间轴
|
|
List<String> dates = generateTimeAxis(reqDto.getFromDate(), reqDto.getToDate(), reqDto.getTimeUnit());
|
|
List<String> dates = generateTimeAxis(reqDto.getFromDate(), reqDto.getToDate(), reqDto.getTimeUnit());
|
|
|
|
+ LocalDateTime fromDate = getStartTime(reqDto.getFromDate().toString(), "day");
|
|
|
|
+ LocalDateTime toDate = getEndTime(reqDto.getToDate().toString(), "day");
|
|
|
|
+
|
|
// 2. 定义存储列表
|
|
// 2. 定义存储列表
|
|
List<BigDecimal> activeList = new ArrayList<>();
|
|
List<BigDecimal> activeList = new ArrayList<>();
|
|
List<BigDecimal> userList = new ArrayList<>();
|
|
List<BigDecimal> userList = new ArrayList<>();
|
|
@@ -718,6 +769,15 @@ public class UserAnalyseServiceImpl implements UserAnalyseService {
|
|
for (String date : dates) {
|
|
for (String date : dates) {
|
|
LocalDateTime startTime = getStartTime(date, reqDto.getTimeUnit());
|
|
LocalDateTime startTime = getStartTime(date, reqDto.getTimeUnit());
|
|
LocalDateTime endTime = getEndTime(date, reqDto.getTimeUnit());
|
|
LocalDateTime endTime = getEndTime(date, reqDto.getTimeUnit());
|
|
|
|
+ // 如果startTime早于fromDate
|
|
|
|
+ if (startTime.isBefore(fromDate)) {
|
|
|
|
+ startTime = fromDate;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ // 如果endTime晚于toDate
|
|
|
|
+ if (endTime.isAfter(toDate)) {
|
|
|
|
+ endTime = toDate;
|
|
|
|
+ }
|
|
// 4. 查询、计算累计用户数
|
|
// 4. 查询、计算累计用户数
|
|
BigDecimal totalUser = BigDecimal.valueOf(statNewUserCount(null, endTime, reqDto.getAppId(), null, null));
|
|
BigDecimal totalUser = BigDecimal.valueOf(statNewUserCount(null, endTime, reqDto.getAppId(), null, null));
|
|
userList.add(totalUser);
|
|
userList.add(totalUser);
|
|
@@ -823,6 +883,9 @@ public class UserAnalyseServiceImpl implements UserAnalyseService {
|
|
|
|
|
|
// 1. 生成时间轴
|
|
// 1. 生成时间轴
|
|
List<String> dates = generateTimeAxis(reqDto.getFromDate(), reqDto.getToDate(), reqDto.getTimeUnit());
|
|
List<String> dates = generateTimeAxis(reqDto.getFromDate(), reqDto.getToDate(), reqDto.getTimeUnit());
|
|
|
|
+ LocalDateTime fromDate = getStartTime(reqDto.getFromDate().toString(), "day");
|
|
|
|
+ LocalDateTime toDate = getEndTime(reqDto.getToDate().toString(), "day");
|
|
|
|
+
|
|
// 2. 定义存储列表
|
|
// 2. 定义存储列表
|
|
List<BigDecimal> activeList = new ArrayList<>();
|
|
List<BigDecimal> activeList = new ArrayList<>();
|
|
List<BigDecimal> userList = new ArrayList<>();
|
|
List<BigDecimal> userList = new ArrayList<>();
|
|
@@ -831,6 +894,15 @@ public class UserAnalyseServiceImpl implements UserAnalyseService {
|
|
for (String date : dates) {
|
|
for (String date : dates) {
|
|
LocalDateTime startTime = getStartTime(date, reqDto.getTimeUnit());
|
|
LocalDateTime startTime = getStartTime(date, reqDto.getTimeUnit());
|
|
LocalDateTime endTime = getEndTime(date, reqDto.getTimeUnit());
|
|
LocalDateTime endTime = getEndTime(date, reqDto.getTimeUnit());
|
|
|
|
+ // 如果startTime早于fromDate
|
|
|
|
+ if (startTime.isBefore(fromDate)) {
|
|
|
|
+ startTime = fromDate;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ // 如果endTime晚于toDate
|
|
|
|
+ if (endTime.isAfter(toDate)) {
|
|
|
|
+ endTime = toDate;
|
|
|
|
+ }
|
|
// 4. 查询、计算累计用户数
|
|
// 4. 查询、计算累计用户数
|
|
BigDecimal totalUser = BigDecimal.valueOf(statNewUserCount(null, endTime, reqDto.getAppId(), null, null));
|
|
BigDecimal totalUser = BigDecimal.valueOf(statNewUserCount(null, endTime, reqDto.getAppId(), null, null));
|
|
userList.add(totalUser);
|
|
userList.add(totalUser);
|
|
@@ -941,6 +1013,9 @@ public class UserAnalyseServiceImpl implements UserAnalyseService {
|
|
if (dates.isEmpty()) {
|
|
if (dates.isEmpty()) {
|
|
return page; // 无数据直接返回
|
|
return page; // 无数据直接返回
|
|
}
|
|
}
|
|
|
|
+ LocalDateTime fromDate = getStartTime(reqDto.getFromDate().toString(), "day");
|
|
|
|
+ LocalDateTime toDate = getEndTime(reqDto.getToDate().toString(), "day");
|
|
|
|
+
|
|
// 获取渠道和版本
|
|
// 获取渠道和版本
|
|
List<String> channel = reqDto.getChannel();
|
|
List<String> channel = reqDto.getChannel();
|
|
String version = null;
|
|
String version = null;
|
|
@@ -953,6 +1028,15 @@ public class UserAnalyseServiceImpl implements UserAnalyseService {
|
|
// 获取时间范围
|
|
// 获取时间范围
|
|
LocalDateTime startTime = getStartTime(date, reqDto.getTimeUnit());
|
|
LocalDateTime startTime = getStartTime(date, reqDto.getTimeUnit());
|
|
LocalDateTime endTime = getEndTime(date, reqDto.getTimeUnit());
|
|
LocalDateTime endTime = getEndTime(date, reqDto.getTimeUnit());
|
|
|
|
+ // 如果startTime早于fromDate
|
|
|
|
+ if (startTime.isBefore(fromDate)) {
|
|
|
|
+ startTime = fromDate;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ // 如果endTime晚于toDate
|
|
|
|
+ if (endTime.isAfter(toDate)) {
|
|
|
|
+ endTime = toDate;
|
|
|
|
+ }
|
|
// 查询活跃用户数量
|
|
// 查询活跃用户数量
|
|
BigDecimal activeCount = BigDecimal.valueOf(statActiveUserCount(startTime, endTime, reqDto.getAppId(), version, channel));
|
|
BigDecimal activeCount = BigDecimal.valueOf(statActiveUserCount(startTime, endTime, reqDto.getAppId(), version, channel));
|
|
// 查询活跃用户中的新增用户数
|
|
// 查询活跃用户中的新增用户数
|
|
@@ -1180,6 +1264,9 @@ public class UserAnalyseServiceImpl implements UserAnalyseService {
|
|
// 1. 生成时间轴
|
|
// 1. 生成时间轴
|
|
List<String> dates = generateTimeAxis(reqDto.getFromDate(), reqDto.getToDate(), reqDto.getTimeUnit());
|
|
List<String> dates = generateTimeAxis(reqDto.getFromDate(), reqDto.getToDate(), reqDto.getTimeUnit());
|
|
result.setDates(dates);
|
|
result.setDates(dates);
|
|
|
|
+ LocalDateTime fromDate = getStartTime(reqDto.getFromDate().toString(), "day");
|
|
|
|
+ LocalDateTime toDate = getEndTime(reqDto.getToDate().toString(), "day");
|
|
|
|
+
|
|
// 2. 处理版本列表(为空时按null处理)
|
|
// 2. 处理版本列表(为空时按null处理)
|
|
List<String> versions = reqDto.getVersion();
|
|
List<String> versions = reqDto.getVersion();
|
|
List<String> processVersions = (versions == null || versions.isEmpty())
|
|
List<String> processVersions = (versions == null || versions.isEmpty())
|
|
@@ -1199,6 +1286,15 @@ public class UserAnalyseServiceImpl implements UserAnalyseService {
|
|
.map(date -> {
|
|
.map(date -> {
|
|
LocalDateTime startTime = getStartTime(date, reqDto.getTimeUnit());
|
|
LocalDateTime startTime = getStartTime(date, reqDto.getTimeUnit());
|
|
LocalDateTime endTime = getEndTime(date, reqDto.getTimeUnit());
|
|
LocalDateTime endTime = getEndTime(date, reqDto.getTimeUnit());
|
|
|
|
+ // 如果startTime早于fromDate
|
|
|
|
+ if (startTime.isBefore(fromDate)) {
|
|
|
|
+ startTime = fromDate;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ // 如果endTime晚于toDate
|
|
|
|
+ if (endTime.isAfter(toDate)) {
|
|
|
|
+ endTime = toDate;
|
|
|
|
+ }
|
|
return statLaunchCount(startTime, endTime, reqDto.getAppId(), version, reqDto.getChannel());
|
|
return statLaunchCount(startTime, endTime, reqDto.getAppId(), version, reqDto.getChannel());
|
|
})
|
|
})
|
|
.collect(Collectors.toList());
|
|
.collect(Collectors.toList());
|
|
@@ -1281,6 +1377,21 @@ public class UserAnalyseServiceImpl implements UserAnalyseService {
|
|
// 获取时间范围
|
|
// 获取时间范围
|
|
LocalDateTime startTime = getStartTime(date, timeUnit);
|
|
LocalDateTime startTime = getStartTime(date, timeUnit);
|
|
LocalDateTime endTime = getEndTime(date, timeUnit);
|
|
LocalDateTime endTime = getEndTime(date, timeUnit);
|
|
|
|
+
|
|
|
|
+ // 判断时间范围是否在查询范围内
|
|
|
|
+ if(startTime == null || endTime == null){
|
|
|
|
+ throw new BusinessException("时间范围错误");
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ // 如果startTime早于fromDate
|
|
|
|
+ if (startTime.isBefore(fromDate)) {
|
|
|
|
+ startTime = fromDate;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ // 如果endTime晚于toDate
|
|
|
|
+ if (endTime.isAfter(toDate)) {
|
|
|
|
+ endTime = toDate;
|
|
|
|
+ }
|
|
// 查询启动次数
|
|
// 查询启动次数
|
|
BigDecimal launch = BigDecimal.valueOf(statLaunchCount(startTime, endTime, reqDto.getAppId(), version, channel));
|
|
BigDecimal launch = BigDecimal.valueOf(statLaunchCount(startTime, endTime, reqDto.getAppId(), version, channel));
|
|
// 计算启动占比
|
|
// 计算启动占比
|