parent
84650ad837
commit
bffd7bd33e
|
|
@ -0,0 +1,28 @@
|
|||
import request from '@/utils/request'
|
||||
|
||||
// 查询API预警列表
|
||||
export function listApiwarning(query) {
|
||||
return request({
|
||||
url: '/warning/apiwarning/list',
|
||||
method: 'get',
|
||||
params: query
|
||||
})
|
||||
}
|
||||
|
||||
// 查询API预警详细
|
||||
export function getApiwarning(id) {
|
||||
return request({
|
||||
url: '/warning/apiwarning/' + id,
|
||||
method: 'get'
|
||||
})
|
||||
}
|
||||
|
||||
// 修改API预警
|
||||
export function updateApiwarning(data) {
|
||||
return request({
|
||||
url: '/warning/apiwarning/edit',
|
||||
method: 'put',
|
||||
data: data
|
||||
})
|
||||
}
|
||||
|
||||
|
|
@ -0,0 +1,222 @@
|
|||
<template>
|
||||
<div class="app-container">
|
||||
<el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px">
|
||||
<el-form-item label="api名称" prop="apiName">
|
||||
<el-input
|
||||
v-model="queryParams.apiName"
|
||||
placeholder="请输入api名称"
|
||||
clearable
|
||||
size="small"
|
||||
@keyup.enter.native="handleQuery"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
|
||||
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
|
||||
<el-row :gutter="10" class="mb8">
|
||||
<el-col :span="1.5">
|
||||
<el-button
|
||||
type="success"
|
||||
plain
|
||||
icon="el-icon-edit"
|
||||
size="mini"
|
||||
:disabled="single"
|
||||
@click="handleUpdate"
|
||||
v-hasPermi="['warning:apiwarning:edit']"
|
||||
>修改
|
||||
</el-button>
|
||||
</el-col>
|
||||
<el-col :span="1.5">
|
||||
<el-button
|
||||
type="warning"
|
||||
plain
|
||||
icon="el-icon-download"
|
||||
size="mini"
|
||||
@click="handleExport"
|
||||
v-hasPermi="['warning:apiwarning:export']"
|
||||
>导出
|
||||
</el-button>
|
||||
</el-col>
|
||||
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
|
||||
</el-row>
|
||||
|
||||
<el-table v-loading="loading" :data="apiwarningList" @selection-change="handleSelectionChange">
|
||||
<el-table-column type="selection" width="55" align="center"/>
|
||||
<el-table-column label="API名称" align="center" prop="apiName" :show-overflow-tooltip="true"/>
|
||||
<el-table-column label="API地址" align="center" prop="apiUrl" :show-overflow-tooltip="true"/>
|
||||
<el-table-column label="API总请求次数" align="center" prop="totalCount" :show-overflow-tooltip="true"/>
|
||||
<el-table-column label="请求耗费时间" align="center" prop="requestTime" :show-overflow-tooltip="true">
|
||||
<template slot-scope="scope">
|
||||
<span>{{scope.row.requestTime+"ms"}}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="API每天限制请求次数" align="center" prop="limitCount" :show-overflow-tooltip="true"/>
|
||||
<el-table-column label="创建时间" align="center" prop="createTime" width="180" :show-overflow-tooltip="true">
|
||||
<template slot-scope="scope">
|
||||
<span>{{ parseTime(scope.row.createTime, '{y}-{m}-{d}') }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="API每天请求次数" align="center" prop="dayCount"/>
|
||||
<el-table-column label="修改时间" align="center" prop="updateTime" width="180">
|
||||
<template slot-scope="scope">
|
||||
<span>{{ parseTime(scope.row.updateTime, '{y}-{m}-{d}') }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
|
||||
<template slot-scope="scope">
|
||||
<el-button circle
|
||||
type="primary"
|
||||
icon="el-icon-edit"
|
||||
@click="handleUpdate(scope.row)"
|
||||
v-hasPermi="['warning:apiwarning:edit']"
|
||||
></el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
|
||||
<pagination
|
||||
v-show="total>0"
|
||||
:total="total"
|
||||
:page.sync="queryParams.pageNum"
|
||||
:limit.sync="queryParams.pageSize"
|
||||
@pagination="getList"
|
||||
/>
|
||||
|
||||
<!-- 添加或修改API预警对话框 -->
|
||||
<el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
|
||||
<el-form ref="form" :model="form" :rules="rules" label-width="80px">
|
||||
<el-form-item label="请求次数" prop="limitCount">
|
||||
<el-input v-model="form.limitCount" placeholder="请输入api限制请求次数每天"/>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<div slot="footer" class="dialog-footer">
|
||||
<el-button type="primary" @click="submitForm">确 定</el-button>
|
||||
<el-button @click="cancel">取 消</el-button>
|
||||
</div>
|
||||
</el-dialog>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import {listApiwarning, getApiwarning, updateApiwarning} from "@/api/business/warning/apiwarning";
|
||||
|
||||
export default {
|
||||
name: "Apiwarning",
|
||||
data() {
|
||||
return {
|
||||
// 遮罩层
|
||||
loading: true,
|
||||
// 选中数组
|
||||
ids: [],
|
||||
// 非单个禁用
|
||||
single: true,
|
||||
// 非多个禁用
|
||||
multiple: true,
|
||||
// 显示搜索条件
|
||||
showSearch: true,
|
||||
// 总条数
|
||||
total: 0,
|
||||
// API预警表格数据
|
||||
apiwarningList: [],
|
||||
// 弹出层标题
|
||||
title: "",
|
||||
// 是否显示弹出层
|
||||
open: false,
|
||||
// 查询参数
|
||||
queryParams: {
|
||||
pageNum: 1,
|
||||
pageSize: 10,
|
||||
apiName: null,
|
||||
},
|
||||
// 表单参数
|
||||
form: {},
|
||||
// 表单校验
|
||||
rules: {}
|
||||
};
|
||||
},
|
||||
created() {
|
||||
this.getList();
|
||||
},
|
||||
methods: {
|
||||
/** 查询API预警列表 */
|
||||
getList() {
|
||||
this.loading = true;
|
||||
listApiwarning(this.queryParams).then(response => {
|
||||
this.apiwarningList = response.rows;
|
||||
this.total = response.total;
|
||||
this.loading = false;
|
||||
});
|
||||
},
|
||||
// 取消按钮
|
||||
cancel() {
|
||||
this.open = false;
|
||||
this.reset();
|
||||
},
|
||||
// 表单重置
|
||||
reset() {
|
||||
this.form = {
|
||||
id: null,
|
||||
apiName: null,
|
||||
apiUrl: null,
|
||||
totalCount: null,
|
||||
requestTime: null,
|
||||
limitCount: null,
|
||||
createTime: null,
|
||||
dayCount: null,
|
||||
updateTime: null
|
||||
};
|
||||
this.resetForm("form");
|
||||
},
|
||||
/** 搜索按钮操作 */
|
||||
handleQuery() {
|
||||
this.queryParams.pageNum = 1;
|
||||
this.getList();
|
||||
},
|
||||
/** 重置按钮操作 */
|
||||
resetQuery() {
|
||||
this.resetForm("queryForm");
|
||||
this.handleQuery();
|
||||
},
|
||||
// 多选框选中数据
|
||||
handleSelectionChange(selection) {
|
||||
this.ids = selection.map(item => item.id)
|
||||
this.single = selection.length !== 1
|
||||
this.multiple = !selection.length
|
||||
},
|
||||
/** 修改按钮操作 */
|
||||
handleUpdate(row) {
|
||||
this.reset();
|
||||
const id = row.id || this.ids
|
||||
getApiwarning(id).then(response => {
|
||||
this.form = response.data;
|
||||
this.open = true;
|
||||
this.title = "修改API预警";
|
||||
});
|
||||
},
|
||||
/** 提交按钮 */
|
||||
submitForm() {
|
||||
this.$refs["form"].validate(valid => {
|
||||
if (valid) {
|
||||
if (this.form.id != null) {
|
||||
updateApiwarning(this.form).then(response => {
|
||||
this.$modal.msgSuccess("修改成功");
|
||||
this.open = false;
|
||||
this.getList();
|
||||
});
|
||||
}
|
||||
}
|
||||
});
|
||||
},
|
||||
|
||||
/** 导出按钮操作 */
|
||||
handleExport() {
|
||||
this.download('warning/apiwarning/export', {
|
||||
...this.queryParams
|
||||
}, `apiwarning_${new Date().getTime()}.xlsx`)
|
||||
}
|
||||
}
|
||||
};
|
||||
</script>
|
||||
|
|
@ -1,12 +1,19 @@
|
|||
package com.xjs.controller;
|
||||
|
||||
import com.ruoyi.common.core.domain.R;
|
||||
import com.ruoyi.common.core.utils.poi.ExcelUtil;
|
||||
import com.ruoyi.common.core.web.controller.BaseController;
|
||||
import com.ruoyi.common.core.web.domain.AjaxResult;
|
||||
import com.ruoyi.common.core.web.page.TableDataInfo;
|
||||
import com.ruoyi.common.log.annotation.Log;
|
||||
import com.ruoyi.common.log.enums.BusinessType;
|
||||
import com.ruoyi.common.security.annotation.RequiresPermissions;
|
||||
import com.xjs.domain.ApiRecord;
|
||||
import com.xjs.service.ApiWarningService;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
|
|
@ -40,13 +47,62 @@ public class ApiWarningController extends BaseController {
|
|||
*/
|
||||
@PutMapping
|
||||
public R<ApiRecord> updateApiRecordForRPC(@RequestBody ApiRecord apiRecord) {
|
||||
return apiWarningService.updateApiRecord(apiRecord) ? R.ok() : R.fail();
|
||||
return apiWarningService.updateApiRecordByUrl(apiRecord) ? R.ok() : R.fail();
|
||||
}
|
||||
|
||||
@GetMapping
|
||||
public R<List<ApiRecord>> selectApiRecordListForRPC(ApiRecord apiRecord) {
|
||||
List<ApiRecord> apiRecords = apiWarningService.selectApiRecordList(apiRecord);
|
||||
List<ApiRecord> apiRecords = apiWarningService.selectApiRecordListByUrl(apiRecord);
|
||||
return R.ok(apiRecords);
|
||||
}
|
||||
|
||||
//todo 实现前端页面cu接口
|
||||
|
||||
//-------------------------代码生成------------------------------------
|
||||
/**
|
||||
* 查询API预警列表
|
||||
*/
|
||||
@RequiresPermissions("warning:apiwarning:list")
|
||||
@GetMapping("/list")
|
||||
public TableDataInfo list(ApiRecord apiRecord)
|
||||
{
|
||||
startPage();
|
||||
List<ApiRecord> list = apiWarningService.selectApiRecordList(apiRecord);
|
||||
return getDataTable(list);
|
||||
}
|
||||
|
||||
/**
|
||||
* 导出API预警列表
|
||||
*/
|
||||
@RequiresPermissions("warning:apiwarning:export")
|
||||
@Log(title = "API预警", businessType = BusinessType.EXPORT)
|
||||
@PostMapping("/export")
|
||||
public void export(HttpServletResponse response, ApiRecord apiRecord)
|
||||
{
|
||||
List<ApiRecord> list = apiWarningService.selectApiRecordList(apiRecord);
|
||||
ExcelUtil<ApiRecord> util = new ExcelUtil<ApiRecord>(ApiRecord.class);
|
||||
util.exportExcel(response, list, "API预警数据");
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取API预警详细信息
|
||||
*/
|
||||
@RequiresPermissions("warning:apiwarning:query")
|
||||
@GetMapping(value = "/{id}")
|
||||
public AjaxResult getInfo(@PathVariable("id") Long id)
|
||||
{
|
||||
return AjaxResult.success(apiWarningService.selectApiRecordById(id));
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改API预警
|
||||
*/
|
||||
@RequiresPermissions("warning:apiwarning:edit")
|
||||
@Log(title = "API预警", businessType = BusinessType.UPDATE)
|
||||
@PutMapping("edit")
|
||||
public AjaxResult edit(@RequestBody ApiRecord apiRecord)
|
||||
{
|
||||
return toAjax(apiWarningService.updateApiRecord(apiRecord));
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -3,12 +3,39 @@ package com.xjs.mapper;
|
|||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.xjs.domain.ApiRecord;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author xiejs
|
||||
* @desc api预警mapper
|
||||
* @desc api预警mapper
|
||||
* @create 2021-12-31
|
||||
*/
|
||||
public interface ApiRecordMapper extends BaseMapper<ApiRecord> {
|
||||
|
||||
//--------------------代码生成----------------------------
|
||||
|
||||
/**
|
||||
* 查询API预警
|
||||
*
|
||||
* @param id API预警主键
|
||||
* @return API预警
|
||||
*/
|
||||
public ApiRecord selectApiRecordById(Long id);
|
||||
|
||||
/**
|
||||
* 查询API预警列表
|
||||
*
|
||||
* @param apiRecord API预警
|
||||
* @return API预警集合
|
||||
*/
|
||||
public List<ApiRecord> selectApiRecordList(ApiRecord apiRecord);
|
||||
|
||||
/**
|
||||
* 修改API预警
|
||||
*
|
||||
* @param apiRecord API预警
|
||||
* @return 结果
|
||||
*/
|
||||
public int updateApiRecord(ApiRecord apiRecord);
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -13,6 +13,7 @@ public interface ApiWarningService {
|
|||
|
||||
/**
|
||||
* 保存apirecord 当存在相同api时,不允许保存
|
||||
*
|
||||
* @param apiRecord apiRecord
|
||||
* @return apiRecord
|
||||
*/
|
||||
|
|
@ -21,15 +22,44 @@ public interface ApiWarningService {
|
|||
|
||||
/**
|
||||
* 修改 根据url名称修改api调用次数
|
||||
*
|
||||
* @param apiRecord apiRecord
|
||||
* @return apiRecord
|
||||
*/
|
||||
boolean updateApiRecord(ApiRecord apiRecord);
|
||||
boolean updateApiRecordByUrl(ApiRecord apiRecord);
|
||||
|
||||
/**
|
||||
* 根据 apiurl和name查询
|
||||
*
|
||||
* @param apiRecord
|
||||
* @return
|
||||
*/
|
||||
List<ApiRecord> selectApiRecordList(ApiRecord apiRecord);
|
||||
List<ApiRecord> selectApiRecordListByUrl(ApiRecord apiRecord);
|
||||
|
||||
//---------------------代码生成---------------------------------
|
||||
|
||||
/**
|
||||
* 查询API预警
|
||||
*
|
||||
* @param id API预警主键
|
||||
* @return API预警
|
||||
*/
|
||||
public ApiRecord selectApiRecordById(Long id);
|
||||
|
||||
/**
|
||||
* 查询API预警列表
|
||||
*
|
||||
* @param apiRecord API预警
|
||||
* @return API预警集合
|
||||
*/
|
||||
public List<ApiRecord> selectApiRecordList(ApiRecord apiRecord);
|
||||
|
||||
|
||||
/**
|
||||
* 修改API预警
|
||||
*
|
||||
* @param apiRecord API预警
|
||||
* @return 结果
|
||||
*/
|
||||
public int updateApiRecord(ApiRecord apiRecord);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
package com.xjs.service.impl;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.ruoyi.common.core.utils.DateUtils;
|
||||
import com.xjs.domain.ApiRecord;
|
||||
import com.xjs.exception.BusinessException;
|
||||
import com.xjs.mapper.ApiRecordMapper;
|
||||
|
|
@ -36,17 +37,54 @@ public class ApiWarningServiceImpl implements ApiWarningService {
|
|||
}
|
||||
|
||||
@Override
|
||||
public boolean updateApiRecord(ApiRecord apiRecord) {
|
||||
public boolean updateApiRecordByUrl(ApiRecord apiRecord) {
|
||||
int name = apiRecordMapper.update(apiRecord, new QueryWrapper<ApiRecord>()
|
||||
.eq("api_name", apiRecord.getApiName()));
|
||||
return name == 1;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<ApiRecord> selectApiRecordList(ApiRecord apiRecord) {
|
||||
public List<ApiRecord> selectApiRecordListByUrl(ApiRecord apiRecord) {
|
||||
return apiRecordMapper
|
||||
.selectList(new QueryWrapper<ApiRecord>().eq("api_name",apiRecord.getApiName())
|
||||
.eq("api_name",apiRecord.getApiName()));
|
||||
.selectList(new QueryWrapper<ApiRecord>().eq("api_name", apiRecord.getApiName())
|
||||
.eq("api_name", apiRecord.getApiName()));
|
||||
}
|
||||
|
||||
|
||||
//------------------------代码生成-------------------------------
|
||||
|
||||
/**
|
||||
* 查询API预警
|
||||
*
|
||||
* @param id API预警主键
|
||||
* @return API预警
|
||||
*/
|
||||
@Override
|
||||
public ApiRecord selectApiRecordById(Long id) {
|
||||
return apiRecordMapper.selectApiRecordById(id);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询API预警列表
|
||||
*
|
||||
* @param apiRecord API预警
|
||||
* @return API预警
|
||||
*/
|
||||
@Override
|
||||
public List<ApiRecord> selectApiRecordList(ApiRecord apiRecord) {
|
||||
return apiRecordMapper.selectApiRecordList(apiRecord);
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改API预警
|
||||
*
|
||||
* @param apiRecord API预警
|
||||
* @return 结果
|
||||
*/
|
||||
@Override
|
||||
public int updateApiRecord(ApiRecord apiRecord) {
|
||||
apiRecord.setUpdateTime(DateUtils.getNowDate());
|
||||
return apiRecordMapper.updateApiRecord(apiRecord);
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -4,5 +4,48 @@
|
|||
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="com.xjs.mapper.ApiRecordMapper">
|
||||
|
||||
<resultMap type="com.xjs.domain.ApiRecord" id="ApiRecordResult">
|
||||
<result property="id" column="id" />
|
||||
<result property="apiName" column="api_name" />
|
||||
<result property="apiUrl" column="api_url" />
|
||||
<result property="totalCount" column="total_count" />
|
||||
<result property="requestTime" column="request_time" />
|
||||
<result property="limitCount" column="limit_count" />
|
||||
<result property="createTime" column="create_time" />
|
||||
<result property="dayCount" column="day_count" />
|
||||
<result property="updateTime" column="update_time" />
|
||||
</resultMap>
|
||||
|
||||
<sql id="selectApiRecordVo">
|
||||
select id, api_name, api_url, total_count, limit_count, create_time, update_time,day_count,request_time
|
||||
from api_record
|
||||
</sql>
|
||||
|
||||
<select id="selectApiRecordList" parameterType="com.xjs.domain.ApiRecord" resultMap="ApiRecordResult">
|
||||
<include refid="selectApiRecordVo"/>
|
||||
<where>
|
||||
<if test="apiName != null and apiName != ''"> and api_name like concat('%', #{apiName}, '%')</if>
|
||||
</where>
|
||||
</select>
|
||||
|
||||
<select id="selectApiRecordById" parameterType="Long" resultMap="ApiRecordResult">
|
||||
<include refid="selectApiRecordVo"/>
|
||||
where id = #{id}
|
||||
</select>
|
||||
|
||||
|
||||
<update id="updateApiRecord" parameterType="com.xjs.domain.ApiRecord">
|
||||
update api_record
|
||||
<trim prefix="SET" suffixOverrides=",">
|
||||
<if test="apiName != null">api_name = #{apiName},</if>
|
||||
<if test="apiUrl != null">api_url = #{apiUrl},</if>
|
||||
<if test="totalCount != null">total_count = #{totalCount},</if>
|
||||
<if test="limitCount != null">limit_count = #{limitCount},</if>
|
||||
<if test="createTime != null">create_time = #{createTime},</if>
|
||||
<if test="updateTime != null">update_time = #{updateTime},</if>
|
||||
</trim>
|
||||
where id = #{id}
|
||||
</update>
|
||||
|
||||
|
||||
</mapper>
|
||||
Loading…
Reference in New Issue