fix: 修复unknown和app_risk查询bug
This commit is contained in:
@@ -88,7 +88,7 @@ export default class SqlParser extends SqlParserVisitor {
|
||||
if (isFullText) {
|
||||
if (meta.meta === condition) {
|
||||
if (meta.column.type !== columnType.fullText) {
|
||||
sql += `${meta.column.name}${meta.operator.value}${valueHandle(meta.value.value, meta.column.name)} `
|
||||
sql += `${meta.column.name}${meta.operator.value}${meta.value.value} `
|
||||
} else {
|
||||
sql += "QUERY('"
|
||||
this.columnList.forEach(column => {
|
||||
@@ -101,7 +101,7 @@ export default class SqlParser extends SqlParserVisitor {
|
||||
if (meta.meta === condition) {
|
||||
sql += (meta.column.name)
|
||||
if (meta.column.type !== columnType.fullText) {
|
||||
sql += `${meta.operator.value}${valueHandle(meta.value.value, meta.column.name)} `
|
||||
sql += `${meta.operator.value}${meta.value.value} `
|
||||
} else {
|
||||
sql += ' '
|
||||
}
|
||||
@@ -242,7 +242,7 @@ function handleType (value) {
|
||||
|
||||
// 使用单引号包裹
|
||||
export function stringInQuot (value) {
|
||||
const match = value.match(/^'.+?'$/)
|
||||
const match = `${value}`.match(/^'.+?'$/)
|
||||
return match ? value : `'${value}'`
|
||||
}
|
||||
function handleInOrLike (value, type) {
|
||||
@@ -284,7 +284,7 @@ function valueHandle (value, columnName) {
|
||||
if (columnName) {
|
||||
if (columnName === 'app_risk') {
|
||||
const m = riskLevelMapping.find(mapping => {
|
||||
return `'${mapping.name}'` === value || `'${mapping.value}'` === value
|
||||
return `'${mapping.name}'`.toLowerCase() === value.toLowerCase() || `'${mapping.value}'` === value
|
||||
})
|
||||
return (m && m.value) || value
|
||||
}
|
||||
|
||||
@@ -45,6 +45,8 @@
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { riskLevelMapping } from '@/utils/constants'
|
||||
|
||||
export default {
|
||||
props: {
|
||||
loading: Boolean
|
||||
@@ -60,11 +62,6 @@ export default {
|
||||
entityTopTenData: []
|
||||
}
|
||||
},
|
||||
created () {
|
||||
|
||||
},
|
||||
watch: {
|
||||
},
|
||||
methods: {
|
||||
// 悬浮点击空白隐藏
|
||||
esc () {
|
||||
@@ -81,7 +78,7 @@ export default {
|
||||
this.entityTopTenData = data.map(d => {
|
||||
return {
|
||||
...d,
|
||||
name: d.name || 'unknown',
|
||||
name: this.valueHandle(d.name, this.item.topColumn) || 'unknown',
|
||||
percent: (parseFloat(d.count / totalCount) * 100).toFixed(2)
|
||||
}
|
||||
})
|
||||
@@ -92,6 +89,15 @@ export default {
|
||||
indexMethod (index) {
|
||||
return index + 1
|
||||
},
|
||||
valueHandle (value, columnName) {
|
||||
if (columnName === 'app_risk') {
|
||||
const m = riskLevelMapping.find(mapping => {
|
||||
return mapping.value === value
|
||||
})
|
||||
return (m && m.name) || value
|
||||
}
|
||||
return value
|
||||
},
|
||||
tableHeaderCellStyle ({ row, column, rowIndex, columnIndex }) {
|
||||
if (rowIndex === 0) {
|
||||
return 'padding-bottom:5px;padding-top:14px;'
|
||||
|
||||
@@ -121,7 +121,7 @@ import DateTimeRange from '@/components/common/TimeRange/DateTimeRange'
|
||||
import TimeRefresh from '@/components/common/TimeRange/TimeRefresh'
|
||||
import EntityFilter from '@/views/entityExplorer/EntityFilter'
|
||||
import EntityList from '@/views/entityExplorer/entityList/EntityList'
|
||||
import { entityType, entityFilterType, defaultPageSize } from '@/utils/constants'
|
||||
import {entityType, entityFilterType, defaultPageSize, riskLevelMapping} from '@/utils/constants'
|
||||
import { get } from '@/utils/http'
|
||||
import { api } from '@/utils/api'
|
||||
import { getNowTime, getSecond } from '@/utils/date-util'
|
||||
@@ -437,9 +437,43 @@ export default {
|
||||
dateTimeRangeChange (s, e, v) {
|
||||
this.timeFilter = { startTime: s, endTime: e, dateRangeValue: v }
|
||||
},
|
||||
// sql特殊字段转换
|
||||
specialColumnHandle (sql) {
|
||||
const columns = [
|
||||
{
|
||||
target: "app_risk='1'",
|
||||
original: `app_risk='${riskLevelMapping[0].name.toLowerCase()}'`
|
||||
},
|
||||
{
|
||||
target: "app_risk='2'",
|
||||
original: `app_risk='${riskLevelMapping[1].name.toLowerCase()}'`
|
||||
},
|
||||
{
|
||||
target: "app_risk='3'",
|
||||
original: `app_risk='${riskLevelMapping[2].name.toLowerCase()}'`
|
||||
},
|
||||
{
|
||||
target: "app_risk='4'",
|
||||
original: `app_risk='${riskLevelMapping[3].name.toLowerCase()}'`
|
||||
},
|
||||
{
|
||||
target: "app_risk='5'",
|
||||
original: `app_risk='${riskLevelMapping[4].name.toLowerCase()}'`
|
||||
},
|
||||
{
|
||||
target: "=''",
|
||||
original: "='unknown'"
|
||||
}
|
||||
]
|
||||
let result = sql
|
||||
columns.forEach(c => {
|
||||
result = this.$_.replace(result, c.original, c.target)
|
||||
})
|
||||
return result
|
||||
},
|
||||
search (metaList, formatSql) {
|
||||
if (formatSql) {
|
||||
this.q = formatSql
|
||||
this.q = this.specialColumnHandle(formatSql)
|
||||
this.metaList = metaList
|
||||
} else {
|
||||
this.q = ''
|
||||
@@ -470,16 +504,16 @@ export default {
|
||||
} else {
|
||||
this.limitFilterType = false
|
||||
}
|
||||
this.queryFilter({ entityType: entityType, q: formatSql, ...this.timeFilter })
|
||||
this.queryList({ q: formatSql, ...this.timeFilter, ...this.pageObj })
|
||||
this.queryListTotal({ q: formatSql, ...this.timeFilter })
|
||||
this.queryFilter({ entityType: entityType, q: this.q, ...this.timeFilter })
|
||||
this.queryList({ q: this.q, ...this.timeFilter, ...this.pageObj })
|
||||
this.queryListTotal({ q: this.q, ...this.timeFilter })
|
||||
} else {
|
||||
this.limitFilterType = false
|
||||
this.queryFilter({ entityType: 'ip', q: formatSql, ...this.timeFilter })
|
||||
this.queryFilter({ entityType: 'domain', q: formatSql, ...this.timeFilter })
|
||||
this.queryFilter({ entityType: 'app', q: formatSql, ...this.timeFilter })
|
||||
this.queryList({ q: formatSql, ...this.timeFilter, ...this.pageObj })
|
||||
this.queryListTotal({ q: formatSql, ...this.timeFilter })
|
||||
this.queryFilter({ entityType: 'ip', q: this.q, ...this.timeFilter })
|
||||
this.queryFilter({ entityType: 'domain', q: this.q, ...this.timeFilter })
|
||||
this.queryFilter({ entityType: 'app', q: this.q, ...this.timeFilter })
|
||||
this.queryList({ q: this.q, ...this.timeFilter, ...this.pageObj })
|
||||
this.queryListTotal({ q: this.q, ...this.timeFilter })
|
||||
}
|
||||
} else {
|
||||
this.limitFilterType = false
|
||||
@@ -531,7 +565,7 @@ export default {
|
||||
endTime: getSecond(params.endTime)
|
||||
}
|
||||
get(api.entityFilter, queryParams).then(response => {
|
||||
if (response.data.result) {
|
||||
if (response.data && response.data.result) {
|
||||
switch (params.entityType) {
|
||||
case 'ip': {
|
||||
this.filterData[0].data.forEach(d => {
|
||||
|
||||
@@ -36,7 +36,6 @@
|
||||
import EntityTop from '@/components/entities/EntityTop'
|
||||
import { get } from '@/utils/http'
|
||||
import { api } from '@/utils/api'
|
||||
import { objToStr } from '@/utils/tools'
|
||||
export default {
|
||||
name: 'EntityFilter',
|
||||
components: {
|
||||
|
||||
Reference in New Issue
Block a user