Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
yubinCloud
fairy-wiki
提交
14a5175f
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 搜索 >>
提交
14a5175f
编写于
4月 30, 2021
作者:
yubinCloud
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
11-5 增加定时任务,定时从ebook收集数据生成ebook_snapshot数据
上级
dcb5dd09
变更
4
显示空白变更内容
内联
并排
Showing
4 changed file
with
89 addition
and
2 deletion
+89
-2
src/main/java/io/github/yubincloud/fairywiki/job/EbookSnapshotJob.java
.../io/github/yubincloud/fairywiki/job/EbookSnapshotJob.java
+38
-0
src/main/java/io/github/yubincloud/fairywiki/mapper/EbookSnapshotMapperCustom.java
...ubincloud/fairywiki/mapper/EbookSnapshotMapperCustom.java
+5
-0
src/main/java/io/github/yubincloud/fairywiki/service/EbookSnapshotService.java
...ub/yubincloud/fairywiki/service/EbookSnapshotService.java
+6
-2
src/main/resources/mapper/EbookSnapshotMapperCustom.xml
src/main/resources/mapper/EbookSnapshotMapperCustom.xml
+40
-0
未找到文件。
src/main/java/io/github/yubincloud/fairywiki/job/EbookSnapshotJob.java
0 → 100644
浏览文件 @
14a5175f
package
io.github.yubincloud.fairywiki.job
;
import
io.github.yubincloud.fairywiki.service.EbookSnapshotService
;
import
io.github.yubincloud.fairywiki.utils.SnowFlake
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
org.slf4j.MDC
;
import
org.springframework.scheduling.annotation.Scheduled
;
import
org.springframework.stereotype.Component
;
import
javax.annotation.Resource
;
@Component
public
class
EbookSnapshotJob
{
private
static
final
Logger
LOG
=
LoggerFactory
.
getLogger
(
EbookSnapshotJob
.
class
);
@Resource
private
EbookSnapshotService
ebookSnapshotService
;
@Resource
private
SnowFlake
snowFlake
;
/**
* 自定义cron表达式跑批
* 只有等上一次执行完成,下一次才会在下一个时间点执行,错过就错过
*/
@Scheduled
(
cron
=
"0/5 * * * * ?"
)
public
void
doSnapshot
()
{
// 增加日志流水号
MDC
.
put
(
"LOG_ID"
,
String
.
valueOf
(
snowFlake
.
nextId
()));
LOG
.
info
(
"生成今日电子书快照开始"
);
long
start
=
System
.
currentTimeMillis
();
ebookSnapshotService
.
genSnapshots
();
LOG
.
info
(
"生成今日电子书快照结束,耗时:{}毫秒"
,
System
.
currentTimeMillis
()
-
start
);
}
}
src/main/java/io/github/yubincloud/fairywiki/mapper/EbookSnapshotMapperCustom.java
0 → 100644
浏览文件 @
14a5175f
package
io.github.yubincloud.fairywiki.mapper
;
public
interface
EbookSnapshotMapperCustom
{
void
genSnapshot
();
}
src/main/java/io/github/yubincloud/fairywiki/service/EbookSnapshotService.java
浏览文件 @
14a5175f
package
io.github.yubincloud.fairywiki.service
;
import
io.github.yubincloud.fairywiki.mapper.EbookSnapshotMapper
;
import
io.github.yubincloud.fairywiki.mapper.EbookSnapshotMapper
Custom
;
import
org.springframework.stereotype.Service
;
import
javax.annotation.Resource
;
...
...
@@ -9,5 +9,9 @@ import javax.annotation.Resource;
public
class
EbookSnapshotService
{
@Resource
private
EbookSnapshotMapper
ebookSnapshotMapper
;
private
EbookSnapshotMapperCustom
ebookSnapshotMapperCustom
;
public
void
genSnapshots
()
{
ebookSnapshotMapperCustom
.
genSnapshot
();
}
}
src/main/resources/mapper/EbookSnapshotMapperCustom.xml
0 → 100644
浏览文件 @
14a5175f
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper
namespace=
"io.github.yubincloud.fairywiki.mapper.EbookSnapshotMapperCustom"
>
<!--
# 方案一(ID不连续):
# 删除今天的数据
# 为所有的电子书生成一条今天的记录
# 更新总阅读数、总点赞数
# 更新今日阅读数、今日点赞数
# 方案二(ID连续):
# 为所有的电子书生成一条今天的记录,如果还没有
# 更新总阅读数、总点赞数
# 更新今日阅读数、今日点赞数
-->
<update
id=
"genSnapshot"
>
INSERT INTO ebook_snapshot(ebook_id, `date`, view_count, vote_count, view_increase, vote_increase)
SELECT t1.id, curdate(), 0, 0, 0, 0
FROM ebook t1
WHERE NOT EXISTS(SELECT 1
FROM ebook_snapshot t2
WHERE t1.id = t2.ebook_id
AND t2.`date` = curdate());
UPDATE ebook_snapshot t1, ebook t2
SET t1.view_count = t2.view_count,
t1.vote_count = t2.vote_count
WHERE t1.`date` = curdate()
AND t1.ebook_id = t2.id;
UPDATE ebook_snapshot t1 LEFT JOIN (SELECT ebook_id, view_count, vote_count
FROM ebook_snapshot
WHERE `date` = date_sub(curdate(), INTERVAL 1 DAY)) t2
ON t1.ebook_id = t2.ebook_id
SET t1.view_increase = (t1.view_count - ifnull(t2.view_count, 0)),
t1.vote_increase = (t1.vote_count - ifnull(t2.vote_count, 0))
WHERE t1.`date` = curdate();
</update>
</mapper>
\ No newline at end of file
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录