| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475 |
- package com.izouma.nineth.service;
- import com.izouma.nineth.annotations.RedisLock;
- import com.izouma.nineth.config.Constants;
- import com.izouma.nineth.domain.Asset;
- import com.izouma.nineth.domain.UserAssetSummary;
- import com.izouma.nineth.dto.PageQuery;
- import com.izouma.nineth.enums.CollectionType;
- import com.izouma.nineth.repo.AssetRepo;
- import com.izouma.nineth.repo.MetaShowRoomAssetRepo;
- import com.izouma.nineth.repo.UserAssetSummaryRepo;
- import com.izouma.nineth.utils.JpaUtils;
- import lombok.AllArgsConstructor;
- import lombok.extern.slf4j.Slf4j;
- import org.apache.commons.collections.CollectionUtils;
- import org.springframework.beans.BeanUtils;
- import org.springframework.data.domain.Page;
- import org.springframework.stereotype.Service;
- import javax.transaction.Transactional;
- import java.util.ArrayList;
- import java.util.List;
- import java.util.Objects;
- @Service
- @AllArgsConstructor
- @Slf4j
- public class UserAssetSummaryService {
- private AssetRepo assetRepo;
- private UserAssetSummaryRepo userAssetSummaryRepo;
- private MetaShowRoomAssetRepo metaShowRoomAssetRepo;
- public Page<UserAssetSummary> all(PageQuery pageQuery) {
- return userAssetSummaryRepo.findAll(JpaUtils.toSpecification(pageQuery, UserAssetSummary.class), JpaUtils.toPageRequest(pageQuery));
- }
- @Transactional
- @RedisLock("#userId")
- public void calculateNum(Long assetId, Long userId, Long companyId) {
- log.info("开始重新计算用户:{},companyId:{}的资产数量", userId, companyId);
- List<UserAssetSummary> userAssetSummaries = new ArrayList<>();
- // 查询盲盒数量
- List<Asset> blindBoxAssets = assetRepo.findAllByUserIdAndTypeAndOpenedAndCompanyId(userId, CollectionType.BLIND_BOX, Boolean.FALSE, companyId);
- blindBoxAssets.forEach(asset -> {
- userAssetSummaries.add(new UserAssetSummary(asset));
- });
- // 查询非盲盒数量
- List<UserAssetSummary> notBlindBoxAssets = userAssetSummaryRepo.find(userId, companyId);
- notBlindBoxAssets.forEach(userAssetSummary -> {
- UserAssetSummary newUserAssetSummary = new UserAssetSummary();
- BeanUtils.copyProperties(userAssetSummary, newUserAssetSummary);
- newUserAssetSummary.setId(null);
- userAssetSummaries.add(newUserAssetSummary);
- });
- List<UserAssetSummary> isExist = userAssetSummaryRepo.findByUserIdAndCompanyId(userId, companyId);
- if (CollectionUtils.isNotEmpty(isExist)) {
- userAssetSummaryRepo.deleteByUserIdAndCompanyId(userId, companyId);
- }
- userAssetSummaryRepo.saveAll(userAssetSummaries);
- // 如果资产状态为已转让,已销毁, 已转增, 已拍卖删除展厅中藏品
- if (Objects.nonNull(assetId)) {
- Asset asset = assetRepo.findById(assetId).orElse(null);
- if (Objects.nonNull(asset)) {
- if (Constants.META_INOPERABLE_STATUS.contains(asset.getStatus())) {
- metaShowRoomAssetRepo.deleteByAssetId(asset.getId());
- }
- }
- }
- }
- }
|