inleft
2022-08-21 7fe1bd7734e8a1f80523d5fce34290e3f20a7403
commit | author | age
7fe1bd 1 package vip.xiaonuo.modular.task;
I 2
3 import cn.hutool.core.date.DateUtil;
4 import cn.hutool.core.lang.Dict;
5 import cn.hutool.extra.template.Template;
6 import cn.hutool.extra.template.TemplateConfig;
7 import cn.hutool.extra.template.TemplateEngine;
8 import cn.hutool.extra.template.TemplateUtil;
9 import lombok.extern.slf4j.Slf4j;
10 import org.springframework.stereotype.Component;
11 import vip.xiaonuo.core.consts.MyConstant;
12 import vip.xiaonuo.core.email.MailSender;
13 import vip.xiaonuo.core.email.modular.model.SendMailParam;
14 import vip.xiaonuo.core.timer.TimerTaskRunner;
15 import vip.xiaonuo.modular.blogarticlecomment.entity.BlogArticleComment;
16 import vip.xiaonuo.modular.blogarticlecomment.service.BlogArticleCommentService;
17
18 import javax.annotation.Resource;
19 import java.util.List;
20 import java.util.stream.Collectors;
21
22 /**
23  * ALTER TABLE `blog_dev`.`blog_article_comment`
24  * ADD COLUMN `is_remind` int(4) NOT NULL DEFAULT 0 COMMENT '是否已提醒 0:否 1:是' AFTER `is_read`;
25  */
26 @Component
27 @Slf4j
28 public class EMailTaskRunner implements TimerTaskRunner {
29
30     @Resource
31     private BlogArticleCommentService commentService;
32
33     @Resource
34     private MailSender mailSender;
35
36     /**
37      * 邮件定时提醒消息
38      * 最近一天内的未读消息(除了自己发的消息)
39      */
40     @Override
41     public void action() {
42         log.info("邮件自提醒定时任务来啦。。");
43
44         List<BlogArticleComment> commentList = commentService.lambdaQuery()
45                 .ne(BlogArticleComment::getVisitorNickName, MyConstant.inleft)
46                 .eq(BlogArticleComment::getIsRead, MyConstant.No)
47                 .eq(BlogArticleComment::getIsRemind, MyConstant.No)
48                 .ge(BlogArticleComment::getCreateDate, DateUtil.offsetDay(DateUtil.date(), -1))
49                 .select(BlogArticleComment::getId, BlogArticleComment::getVisitorNickName, BlogArticleComment::getCommentContent)
50                 .last("limit 100")
51                 .list();
52
53         if (commentList.size() == 0) {
54             log.info("本次无提醒消息条数。。");
55             return;
56         }
57
58         TemplateEngine engine = TemplateUtil.createEngine(new TemplateConfig(MyConstant.ftlModel.path, TemplateConfig.ResourceMode.CLASSPATH));
59         Template template = engine.getTemplate(MyConstant.ftlModel.remind);
60         //发送邮件
61         Dict dict = Dict.create()
62                 .set("contentList", commentList)
63                 .set("sendContent", commentList.size());
64         String result = template.render(dict);
65
66         SendMailParam param = new SendMailParam();
67         param.setContent(result);
68         param.setTitle("邮箱自提醒任务..\n");
69         param.setTo(MyConstant.email);
70         mailSender.sendMailHtml(param);
71
72         //更新为已提醒
73         commentService.updateBatchById(commentList.stream().map(e -> {
74             BlogArticleComment updateTarget = new BlogArticleComment();
75             updateTarget.setId(e.getId());
76             updateTarget.setIsRemind(MyConstant.Yes);
77             return updateTarget;
78         }).collect(Collectors.toList()));
79
80         log.info("本次任务完成。。");
81
82     }
83
84     public static void main(String[] args) {
85         System.out.println(DateUtil.offsetDay(DateUtil.date(), -1));
86     }
87
88 }