Task.java 1.5 KB

12345678910111213141516171819202122232425262728293031323334
  1. package com.fs.app.task;
  2. import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
  3. import com.fs.ad.domain.AdHtmlClickLog;
  4. import com.fs.ad.service.IAdHtmlClickLogService;
  5. import com.fs.ad.service.impl.AdHtmlClickLogServiceImpl;
  6. import com.fs.common.core.redis.RedisCacheT;
  7. import lombok.AllArgsConstructor;
  8. import org.springframework.scheduling.annotation.Scheduled;
  9. import org.springframework.stereotype.Component;
  10. import java.time.LocalDateTime;
  11. import java.time.temporal.ChronoUnit;
  12. import java.util.List;
  13. import java.util.concurrent.TimeUnit;
  14. @Component
  15. @AllArgsConstructor
  16. public class Task {
  17. private RedisCacheT<AdHtmlClickLog> redisCache;
  18. private IAdHtmlClickLogService adHtmlClickLogService;
  19. // @Scheduled(cron = "0/30 * * * * ?")
  20. @Scheduled(cron = "0 0/30 * * * ?")
  21. public void saveLog() {
  22. List<AdHtmlClickLog> list = redisCache.getCacheListByPattern(AdHtmlClickLogServiceImpl.AD_LOG_KEY + "*");
  23. list.stream().filter(e -> e.getId() == null).forEach(e -> {
  24. String key = AdHtmlClickLogServiceImpl.genKey(e.getVid(), e.getType(), e.getClickType());
  25. adHtmlClickLogService.save(e);
  26. redisCache.setCacheObject(key, e, LocalDateTime.now().until(e.getLastTime(), ChronoUnit.MINUTES), TimeUnit.MINUTES);
  27. });
  28. list.stream().filter(e -> e.getId() != null).forEach(e -> adHtmlClickLogService.update(e, new QueryWrapper<AdHtmlClickLog>().eq("vid", e.getVid()).eq("click_type", e.getClickType())));
  29. }
  30. }