|
|
@@ -26,7 +26,7 @@ public class UserHoldCountService {
|
|
|
|
|
|
private CollectionRepo collectionRepo;
|
|
|
|
|
|
- @Cacheable(value = "userHoldList", key = "#pageQuery.hashCode()")
|
|
|
+// @Cacheable(value = "userHoldList", key = "#pageQuery.hashCode()")
|
|
|
public PageWrapper<UserHoldDTO> all(PageQuery pageQuery) {
|
|
|
int page = pageQuery.getPage();
|
|
|
int size = pageQuery.getSize();
|
|
|
@@ -37,36 +37,40 @@ public class UserHoldCountService {
|
|
|
JSONArray jsonArray = new JSONArray();
|
|
|
jsonArray.addAll(assets);
|
|
|
List<UserHoldDTO> userHoldDTOS = jsonArray.toJavaList(UserHoldDTO.class);
|
|
|
- userHoldDTOS.forEach(userHoldDTO -> {
|
|
|
- List<Asset> userAssets = assetRepo.findAllByUserIdAndStatusIn(userHoldDTO.getUserId(), new ArrayList<>(Arrays.asList(AssetStatus.NORMAL, AssetStatus.TRADING, AssetStatus.GIFTING, AssetStatus.MINTING, AssetStatus.AUCTIONING)));
|
|
|
- // 分类计算各资产寄售最低价
|
|
|
- userAssets.forEach(asset -> {
|
|
|
- if (StringUtils.isBlank(asset.getPrefixName())) {
|
|
|
- return;
|
|
|
- }
|
|
|
- if (asset.getName().contains(Constants.Rarity.SR_LIKE) && !asset.getName().contains(Constants.Rarity.SSR_LIKE)) {
|
|
|
- calculatePrice(userHoldDTO, asset, minPriceMap, Constants.Rarity.SR_LIKE, Constants.Rarity.SSR_LIKE);
|
|
|
- return;
|
|
|
- }
|
|
|
- if (asset.getName().contains(Constants.Rarity.U_LIKE)) {
|
|
|
- calculatePrice(userHoldDTO, asset, minPriceMap, Constants.Rarity.U_LIKE, Constants.Rarity.R_LIKE);
|
|
|
- return;
|
|
|
- }
|
|
|
- if (asset.getName().contains(Constants.Rarity.R_LIKE) && !asset.getName().contains(Constants.Rarity.SR_LIKE)) {
|
|
|
- calculatePrice(userHoldDTO, asset, minPriceMap, Constants.Rarity.R_LIKE, Constants.Rarity.SR_LIKE);
|
|
|
- return;
|
|
|
- }
|
|
|
- if (asset.getName().contains(Constants.Rarity.SSR_LIKE)) {
|
|
|
- calculatePrice(userHoldDTO, asset, minPriceMap, Constants.Rarity.SSR_LIKE, Constants.Rarity.U_LIKE);
|
|
|
- return;
|
|
|
- }
|
|
|
- calculatePrice(userHoldDTO, asset, minPriceMap, null, null);
|
|
|
- });
|
|
|
- });
|
|
|
+ userHoldDTOS.forEach(userHoldDTO -> userHoldDTO.setPrice(cacheableCalculate(userHoldDTO, minPriceMap)));
|
|
|
return new PageWrapper<>(userHoldDTOS, page,
|
|
|
size, totalElements);
|
|
|
}
|
|
|
|
|
|
+ @Cacheable(value = "userHoldPrice", key = "#userHoldDTO.getUserId()")
|
|
|
+ public BigDecimal cacheableCalculate(UserHoldDTO userHoldDTO, Map<String, BigDecimal> minPriceMap){
|
|
|
+ List<Asset> userAssets = assetRepo.findAllByUserIdAndStatusIn(userHoldDTO.getUserId(), new ArrayList<>(Arrays.asList(AssetStatus.NORMAL, AssetStatus.TRADING, AssetStatus.GIFTING, AssetStatus.MINTING, AssetStatus.AUCTIONING)));
|
|
|
+ // 分类计算各资产寄售最低价
|
|
|
+ userAssets.forEach(asset -> {
|
|
|
+ if (StringUtils.isBlank(asset.getPrefixName())) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ if (asset.getName().contains(Constants.Rarity.SR_LIKE) && !asset.getName().contains(Constants.Rarity.SSR_LIKE)) {
|
|
|
+ calculatePrice(userHoldDTO, asset, minPriceMap, Constants.Rarity.SR_LIKE, Constants.Rarity.SSR_LIKE);
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ if (asset.getName().contains(Constants.Rarity.U_LIKE)) {
|
|
|
+ calculatePrice(userHoldDTO, asset, minPriceMap, Constants.Rarity.U_LIKE, Constants.Rarity.R_LIKE);
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ if (asset.getName().contains(Constants.Rarity.R_LIKE) && !asset.getName().contains(Constants.Rarity.SR_LIKE)) {
|
|
|
+ calculatePrice(userHoldDTO, asset, minPriceMap, Constants.Rarity.R_LIKE, Constants.Rarity.SR_LIKE);
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ if (asset.getName().contains(Constants.Rarity.SSR_LIKE)) {
|
|
|
+ calculatePrice(userHoldDTO, asset, minPriceMap, Constants.Rarity.SSR_LIKE, Constants.Rarity.U_LIKE);
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ calculatePrice(userHoldDTO, asset, minPriceMap, null, null);
|
|
|
+ });
|
|
|
+ return userHoldDTO.getPrice();
|
|
|
+ }
|
|
|
+
|
|
|
private void calculatePrice(UserHoldDTO userHoldDTO, Asset asset, Map<String, BigDecimal> minPriceMap, String nameLike, String nameNotLike) {
|
|
|
BigDecimal minPrice;
|
|
|
String minPriceMapKey = StringUtils.isBlank(nameLike) ? asset.getPrefixName() : asset.getPrefixName().concat(nameLike);
|