package com.ruoyi.job; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.ruoyi.cai.cache.AnchorCountTotalCache; import com.ruoyi.cai.service.AnchorService; import com.ruoyi.cai.service.DayIncomeStatisticsService; import com.ruoyi.cai.service.RankService; import com.ruoyi.cai.service.UserService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; import org.springframework.web.bind.annotation.GetMapping; import java.time.DayOfWeek; import java.time.LocalDate; import java.time.format.DateTimeFormatter; import java.time.temporal.TemporalAdjusters; @Component @Slf4j public class RankJob { @Autowired private RankService rankService; @Autowired private DayIncomeStatisticsService dayIncomeStatisticsService; @Autowired private AnchorCountTotalCache anchorCountTotalCache; @Autowired private UserService userService; @Autowired private AnchorService anchorService; // 凌晨0点1分执行一次 @Scheduled(cron = "0 1 0 * * ? ") public void persistentDb() { LocalDate now = LocalDate.now(); LocalDate date = now.plusDays(-1); try { rankService.saveDayRank(date,1); } catch (Exception e) { log.error("保存魅力 日榜失败", e); } try { rankService.saveDayRank(date,2); } catch (Exception e) { log.error("保存邀请 日榜失败", e); } DayOfWeek week = now.getDayOfWeek(); if (week.getValue() == 1) { // 今天是周一 做一下持久化 LocalDate lastWeekDate = now.plusDays(-7); try { rankService.saveWeekRank(lastWeekDate,1); } catch (Exception e) { log.error("保存魅力 周榜失败", e); } try { rankService.saveWeekRank(lastWeekDate,2); } catch (Exception e) { log.error("保存邀请 周榜失败", e); } } int month = now.getDayOfMonth(); if (month == 1) { // 昨天是1号 LocalDate lastMonthDate = now.plusMonths(-1); try { rankService.saveMonthRank(lastMonthDate,1); } catch (Exception e) { log.error("保存魅力 月榜失败", e); } try { rankService.saveMonthRank(lastMonthDate,2); } catch (Exception e) { log.error("保存邀请 月榜失败", e); } } try { dayIncomeStatisticsService.refreshByDate(date); }catch (Exception e){ log.error("更新昨日收益统计失败!",e); } try { userService.refreshByAge(); }catch (Exception e){ log.error("刷新用户年龄失败!",e); } try { long anchorNum = anchorService.count(Wrappers.emptyWrapper()); anchorCountTotalCache.set(date,anchorNum); }catch (Exception e){ log.error("报错昨日主播统计失败!",e); } } }