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