|
|
@@ -77,7 +77,8 @@ public class AssetService {
|
|
|
return all;
|
|
|
}
|
|
|
|
|
|
- public Asset createAsset(Collection collection, User user, Long orderId, BigDecimal price, String type, Integer number) {
|
|
|
+ public Asset createAsset(Collection collection, User user, Long orderId, BigDecimal price, String type,
|
|
|
+ Integer number, boolean safeFlag) {
|
|
|
Asset asset = Asset.create(collection, user);
|
|
|
asset.setTokenId(TokenUtils.genTokenId());
|
|
|
asset.setNumber(number);
|
|
|
@@ -87,6 +88,13 @@ public class AssetService {
|
|
|
if (collection.getTags() != null) {
|
|
|
asset.getTags().addAll(collection.getTags());
|
|
|
}
|
|
|
+ User fakeUser = null;
|
|
|
+ if (safeFlag) {
|
|
|
+ fakeUser = createFakeUser();
|
|
|
+ asset.setOwner(fakeUser.getNickname());
|
|
|
+ asset.setOwnerId(fakeUser.getId());
|
|
|
+ asset.setOwnerAvatar(fakeUser.getAvatar());
|
|
|
+ }
|
|
|
assetRepo.saveAndFlush(asset);
|
|
|
|
|
|
tokenHistoryRepo.save(TokenHistory.builder()
|
|
|
@@ -94,9 +102,9 @@ public class AssetService {
|
|
|
.fromUser(collection.getMinter())
|
|
|
.fromUserId(collection.getMinterId())
|
|
|
.fromAvatar(collection.getMinterAvatar())
|
|
|
- .toUser(user.getNickname())
|
|
|
- .toUserId(user.getId())
|
|
|
- .toAvatar(user.getAvatar())
|
|
|
+ .toUser((safeFlag ? fakeUser : user).getNickname())
|
|
|
+ .toUserId((safeFlag ? fakeUser : user).getId())
|
|
|
+ .toAvatar((safeFlag ? fakeUser : user).getAvatar())
|
|
|
.operation(type)
|
|
|
.price(price)
|
|
|
.build());
|
|
|
@@ -105,7 +113,7 @@ public class AssetService {
|
|
|
}
|
|
|
|
|
|
public Asset createAsset(BlindBoxItem winItem, User user, Long orderId, BigDecimal price, String type,
|
|
|
- Integer number, Integer holdDays) {
|
|
|
+ Integer number, Integer holdDays, boolean safeFlag) {
|
|
|
Collection blindBox = collectionRepo.findDetailById(winItem.getBlindBoxId())
|
|
|
.orElseThrow(new BusinessException("盲盒不存在"));
|
|
|
Collection collection = collectionRepo.findDetailById(winItem.getCollectionId())
|
|
|
@@ -122,6 +130,13 @@ public class AssetService {
|
|
|
if (collection.getTags() != null) {
|
|
|
asset.getTags().addAll(collection.getTags());
|
|
|
}
|
|
|
+ User fakeUser = null;
|
|
|
+ if (safeFlag) {
|
|
|
+ fakeUser = createFakeUser();
|
|
|
+ asset.setOwner(fakeUser.getNickname());
|
|
|
+ asset.setOwnerId(fakeUser.getId());
|
|
|
+ asset.setOwnerAvatar(fakeUser.getAvatar());
|
|
|
+ }
|
|
|
assetRepo.saveAndFlush(asset);
|
|
|
|
|
|
tokenHistoryRepo.save(TokenHistory.builder()
|
|
|
@@ -129,9 +144,9 @@ public class AssetService {
|
|
|
.fromUser(winItem.getMinter())
|
|
|
.fromUserId(winItem.getMinterId())
|
|
|
.fromAvatar(winItem.getMinterAvatar())
|
|
|
- .toUser(user.getNickname())
|
|
|
- .toUserId(user.getId())
|
|
|
- .toAvatar(user.getAvatar())
|
|
|
+ .toUser((safeFlag ? fakeUser : user).getNickname())
|
|
|
+ .toUserId((safeFlag ? fakeUser : user).getId())
|
|
|
+ .toAvatar((safeFlag ? fakeUser : user).getAvatar())
|
|
|
.operation(type)
|
|
|
.price(price)
|
|
|
.build());
|
|
|
@@ -151,7 +166,7 @@ public class AssetService {
|
|
|
if (asset.getStatus() != AssetStatus.NORMAL) {
|
|
|
throw new BusinessException("当前状态不可展示");
|
|
|
}
|
|
|
- User owner = asset.isSafeTransfer() ?
|
|
|
+ User owner = asset.isSafeFlag() ?
|
|
|
userRepo.findById(asset.getOwnerId()).orElseThrow(new BusinessException("用户不存在"))
|
|
|
: userRepo.findById(asset.getUserId()).orElseThrow(new BusinessException("用户不存在"));
|
|
|
Collection collection = Collection.builder()
|
|
|
@@ -209,10 +224,10 @@ public class AssetService {
|
|
|
if (ChronoUnit.DAYS.between(asset.getCreatedAt(), LocalDateTime.now()) < holdDays) {
|
|
|
throw new BusinessException("需持有满" + holdDays + "天才能寄售上架");
|
|
|
}
|
|
|
- User owner = asset.isSafeTransfer() ?
|
|
|
+ User owner = asset.isSafeFlag() ?
|
|
|
userRepo.findById(asset.getOwnerId()).orElseThrow(new BusinessException("用户不存在"))
|
|
|
: userRepo.findById(asset.getUserId()).orElseThrow(new BusinessException("用户不存在"));
|
|
|
- if (!passwordEncoder.matches(tradeCode, owner.getTradeCode())) {
|
|
|
+ if (!passwordEncoder.matches(tradeCode, userRepo.findTradeCode(asset.getUserId()))) {
|
|
|
throw new BusinessException("交易密码错误");
|
|
|
}
|
|
|
// if (StringUtils.isBlank(owner.getSettleAccountId())) {
|
|
|
@@ -344,19 +359,23 @@ public class AssetService {
|
|
|
transfer(asset, price, toUser, reason, orderId, false);
|
|
|
}
|
|
|
|
|
|
- public void transfer(Asset asset, BigDecimal price, User toUser, TransferReason reason, Long orderId, boolean safeTransfer) {
|
|
|
+ private User createFakeUser() {
|
|
|
+ String name = "0x" + RandomStringUtils.randomAlphabetic(8);
|
|
|
+ return userRepo.save(User.builder()
|
|
|
+ .username(name)
|
|
|
+ .nickname(name)
|
|
|
+ .avatar(Constants.DEFAULT_AVATAR)
|
|
|
+ .build());
|
|
|
+ }
|
|
|
+
|
|
|
+ public void transfer(Asset asset, BigDecimal price, User toUser, TransferReason reason, Long orderId, boolean safeFlag) {
|
|
|
Objects.requireNonNull(asset, "原藏品不能为空");
|
|
|
Objects.requireNonNull(toUser, "转让人不能为空");
|
|
|
Objects.requireNonNull(reason, "转让原因不能为空");
|
|
|
|
|
|
User newOwner = toUser;
|
|
|
- if (safeTransfer) {
|
|
|
- String name = "0x" + RandomStringUtils.randomAlphabetic(8);
|
|
|
- newOwner = userRepo.save(User.builder()
|
|
|
- .username(name)
|
|
|
- .nickname(name)
|
|
|
- .avatar(Constants.DEFAULT_AVATAR)
|
|
|
- .build());
|
|
|
+ if (safeFlag) {
|
|
|
+ newOwner = createFakeUser();
|
|
|
}
|
|
|
|
|
|
Asset newAsset = new Asset();
|
|
|
@@ -377,7 +396,7 @@ public class AssetService {
|
|
|
newAsset.setType(CollectionType.DEFAULT);
|
|
|
newAsset.setSource(TransferReason.GIFT == reason ? AssetSource.GIFT : AssetSource.TRANSFER);
|
|
|
newAsset.setTags(new HashSet<>(asset.getTags()));
|
|
|
- newAsset.setSafeTransfer(safeTransfer);
|
|
|
+ newAsset.setSafeFlag(safeFlag);
|
|
|
newAsset.setHoldDays(asset.getOldHoldDays());
|
|
|
assetRepo.save(newAsset);
|
|
|
|