Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
yubinCloud
fairy-wiki
提交
c8cda227
F
fairy-wiki
项目概览
yubinCloud
/
fairy-wiki
通知
4
Star
1
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
F
fairy-wiki
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
c8cda227
编写于
4月 29, 2021
作者:
yubinCloud
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
10-6 增加定时任务,定时执行更新 ebook 信息的 SQL
上级
a33fe00c
变更
5
隐藏空白更改
内联
并排
Showing
5 changed file
with
89 addition
and
40 deletion
+89
-40
src/main/java/io/github/yubincloud/fairywiki/job/DocJob.java
src/main/java/io/github/yubincloud/fairywiki/job/DocJob.java
+28
-0
src/main/java/io/github/yubincloud/fairywiki/job/ScheduleJobDemo.java
...a/io/github/yubincloud/fairywiki/job/ScheduleJobDemo.java
+39
-39
src/main/java/io/github/yubincloud/fairywiki/mapper/DocMapperCustom.java
...o/github/yubincloud/fairywiki/mapper/DocMapperCustom.java
+5
-0
src/main/java/io/github/yubincloud/fairywiki/service/DocService.java
...va/io/github/yubincloud/fairywiki/service/DocService.java
+8
-1
src/main/resources/mapper/DocMapperCustom.xml
src/main/resources/mapper/DocMapperCustom.xml
+9
-0
未找到文件。
src/main/java/io/github/yubincloud/fairywiki/job/DocJob.java
0 → 100644
浏览文件 @
c8cda227
package
io.github.yubincloud.fairywiki.job
;
import
io.github.yubincloud.fairywiki.service.DocService
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
org.springframework.scheduling.annotation.Scheduled
;
import
org.springframework.stereotype.Component
;
import
javax.annotation.Resource
;
@Component
public
class
DocJob
{
private
static
final
Logger
LOG
=
LoggerFactory
.
getLogger
(
DocJob
.
class
);
@Resource
private
DocService
docService
;
/**
* 每30秒更新电子书信息
*/
@Scheduled
(
cron
=
"5/30 * * * * ?"
)
public
void
cron
()
{
System
.
out
.
println
(
"Starting a doc job"
);
docService
.
updateEbookFooter
();
}
}
src/main/java/io/github/yubincloud/fairywiki/job/ScheduleJobDemo.java
浏览文件 @
c8cda227
package
io.github.yubincloud.fairywiki.job
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
org.springframework.scheduling.annotation.Scheduled
;
import
org.springframework.stereotype.Component
;
import
java.text.SimpleDateFormat
;
import
java.util.Date
;
@Component
public
class
ScheduleJobDemo
{
private
static
final
Logger
LOG
=
LoggerFactory
.
getLogger
(
ScheduleJobDemo
.
class
);
/**
* 固定时间间隔,fixedRate单位毫秒
*/
@Scheduled
(
fixedRate
=
1000
)
public
void
simple
()
throws
InterruptedException
{
SimpleDateFormat
formatter
=
new
SimpleDateFormat
(
"mm:ss"
);
String
dateString
=
formatter
.
format
(
new
Date
());
Thread
.
sleep
(
2000
);
LOG
.
info
(
"每隔5秒钟执行一次: {}"
,
dateString
);
}
/**
* 自定义cron表达式跑批
* 只有等上一次执行完成,下一次才会在下一个时间点执行,错过就错过
*/
@Scheduled
(
cron
=
"*/1 * * * * ?"
)
public
void
cron
()
throws
InterruptedException
{
SimpleDateFormat
formatter
=
new
SimpleDateFormat
(
"mm:ss SSS"
);
String
dateString
=
formatter
.
format
(
new
Date
());
Thread
.
sleep
(
1500
);
LOG
.
info
(
"每隔1秒钟执行一次: {}"
,
dateString
);
}
}
//
package io.github.yubincloud.fairywiki.job;
//
//
import org.slf4j.Logger;
//
import org.slf4j.LoggerFactory;
//
import org.springframework.scheduling.annotation.Scheduled;
//
import org.springframework.stereotype.Component;
//
//
import java.text.SimpleDateFormat;
//
import java.util.Date;
//
//
//
@Component
//
public class ScheduleJobDemo {
//
//
private static final Logger LOG = LoggerFactory.getLogger(ScheduleJobDemo.class);
//
//
/**
//
* 固定时间间隔,fixedRate单位毫秒
//
*/
//
@Scheduled(fixedRate = 1000)
//
public void simple() throws InterruptedException {
//
SimpleDateFormat formatter = new SimpleDateFormat("mm:ss");
//
String dateString = formatter.format(new Date());
//
Thread.sleep(2000);
//
LOG.info("每隔5秒钟执行一次: {}", dateString);
//
}
//
//
/**
//
* 自定义cron表达式跑批
//
* 只有等上一次执行完成,下一次才会在下一个时间点执行,错过就错过
//
*/
//
@Scheduled(cron = "*/1 * * * * ?")
//
public void cron() throws InterruptedException {
//
SimpleDateFormat formatter = new SimpleDateFormat("mm:ss SSS");
//
String dateString = formatter.format(new Date());
//
Thread.sleep(1500);
//
LOG.info("每隔1秒钟执行一次: {}", dateString);
//
}
//
}
src/main/java/io/github/yubincloud/fairywiki/mapper/DocMapperCustom.java
浏览文件 @
c8cda227
...
...
@@ -15,4 +15,9 @@ public interface DocMapperCustom {
* @param docId 文档的 id
*/
void
increaseVoteCount
(
@Param
(
"id"
)
Long
docId
);
/**
* 更新所有 Ebook 的阅读量、点赞量信息
*/
void
updateEbookFooter
();
}
src/main/java/io/github/yubincloud/fairywiki/service/DocService.java
浏览文件 @
c8cda227
...
...
@@ -18,10 +18,10 @@ import io.github.yubincloud.fairywiki.utils.CopyUtil;
import
io.github.yubincloud.fairywiki.utils.RedisUtil
;
import
io.github.yubincloud.fairywiki.utils.RequestContext
;
import
io.github.yubincloud.fairywiki.utils.SnowFlake
;
import
org.apache.commons.lang3.ObjectUtils
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
org.springframework.stereotype.Service
;
import
org.springframework.util.ObjectUtils
;
import
javax.annotation.Resource
;
import
java.util.List
;
...
...
@@ -153,4 +153,11 @@ public class DocService {
private
String
constructIpKeyInRedis
(
Long
docId
,
String
ip
)
{
return
"ODC_VOTE_"
+
docId
+
"_"
+
ip
;
}
/**
* 更新所有 Ebook 的阅读量、点赞量信息
*/
public
void
updateEbookFooter
()
{
docMapperCustom
.
updateEbookFooter
();
}
}
src/main/resources/mapper/DocMapperCustom.xml
浏览文件 @
c8cda227
...
...
@@ -14,4 +14,13 @@
WHERE id = #{id}
</update>
<update
id=
"updateEbookFooter"
>
UPDATE ebook t1, (
SELECT ebook_id, count(1) doc_count, sum(view_count) view_count, sum(vote_count) vote_count
FROM doc
GROUP BY ebook_id) t2
SET t1.doc_count = t2.doc_count, t1.view_count = t2.view_count, t1.vote_count = t2.vote_count
WHERE t1.id = t2.ebook_id
</update>
</mapper>
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录