|
|
@@ -28,6 +28,7 @@ import org.springframework.scheduling.annotation.Async;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
import java.math.BigDecimal;
|
|
|
+import java.time.LocalDate;
|
|
|
import java.time.LocalDateTime;
|
|
|
import java.time.temporal.ChronoUnit;
|
|
|
import java.util.*;
|
|
|
@@ -416,11 +417,15 @@ public class AssetService {
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
- * 排行榜
|
|
|
- * 被删除的用户??
|
|
|
+ * 月排行榜
|
|
|
+ * 被删除的用户
|
|
|
*/
|
|
|
- public List<LeaderboardDTO> leaderboard(Long userId, int size) {
|
|
|
- List<TokenHistory> all = tokenHistoryRepo.findAllByPriceIsNotNullAndOperationLike("出售");
|
|
|
+ public List<LeaderboardDTO> ranking(Long userId, int size) {
|
|
|
+ LocalDate now = LocalDate.now();
|
|
|
+ LocalDateTime start = LocalDateTime.of(2021, 11, 1, 0, 0, 0, 0);
|
|
|
+// LocalDateTime start = LocalDateTime.of(now.getYear(), now.getMonth(), 1, 0, 0, 0, 0);
|
|
|
+ LocalDateTime end = start.plusMonths(1).minusSeconds(1);
|
|
|
+ List<TokenHistory> all = tokenHistoryRepo.findAllByPriceIsNotNullAndOperationLikeAndCreatedAtBetween("出售", start, end);
|
|
|
Map<Long, Long> countMap = all.stream()
|
|
|
.collect(Collectors.groupingBy(TokenHistory::getToUserId, Collectors.counting()));
|
|
|
|
|
|
@@ -439,17 +444,19 @@ public class AssetService {
|
|
|
Map<Long, User> userMap = userRepo.findByIdInAndDelFalse(userIds)
|
|
|
.stream()
|
|
|
.collect(Collectors.toMap(User::getId, user -> user));
|
|
|
- for (int i = 1; i < dtos.size() + 1; i++) {
|
|
|
+ for (int i = 0, j = 1; i < dtos.size(); i++) {
|
|
|
LeaderboardDTO dto = dtos.get(i);
|
|
|
- Long k = dto.getUserId();
|
|
|
- User user = userMap.get(k);
|
|
|
+ Long id = dto.getUserId();
|
|
|
+ User user = userMap.get(id);
|
|
|
if (user == null) {
|
|
|
+ dtos.remove(dto);
|
|
|
+ i = i - 1;
|
|
|
continue;
|
|
|
}
|
|
|
dto.setAvatar(user.getAvatar());
|
|
|
dto.setNickname(user.getNickname());
|
|
|
- dto.setRank(i);
|
|
|
- i++;
|
|
|
+ dto.setRank(j);
|
|
|
+ j++;
|
|
|
}
|
|
|
return dtos;
|
|
|
}
|
|
|
@@ -457,14 +464,17 @@ public class AssetService {
|
|
|
List<LeaderboardDTO> leaderboardDTOS = new ArrayList<>();
|
|
|
int i = 1;
|
|
|
|
|
|
+ boolean flag = false;
|
|
|
for (LeaderboardDTO dto : dtos) {
|
|
|
- Long k = dto.getUserId();
|
|
|
- if (!k.equals(userId) && i > size) {
|
|
|
+ Long id = dto.getUserId();
|
|
|
+ if (!id.equals(userId) && i > size) {
|
|
|
i++;
|
|
|
continue;
|
|
|
}
|
|
|
-
|
|
|
- User user = userRepo.findByIdAndDelFalse(k).orElse(null);
|
|
|
+ if (flag && i > size) {
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ User user = userRepo.findByIdAndDelFalse(id).orElse(null);
|
|
|
if (user == null) {
|
|
|
continue;
|
|
|
}
|
|
|
@@ -473,8 +483,12 @@ public class AssetService {
|
|
|
dto.setRank(i);
|
|
|
leaderboardDTOS.add(dto);
|
|
|
i++;
|
|
|
+
|
|
|
+ if (userId.equals(id)) {
|
|
|
+ flag = true;
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
return leaderboardDTOS;
|
|
|
}
|
|
|
-}
|
|
|
+}
|