Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
yubinCloud
fairy-wiki
比较版本
a2d7c247e2e1f645e547aaf131889096b00761e1...e4f7ebec99c52ab67ed88674891c7bfb89351a8e
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 搜索 >>
源分支
e4f7ebec99c52ab67ed88674891c7bfb89351a8e
选择Git版本
...
目标分支
a2d7c247e2e1f645e547aaf131889096b00761e1
选择Git版本
比较
Commits (3)
https://gitcode.net/qq_45668004/fairy-wiki/-/commit/fcd08cc4922be4e53034e0ad9e17b245500e819d
11-9 后端增加获取近30天统计数据的接口
2021-04-30T17:58:41+08:00
yubinCloud
yubin_SkyWalker@yeah.net
https://gitcode.net/qq_45668004/fairy-wiki/-/commit/1cbd090a810b899652f50c1f750fde16cf1835c6
11-9 展示 30 天趋势图
2021-04-30T18:08:48+08:00
yubinCloud
yubin_SkyWalker@yeah.net
https://gitcode.net/qq_45668004/fairy-wiki/-/commit/e4f7ebec99c52ab67ed88674891c7bfb89351a8e
11-10 将 README 中图片变小
2021-04-30T18:21:07+08:00
yubinCloud
yubin_SkyWalker@yeah.net
隐藏空白更改
内联
并排
Showing
7 changed file
with
120 addition
and
19 deletion
+120
-19
README.md
README.md
+4
-2
src/main/java/io/github/yubincloud/fairywiki/controller/EbookSnapshotController.java
...incloud/fairywiki/controller/EbookSnapshotController.java
+8
-1
src/main/java/io/github/yubincloud/fairywiki/dto/resp/StatisticRespDto.java
...ithub/yubincloud/fairywiki/dto/resp/StatisticRespDto.java
+3
-0
src/main/java/io/github/yubincloud/fairywiki/mapper/EbookSnapshotMapperCustom.java
...ubincloud/fairywiki/mapper/EbookSnapshotMapperCustom.java
+2
-0
src/main/java/io/github/yubincloud/fairywiki/service/EbookSnapshotService.java
...ub/yubincloud/fairywiki/service/EbookSnapshotService.java
+7
-0
src/main/resources/mapper/EbookSnapshotMapperCustom.xml
src/main/resources/mapper/EbookSnapshotMapperCustom.xml
+16
-0
web/src/components/the-welcome.vue
web/src/components/the-welcome.vue
+80
-16
未找到文件。
README.md
浏览文件 @
e4f7ebec
# Fairy Wiki
![
Fairy Wiki
](
https://gitee.com/yubinCloud/my-imgs-repo/raw/main/img/image-20210429230142271.png
)
![](
https://img.shields.io/badge/license-MIT-000000.svg
)
![](
https://img.shields.io/badge/language-Java-orange.svg
)
![](
https://img.shields.io/badge/language-TypeScript-green.svg
)
![
Fairy2_small
](
https://gitee.com/yubinCloud/my-imgs-repo/raw/main/img/Fairy2_small.png
)
![](
https://img.shields.io/badge/license-MIT-000000.svg
)
![](
https://img.shields.io/badge/language-Java-orange.svg
)
![](
https://img.shields.io/badge/language-TypeScript-green.svg
)
\ No newline at end of file
src/main/java/io/github/yubincloud/fairywiki/controller/EbookSnapshotController.java
浏览文件 @
e4f7ebec
...
...
@@ -23,9 +23,16 @@ public class EbookSnapshotController {
private
EbookSnapshotService
ebookSnapshotService
;
@GetMapping
(
"/get-statistic"
)
@ApiOperation
(
value
=
"从电子书快照中获取统计数据"
)
@ApiOperation
(
value
=
"从电子书快照中
昨天和今天的
获取统计数据"
)
public
RestfulModel
<
List
<
StatisticRespDto
>>
getStatistic
()
{
List
<
StatisticRespDto
>
statisticRespDtoList
=
ebookSnapshotService
.
getStatistic
();
return
new
RestfulModel
<>(
ErrorCode
.
SUCCESS
,
""
,
statisticRespDtoList
);
}
@GetMapping
(
"/get-30-statistic"
)
@ApiOperation
(
value
=
"从电子书快照中获取近30天的统计数据"
)
public
RestfulModel
<
List
<
StatisticRespDto
>>
get30DayStatistic
()
{
List
<
StatisticRespDto
>
statisticRespDtoList
=
ebookSnapshotService
.
get30DayStatistic
();
return
new
RestfulModel
<>(
ErrorCode
.
SUCCESS
,
""
,
statisticRespDtoList
);
}
}
src/main/java/io/github/yubincloud/fairywiki/dto/resp/StatisticRespDto.java
浏览文件 @
e4f7ebec
package
io.github.yubincloud.fairywiki.dto.resp
;
import
com.fasterxml.jackson.annotation.JsonFormat
;
import
lombok.Data
;
import
java.util.Date
;
@Data
public
class
StatisticRespDto
{
@JsonFormat
(
pattern
=
"MM-dd"
,
timezone
=
"GMT+8"
)
private
Date
date
;
private
int
viewCount
;
...
...
src/main/java/io/github/yubincloud/fairywiki/mapper/EbookSnapshotMapperCustom.java
浏览文件 @
e4f7ebec
...
...
@@ -8,4 +8,6 @@ public interface EbookSnapshotMapperCustom {
void
genSnapshot
();
List
<
StatisticRespDto
>
getStatistic
();
List
<
StatisticRespDto
>
get30DayStatistic
();
}
src/main/java/io/github/yubincloud/fairywiki/service/EbookSnapshotService.java
浏览文件 @
e4f7ebec
...
...
@@ -32,4 +32,11 @@ public class EbookSnapshotService {
}
return
statisticDataList
;
}
/**
* 30天数值统计
*/
public
List
<
StatisticRespDto
>
get30DayStatistic
()
{
return
ebookSnapshotMapperCustom
.
get30DayStatistic
();
}
}
src/main/resources/mapper/EbookSnapshotMapperCustom.xml
浏览文件 @
e4f7ebec
...
...
@@ -54,4 +54,20 @@
t1.`date` ASC;
</select>
<select
id=
"get30DayStatistic"
resultType=
"io.github.yubincloud.fairywiki.dto.resp.StatisticRespDto"
>
SELECT
t1.`date` AS `date`,
SUM(t1.view_count) AS viewCount,
SUM(t1.vote_count) AS voteCount
FROM
ebook_snapshot t1
WHERE
t1.`date` >= date_sub(curdate(), INTERVAL 30 DAY)
GROUP BY
t1.`date`
ORDER BY
t1.`date` ASC;
</select>
</mapper>
\ No newline at end of file
web/src/components/the-welcome.vue
浏览文件 @
e4f7ebec
...
...
@@ -136,7 +136,10 @@ export default defineComponent({
const
statistic
=
ref
();
statistic
.
value
=
{};
const
getStatistic
=
()
=>
{
/**
* 生成昨天和今天的数据统计表格
*/
const
genTwoDayStatisticTable
=
()
=>
{
axios
.
get
(
'
/ebook-snapshot/get-statistic
'
).
then
((
response
)
=>
{
const
respData
=
response
.
data
;
if
(
respData
.
code
===
0
)
{
...
...
@@ -158,28 +161,89 @@ export default defineComponent({
});
};
const
testEcharts
=
()
=>
{
const
chart
=
echarts
.
init
(
document
.
getElementById
(
'
chart
'
)
as
HTMLCanvasElement
);
chart
.
setOption
({
const
init30DayEcharts
=
(
list
:
any
)
=>
{
// 基于准备好的dom,初始化echarts实例
const
statisticChart
=
echarts
.
init
(
document
.
getElementById
(
'
chart
'
)
as
HTMLCanvasElement
);
const
xAxis
=
[];
const
seriesView
=
[];
const
seriesVote
=
[];
for
(
let
i
=
0
;
i
<
list
.
length
;
i
++
)
{
const
record
=
list
[
i
];
xAxis
.
push
(
record
.
date
);
seriesView
.
push
(
record
.
viewIncrease
);
seriesVote
.
push
(
record
.
voteIncrease
);
}
// 指定图表的配置项和数据
const
option
=
{
title
:
{
text
:
'
ECharts 入门示例
'
text
:
'
30天趋势图
'
},
tooltip
:
{
trigger
:
'
axis
'
},
legend
:
{
data
:
[
'
总阅读量
'
,
'
总点赞量
'
]
},
grid
:
{
left
:
'
1%
'
,
right
:
'
3%
'
,
bottom
:
'
3%
'
,
containLabel
:
true
},
toolbox
:
{
feature
:
{
saveAsImage
:
{}
}
},
tooltip
:
{},
xAxis
:
{
data
:
[
'
衬衫
'
,
'
羊毛衫
'
,
'
雪纺衫
'
,
'
裤子
'
,
'
高跟鞋
'
,
'
袜子
'
]
type
:
'
category
'
,
boundaryGap
:
false
,
data
:
xAxis
},
yAxis
:
{},
series
:
[{
name
:
'
销量
'
,
type
:
'
bar
'
,
data
:
[
5
,
20
,
36
,
10
,
10
,
20
]
}]
yAxis
:
{
type
:
'
value
'
},
series
:
[
{
name
:
'
总阅读量
'
,
type
:
'
line
'
,
// stack: '总量', 不堆叠
data
:
seriesView
,
smooth
:
true
},
{
name
:
'
总点赞量
'
,
type
:
'
line
'
,
// stack: '总量', 不堆叠
data
:
seriesVote
,
smooth
:
true
}
]
};
// 使用刚指定的配置项和数据显示图表。
statisticChart
.
setOption
(
option
);
};
/**
* 生成近30天的数据统计图
*/
const
gen30DayStatisticChart
=
()
=>
{
axios
.
get
(
'
/ebook-snapshot/get-30-statistic
'
).
then
((
response
)
=>
{
const
respData
=
response
.
data
;
if
(
respData
.
code
===
0
)
{
const
statisticList
=
respData
.
data
;
init30DayEcharts
(
statisticList
);
}
});
}
};
onMounted
(()
=>
{
ge
tStatistic
();
testEcharts
();
ge
nTwoDayStatisticTable
();
gen30DayStatisticChart
();
});
return
{
...
...