|
|
@@ -16,6 +16,7 @@ import com.webflux.launchcommon.returnObj.RStatus;
|
|
|
import com.webflux.launchcommon.utils.R;
|
|
|
import io.r2dbc.spi.Parameter;
|
|
|
import jakarta.annotation.Resource;
|
|
|
+import org.jetbrains.annotations.NotNull;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.data.domain.Sort;
|
|
|
import org.springframework.data.r2dbc.core.R2dbcEntityTemplate;
|
|
|
@@ -28,10 +29,7 @@ import reactor.core.publisher.Mono;
|
|
|
|
|
|
import java.time.ZonedDateTime;
|
|
|
import java.time.format.DateTimeFormatter;
|
|
|
-import java.util.ArrayList;
|
|
|
-import java.util.Comparator;
|
|
|
-import java.util.List;
|
|
|
-import java.util.Objects;
|
|
|
+import java.util.*;
|
|
|
import java.util.function.Consumer;
|
|
|
import java.util.stream.Collectors;
|
|
|
import java.util.stream.Stream;
|
|
|
@@ -45,13 +43,14 @@ public class ArticleSercieImp implements ArticleServiceInterface {
|
|
|
|
|
|
|
|
|
// @Scheduled(fixedDelay = 160000)
|
|
|
+ //@Scheduled(cron = "0 0 10 * * ?")
|
|
|
public Mono<Boolean> refresh(){
|
|
|
- DateTime yesterday = DateUtil.yesterday();
|
|
|
- String format = DateUtil.format(yesterday, "yyyy-MM-dd");
|
|
|
- Query query = Query.query(Criteria.where("status").is(1)
|
|
|
- .and("crawler_collection_time").greaterThan(format+" 00:00:01")
|
|
|
- .and("crawler_collection_time").lessThan(format+" 23:59:59")
|
|
|
- );
|
|
|
+ // DateTime yesterday = DateUtil.yesterday();
|
|
|
+ String format = DateUtil.format(new Date(), "yyyy-MM-dd");
|
|
|
+ Criteria criteria = Criteria.where("status").is(1)
|
|
|
+ .and("crawler_collection_time").greaterThan(format + " 00:00:01")
|
|
|
+ .and("crawler_collection_time").lessThan(format + " 23:59:59");
|
|
|
+ Query query = Query.query(criteria);
|
|
|
int size=50;
|
|
|
return template.count(query, ArticleData.class).flatMap(fm -> {
|
|
|
long page = fm % 50L;
|
|
|
@@ -62,7 +61,7 @@ public class ArticleSercieImp implements ArticleServiceInterface {
|
|
|
int i = 0;
|
|
|
while (i < page0) {
|
|
|
// 循环体
|
|
|
- refreshInitialization(i, size).subscribe();
|
|
|
+ refreshInitialization(i, size,criteria).subscribe();
|
|
|
i++;
|
|
|
}
|
|
|
return Mono.just(true);
|
|
|
@@ -84,7 +83,7 @@ public class ArticleSercieImp implements ArticleServiceInterface {
|
|
|
int i = 0;
|
|
|
while (i < page0) {
|
|
|
// 循环体
|
|
|
- refreshInitialization(i, size).subscribe();
|
|
|
+ refreshInitialization(i, size,Criteria.empty()).subscribe();
|
|
|
try {
|
|
|
Thread.sleep(10000L);
|
|
|
} catch (Exception e) {
|
|
|
@@ -99,9 +98,9 @@ public class ArticleSercieImp implements ArticleServiceInterface {
|
|
|
}
|
|
|
});
|
|
|
}
|
|
|
- public Mono<Boolean> refreshInitialization(Integer page ,Integer size){
|
|
|
+ public Mono<Boolean> refreshInitialization(Integer page ,Integer size,Criteria criteria){
|
|
|
DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
|
|
|
- return getArticle(page, size,Criteria.empty())
|
|
|
+ return getArticle(page, size,criteria)
|
|
|
.switchIfEmpty(Mono.just(List.of()))
|
|
|
.flatMap(articleData -> {
|
|
|
if (articleData.isEmpty()) {
|
|
|
@@ -750,4 +749,50 @@ public class ArticleSercieImp implements ArticleServiceInterface {
|
|
|
return RStatus.successList(pagedMono);
|
|
|
}
|
|
|
|
|
|
+ @Override
|
|
|
+ public Mono<RStatus<List<ArticleOutRes>>> random3Page() {
|
|
|
+ return getSizeArticle( 3);
|
|
|
+ }
|
|
|
+
|
|
|
+ @NotNull
|
|
|
+ private Mono<RStatus<List<ArticleOutRes>>> getSizeArticle(Integer size) {
|
|
|
+ StringBuilder startSql = new StringBuilder();
|
|
|
+ startSql.append("SELECT id,front_cover,title,date_time_str FROM article WHERE deleted_at IS NULL ");
|
|
|
+ startSql.append( "AND date_time_str ='");
|
|
|
+ String format = DateUtil.format(new Date(), "yyyy-MM-dd");
|
|
|
+ startSql.append( format);
|
|
|
+ startSql.append( "'");
|
|
|
+ Mono<List<ArticleOutRes>> listMono1 = template.getDatabaseClient().sql(startSql.toString()).map((row, rowMetadata) -> {
|
|
|
+ ArticleOutRes articleRes = new ArticleOutRes();
|
|
|
+ articleRes.setId(row.get("id", Long.class));
|
|
|
+ articleRes.setTitle(row.get("title", String.class));
|
|
|
+ articleRes.setDateTimeStr(row.get("date_time_str", String.class));
|
|
|
+ articleRes.setFrontCover(row.get("front_cover", String.class));
|
|
|
+ return articleRes;
|
|
|
+ }).all().collectList().flatMap(articleOutRes -> {
|
|
|
+ ArrayList<ArticleOutRes> articleOutRes1 = new ArrayList<>();
|
|
|
+ if (!articleOutRes.isEmpty() &&articleOutRes.size()>size) {
|
|
|
+ for (int i =0 ;i<size;i++){
|
|
|
+ List<ArticleOutRes> collect = articleOutRes.stream()
|
|
|
+ .filter(articleOutRes2 ->
|
|
|
+ articleOutRes1.stream().noneMatch(articleOutRes3 -> articleOutRes3.getId().equals(articleOutRes2.getId()))).collect(Collectors.toList());
|
|
|
+ int i1 = RandomUtil.randomInt(0, collect.size());
|
|
|
+ ArticleOutRes articleOutRes2 = collect.get(i1);
|
|
|
+ articleOutRes1.add(articleOutRes2);
|
|
|
+ }
|
|
|
+
|
|
|
+ }else{
|
|
|
+ articleOutRes1.addAll(articleOutRes);
|
|
|
+ }
|
|
|
+ return Mono.just(articleOutRes1);
|
|
|
+
|
|
|
+ });
|
|
|
+ return RStatus.successList(listMono1);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public Mono<RStatus<List<ArticleOutRes>>> random6Page() {
|
|
|
+ return getSizeArticle(6);
|
|
|
+ }
|
|
|
+
|
|
|
}
|