fix: 修复unknown和app_risk查询bug

This commit is contained in:
chenjinsong
2022-02-14 16:04:08 +08:00
parent 7bdcd1c598
commit 37b5d3f7a5
4 changed files with 61 additions and 22 deletions

View File

@@ -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
}

View File

@@ -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;'

View File

@@ -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 => {

View File

@@ -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: {