|
|
@@ -4,20 +4,17 @@ import com.izouma.nineth.annotations.Debounce;
|
|
|
import com.izouma.nineth.config.RedisKeys;
|
|
|
import com.izouma.nineth.domain.Asset;
|
|
|
import com.izouma.nineth.domain.AuctionActivity;
|
|
|
-import com.izouma.nineth.domain.Collection;
|
|
|
import com.izouma.nineth.domain.User;
|
|
|
import com.izouma.nineth.dto.PageQuery;
|
|
|
import com.izouma.nineth.dto.auction.AuctionInputDTO;
|
|
|
import com.izouma.nineth.enums.*;
|
|
|
import com.izouma.nineth.exception.BusinessException;
|
|
|
-import com.izouma.nineth.repo.AssetRepo;
|
|
|
-import com.izouma.nineth.repo.AuctionActivityRepo;
|
|
|
-import com.izouma.nineth.repo.TokenHistoryRepo;
|
|
|
-import com.izouma.nineth.repo.UserRepo;
|
|
|
+import com.izouma.nineth.repo.*;
|
|
|
import com.izouma.nineth.utils.JpaUtils;
|
|
|
import com.izouma.nineth.utils.SecurityUtils;
|
|
|
import lombok.AllArgsConstructor;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
+import org.apache.commons.lang3.ObjectUtils;
|
|
|
import org.springframework.core.env.Environment;
|
|
|
import org.springframework.data.domain.Page;
|
|
|
import org.springframework.data.redis.core.BoundValueOperations;
|
|
|
@@ -25,8 +22,8 @@ import org.springframework.data.redis.core.RedisTemplate;
|
|
|
import org.springframework.scheduling.TaskScheduler;
|
|
|
import org.springframework.security.crypto.password.PasswordEncoder;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
-import org.springframework.web.bind.annotation.RequestBody;
|
|
|
|
|
|
+import javax.annotation.PostConstruct;
|
|
|
import java.math.BigDecimal;
|
|
|
import java.time.LocalDateTime;
|
|
|
import java.time.ZoneId;
|
|
|
@@ -49,9 +46,22 @@ public class AuctionActivityService {
|
|
|
private final Environment env;
|
|
|
private final TokenHistoryRepo tokenHistoryRepo;
|
|
|
private final SysConfigService sysConfigService;
|
|
|
+ private final AuctionRecordRepo auctionRecordRepo;
|
|
|
|
|
|
private final Map<Long, ScheduledFuture<?>> tasks = new HashMap<>();
|
|
|
|
|
|
+ @PostConstruct
|
|
|
+ public void init() {
|
|
|
+ if (Arrays.asList(env.getActiveProfiles()).contains("dev")) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ List<AuctionActivity> activities = auctionActivityRepo.findByStartTimeBeforeAndStatus(LocalDateTime.now(),
|
|
|
+ AuctionStatus.NOTSTARTED);
|
|
|
+ for (AuctionActivity activity : activities) {
|
|
|
+ onShelfTask(activity);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
public Page<AuctionActivity> all(PageQuery pageQuery) {
|
|
|
return auctionActivityRepo
|
|
|
.findAll(JpaUtils.toSpecification(pageQuery, AuctionActivity.class), JpaUtils.toPageRequest(pageQuery));
|
|
|
@@ -126,7 +136,15 @@ public class AuctionActivityService {
|
|
|
}
|
|
|
|
|
|
//是否二次拍卖
|
|
|
-
|
|
|
+ AuctionActivity activity = auctionActivityRepo.findByAssetId(asset.getId());
|
|
|
+ if (ObjectUtils.isNotEmpty(activity)) {
|
|
|
+ if (!AuctionStatus.PASS.equals(activity.getStatus())) {
|
|
|
+ throw new BusinessException("已有拍卖");
|
|
|
+ }
|
|
|
+ log.info("删除流拍拍卖:id-{},assetId-{}", activity.getId(), activity.getAssetId());
|
|
|
+ auctionActivityRepo.delete(activity);
|
|
|
+ auctionRecordRepo.deleteAllByAuctionId(activity.getId());
|
|
|
+ }
|
|
|
|
|
|
asset.setStatus(AssetStatus.AUCTIONING);
|
|
|
assetRepo.save(asset);
|