1、前端预警提示内容以及单个预警处理实现

pull/254/head
xjs 4 years ago
parent 05cd60971c
commit 02b4990a6f

@ -35,3 +35,11 @@ export function listApiwarning(query) {
params: query params: query
}) })
} }
// 处理单个预警
export function handleWarning(id) {
return request({
url: '/warning/apiwarning/handle/'+id,
method: 'put',
})
}

@ -8,10 +8,26 @@
<top-nav id="topmenu-container" class="topmenu-container" v-if="topNav"/> <top-nav id="topmenu-container" class="topmenu-container" v-if="topNav"/>
<div class="right-menu"> <div class="right-menu">
<el-badge :value="warnData.count" class=" hover-effect share-button"> <el-badge :value="warnData.count" class=" hover-effect share-button">
<el-button type="warning" icon="el-icon-check" circle style="max-width: 22px;max-height: 22px;"></el-button> <el-popover
placement="bottom"
width="220"
v-model="visible">
<p>{{ append() }}</p>
<div style="text-align: right; margin: 0">
<el-button type="primary" size="mini" @click="haveRead"></el-button>
</div>
<el-button type="warning" icon="el-icon-check"
circle style="max-width: 22px;max-height: 22px;"
@click=""
slot="reference"
></el-button>
</el-popover>
</el-badge> </el-badge>
<template v-if="device!=='mobile'"> <template v-if="device!=='mobile'">
<search id="header-search" class="right-menu-item"/> <search id="header-search" class="right-menu-item"/>
@ -24,7 +40,6 @@
</template> </template>
<el-dropdown class="avatar-container right-menu-item hover-effect" trigger="click"> <el-dropdown class="avatar-container right-menu-item hover-effect" trigger="click">
<div class="avatar-wrapper"> <div class="avatar-wrapper">
<img :src="avatar" class="user-avatar"> <img :src="avatar" class="user-avatar">
@ -56,6 +71,8 @@ import SizeSelect from '@/components/SizeSelect'
import Search from '@/components/HeaderSearch' import Search from '@/components/HeaderSearch'
import RuoYiGit from '@/components/RuoYi/Git' import RuoYiGit from '@/components/RuoYi/Git'
import RuoYiDoc from '@/components/RuoYi/Doc' import RuoYiDoc from '@/components/RuoYi/Doc'
import {handleWarning} from "@/api/business/warning/apiwarning";
export default { export default {
components: { components: {
@ -72,6 +89,8 @@ export default {
data() { data() {
return { return {
warnData: {}, warnData: {},
visible: false,
} }
}, },
@ -108,6 +127,38 @@ export default {
}, },
methods: { methods: {
//
haveRead() {
this.visible = false
if (this.warnData) {
let str = this.warnData.data;
if (str) {
var json = eval("(" + str + ")");
if (json.id !== undefined) {
handleWarning(json.id).then(res => {
this.$modal.msgSuccess("处理成功");
this.warnData.data= "{}"
});
}
}
}
},
append() {
let str = this.warnData.data;
if (str != null) {
var json = eval("(" + str + ")");
if (json.apiName !== undefined && json.warningMessage !== undefined) {
let data = json.apiName + "-" + json.warningMessage;
this.visible = true
return data
}
}
},
getData(data) { getData(data) {
if (data) { if (data) {
this.warnData = data this.warnData = data

@ -54,7 +54,7 @@
<el-table-column label="预警时间" align="center" prop="createTime" width="180"/> <el-table-column label="预警时间" align="center" prop="createTime" width="180"/>
<el-table-column label="是否处理" align="center" prop="handle" width="100px"> <el-table-column label="是否处理" align="center" prop="handle" width="100px">
<template slot-scope="scope"> <template slot-scope="scope">
<el-tag :type="scope.row.handle==='1'?'success':'danger'" size="small"> <el-tag :type="scope.row.handle===1?'success':'danger'" size="small">
{{ scope.row.handle === 1 ? '是' : '否' }} {{ scope.row.handle === 1 ? '是' : '否' }}
</el-tag> </el-tag>
</template> </template>

@ -25,6 +25,8 @@ import java.util.List;
import java.util.Objects; import java.util.Objects;
import java.util.Set; import java.util.Set;
import static com.xjs.consts.ApiWarnHandleConst.NO;
import static com.xjs.consts.ApiWarnHandleConst.YES;
import static com.xjs.consts.RedisConst.WEBSOCKET; import static com.xjs.consts.RedisConst.WEBSOCKET;
/** /**
@ -75,6 +77,20 @@ public class ApiWarningController extends BaseController {
return R.ok(apiRecords); return R.ok(apiRecords);
} }
/**
*
* @param id id
* @return R
*/
@PutMapping("handle/{id}")
//@RequiresPermissions("warning:apiwarning:list")
public R<Object> handleWarning(@PathVariable("id") Long id) {
ApiWarning apiWarning = new ApiWarning();
apiWarning.setId(id);
apiWarning.setHandle(YES);
return apiWarningService.updateById(apiWarning)?R.ok():R.fail();
}
/** /**
* apiwebsocket * apiwebsocket
* *
@ -95,10 +111,12 @@ public class ApiWarningController extends BaseController {
* websocket * websocket
*/ */
private void websocketPush(ApiWarning apiWarning) { private void websocketPush(ApiWarning apiWarning) {
long count = apiWarningService.count(); long count = apiWarningService.count(new QueryWrapper<ApiWarning>().eq("handle",NO));
Set<String> cacheSet = redisService.getCacheSet(WEBSOCKET); Set<String> cacheSet = redisService.getCacheSet(WEBSOCKET);
JSONObject jsonData =new JSONObject(); JSONObject jsonData =new JSONObject();
JSONObject jsonObject = (JSONObject) JSONObject.toJSON(apiWarning); JSONObject jsonObject = (JSONObject) JSONObject.toJSON(apiWarning);
//把id设置成字符串防止前端精度丢失
jsonObject.put("id", apiWarning.getId().toString());
jsonData.put("count", count); jsonData.put("count", count);
jsonData.put("data", jsonObject.toJSONString()); jsonData.put("data", jsonObject.toJSONString());
jsonData.put("socketType", "apiWarning"); jsonData.put("socketType", "apiWarning");

@ -1,7 +1,9 @@
package com.xjs.server; package com.xjs.server;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.ruoyi.common.redis.service.RedisService; import com.ruoyi.common.redis.service.RedisService;
import com.xjs.domain.ApiWarning;
import com.xjs.service.ApiWarningService; import com.xjs.service.ApiWarningService;
import lombok.extern.log4j.Log4j2; import lombok.extern.log4j.Log4j2;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
@ -16,6 +18,7 @@ import java.util.HashSet;
import java.util.Set; import java.util.Set;
import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentHashMap;
import static com.xjs.consts.ApiWarnHandleConst.NO;
import static com.xjs.consts.RedisConst.WEBSOCKET; import static com.xjs.consts.RedisConst.WEBSOCKET;
/** /**
@ -84,7 +87,7 @@ public class WebSocketServer {
set.add(userId); set.add(userId);
redisService.setCacheSet(WEBSOCKET, set); redisService.setCacheSet(WEBSOCKET, set);
long count = apiWarningService.count(); long count = apiWarningService.count(new QueryWrapper<ApiWarning>().eq("handle",NO));
JSONObject jsonData =new JSONObject(); JSONObject jsonData =new JSONObject();
jsonData.put("count", count); jsonData.put("count", count);
jsonData.put("socketType", "apiWarning"); jsonData.put("socketType", "apiWarning");

Loading…
Cancel
Save