package com.mzl.flower.schedule;
|
|
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
import com.mzl.flower.entity.film.FilmWorks;
|
import com.mzl.flower.mapper.film.CommentPoMapper;
|
import com.mzl.flower.mapper.film.FilmCollectsMapper;
|
import com.mzl.flower.mapper.film.FilmLikesMapper;
|
import com.mzl.flower.mapper.film.FilmWorksMapper;
|
import com.mzl.flower.service.customer.CustomerService;
|
import lombok.extern.slf4j.Slf4j;
|
import org.apache.commons.lang3.time.DateFormatUtils;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.context.annotation.Profile;
|
import org.springframework.scheduling.annotation.Scheduled;
|
import org.springframework.stereotype.Component;
|
|
import javax.annotation.Resource;
|
import java.time.LocalDate;
|
import java.util.List;
|
|
@Component
|
@Slf4j
|
public class ScheduleService {
|
|
@Resource
|
private CustomerService customerService;
|
@Resource
|
private FilmWorksMapper filmWorksMapper;
|
@Resource
|
private FilmLikesMapper filmLikesMapper;
|
@Resource
|
private FilmCollectsMapper filmCollectsMapper;
|
@Resource
|
private CommentPoMapper commentPoMapper;
|
|
@Scheduled(cron = "0 15 17 * * ?")
|
@Profile("prod")
|
public void DealSendMessageInfoBySupplier() {
|
log.info("供应商下单供货提示开始:" + DateFormatUtils.format(System.currentTimeMillis(), "yyyy-MM-dd HH:mm:ss"));
|
log.info("供应商下单供货提示结束:" + DateFormatUtils.format(System.currentTimeMillis(), "yyyy-MM-dd HH:mm:ss"));
|
}
|
|
// vip过期时间校验,每隔1个小时执行一次
|
@Scheduled(cron = "0 0 1 * * ?")
|
public void checkVipExpireTime() {
|
customerService.checkVipExpireTime();
|
}
|
|
|
//降低置顶权重。每天晚上11点执行一次
|
@Scheduled(cron = "0 0 23 * * ?")
|
public void downFilmWorksStickyWeight() {
|
// 每日减少10点权重,最低不低于0
|
filmWorksMapper.update(null, new LambdaUpdateWrapper<FilmWorks>().setSql("sticky_weight = GREATEST(sticky_weight - 10, 0)"));
|
log.info("每日置顶权重降低完成");
|
}
|
|
//提高置顶权重。每天早上6点执行一次(设计当天点赞+5,评论+10,收藏+10)
|
@Scheduled(cron = "0 0 6 * * ?")
|
public void upFilmWorksStickyWeight() {
|
// 获取昨天(当天)的互动数据
|
LocalDate yesterday = LocalDate.now().minusDays(1);
|
|
// 获取所有需要更新的作品
|
List<FilmWorks> worksList = filmWorksMapper.selectList(null);
|
|
worksList.forEach(work -> {
|
// 获取点赞数(需要实现统计方法)
|
int likes = filmLikesMapper.countByFilmIdAndDate(work.getId(), yesterday);
|
// 获取评论数(需要实现统计方法)
|
int comments = filmCollectsMapper.countByFilmIdAndDate(work.getId(), yesterday);
|
// 获取收藏数(需要实现统计方法)
|
int collects = commentPoMapper.countByFilmIdAndDate(work.getId(), yesterday);
|
// 计算权重增量
|
int increment = likes * 5 + comments * 10 + collects * 10;
|
|
if (increment > 0) {
|
filmWorksMapper.update(null, new LambdaUpdateWrapper<FilmWorks>().eq(FilmWorks::getId, work.getId()).setSql("sticky_weight = sticky_weight + " + increment));
|
}
|
});
|
log.info("每日互动权重加成完成");
|
}
|
|
|
}
|