|
|
@@ -24,6 +24,7 @@ import org.springframework.data.domain.Page;
|
|
|
import org.springframework.data.redis.core.BoundValueOperations;
|
|
|
import org.springframework.data.redis.core.RedisTemplate;
|
|
|
import org.springframework.scheduling.TaskScheduler;
|
|
|
+import org.springframework.scheduling.annotation.Scheduled;
|
|
|
import org.springframework.security.crypto.password.PasswordEncoder;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
@@ -58,14 +59,10 @@ public class AuctionActivityService {
|
|
|
if (Arrays.asList(env.getActiveProfiles()).contains("dev")) {
|
|
|
return;
|
|
|
}
|
|
|
- List<AuctionActivity> activities = auctionActivityRepo.findByStartTimeBeforeAndStatusIn(LocalDateTime.now(),
|
|
|
- Arrays.asList(AuctionStatus.NOTSTARTED, AuctionStatus.ONGOING));
|
|
|
+ List<AuctionActivity> activities = auctionActivityRepo.findByStartTimeBeforeAndStatus(LocalDateTime.now(),
|
|
|
+ AuctionStatus.NOTSTARTED);
|
|
|
for (AuctionActivity activity : activities) {
|
|
|
- if (AuctionStatus.NOTSTARTED.equals(activity.getStatus())) {
|
|
|
- onShelfTask(activity);
|
|
|
- } else {
|
|
|
- offShelfTask(activity);
|
|
|
- }
|
|
|
+ onShelfTask(activity);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
@@ -161,8 +158,6 @@ public class AuctionActivityService {
|
|
|
AuctionActivity saved = auctionActivityRepo.save(record);
|
|
|
if (saved.getStatus().equals(AuctionStatus.NOTSTARTED)) {
|
|
|
onShelfTask(saved);
|
|
|
- } else if (saved.getStatus().equals(AuctionStatus.ONGOING)) {
|
|
|
- offShelfTask(saved);
|
|
|
}
|
|
|
return saved;
|
|
|
}
|
|
|
@@ -205,12 +200,12 @@ public class AuctionActivityService {
|
|
|
// .orElseThrow(new BusinessException("无数据"));
|
|
|
this.changeStatus(record.getId(), AuctionStatus.ONGOING);
|
|
|
tasks.remove(record.getId());
|
|
|
- offShelfTask(auctionActivityRepo.findById(record.getId()).orElseThrow(new BusinessException("无数据")));
|
|
|
+// offShelfTask(auctionActivityRepo.findById(record.getId()).orElseThrow(new BusinessException("无数据")));
|
|
|
}, date);
|
|
|
tasks.put(record.getId(), future);
|
|
|
} else {
|
|
|
this.changeStatus(record.getId(), AuctionStatus.ONGOING);
|
|
|
- offShelfTask(auctionActivityRepo.findById(record.getId()).orElseThrow(new BusinessException("无数据")));
|
|
|
+// offShelfTask(auctionActivityRepo.findById(record.getId()).orElseThrow(new BusinessException("无数据")));
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
@@ -275,7 +270,33 @@ public class AuctionActivityService {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- public void removeTask(Long id) {
|
|
|
- tasks.remove(id);
|
|
|
+ /**
|
|
|
+ * 定时下架拍卖
|
|
|
+ * (每隔1分钟执行一次)
|
|
|
+ */
|
|
|
+ @Scheduled(cron = "0 */1 * * * ?")
|
|
|
+ public void passAuction() {
|
|
|
+ List<AuctionActivity> activities = auctionActivityRepo.findAllByStatus(AuctionStatus.ONGOING);
|
|
|
+ activities.forEach(activity -> {
|
|
|
+ if (activity.getEndTime().isBefore(LocalDateTime.now())) {
|
|
|
+ if (ObjectUtils.isNotEmpty(activity.getPurchasePrice())) {
|
|
|
+ log.info("拍卖成交{}", activity.getId());
|
|
|
+ this.changeStatus(activity.getId(), AuctionStatus.PURCHASED);
|
|
|
+ } else {
|
|
|
+ //没有成交价,无人出价过
|
|
|
+ log.info("拍卖流拍Task-else-else{}", activity.getId());
|
|
|
+ this.changeStatus(activity.getId(), AuctionStatus.PASS);
|
|
|
+
|
|
|
+ if (AuctionSource.TRANSFER.equals(activity.getSource())) {
|
|
|
+ Asset asset = assetRepo.findById(activity.getAssetId())
|
|
|
+ .orElseThrow(new BusinessException("暂无"));
|
|
|
+ asset.setStatus(AssetStatus.NORMAL);
|
|
|
+ asset.setConsignment(false);
|
|
|
+ asset.setPublicShow(false);
|
|
|
+ assetRepo.save(asset);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ });
|
|
|
}
|
|
|
}
|