修改流量控制及安全部分

This commit is contained in:
xu_lw
2019-09-03 10:21:52 +08:00
parent 2f293449fd
commit 3ed67fede3
7 changed files with 363 additions and 23 deletions
@@ -25,10 +25,10 @@
<i class="el-icon-setting"></i>
<span slot="title">安全控制</span>
</el-menu-item>
<el-menu-item index="4">
<!-- <el-menu-item index="4">
<i class="el-icon-setting"></i>
<span slot="title">流量控制</span>
</el-menu-item>
</el-menu-item>-->
</el-menu>
</el-col>
<el-col :span="20">
@@ -0,0 +1,300 @@
<template>
<el-dialog :title="title" :close-on-click-modal="false" :visible.sync="visible">
<el-form :model="dataForm" :rules="dataRule" ref="dataForm" @keyup.enter.native="dataFormSubmit()" label-width="120px">
<el-row type="flex" class="row-bg">
<el-col :span="10">
<el-form-item label="接口名称:">{{interface_data.name}}</el-form-item>
</el-col>
<el-col :span="6">
<el-switch v-model="settings" active-text="设置" inactive-text="不设置"></el-switch>
</el-col>
</el-row>
<div v-if="settings">
<el-row type="flex" class="row-bg">
<el-col :span="12">
<el-form-item label="访问类型" prop="type">
<el-select placeholder="请选择" v-model="dataForm.type" style="width:170px;">
<el-option v-for="item in dict.get('flow_typ')" :key="item.value" :label="item.label" :value="item.value"></el-option>
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row type="flex" class="row-bg">
<el-col :span="12">
<el-form-item label="单位时间类型" prop="unit_time_type">
<!--
<el-input :readonly="readonly" v-model="dataForm.unit_time_type" placeholder="单位时间类型" style="width:170px"></el-input>
-->
<el-select placeholder="请选择" v-model="dataForm.unit_time_type" style="width:170px;">
<el-option v-for="item in dict.get('unit_time_type')" :key="item.value" :label="item.label" :value="item.value"></el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="单位时间" prop="unit_time">
<el-input :readonly="readonly" v-model="dataForm.unit_time" placeholder="单位时间" style="width:170px"></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row type="flex" class="row-bg">
<el-col :span="12">
<el-form-item label="请求次数" prop="request_times">
<!--
<el-input :readonly="readonly" v-model="dataForm.request_times" placeholder="请求次数" style="width:170px"></el-input>
-->
<el-input
:readonly="readonly"
oninput="value=value.replace(/[^\d.]/g,'')"
v-model="dataForm.request_times"
placeholder="请求次数"
style="width:170px"
/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="优先级" prop="priority">
<!--
<el-input :readonly="readonly" v-model="dataForm.priority" placeholder="优先级" style="width:170px"></el-input>
-->
<el-select :disabled="readonly" placeholder="请选择" v-model="dataForm.priority" style="width:170px;">
<el-option v-for="item in dict.get('priority')" :key="item.value" :label="item.label" :value="item.value"></el-option>
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row type="flex" class="row-bg">
<el-col :span="12">
<el-form-item label="开始时间" prop="begin_time">
<el-input :readonly="readonly" v-model="dataForm.begin_time" placeholder="00" style="width:170px"></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="结束时间" prop="end_time">
<el-input :readonly="readonly" v-model="dataForm.end_time" placeholder="24" style="width:170px"></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row type="flex" class="row-bg">
<el-col :span="12">
<el-form-item label="周期类型" prop="period_type">
<!--<el-input :readonly="readonly" v-model="dataForm.period_type" placeholder="周期类型" style="width:170px"></el-input>-->
<el-select :disabled="readonly" placeholder="请选择" v-model="dataForm.period_type" style="width:170px;">
<el-option v-for="item in dict.get('period_type')" :key="item.value" :label="item.label" :value="item.value"></el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="开始周期" prop="begin_period">
<el-input :readonly="readonly" v-model="dataForm.begin_period" placeholder="00" style="width:170px"></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row type="flex" class="row-bg">
<el-col :span="12">
<el-form-item label="结束周期" prop="end_period">
<el-input :readonly="readonly" v-model="dataForm.end_period" placeholder="06" style="width:170px"></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="状态" prop="status">
<!-- <el-input :readonly="readonly" v-model="dataForm.status" placeholder="状态(1-有效,0-无效)" style="width:170px"></el-input>-->
<el-select :disabled="readonly" placeholder="请选择" v-model="dataForm.status" style="width:170px;">
<el-option v-for="item in dict.get('ip_status')" :key="item.value" :label="item.label" :value="item.value"></el-option>
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row type="flex" class="row-bg">
<el-col :span="12">
<el-form-item label="备注" prop="remark">
<el-input :readonly="readonly" v-model="dataForm.remark" placeholder="备注" style="width:500px"></el-input>
</el-form-item>
</el-col>
</el-row>
</div>
</el-form>
<span slot="footer" class="dialog-footer">
<el-button @click="visible = false">取消</el-button>
<el-button :disabled="readonly" type="primary" @click="dataFormSubmit()">确定</el-button>
</span>
</el-dialog>
</template>
<script>
import { isGDASucc } from '@/utils'
export default {
data() {
return {
settings: 1,
title: '',
readonly: false,
visible: false,
interface_data: '',
dataForm: {
id: 0,
gateway_id: '',
strategy_id: '',
name: '',
type: '1',
unit_time_type: '2',
unit_time: '1',
request_times: '',
priority: '1',
begin_time: '00',
end_time: '24',
period_type: '1',
begin_period: '1',
end_period: '7',
status: '1',
remark: ''
},
dataRule: {
gateway_id: [
{ required: true, message: '网关标识不能为空', trigger: 'blur' }
],
name: [
{ required: true, message: '名称不能为空', trigger: 'blur' }
],
type: [
{ required: true, message: '访问类型不能为空', trigger: 'blur' }
],
unit_time_type: [
{ required: true, message: '单位时间类型不能为空', trigger: 'blur' }
],
unit_time: [
{ required: true, message: '单位时间不能为空', trigger: 'blur' }
],
request_times: [
{ required: true, message: '请求次数不能为空', trigger: 'blur' }
],
priority: [
{ required: true, message: '优先级不能为空', trigger: 'blur' }
],
begin_time: [
{ required: true, message: '开始时间不能为空', trigger: 'blur' }
],
end_time: [
{ required: true, message: '结束时间不能为空', trigger: 'blur' }
],
period_type: [
{ required: true, message: '周期类型不能为空', trigger: 'blur' }
],
begin_period: [
{ required: true, message: '开始周期不能为空', trigger: 'blur' }
],
end_period: [
{ required: true, message: '结束周期不能为空', trigger: 'blur' }
],
status: [
{ required: true, message: '状态不能为空', trigger: 'blur' }
],
remark: [
{ required: true, message: '备注不能为空', trigger: 'blur' }
]
}
}
},
methods: {
init(interfaceData) {
this.interface_data = interfaceData
this.dataForm.interface_id = this.interface_data.id
this.dataForm.gateway_id = this.interface_data.gateway_id
this.dataForm.name = this.interface_data.name
this.settings = false
this.visible = true
this.dataForm.id = 0
this.$nextTick(() => {
this.$refs['dataForm'].resetFields()
this.$http({
url: this.$http.adornUrl(`/buiopnbpc1/opnstrategyflowinf/queryByInterface.do?interface_id=${this.dataForm.interface_id}`),
method: 'get',
params: this.$http.adornParams()
}).then(({ data }) => {
if (isGDASucc(data)) {
this.dataForm = data.data
this.settings = this.dataForm.status === '1'
} else {
this.dataForm.request_times = ''
this.dataForm.remark = ''
}
})
})
},
// 表单提交
dataFormSubmit() {
this.$refs['dataForm'].validate((valid) => {
if (valid) {
this.dataForm.status = this.settings ? '1' : '0'
this.$http({
url: this.$http.adornUrl(`/buiopnbpc1/opnstrategyflowinf/${!this.dataForm.id ? 'add' : 'update'}.do`),
method: 'post',
data: this.$http.adornData({
'id': this.dataForm.id || undefined,
'gateway_id': this.dataForm.gateway_id,
'interface_id': this.dataForm.interface_id,
'name': this.dataForm.name,
'type': this.dataForm.type,
'unit_time_type': this.dataForm.unit_time_type,
'unit_time': this.dataForm.unit_time,
'request_times': this.dataForm.request_times,
'priority': this.dataForm.priority,
'begin_time': this.dataForm.begin_time,
'end_time': this.dataForm.end_time,
'period_type': this.dataForm.period_type,
'begin_period': this.dataForm.begin_period,
'end_period': this.dataForm.end_period,
'status': this.dataForm.status,
'remark': this.dataForm.remark
})
}).then(({ data }) => {
if (isGDASucc(data)) {
this.$message({
message: '操作成功',
type: 'success',
duration: 1500,
onClose: () => {
this.visible = false
this.$emit('refreshDataList')
}
})
} else {
this.$message.error(data.msg)
}
})
}
})
},
// 删除
deleteHandle() {
this.$confirm(`确定对[${this.dataForm.name}]进行[删除]操作?`, '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
this.$http({
url: this.$http.adornUrl('/buiopnbpc1/opnstrategyflowinf/delete.do'),
method: 'post',
data: this.$http.adornData({
'ids': this.dataForm.id
}, false)
}).then(({ data }) => {
if (isGDASucc(data)) {
this.settings = false
this.$message({
message: '操作成功',
type: 'success',
duration: 1500,
onClose: () => {
this.getDataList()
}
})
} else {
this.$message.error(data.msg)
}
})
})
}
}
}
</script>
@@ -1,12 +1,20 @@
<template>
<div class="mod-config">
<el-form :inline="true" :model="dataForm" @keyup.enter.native="getDataList01()">
<el-form-item>
<el-input v-model="dataForm.search" placeholder="搜索内容" clearable></el-input>
<el-form-item label="网关:" prop="gateway_id">
<el-select v-model="dataForm.gateway_id" placeholder="网关" style="width:100px">
<el-option label="全部" value="-1"></el-option>
<el-option v-for="item in gatewayList" :key="item.id" :label="item.name" :value="item.id"></el-option>
</el-select>
</el-form-item>
<el-form-item label="接口名称:" prop="name">
<el-input v-model="dataForm.name" placeholder="接口名称" clearable></el-input>
</el-form-item>
<el-form-item>
<el-button @click="getDataList01()">刷新</el-button>
<el-button v-if="isAuth('opn:opnstrategyflowinf:add')" type="primary" @click="addOrUpdateHandle()">新增</el-button>
<el-button @click="getDataList01()">搜索</el-button>
<!-- <el-button v-if="isAuth('opn:opnstrategyflowinf:add')" type="primary" @click="addOrUpdateHandle()">新增</el-button> -->
<el-button
v-if="isAuth('opn:opnstrategyflowinf:delete')"
type="danger"
@@ -26,7 +34,7 @@
<el-table-column fixed type="selection" header-align="center" align="center" width="50"></el-table-column>
<!-- <el-table-column prop="id" header-align="center" type="index" align="center" label="标识"></el-table-column> -->
<!-- <el-table-column prop="gateway_id" header-align="center" align="center" label="网关标识"></el-table-column>
<el-table-column prop="strategy_id" header-align="center" align="center" label="策略标识"></el-table-column>-->
-->
<el-table-column prop="name" header-align="center" align="center" label="名称"></el-table-column>
<el-table-column prop="type" header-align="center" align="center" column-key="flow_typ" :formatter="dict.formatter" label="访问类型"></el-table-column>
<el-table-column prop="status" header-align="center" align="center" column-key="ip_status" :formatter="dict.formatter" label="状态">
@@ -68,11 +76,12 @@
<el-table-column prop="remark" header-align="center" align="center" label="备注"></el-table-column>
<el-table-column fixed="right" header-align="center" align="center" width="150" label="操作">
<template slot-scope="scope">
<el-button v-if="isAuth('opn:opnstrategyflowinf:update')" type="text" size="small" @click="addOrUpdateByStatus(scope.row)">
<!-- <el-button v-if="isAuth('opn:opnstrategyflowinf:update')" type="text" size="small" @click="addOrUpdateByStatus(scope.row)">
<el-tag v-if="scope.row.status === '0'" size="small">有效</el-tag>
<el-tag v-else size="small" type="danger">无效</el-tag>
</el-button>
</el-button>-->
<!-- <el-button v-if="isAuth('opn:opnstrategyflowinf:query')" type="text" size="small" @click="queryHandle(scope.row.id)">查看</el-button> -->
<el-button v-if="isAuth('opn:opnstrategyflowinf:update')" type="text" size="small" @click="monitorHandle(scope.row)">监控</el-button>
<el-button v-if="isAuth('opn:opnstrategyflowinf:update')" type="text" size="small" @click="addOrUpdateHandle(scope.row.id)">修改</el-button>
<el-button v-if="isAuth('opn:opnstrategyflowinf:delete')" type="text" size="small" @click="deleteHandle(scope.row)">删除</el-button>
</template>
@@ -80,11 +89,14 @@
</el-table>
<!-- 弹窗, 新增 / 修改 -->
<add-or-update v-if="addOrUpdateVisible" ref="addOrUpdate" @refreshDataList="getDataList"></add-or-update>
<monitor v-if="monitorVisible" ref="monitor"></monitor>
</div>
</template>
<script>
import AddOrUpdate from './opnstrategyflowinf-add-or-update'
import Monitor from './opnstrategyflowinf-monitor'
import { isGDASucc } from '@/utils'
export default {
@@ -92,8 +104,7 @@
return {
dataForm: {
search: '',
gateway_id: '',
strategy_id: '999999'
gateway_id: ''
},
dataList: [],
pageIndex: 1,
@@ -101,17 +112,37 @@
totalPage: 0,
dataListLoading: false,
dataListSelections: [],
addOrUpdateVisible: false
addOrUpdateVisible: false,
monitorVisible: false,
gatewayList: []
}
},
activated() {
this.getGatewayList()
},
components: {
AddOrUpdate
AddOrUpdate,
Monitor
},
methods: {
refresh(gatewayId) {
this.dataForm.gateway_id = gatewayId
this.getDataList01()
},
getGatewayList() {
// 获取网关列表
// 获取接口组
this.$http({
url: this.$http.adornUrl(`/buiopnbpc1/opngatewayinf/list.do`),
method: 'get',
params: this.$http.adornParams()
}).then(({ data }) => {
if (isGDASucc(data)) {
this.gatewayList = data.data
this.dataForm.gateway_id = this.gatewayList[0]['id']
}
})
},
// 获取数据列表
getDataList01() {
this.pageIndex = 1
@@ -127,7 +158,8 @@
'page_size': this.pageSize,
'tot_rec_num': this.totalPage,
'gateway_id': this.dataForm.gateway_id,
'strategy_id': this.dataForm.strategy_id
'name': this.dataForm.name
})
}).then(({ data }) => {
if (isGDASucc(data)) {
@@ -167,7 +199,6 @@
this.$refs.addOrUpdate.title = !id ? '新增' : '修改'
this.$refs.addOrUpdate.readonly = false
this.$refs.addOrUpdate.dataForm.gateway_id = this.dataForm.gateway_id
this.$refs.addOrUpdate.dataForm.strategy_id = this.dataForm.strategy_id
this.$refs.addOrUpdate.init(id)
})
},
@@ -178,11 +209,15 @@
this.$refs.addOrUpdate.title = '查看'
this.$refs.addOrUpdate.readonly = true
this.$refs.addOrUpdate.dataForm.gateway_id = this.dataForm.gateway_id
this.$refs.addOrUpdate.dataForm.strategy_id = this.dataForm.strategy_id
this.$refs.addOrUpdate.init(id)
})
},
monitorHandle(row) {
this.monitorVisible = true
this.$nextTick(() => {
this.$refs.monitor.init(row)
})
},
// 修改
addOrUpdateByStatus(row) {
let status = row.status === '1' ? 0 : 1
@@ -198,7 +233,6 @@
'id': row.id,
'status': status,
'gateway_id': row.gateway_id,
'strategy_id': row.strategy_id,
'name': row.name,
'type': row.type,
'unit_time_type': row.unit_time_type,
@@ -15,6 +15,7 @@ import com.yuangou.ecp.bp.core.common.message.YGEDB;
import com.yuangou.ecp.bp.core.common.yglog4j.Logger;
import com.yuangou.ecp.bp.core.common.yglog4j.YGLogger;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@@ -45,8 +46,11 @@ public class OpnStrategyFlowInfListByGatewayAction extends BaseAction {
msgLog.info("list, reqBO=" + JSONObject.toJSON(reqBO));
ValidatorUtil.validateObject(reqBO);
OpnStrategyFlowInfDO entity = new OpnStrategyFlowInfDO();
BeanUtils.copyProperties(reqBO, entity);
List<OpnStrategyFlowInfDO> list = opnStrategyFlowInfMapper.selectByGateway(reqBO.getGatewayId());
List<OpnStrategyFlowInfDO> list = opnStrategyFlowInfMapper.selectByGateway(entity);
ResultT resultT = new ResultT();
if (list == null || list.isEmpty()) {
@@ -35,7 +35,7 @@ public interface OpnStrategyFlowInfMapper {
void selectResultHandler(OpnStrategyFlowInfDO entity, YGResultHandler resultHandler);
List<OpnStrategyFlowInfDO> selectByGateway(Long gatewayId);
List<OpnStrategyFlowInfDO> selectByGateway(OpnStrategyFlowInfDO entity);
OpnStrategyFlowInfDO selectByInterface(Long interfaceId);
@@ -14,7 +14,9 @@ public class OpnStrategyFlowInfListByGatewayReqBO {
@ECPDict(required = true, message = "gatewayId值不合法")
private Long gatewayId;
@ECPDict(required = true, message = "strategyId值不合法")
private Long strategyId;
@ECPDict(required = false, message = "name值不合法")
private String name;
}
@@ -169,7 +169,7 @@
<select id="selectByGateway" resultType="com.murong.ecp.netpay.mbu.web.opn.dal.entity.OpnStrategyFlowInfDO">
select
<include refid="base_column_list"/>
from T_OPN_STRATEGY_FLOW_INF where gateway_id = #{gatewayId}
from T_OPN_STRATEGY_FLOW_INF where (gateway_id = #{gatewayId} or #{gatewayId} = -1) and (name like '%%${name}%%')
</select>
<select id="selectByInterface" resultType="com.murong.ecp.netpay.mbu.web.opn.dal.entity.OpnStrategyFlowInfDO">