package io.loli.box.green;
import io.loli.box.dao.ImgFileRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.annotation.Scheduled;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.util.Date;
/**
* Created by chocotan on 2016/8/6.
*/
@Configuration
@ConditionalOnProperty(name = "admin.green.enabled", havingValue = "aliyun")
public class AliGreenConfiguration {
@Bean
public GreenService greenService() {
return new AliGreenService();
}
@Autowired
ImgFileRepository imgFileRepository;
@Bean
public Object aliGreenJob(GreenService greenService) {
return new Object() {
@Scheduled(fixedRate = 60000)
public void submitTask() {
LocalDateTime time = LocalDateTime.now();
Date end = Date.from(time.atZone(ZoneId.systemDefault()).toInstant());
time.minusDays(1);
Date start = Date.from(time.atZone(ZoneId.systemDefault()).toInstant());
imgFileRepository.findByGreenStatus(0, start, end).forEach(img -> {
try {
String taskId = greenService.asyncDetect("/images/" + img.getShortName());
imgFileRepository.updateTaskIdById(taskId, img.getId());
imgFileRepository.updateGreenStatusById(1, img.getId());
} catch (Throwable throwable) {
imgFileRepository.updateGreenStatusById(2, img.getId());
}
});
}
@Scheduled(fixedRate = 120000)
public void getResult() {
LocalDateTime time = LocalDateTime.now();
Date end = Date.from(time.atZone(ZoneId.systemDefault()).toInstant());
time.minusDays(1);
time.minusMinutes(60);
Date start = Date.from(time.atZone(ZoneId.systemDefault()).toInstant());
imgFileRepository.findByGreenStatus(1, start, end).forEach(img -> {
try {
float checkResult = greenService.getCheckResult(img.getGreenTaskId());
boolean porn = checkResult > 90;
imgFileRepository.updateGreenStatusById(porn ? 3 : 5, img.getId());
imgFileRepository.updateGreenPointById(checkResult, img.getId());
} catch (Throwable throwable) {
imgFileRepository.updateGreenStatusById(4, img.getId());
}
});
}
};
}
}