mirror of
https://gitee.com/blossom-editor/blossom.git
synced 2025-12-06 16:58:26 +08:00
feat: Add weather and flow control switches
This commit is contained in:
parent
6cc8a66243
commit
79ee94941f
@ -28,11 +28,17 @@ public enum ParamEnum {
|
||||
* 和风天气KEY
|
||||
*/
|
||||
HEFENG_KEY(true, 20,""),
|
||||
|
||||
/**
|
||||
* 和风天气KEY
|
||||
* 和风天气 HOST
|
||||
*/
|
||||
HEFENG_HOST(false, 100,""),
|
||||
|
||||
/**
|
||||
* 开启和风天气
|
||||
*/
|
||||
HEFENG_ENABLED(false, 5,""),
|
||||
|
||||
/**
|
||||
* GITEE key
|
||||
*/
|
||||
@ -58,6 +64,11 @@ public enum ParamEnum {
|
||||
*/
|
||||
SERVER_JWT_SECRET(true, 9999,""),
|
||||
|
||||
/**
|
||||
* 开启首页流量监控
|
||||
*/
|
||||
SENTINEL_ENABLED(false, 5,""),
|
||||
|
||||
/**
|
||||
* 过期时间 - 服务器
|
||||
*/
|
||||
|
||||
@ -67,7 +67,9 @@ public class WeatherManager {
|
||||
}
|
||||
log.info("[BLOSSOM] refresh weather: {}", location);
|
||||
HeFengReq params = initParam(location);
|
||||
if (params == null) {
|
||||
|
||||
// 无返回或关闭
|
||||
if (params == null || !params.getEnabled()) {
|
||||
log.info("未配置天气信息, 忽略天气查询");
|
||||
WeatherRes weather = new WeatherRes();
|
||||
CityRes.Location l = new CityRes.Location();
|
||||
@ -75,6 +77,7 @@ public class WeatherManager {
|
||||
weather.setLocation(l);
|
||||
return weather;
|
||||
}
|
||||
|
||||
String cityStr, nowStr, dailyStr, hourlyStr;
|
||||
CityRes city = null;
|
||||
NowRes now = null;
|
||||
@ -160,13 +163,17 @@ public class WeatherManager {
|
||||
* @return 返回查询参数
|
||||
*/
|
||||
public HeFengReq initParam(String location) {
|
||||
Map<String, String> paramMap = paramService.selectMap(false, ParamEnum.HEFENG_KEY, ParamEnum.HEFENG_HOST);
|
||||
Map<String, String> paramMap = paramService.selectMap(false,
|
||||
ParamEnum.HEFENG_KEY,
|
||||
ParamEnum.HEFENG_HOST,
|
||||
ParamEnum.HEFENG_ENABLED);
|
||||
if (MapUtil.isNotEmpty(paramMap)
|
||||
&& StrUtil.isNotBlank(paramMap.get(ParamEnum.HEFENG_KEY.name()))
|
||||
&& StrUtil.isNotBlank(paramMap.get(ParamEnum.HEFENG_HOST.name()))
|
||||
) {
|
||||
HeFengReq req = new HeFengReq();
|
||||
req.setHost(paramMap.get(ParamEnum.HEFENG_HOST.name()));
|
||||
req.setEnabled("1".equals(paramMap.getOrDefault(ParamEnum.HEFENG_ENABLED.name(),"0")));
|
||||
|
||||
Map<String, String> map = new HashMap<>(2);
|
||||
map.put("location", location);
|
||||
|
||||
@ -10,6 +10,7 @@ import java.util.Map;
|
||||
@Data
|
||||
public class HeFengReq {
|
||||
|
||||
private Boolean enabled;
|
||||
/**
|
||||
* 和风用户域名
|
||||
*/
|
||||
|
||||
@ -90,6 +90,19 @@ WHERE NOT EXISTS(SELECT 1
|
||||
--
|
||||
INSERT INTO base_sys_param (id, param_name, param_value, param_desc, open_state, cre_time, upd_time)
|
||||
SELECT *
|
||||
FROM (select 19 as id,
|
||||
'HEFENG_ENABLED' as param_name,
|
||||
'0' as param_value,
|
||||
'和风天气开启' as param_desc,
|
||||
1 as open_state,
|
||||
CURRENT_TIMESTAMP as cre_time,
|
||||
CURRENT_TIMESTAMP as upd_time) as temp
|
||||
WHERE NOT EXISTS(SELECT 1
|
||||
FROM base_sys_param
|
||||
WHERE id = 19);
|
||||
--
|
||||
INSERT INTO base_sys_param (id, param_name, param_value, param_desc, open_state, cre_time, upd_time)
|
||||
SELECT *
|
||||
FROM (select 21 as id,
|
||||
'GITEE_ACCESS_TOKEN' as param_name,
|
||||
'' as param_value,
|
||||
@ -192,8 +205,18 @@ WHERE NOT EXISTS(SELECT 1
|
||||
FROM base_sys_param
|
||||
WHERE id = 904);
|
||||
|
||||
|
||||
|
||||
INSERT INTO base_sys_param (id, param_name, param_value, param_desc, open_state, cre_time, upd_time)
|
||||
SELECT *
|
||||
FROM (select 1001 as id,
|
||||
'SENTINEL_ENABLED' as param_name,
|
||||
'1' as param_value,
|
||||
'流量监控开启' as param_desc,
|
||||
1 as open_state,
|
||||
CURRENT_TIMESTAMP as cre_time,
|
||||
CURRENT_TIMESTAMP as upd_time) as temp
|
||||
WHERE NOT EXISTS(SELECT 1
|
||||
FROM base_sys_param
|
||||
WHERE id = 1001);
|
||||
-- ----------------------------
|
||||
-- since: 1.12.0
|
||||
-- ----------------------------
|
||||
|
||||
@ -1,5 +1,10 @@
|
||||
<template>
|
||||
<div class="weather-root">
|
||||
<div v-if="userStore.sysParams.HEFENG_ENABLED === '0'" class="weather-root">
|
||||
<div class="placeholder">
|
||||
<div class="remark">未启用天气</div>
|
||||
</div>
|
||||
</div>
|
||||
<div v-else class="weather-root">
|
||||
<bl-row class="location" just="flex-end">
|
||||
{{ weather.location.name }}
|
||||
<el-tooltip placement="top" effect="light" :show-after="1000" :hide-after="0" :auto-close="3000">
|
||||
@ -349,4 +354,38 @@ const refreshWeatherTask = () => {
|
||||
box-shadow: 0 2px 10px 3px rgba(0, 0, 0, 0.3);
|
||||
}
|
||||
}
|
||||
|
||||
.weather-root .placeholder {
|
||||
@include flex(column, center, center);
|
||||
width: 440px;
|
||||
height: 200px;
|
||||
margin-left: 10px;
|
||||
border-radius: 10px;
|
||||
background-color: var(--el-color-primary-light-7);
|
||||
position: relative;
|
||||
overflow: hidden;
|
||||
|
||||
&::before {
|
||||
content: '';
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
width: 200%;
|
||||
height: 100%;
|
||||
background: repeating-linear-gradient(
|
||||
-45deg,
|
||||
transparent 0,
|
||||
transparent 20px,
|
||||
var(--el-color-primary-light-5) 20px,
|
||||
var(--el-color-primary-light-5) 40px
|
||||
);
|
||||
}
|
||||
|
||||
.remark {
|
||||
z-index: 1;
|
||||
padding: 10px;
|
||||
border-radius: 10px;
|
||||
background-color: var(--el-color-primary-light-3);
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
||||
@ -79,7 +79,10 @@ export const DEFAULT_USER_INFO = {
|
||||
ARTICLE_LOG_EXP_DAYS: '',
|
||||
ARTICLE_RECYCLE_EXP_DAYS: '',
|
||||
HEFENG_KEY: '',
|
||||
HEFENG_HOST: '',
|
||||
HEFENG_ENABLED: '1',
|
||||
BLOSSOM_OBJECT_STORAGE_DOMAIN: '',
|
||||
SENTINEL_ENABLED: '1',
|
||||
SERVER_MACHINE_EXPIRE: '',
|
||||
SERVER_DATABASE_EXPIRE: '',
|
||||
SERVER_HTTPS_EXPIRE: '',
|
||||
|
||||
@ -36,14 +36,16 @@
|
||||
</bl-row>
|
||||
|
||||
<!-- 流量统计 -->
|
||||
<bl-row class="container-name">请求流量</bl-row>
|
||||
<bl-row class="container-sub-name">
|
||||
<!-- <div > -->
|
||||
<bl-row v-if="userStore.sysParams.SENTINEL_ENABLED === '1'" class="container-name">请求流量</bl-row>
|
||||
<bl-row v-if="userStore.sysParams.SENTINEL_ENABLED === '1'" class="container-sub-name">
|
||||
Flow Statistic / Requests & Average Response Time(ms)
|
||||
<span class="iconbl bl-refresh-smile" @click="loadSentinlLine"></span>
|
||||
</bl-row>
|
||||
<bl-row width="880px" height="250px">
|
||||
<bl-row v-if="userStore.sysParams.SENTINEL_ENABLED === '1'" width="880px" height="250px">
|
||||
<SentinelChartLine ref="SentinelChartLineRef"></SentinelChartLine>
|
||||
</bl-row>
|
||||
<!-- </div> -->
|
||||
|
||||
<!-- 热力图 -->
|
||||
<bl-row class="container-name">编辑热力图</bl-row>
|
||||
@ -51,13 +53,13 @@
|
||||
每日编辑文章数 (每5分钟更新)
|
||||
<span class="iconbl bl-refresh-smile" @click="loadArticleHeapmap"></span>
|
||||
</bl-row>
|
||||
<bl-row width="870px" height="270px">
|
||||
<bl-row width="870px" height="260px">
|
||||
<ChartHeatmap ref="ChartHeatmapRef"></ChartHeatmap>
|
||||
</bl-row>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!--
|
||||
<!--
|
||||
=======================================================
|
||||
middle
|
||||
=======================================================
|
||||
@ -85,7 +87,7 @@
|
||||
</bl-col>
|
||||
</div>
|
||||
|
||||
<!--
|
||||
<!--
|
||||
=======================================================
|
||||
right
|
||||
=======================================================
|
||||
@ -145,10 +147,18 @@ const ChartLineWordsRef = ref()
|
||||
const SentinelChartLineRef = ref()
|
||||
const ChartHeatmapRef = ref()
|
||||
|
||||
onActivated(() => (now.value = nowWhen()))
|
||||
onActivated(() => {
|
||||
now.value = nowWhen()
|
||||
loadSentinlLine()
|
||||
})
|
||||
const loadWordLine = () => ChartLineWordsRef.value.reload()
|
||||
const loadArticleHeapmap = () => ChartHeatmapRef.value.reload()
|
||||
const loadSentinlLine = () => SentinelChartLineRef.value.reload()
|
||||
const loadSentinlLine = () => {
|
||||
if (userStore.sysParams.SENTINEL_ENABLED === '1') {
|
||||
SentinelChartLineRef.value.reload()
|
||||
SentinelChartLineRef.value.windowResize()
|
||||
}
|
||||
}
|
||||
const now = ref(nowWhen())
|
||||
//#region ----------------------------------------< 字数编辑 >--------------------------------------
|
||||
const isShowWordsInfoDialog = ref(false)
|
||||
|
||||
@ -70,6 +70,16 @@
|
||||
</div>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="开启天气功能">
|
||||
<bl-row>
|
||||
<el-switch
|
||||
size="default"
|
||||
v-model="serverParamForm.HEFENG_ENABLED"
|
||||
@change="(cur: boolean) => updParam('HEFENG_ENABLED', cur ? '1' : '0')" />
|
||||
</bl-row>
|
||||
<div class="conf-tip">是否开启和风天气功能。</div>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="和风天气 Host">
|
||||
<el-input size="default" v-model="serverParamForm.HEFENG_HOST" @change="(cur: any) => updParam('HEFENG_HOST', cur)"></el-input>
|
||||
</el-form-item>
|
||||
@ -82,6 +92,17 @@
|
||||
</div>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="开启首页流量统计">
|
||||
<bl-row>
|
||||
<el-switch
|
||||
size="default"
|
||||
v-model="serverParamForm.SENTINEL_ENABLED"
|
||||
@change="(cur: boolean) => updParam('SENTINEL_ENABLED', cur ? '1' : '0')" />
|
||||
</bl-row>
|
||||
<div class="conf-tip">是否开启首页流量统计。</div>
|
||||
</el-form-item>
|
||||
|
||||
<!-- -->
|
||||
<el-form-item label="服务器到期时间">
|
||||
<div class="conf-tip">如果你使用云服务器或其他有时限的环境,可在此配置到期提示,其他环境可无视,(<code>yyyy-MM-dd</code>格式)。</div>
|
||||
<el-input size="default" v-model="serverParamForm.SERVER_MACHINE_EXPIRE" @change="(cur: any) => updParam('SERVER_MACHINE_EXPIRE', cur)">
|
||||
@ -134,7 +155,9 @@ const serverParamForm = ref({
|
||||
BACKUP_EXP_DAYS: 0,
|
||||
HEFENG_HOST: '',
|
||||
HEFENG_KEY: '',
|
||||
HEFENG_ENABLED: false,
|
||||
BLOSSOM_OBJECT_STORAGE_DOMAIN: '',
|
||||
SENTINEL_ENABLED: true,
|
||||
SERVER_MACHINE_EXPIRE: '',
|
||||
SERVER_DATABASE_EXPIRE: '',
|
||||
SERVER_DOMAIN_EXPIRE: '',
|
||||
@ -177,7 +200,9 @@ const getParamList = () => {
|
||||
...{
|
||||
ARTICLE_LOG_EXP_DAYS: Number(resp.data.ARTICLE_LOG_EXP_DAYS),
|
||||
ARTICLE_RECYCLE_EXP_DAYS: Number(resp.data.ARTICLE_RECYCLE_EXP_DAYS),
|
||||
BACKUP_EXP_DAYS: Number(resp.data.BACKUP_EXP_DAYS)
|
||||
BACKUP_EXP_DAYS: Number(resp.data.BACKUP_EXP_DAYS),
|
||||
HEFENG_ENABLED: resp.data.HEFENG_ENABLED === '1',
|
||||
SENTINEL_ENABLED: resp.data.SENTINEL_ENABLED === '1'
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user