//异步编排 多线程执行//获取现在时间段的秒杀商品 并合并到dailySecondKillVO//判断activityDateVO是否有指定时间 如果为空则为当前时间CompletableFuture<List<DailySecondKillVO>> listCompletableFuture = CompletableFuture.supplyAsync(() -> {System.out.println(1);List<DailySecondKillVO> dailySecondKillVO = new ArrayList<>();//获取参加今天秒杀的商品List<SecondKillApplicationEntity> secondKillApplication = secondKillApplicationDao.secondKillGoodsToday();if (activityDateVO.getStartIntervalTime() == null) {long count = secondKillApplication.parallelStream().filter(secondKillApplicationEntity -> secondKillApplicationEntity.getStartIntervalTime().isBefore(LocalTime.now()) && secondKillApplicationEntity.getEndIntervalTime().isAfter(LocalTime.now())).map(secoundEntity -> {DailySecondKillVO dailySecondKillVO1 = new DailySecondKillVO();BeanUtils.copyProperties(secoundEntity, dailySecondKillVO1);dailySecondKillVO.add(dailySecondKillVO1);return dailySecondKillVO;}).count();} else {long count = secondKillApplication.parallelStream().filter(secondKillApplicationEntity -> secondKillApplicationEntity.getStartIntervalTime().equals(activityDateVO.getStartIntervalTime())).map(secoundEntity -> {DailySecondKillVO dailySecondKillVO1 = new DailySecondKillVO();BeanUtils.copyProperties(secoundEntity, dailySecondKillVO1);dailySecondKillVO.add(dailySecondKillVO1);return dailySecondKillVO;}).count();}return dailySecondKillVO;}, executor);CompletableFuture<List<SpikeTimePeriodEntity>> sort = CompletableFuture.supplyAsync(() -> {System.out.println(2);List<SpikeTimePeriodEntity> timeSlot = spikeTimePeriodDao.timeSlot();int size = timeSlot.size();if (size <= 5) {int count = 5 - size;QueryWrapper<SpikeTimePeriodEntity> queryWrapper = new QueryWrapper<>(new SpikeTimePeriodEntity());queryWrapper.orderByAsc("sort");queryWrapper.last("limit " + count);List<SpikeTimePeriodEntity> spikeTimePeriodEntities1 = spikeTimePeriodDao.selectList(queryWrapper);timeSlot.addAll(spikeTimePeriodEntities1);}return timeSlot;}, executor);//构建时间段选型按照现在的时间段 以及后面四个CompletableFuture<Void> voidCompletableFuture = CompletableFuture.allOf(listCompletableFuture, sort);try {return R.ok().put("dailySecondKillVO",listCompletableFuture.get()).put("timeSlot",sort.get());} catch (InterruptedException e) {throw new RuntimeException(e);} catch (ExecutionException e) {throw new RuntimeException(e);}
