wangqifan 3 лет назад
Родитель
Сommit
68d85bb3fe

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

@@ -220,6 +220,9 @@ public class Collection extends BaseEntity {
     @ApiModelProperty("购买时间")
     @ApiModelProperty("购买时间")
     private LocalDateTime purchaseTime;
     private LocalDateTime purchaseTime;
 
 
+    @ApiModelProperty("是否有预约")
+    private boolean hasSubscribe = false;
+
     @ApiModelProperty("是否预约成功")
     @ApiModelProperty("是否预约成功")
     private boolean         subscribed;
     private boolean         subscribed;
     @ApiModelProperty("是否有购买资格")
     @ApiModelProperty("是否有购买资格")

+ 1 - 1
src/main/java/com/izouma/nineth/enums/SubscribeStatus.java

@@ -3,7 +3,7 @@ package com.izouma.nineth.enums;
 public enum SubscribeStatus {
 public enum SubscribeStatus {
     NOT_STARTED("未开始"),
     NOT_STARTED("未开始"),
     ONGOING("进行中"),
     ONGOING("进行中"),
-    SUBSCRIBE_ENDING("转赠中"),
+    SUBSCRIBE_ENDING("结算资格中"),
     ANNOUNCING("公布中"),
     ANNOUNCING("公布中"),
     ON_SALE("售卖中");
     ON_SALE("售卖中");
 
 

+ 3 - 0
src/main/java/com/izouma/nineth/repo/SubscribeRepo.java

@@ -21,8 +21,11 @@ public interface SubscribeRepo extends JpaRepository<Subscribe, Long>, JpaSpecif
     List<Subscribe> findAllByCollectionId(Long collectionId);
     List<Subscribe> findAllByCollectionId(Long collectionId);
 
 
 //    @Query("select s.id, s.collectionId, s.userId, s.purchaseQualifications from Subscribe s where s.collectionId =?1 and s.userId = ?2")
 //    @Query("select s.id, s.collectionId, s.userId, s.purchaseQualifications from Subscribe s where s.collectionId =?1 and s.userId = ?2")
+    Subscribe findFirstByCollectionIdAndUserId(Long collectionId , Long userId);
+
     Subscribe findAllByCollectionIdAndUserId(Long collectionId , Long userId);
     Subscribe findAllByCollectionIdAndUserId(Long collectionId , Long userId);
 
 
+
     @Transactional
     @Transactional
     @Modifying
     @Modifying
     @Query("update Subscribe s set s.purchaseQualifications = ?2 where s.id = ?1")
     @Query("update Subscribe s set s.purchaseQualifications = ?2 where s.id = ?1")

+ 45 - 15
src/main/java/com/izouma/nineth/service/CollectionService.java

@@ -10,10 +10,7 @@ import com.izouma.nineth.converter.LongArrayConverter;
 import com.izouma.nineth.domain.Collection;
 import com.izouma.nineth.domain.Collection;
 import com.izouma.nineth.domain.*;
 import com.izouma.nineth.domain.*;
 import com.izouma.nineth.dto.*;
 import com.izouma.nineth.dto.*;
-import com.izouma.nineth.enums.AuthStatus;
-import com.izouma.nineth.enums.CollectionSource;
-import com.izouma.nineth.enums.CollectionType;
-import com.izouma.nineth.enums.OrderStatus;
+import com.izouma.nineth.enums.*;
 import com.izouma.nineth.exception.BusinessException;
 import com.izouma.nineth.exception.BusinessException;
 import com.izouma.nineth.repo.*;
 import com.izouma.nineth.repo.*;
 import com.izouma.nineth.utils.JpaUtils;
 import com.izouma.nineth.utils.JpaUtils;
@@ -81,7 +78,8 @@ public class CollectionService {
         if (Arrays.asList(env.getActiveProfiles()).contains("dev")) {
         if (Arrays.asList(env.getActiveProfiles()).contains("dev")) {
             return;
             return;
         }
         }
-        List<Collection> collections = collectionRepo.findByScheduleSaleTrueAndOnShelfFalseAndStartTimeBeforeAndDelFalse(LocalDateTime.now());
+        List<Collection> collections = collectionRepo
+                .findByScheduleSaleTrueAndOnShelfFalseAndStartTimeBeforeAndDelFalse(LocalDateTime.now());
         for (Collection collection : collections) {
         for (Collection collection : collections) {
             onShelfTask(collection);
             onShelfTask(collection);
         }
         }
@@ -159,8 +157,10 @@ public class CollectionService {
                 record.getMaxCount(), record.getCountId(), record.isScanCode(), record.isNoSoldOut(),
                 record.getMaxCount(), record.getCountId(), record.isScanCode(), record.isNoSoldOut(),
                 record.getAssignment(), record.isCouponPayment(), record.getShareBg(), record.getRegisterBg(),
                 record.getAssignment(), record.isCouponPayment(), record.getShareBg(), record.getRegisterBg(),
                 record.getVipQuota(), record.getTimeDelay(), record.getSaleTime(), record.getHoldDays(),
                 record.getVipQuota(), record.getTimeDelay(), record.getSaleTime(), record.getHoldDays(),
-                record.getOpenQuota(), record.getShowroomBg(), record.getMaxCollection(), record.getTotalQuota(),record.getCollectionCategory(),
-                record.getCollectionWorks(),record.getIssuer(),record.getPurchaseInstructions(),record.getEndTime(),record.getPublishTime(),record.getPurchaseTime());
+                record.getOpenQuota(), record.getShowroomBg(), record.getMaxCollection(), record.getTotalQuota(), record
+                        .getCollectionCategory(),
+                record.getCollectionWorks(), record.getIssuer(), record.getPurchaseInstructions(), record
+                        .getEndTime(), record.getPublishTime(), record.getPurchaseTime());
 
 
         record = collectionRepo.findById(record.getId()).orElseThrow(new BusinessException("无记录"));
         record = collectionRepo.findById(record.getId()).orElseThrow(new BusinessException("无记录"));
         onShelfTask(record);
         onShelfTask(record);
@@ -205,13 +205,15 @@ public class CollectionService {
                     collectionDTO.setAppointment(appointmentRepo.findFirstByBlindBoxId(collection.getId()).isPresent());
                     collectionDTO.setAppointment(appointmentRepo.findFirstByBlindBoxId(collection.getId()).isPresent());
                 }
                 }
                 if (showVip && collection.getAssignment() > 0 && user.getVipPurchase() > 0) {
                 if (showVip && collection.getAssignment() > 0 && user.getVipPurchase() > 0) {
-                    int purchase = orderRepo.countByUserIdAndCollectionIdAndVipTrueAndStatusIn(user.getId(), collection.getId(), Arrays.asList(OrderStatus.FINISH, OrderStatus.NOT_PAID, OrderStatus.PROCESSING));
+                    int purchase = orderRepo
+                            .countByUserIdAndCollectionIdAndVipTrueAndStatusIn(user.getId(), collection.getId(), Arrays
+                                    .asList(OrderStatus.FINISH, OrderStatus.NOT_PAID, OrderStatus.PROCESSING));
                     collectionDTO.setVipSurplus(user.getVipPurchase() - purchase);
                     collectionDTO.setVipSurplus(user.getVipPurchase() - purchase);
                 }
                 }
-                Subscribe subscribe = subscribeRepo.findAllByCollectionIdAndUserId(collection.getId(), user.getId());
-                if (!ObjectUtil.isEmpty(subscribe)){
+                Subscribe subscribe = subscribeRepo.findFirstByCollectionIdAndUserId(collection.getId(), user.getId());
+                if (!ObjectUtil.isEmpty(subscribe)) {
                     collectionDTO.setSubscribed(true);
                     collectionDTO.setSubscribed(true);
-                    if (subscribe.isPurchaseQualifications()){
+                    if (subscribe.isPurchaseQualifications()) {
 //                        collectionDTO.setPurchaseQualifications(subscribe.isPurchaseQualifications());
 //                        collectionDTO.setPurchaseQualifications(subscribe.isPurchaseQualifications());
                         collectionDTO.setPurchaseQualifications(true);
                         collectionDTO.setPurchaseQualifications(true);
                     }
                     }
@@ -540,14 +542,18 @@ public class CollectionService {
                 .map(PointDTO::getId)
                 .map(PointDTO::getId)
                 .collect(Collectors.toList());
                 .collect(Collectors.toList());
         log.info(dft.format(time) + "前完成任务人数:{}", collect.size());
         log.info(dft.format(time) + "前完成任务人数:{}", collect.size());
-        log.info("sql: update user set vip_point = 1 where id in ({})", longArrayConverter.convertToDatabaseColumn(collect));
+        log.info("sql: update user set vip_point = 1 where id in ({})", longArrayConverter
+                .convertToDatabaseColumn(collect));
 
 
-        List<PointDTO> collect1 = dtos.stream().filter(dto -> time.isAfter(dto.getCreatedAt())).collect(Collectors.toList());
+        List<PointDTO> collect1 = dtos.stream().filter(dto -> time.isAfter(dto.getCreatedAt()))
+                .collect(Collectors.toList());
         log.info(dft.format(time) + "后完成任务人数:{}", collect1.size());
         log.info(dft.format(time) + "后完成任务人数:{}", collect1.size());
 
 
-        List<Long> collect2 = dtos.stream().filter(dto -> dto.getIdentitySum() > 0).map(PointDTO::getId).collect(Collectors.toList());
+        List<Long> collect2 = dtos.stream().filter(dto -> dto.getIdentitySum() > 0).map(PointDTO::getId)
+                .collect(Collectors.toList());
         log.info("邀请实名认证人量:{}", collect2.size());
         log.info("邀请实名认证人量:{}", collect2.size());
-        log.info("sql: update user set vip_point = 1 where id in ({})", longArrayConverter.convertToDatabaseColumn(collect2));
+        log.info("sql: update user set vip_point = 1 where id in ({})", longArrayConverter
+                .convertToDatabaseColumn(collect2));
 
 
         //只留库存数量
         //只留库存数量
 //        List<PointDTO> result = dtos.stream()
 //        List<PointDTO> result = dtos.stream()
@@ -589,4 +595,28 @@ public class CollectionService {
 
 
         return dtos;
         return dtos;
     }
     }
+
+    @Cacheable(value = "subscribeCollectionList", key = "#pageQuery.hashCode()")
+    public PageWrapper<Collection> subscribeAll(PageQuery pageQuery) {
+        pageQuery.getQuery().put("del", false);
+        Specification<Collection> specification = JpaUtils.toSpecification(pageQuery, Collection.class);
+        PageRequest pageRequest = JpaUtils.toPageRequest(pageQuery);
+        if (pageRequest.getSort().stream().noneMatch(order -> order.getProperty().equals("purchaseTime"))) {
+            pageRequest = PageRequest.of(pageRequest.getPageNumber(), pageQuery.getSize(),
+                    pageRequest.getSort().and(Sort.by("purchaseTime").ascending()));
+        }
+
+        specification = specification.and((Specification<Collection>) (root, criteriaQuery, criteriaBuilder) -> {
+            List<Predicate> and = new ArrayList<>();
+            List<SubscribeStatus> statuses = new ArrayList<>();
+            statuses.add(SubscribeStatus.NOT_STARTED);
+            statuses.add(SubscribeStatus.ONGOING);
+            and.add(root.get("subscribeStatus").in(statuses));
+            and.add(criteriaBuilder.equal(root.get("source"), CollectionSource.OFFICIAL));
+            return criteriaBuilder.and(and.toArray(new Predicate[0]));
+        });
+        Page<Collection> page = collectionRepo.findAll(specification, pageRequest);
+        return new PageWrapper<>(page.getContent(), page.getPageable().getPageNumber(),
+                page.getPageable().getPageSize(), page.getTotalElements());
+    }
 }
 }

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

@@ -23,7 +23,7 @@ public class SubscribeService {
     private SubscribeRepo subscribeRepo;
     private SubscribeRepo subscribeRepo;
 
 
     public void create(Subscribe record) {
     public void create(Subscribe record) {
-        Subscribe subscribe = subscribeRepo.findAllByCollectionIdAndUserId(record.getCollectionId(), record.getUserId());
+        Subscribe subscribe = subscribeRepo.findFirstByCollectionIdAndUserId(record.getCollectionId(), record.getUserId());
         if (!ObjectUtil.isEmpty(subscribe)){
         if (!ObjectUtil.isEmpty(subscribe)){
             throw new BusinessException("请勿重复预约");
             throw new BusinessException("请勿重复预约");
         }
         }

+ 13 - 3
src/main/java/com/izouma/nineth/web/CollectionController.java

@@ -26,9 +26,7 @@ import org.springframework.web.bind.annotation.*;
 
 
 import javax.servlet.http.HttpServletResponse;
 import javax.servlet.http.HttpServletResponse;
 import java.io.IOException;
 import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
+import java.util.*;
 import java.util.stream.Collectors;
 import java.util.stream.Collectors;
 
 
 @RestController
 @RestController
@@ -52,6 +50,7 @@ public class CollectionController extends BaseController {
     public Collection create(@RequestBody Collection record) {
     public Collection create(@RequestBody Collection record) {
         return collectionService.create(record);
         return collectionService.create(record);
     }
     }
+
     //@PreAuthorize("hasRole('ADMIN')")
     //@PreAuthorize("hasRole('ADMIN')")
     @PostMapping("/all")
     @PostMapping("/all")
     public Page<CollectionDTO> all(@RequestBody PageQuery pageQuery) {
     public Page<CollectionDTO> all(@RequestBody PageQuery pageQuery) {
@@ -173,5 +172,16 @@ public class CollectionController extends BaseController {
         cacheService.clearRecommend();
         cacheService.clearRecommend();
         return "ok";
         return "ok";
     }
     }
+
+    @GetMapping("/subscribeList")
+    public Map<String, Object> subscribeList(@RequestBody PageQuery pageQuery) {
+        Page<CollectionDTO> dtoPage = collectionService.toDTO(collectionService.subscribeAll(pageQuery).toPage());
+        Map<String, Object> resultMap = new HashMap<>();
+        resultMap.put("subList", dtoPage);
+        resultMap.put("notSubscribedIds", dtoPage.getContent().stream().filter(dto -> !dto.isSubscribed())
+                .map(CollectionDTO::getId).collect(Collectors
+                        .toList()));
+        return resultMap;
+    }
 }
 }