licailing преди 3 години
родител
ревизия
fac8cafbe4

+ 2 - 0
src/main/java/com/izouma/nineth/domain/Collection.java

@@ -193,4 +193,6 @@ public class Collection extends BaseEntity {
     @ApiModelProperty("开启抢白名单")
     private Boolean openQuota;
 
+    @ApiModelProperty("最低消费")
+    private BigDecimal minimumCharge;
 }

+ 3 - 0
src/main/java/com/izouma/nineth/domain/User.java

@@ -162,4 +162,7 @@ public class User extends BaseEntityNoID implements Serializable {
 
     @ApiModelProperty(value = "风险提示")
     private Boolean riskWarning;
+
+    @Column(columnDefinition = "int(11) default 0")
+    private boolean canSale = false;
 }

+ 2 - 1
src/main/java/com/izouma/nineth/repo/CollectionRepo.java

@@ -14,6 +14,7 @@ import org.springframework.data.jpa.repository.Query;
 
 import javax.annotation.Nonnull;
 import javax.transaction.Transactional;
+import java.math.BigDecimal;
 import java.time.LocalDateTime;
 import java.util.List;
 import java.util.Optional;
@@ -40,7 +41,7 @@ public interface CollectionRepo extends JpaRepository<Collection, Long>, JpaSpec
                 String properties, String model3d, int maxCount, String countId, boolean scanCode,
                 boolean noSoldOut, int assignment, boolean couponPayment, String shareBg, String registerBg,
                 Integer vipQuota, Boolean timeDelay, LocalDateTime saleTime, Integer holdDays, Boolean openQuota,
-                Integer totalQuota);
+                Integer totalQuota, BigDecimal minimumCharge);
 
     @Cacheable("collection")
     Optional<Collection> findById(@Nonnull Long id);

+ 1 - 39
src/main/java/com/izouma/nineth/service/CollectionService.java

@@ -156,7 +156,7 @@ public class CollectionService {
                 record.getMaxCount(), record.getCountId(), record.isScanCode(), record.isNoSoldOut(),
                 record.getAssignment(), record.isCouponPayment(), record.getShareBg(), record.getRegisterBg(),
                 record.getVipQuota(), record.getTimeDelay(), record.getSaleTime(), record.getHoldDays(),
-                record.getOpenQuota(), record.getTotalQuota());
+                record.getOpenQuota(), record.getTotalQuota(), record.getMinimumCharge());
 
         record = collectionRepo.findById(record.getId()).orElseThrow(new BusinessException("无记录"));
         onShelfTask(record);
@@ -542,44 +542,6 @@ public class CollectionService {
         log.info("邀请实名认证人量:{}", collect2.size());
 //        log.info("sql: update user set vip_point = 1 where id in ({})", longArrayConverter.convertToDatabaseColumn(collect2));
 
-        //只留库存数量
-//        List<PointDTO> result = dtos.stream()
-//                .sorted(Comparator.comparing(PointDTO::getCreatedAt))
-//                .collect(Collectors.toList());
-//        List<Long> userIds = result.stream().map(PointDTO::getId).collect(Collectors.toList());
-//        Map<Long, User> resultMap = userRepo.findAllById(userIds)
-//                .stream()
-//                .collect(Collectors.toMap(User::getId, user -> user));
-//
-//        List<PointDTO> result2 = new ArrayList<>();
-//        List<PointDTO> result3 = new ArrayList<>();
-//        result.forEach(dto -> {
-//            if (dto.getIdentitySum() > 0) {
-//                result2.add(dto);
-//            } else {
-//                result3.add(dto);
-//            }
-//        });
-//
-//        result2.addAll(result3);
-
-
-        //加积分,存记录
-//        result.forEach(pointDTO -> {
-//            User user = resultMap.get(pointDTO.getId());
-//            if (user.getVipPoint() <= 0) {
-//                user.setVipPoint(1);
-//                userRepo.save(user);
-//                pointRecordRepo.save(PointRecord.builder()
-//                        .collectionId(collectionId)
-//                        .userId(pointDTO.getId())
-//                        .type("VIP_POINT")
-//                        .point(1)
-//                        .build());
-//            }
-//
-//        });
-
         return dtos;
     }
 }

+ 14 - 1
src/main/java/com/izouma/nineth/service/OrderService.java

@@ -214,6 +214,15 @@ public class OrderService {
                     throw new BusinessException("限购" + collection.getMaxCount() + "件");
                 }
             }
+            User user = null;
+            if (ObjectUtils.isNotEmpty(collection.getMinimumCharge()) && collection.getMinimumCharge()
+                    .compareTo(BigDecimal.ZERO) > 0) {
+                user = userRepo.findById(userId).orElseThrow(new BusinessException("用户不存在"));
+                if (!user.isCanSale()) {
+                    throw new BusinessException("绿洲石不足");
+                }
+            }
+
 
             //查询是否有拉新任务,只算官方购买
             if (collection.getSource() != CollectionSource.TRANSFER && collection.getAssignment() > 0) {
@@ -223,7 +232,11 @@ public class OrderService {
                         throw new BusinessException("当前还未开售");
                     }
                 }
-                User user = userRepo.findById(userId).orElseThrow(new BusinessException("用户不存在"));
+
+                if (user == null) {
+                    user = userRepo.findById(userId).orElseThrow(new BusinessException("用户不存在"));
+                }
+
                 if (vip) {
                     int purchase = orderRepo.countByUserIdAndCollectionIdAndVipTrueAndStatusIn(userId, collectionId, Arrays.asList(OrderStatus.FINISH, OrderStatus.NOT_PAID, OrderStatus.PROCESSING));
                     if (user.getVipPurchase() - purchase <= 0) {

+ 3 - 1
src/main/vue/src/views/BannerEdit.vue

@@ -54,6 +54,7 @@
                     </el-form-item>
                     <el-form-item prop="linkContent" label="跳转内容" v-if="formData.link">
                         <el-input v-if="formData.linkType === 'collections'" v-model="formData.linkContent" placeholder="输入藏品名称"></el-input>
+                        <el-input v-else-if="formData.linkType === 'hyperlink'" v-model="formData.linkContent" placeholder="输入链接"></el-input>
                         <el-input v-else v-model="formData.linkContent" placeholder="输入ID"></el-input>
                     </el-form-item>
                     <el-form-item class="form-submit">
@@ -141,7 +142,8 @@ export default {
                 { label: '藏品/盲盒', value: 'collection' },
                 { label: '铸造者', value: 'user' },
                 { label: '活动', value: 'activity' },
-                { label: '多个藏品', value: 'collections' }
+                { label: '多个藏品', value: 'collections' },
+                { label: '指定链接', value: 'hyperlink' }
             ]
         };
     },

+ 2 - 1
src/main/vue/src/views/BannerList.vue

@@ -120,7 +120,8 @@ export default {
                 { label: '藏品/盲盒', value: 'collection' },
                 { label: '铸造者', value: 'user' },
                 { label: '活动', value: 'activity' },
-                { label: '多个藏品', value: 'collections' }
+                { label: '多个藏品', value: 'collections' },
+                { label: '指定链接', value: 'hyperlink' }
             ]
         };
     },

+ 14 - 1
src/main/vue/src/views/BlindBoxEdit.vue

@@ -191,9 +191,22 @@
                     </el-form-item>
 
                     <el-form-item prop="holdDays" label="持有天数">
-                        <el-input-number type="number" :min="0" :step="1" :max="2147483647" v-model="formData.holdDays" style="width: 180px"></el-input-number>
+                        <el-input-number
+                            type="number"
+                            :min="0"
+                            :step="1"
+                            :max="2147483647"
+                            v-model="formData.holdDays"
+                            style="width: 180px"
+                        ></el-input-number>
                         <div class="tip">持有多少天可转赠/转让。为空时,按系统设置天数</div>
                     </el-form-item>
+
+                    <el-form-item prop="minimumCharge" label="最低消费">
+                        <el-input-number type="number" :min="0" v-model="formData.minimumCharge" style="width: 180px">
+                        </el-input-number>
+                    </el-form-item>
+
                     <el-form-item prop="noSoldOut" label="售罄">
                         <el-radio v-model="formData.noSoldOut" :label="false">是</el-radio>
                         <el-radio v-model="formData.noSoldOut" :label="true">否</el-radio>

+ 9 - 3
src/main/vue/src/views/CollectionEdit.vue

@@ -238,6 +238,12 @@
                         ></el-input-number>
                         <div class="tip">持有多少天可转赠/转让。为空时,按系统设置天数。</div>
                     </el-form-item>
+
+                    <el-form-item prop="minimumCharge" label="最低消费">
+                        <el-input-number type="number" :min="0" v-model="formData.minimumCharge" style="width: 180px">
+                        </el-input-number>
+                    </el-form-item>
+
                     <el-form-item prop="noSoldOut" label="售罄">
                         <el-radio v-model="formData.noSoldOut" :label="false">是</el-radio>
                         <el-radio v-model="formData.noSoldOut" :label="true">否</el-radio>
@@ -248,13 +254,13 @@
                             <el-radio :label="false">支付宝/微信</el-radio>
                         </el-radio-group>
                     </el-form-item>
-                    
-                    <el-form-item prop="vip" label="享有特权">
+
+                    <!-- <el-form-item prop="vip" label="享有特权">
                         <el-radio-group v-model="formData.vip">
                             <el-radio :label="true">白名单权利</el-radio>
                             <el-radio :label="false">无特权</el-radio>
                         </el-radio-group>
-                    </el-form-item>
+                    </el-form-item> -->
 
                     <div class="inline-wrapper">
                         <el-form-item prop="assignment" label="拉新任务指标">