refactor(接口测试):接口列表高级搜索支持自定义字段作为查询条件
--story=1011955 --user=王旭 【接口测试】接口列表高级搜索支持添加“自定义字段”搜索 https://www.tapd.cn/55049933/s/1371850
This commit is contained in:
parent
a0bae09c1b
commit
bbfd7e09b6
|
@ -51,4 +51,10 @@ public class ApiDefinitionRequest extends BaseQueryRequest {
|
|||
|
||||
private Long deleteTime;
|
||||
private String deleteUserId;
|
||||
|
||||
/**
|
||||
* 是否根据自定义字段进行排序
|
||||
*/
|
||||
private Boolean isCustomSorted = false;
|
||||
|
||||
}
|
||||
|
|
|
@ -236,7 +236,36 @@
|
|||
<property name="object" value="${condition}.caseCount"/>
|
||||
</include>
|
||||
</if>
|
||||
|
||||
<if test="${condition}.customs != null and ${condition}.customs.size() > 0">
|
||||
<foreach collection="${condition}.customs" item="custom" separator="" open="" close="">
|
||||
and api_definition.id in (
|
||||
select resource_id from custom_field_api where field_id = #{custom.id}
|
||||
<choose>
|
||||
<when test="custom.type == 'multipleMember' or custom.type == 'checkbox' or custom.type == 'multipleSelect'">
|
||||
and ${custom.value}
|
||||
</when>
|
||||
<when test="custom.type == 'date' or custom.type == 'datetime'">
|
||||
and left(replace(unix_timestamp(trim(both '"' from `value`)), '.', ''), 13)
|
||||
<include refid="io.metersphere.base.mapper.ext.ExtBaseMapper.condition">
|
||||
<property name="object" value="custom"/>
|
||||
</include>
|
||||
</when>
|
||||
<when test="custom.type == 'richText' or custom.type == 'textarea'">
|
||||
and text_value
|
||||
<include refid="io.metersphere.base.mapper.ext.ExtBaseMapper.condition">
|
||||
<property name="object" value="custom"/>
|
||||
</include>
|
||||
</when>
|
||||
<otherwise>
|
||||
and trim(both '"' from value)
|
||||
<include refid="io.metersphere.base.mapper.ext.ExtBaseMapper.condition">
|
||||
<property name="object" value="custom"/>
|
||||
</include>
|
||||
</otherwise>
|
||||
</choose>
|
||||
)
|
||||
</foreach>
|
||||
</if>
|
||||
</sql>
|
||||
|
||||
<sql id="condition">
|
||||
|
@ -296,6 +325,9 @@
|
|||
from api_definition
|
||||
left join user on api_definition.user_id = user.id
|
||||
LEFT JOIN project_version ON project_version.id = api_definition.version_id
|
||||
<if test="request.isCustomSorted">
|
||||
left join custom_field_api on api_definition.id = custom_field_api.resource_id
|
||||
</if>
|
||||
<include refid="queryWhereCondition"/>
|
||||
<if test="request.orders != null and request.orders.size() > 0">
|
||||
order by
|
||||
|
|
|
@ -181,6 +181,7 @@ public class ApiDefinitionService {
|
|||
|
||||
public List<ApiDefinitionResult> list(ApiDefinitionRequest request) {
|
||||
request = this.initRequest(request, true, true);
|
||||
setCustomFieldsOrder(request);
|
||||
List<ApiDefinitionResult> resList = extApiDefinitionMapper.list(request);
|
||||
buildUserInfo(resList);
|
||||
if (StringUtils.isNotBlank(request.getProjectId())) {
|
||||
|
@ -193,6 +194,12 @@ public class ApiDefinitionService {
|
|||
return resList;
|
||||
}
|
||||
|
||||
private void setCustomFieldsOrder(ApiDefinitionRequest request) {
|
||||
if (request.getCombine() != null && !request.getCombine().isEmpty()) {
|
||||
request.setIsCustomSorted(true);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 工作台获取待应用管理设置的更新的条件
|
||||
*
|
||||
|
|
|
@ -305,6 +305,8 @@ import {buildNodePath} from 'metersphere-frontend/src/model/NodeTree';
|
|||
import VersionSelector from '@/business/definition/components/version/VersionSelector';
|
||||
import TableExtendBtns from "@/business/definition/components/complete/table/TableExtendBtns";
|
||||
import MsShowReference from "@/business/definition/components/reference/ShowReference";
|
||||
import {getApiTemplate} from "@/api/api-template";
|
||||
import {getAdvSearchCustomField} from "metersphere-frontend/src/components/search/custom-component";
|
||||
|
||||
export default {
|
||||
name: 'ApiList',
|
||||
|
@ -597,7 +599,17 @@ export default {
|
|||
this.editApi(response.data);
|
||||
});
|
||||
}
|
||||
for (let i = 0; i < this.condition.components.length; i++) {
|
||||
if (this.condition.components[i].custom) {
|
||||
this.condition.components.splice(i, 1);
|
||||
break;
|
||||
}
|
||||
}
|
||||
this.setAdvSearchParam();
|
||||
getApiTemplate(this.projectId).then((template) => {
|
||||
let comp = getAdvSearchCustomField(this.condition, template.customFields);
|
||||
this.condition.components.push(...comp)
|
||||
});
|
||||
},
|
||||
watch: {
|
||||
selectNodeIds() {
|
||||
|
|
Loading…
Reference in New Issue