|
|
@@ -3,6 +3,7 @@ package com.izouma.nineth.service;
|
|
|
import com.izouma.nineth.TokenHistory;
|
|
|
import com.izouma.nineth.domain.*;
|
|
|
import com.izouma.nineth.dto.PageQuery;
|
|
|
+import com.izouma.nineth.dto.UserHistory;
|
|
|
import com.izouma.nineth.enums.AssetStatus;
|
|
|
import com.izouma.nineth.enums.CollectionSource;
|
|
|
import com.izouma.nineth.enums.CollectionType;
|
|
|
@@ -19,6 +20,7 @@ import org.apache.commons.lang3.StringUtils;
|
|
|
import org.springframework.beans.BeanUtils;
|
|
|
import org.springframework.context.ApplicationContext;
|
|
|
import org.springframework.data.domain.Page;
|
|
|
+import org.springframework.data.domain.Pageable;
|
|
|
import org.springframework.scheduling.annotation.Async;
|
|
|
import org.springframework.scheduling.annotation.AsyncResult;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
@@ -27,7 +29,10 @@ import java.math.BigDecimal;
|
|
|
import java.time.LocalDateTime;
|
|
|
import java.util.ArrayList;
|
|
|
import java.util.List;
|
|
|
+import java.util.Optional;
|
|
|
+import java.util.Set;
|
|
|
import java.util.concurrent.Future;
|
|
|
+import java.util.stream.Collectors;
|
|
|
|
|
|
@Service
|
|
|
@AllArgsConstructor
|
|
|
@@ -315,4 +320,19 @@ public class AssetService {
|
|
|
}
|
|
|
});
|
|
|
}
|
|
|
+
|
|
|
+ public Page<UserHistory> userHistory(Long userId, Pageable pageable) {
|
|
|
+ Page<TokenHistory> page = tokenHistoryRepo.userHistory(userId, pageable);
|
|
|
+ Set<String> tokenIds = page.stream().map(TokenHistory::getTokenId).collect(Collectors.toSet());
|
|
|
+ List<Asset> assets = tokenIds.isEmpty() ? new ArrayList<>() : assetRepo.findByTokenIdIn(tokenIds);
|
|
|
+ return page.map(tokenHistory -> {
|
|
|
+ UserHistory userHistory = new UserHistory();
|
|
|
+ BeanUtils.copyProperties(tokenHistory, userHistory);
|
|
|
+ Optional<Asset> asset = assets.stream().filter(a -> a.getTokenId().equals(tokenHistory.getTokenId()))
|
|
|
+ .findAny();
|
|
|
+ userHistory.setAssetName(asset.map(Asset::getName).orElse(null));
|
|
|
+ userHistory.setPic(asset.map(Asset::getPic).orElse(new ArrayList<>()));
|
|
|
+ return userHistory;
|
|
|
+ });
|
|
|
+ }
|
|
|
}
|