Răsfoiți Sursa

锁仓不能铸造

xiongzhu 3 ani în urmă
părinte
comite
b96c8eb09f

+ 9 - 1
src/main/java/com/izouma/nineth/service/AssetService.java

@@ -791,8 +791,16 @@ public class AssetService {
             Set<Tag> tags = mintActivity.getRule().getTags();
             if (tags.isEmpty()) return new PageImpl<>(Collections.emptyList());
             return assetRepo.findAll((Specification<Asset>) (root, query, criteriaBuilder) ->
-                    query.distinct(true).where(criteriaBuilder.equal(root.get("userId"), userId),
+                    query.distinct(true).where(
+                                    // where userId=some id
+                                    criteriaBuilder.equal(root.get("userId"), userId),
+                                    // and (lockTo is null or (lockTo is not null and lockTo < now))
+                                    criteriaBuilder.or(criteriaBuilder.isNull(root.get("lockTo")),
+                                            criteriaBuilder.and(criteriaBuilder.isNotNull(root.get("lockTo")),
+                                                    criteriaBuilder.lessThan(root.get("lockTo"), LocalDateTime.now()))),
+                                    // and status = 'NORMAL'
                                     criteriaBuilder.equal(root.get("status"), AssetStatus.NORMAL),
+                                    // and has some tagId
                                     root.join("tags").get("id").in(tags.stream().map(Tag::getId).toArray()))
                             .getRestriction(), pageable);
         } else {

+ 6 - 0
src/main/java/com/izouma/nineth/service/MintOrderService.java

@@ -230,6 +230,12 @@ public class MintOrderService {
 
 
             List<Asset> assets = assetRepo.findAllByIdInAndUserId(assetId, user.getId());
+            assets.stream().forEach(asset -> {
+                if (asset.getLockTo() != null && asset.getLockTo().isAfter(LocalDateTime.now())) {
+                    throw new BusinessException("所选藏品:" + asset.getName() +
+                            (asset.getNumber() == null ? "" : ("#" + asset.getNumber())) + " 已锁定");
+                }
+            });
 //            if (assets.stream().anyMatch(a -> a.isPublicShow() || a.isConsignment())) {
 //                throw new BusinessException("请先下架所选藏品");
 //            }