fix(接口测试): 优化场景报告步骤的基础信息存储结构 (#12442)

优化场景报告步骤的基础信息存储结构

Co-authored-by: song-tianyang <tianyang.song@fit2cloud.com>
This commit is contained in:
MeterSphere Bot 2022-04-09 17:36:56 +08:00 committed by GitHub
parent 4be30f60c9
commit 2465587992
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
12 changed files with 123 additions and 593 deletions

View File

@ -0,0 +1,19 @@
package io.metersphere.api.dto;
import lombok.Getter;
import lombok.Setter;
/**
* @author song.tianyang
* @Date 2022/4/9 3:50 下午
*/
@Getter
@Setter
public class ApiScenarioReportBaseInfoDTO {
private String reqName;
private boolean reqSuccess;
private int reqError;
private long reqStartTime;
private String rspCode;
private long rspTime;
}

View File

@ -1,6 +1,8 @@
package io.metersphere.api.dto; package io.metersphere.api.dto;
import io.metersphere.base.domain.ApiScenarioReportResult; import com.alibaba.fastjson.JSONObject;
import io.metersphere.base.domain.ApiScenarioReportResultWithBLOBs;
import io.metersphere.commons.utils.LogUtil;
import io.metersphere.dto.RequestResult; import io.metersphere.dto.RequestResult;
import io.metersphere.dto.ResponseResult; import io.metersphere.dto.ResponseResult;
import lombok.Getter; import lombok.Getter;
@ -17,14 +19,21 @@ public class RequestResultExpandDTO extends RequestResult {
public RequestResultExpandDTO() { public RequestResultExpandDTO() {
} }
public RequestResultExpandDTO(ApiScenarioReportResult requestResult) { public RequestResultExpandDTO(ApiScenarioReportResultWithBLOBs requestResult) {
this.setName(requestResult.getReqName()); if(requestResult.getBaseInfo() != null){
this.setSuccess(requestResult.getReqSuccess()); try {
this.setError(requestResult.getReqError()); ApiScenarioReportBaseInfoDTO dto = JSONObject.parseObject(requestResult.getBaseInfo(),ApiScenarioReportBaseInfoDTO.class);
this.setStartTime(requestResult.getReqStartTime()); this.setName(dto.getReqName());
this.setSuccess(dto.isReqSuccess());
this.setError(dto.getReqError());
this.setStartTime(dto.getReqStartTime());
ResponseResult responseResult = this.getResponseResult(); ResponseResult responseResult = this.getResponseResult();
responseResult.setResponseCode(requestResult.getRspCode()); responseResult.setResponseCode(dto.getRspCode());
responseResult.setResponseTime(requestResult.getRspTime()); responseResult.setResponseTime(dto.getRspTime());
this.setResponseResult(responseResult); this.setResponseResult(responseResult);
}catch (Exception e){
LogUtil.error("Parse report base-info error :"+ e.getMessage());
}
}
} }
} }

View File

@ -2,8 +2,9 @@ package io.metersphere.api.service;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import io.metersphere.api.dto.ApiScenarioReportBaseInfoDTO;
import io.metersphere.api.dto.ErrorReportLibraryParseDTO; import io.metersphere.api.dto.ErrorReportLibraryParseDTO;
import io.metersphere.base.domain.ApiScenarioReportResult; import io.metersphere.base.domain.ApiScenarioReportResultWithBLOBs;
import io.metersphere.base.mapper.ApiScenarioReportResultMapper; import io.metersphere.base.mapper.ApiScenarioReportResultMapper;
import io.metersphere.commons.constants.ExecuteResult; import io.metersphere.commons.constants.ExecuteResult;
import io.metersphere.commons.utils.ErrorReportLibraryUtil; import io.metersphere.commons.utils.ErrorReportLibraryUtil;
@ -88,8 +89,8 @@ public class ApiScenarioReportResultService {
} }
} }
private ApiScenarioReportResult newUiScenarioReportResult(String reportId, String resourceId, JSONObject value) { private ApiScenarioReportResultWithBLOBs newUiScenarioReportResult(String reportId, String resourceId, JSONObject value) {
ApiScenarioReportResult report = new ApiScenarioReportResult(); ApiScenarioReportResultWithBLOBs report = new ApiScenarioReportResultWithBLOBs();
report.setId(UUID.randomUUID().toString()); report.setId(UUID.randomUUID().toString());
report.setResourceId(resourceId); report.setResourceId(resourceId);
report.setReportId(reportId); report.setReportId(reportId);
@ -102,8 +103,8 @@ public class ApiScenarioReportResultService {
return report; return report;
} }
private ApiScenarioReportResult newApiScenarioReportResult(String reportId, RequestResult baseResult) { private ApiScenarioReportResultWithBLOBs newApiScenarioReportResult(String reportId, RequestResult baseResult) {
ApiScenarioReportResult report = new ApiScenarioReportResult(); ApiScenarioReportResultWithBLOBs report = new ApiScenarioReportResultWithBLOBs();
//解析误报内容 //解析误报内容
ErrorReportLibraryParseDTO errorCodeDTO = ErrorReportLibraryUtil.parseAssertions(baseResult); ErrorReportLibraryParseDTO errorCodeDTO = ErrorReportLibraryUtil.parseAssertions(baseResult);
RequestResult result = errorCodeDTO.getResult(); RequestResult result = errorCodeDTO.getResult();
@ -123,49 +124,45 @@ public class ApiScenarioReportResultService {
report.setRequestTime(result.getEndTime() - result.getStartTime()); report.setRequestTime(result.getEndTime() - result.getStartTime());
//记录基础信息 //记录基础信息
report.setReqName(StringUtils.isEmpty(result.getName()) ? "" : result.getName()); ApiScenarioReportBaseInfoDTO baseInfoDTO = new ApiScenarioReportBaseInfoDTO();
report.setReqSuccess(result.isSuccess()); baseInfoDTO.setReqName(result.getName());
report.setReqError(result.getError()); baseInfoDTO.setReqSuccess(result.isSuccess());
report.setReqStartTime(result.getStartTime()); baseInfoDTO.setReqError(result.getError());
baseInfoDTO.setReqStartTime(result.getStartTime());
if (result.getResponseResult() != null) { if (result.getResponseResult() != null) {
report.setRspCode(result.getResponseResult().getResponseCode()); baseInfoDTO.setRspCode(result.getResponseResult().getResponseCode());
report.setRspTime(result.getResponseResult().getResponseTime()); baseInfoDTO.setRspTime(result.getResponseResult().getResponseTime());
} else {
report.setRspCode("");
report.setRspTime(Long.valueOf(0));
} }
report.setBaseInfo(JSONObject.toJSONString(baseInfoDTO));
report.setContent(JSON.toJSONString(result).getBytes(StandardCharsets.UTF_8)); report.setContent(JSON.toJSONString(result).getBytes(StandardCharsets.UTF_8));
return report; return report;
} }
public boolean isResultFormat(ApiScenarioReportResult result) { public boolean isResultFormat(ApiScenarioReportResultWithBLOBs result) {
if (result != null) { if (result != null && result.getBaseInfo() != null) {
if (result.getReqName() == null && result.getReqStartTime() == null && result.getRspCode() == null && result.getRspTime() == null) { return true;
}else {
return false; return false;
} }
} }
return true;
}
public ApiScenarioReportResult formatScenarioResult(ApiScenarioReportResult result) { public ApiScenarioReportResultWithBLOBs formatScenarioResult(ApiScenarioReportResultWithBLOBs result) {
if (!this.isResultFormat(result)) { if (!this.isResultFormat(result)) {
ApiScenarioReportResult baseResult = apiScenarioReportResultMapper.selectByPrimaryKey(result.getId()); ApiScenarioReportResultWithBLOBs baseResult = apiScenarioReportResultMapper.selectByPrimaryKey(result.getId());
if (baseResult != null) { if (baseResult != null) {
try { try {
RequestResult requestResult = JSON.parseObject(new String(baseResult.getContent(), StandardCharsets.UTF_8), RequestResult.class); RequestResult requestResult = JSON.parseObject(new String(baseResult.getContent(), StandardCharsets.UTF_8), RequestResult.class);
//记录基础信息 //记录基础信息
baseResult.setReqName(StringUtils.isEmpty(requestResult.getName()) ? "" : requestResult.getName()); ApiScenarioReportBaseInfoDTO baseInfo = new ApiScenarioReportBaseInfoDTO();
baseResult.setReqSuccess(requestResult.isSuccess()); baseInfo.setReqName(StringUtils.isEmpty(requestResult.getName()) ? "" : requestResult.getName());
baseResult.setReqError(requestResult.getError()); baseInfo.setReqSuccess(requestResult.isSuccess());
baseResult.setReqStartTime(requestResult.getStartTime()); baseInfo.setReqError(requestResult.getError());
baseInfo.setReqStartTime(requestResult.getStartTime());
if (requestResult.getResponseResult() != null) { if (requestResult.getResponseResult() != null) {
baseResult.setRspCode(requestResult.getResponseResult().getResponseCode()); baseInfo.setRspCode(requestResult.getResponseResult().getResponseCode());
baseResult.setRspTime(requestResult.getResponseResult().getResponseTime()); baseInfo.setRspTime(requestResult.getResponseResult().getResponseTime());
} else {
baseResult.setRspCode("");
baseResult.setRspTime(Long.valueOf(0));
} }
baseResult.setBaseInfo(JSONObject.toJSONString(baseInfo));
apiScenarioReportResultMapper.updateByPrimaryKeySelective(baseResult); apiScenarioReportResultMapper.updateByPrimaryKeySelective(baseResult);
return baseResult; return baseResult;
} catch (Exception e) { } catch (Exception e) {

View File

@ -274,15 +274,15 @@ public class ApiScenarioReportStructureService {
} }
} }
public void reportFormatting(List<StepTreeDTO> dtoList, Map<String, List<ApiScenarioReportResult>> maps) { public void reportFormatting(List<StepTreeDTO> dtoList, Map<String, List<ApiScenarioReportResultWithBLOBs>> maps) {
for (int index = 0; index < dtoList.size(); index++) { for (int index = 0; index < dtoList.size(); index++) {
StepTreeDTO dto = dtoList.get(index); StepTreeDTO dto = dtoList.get(index);
dto.setIndex((index + 1)); dto.setIndex((index + 1));
List<ApiScenarioReportResult> reportResults = maps.get(dto.getResourceId()); List<ApiScenarioReportResultWithBLOBs> reportResults = maps.get(dto.getResourceId());
if (CollectionUtils.isNotEmpty(reportResults)) { if (CollectionUtils.isNotEmpty(reportResults)) {
if (reportResults.size() > 1) { if (reportResults.size() > 1) {
for (int i = 0; i < reportResults.size(); i++) { for (int i = 0; i < reportResults.size(); i++) {
ApiScenarioReportResult reportResult = reportResults.get(i); ApiScenarioReportResultWithBLOBs reportResult = reportResults.get(i);
reportResult = apiScenarioReportResultService.formatScenarioResult(reportResult); reportResult = apiScenarioReportResultService.formatScenarioResult(reportResult);
if (i == 0) { if (i == 0) {
RequestResultExpandDTO requestResultExpandDTO = new RequestResultExpandDTO(reportResult); RequestResultExpandDTO requestResultExpandDTO = new RequestResultExpandDTO(reportResult);
@ -298,7 +298,7 @@ public class ApiScenarioReportStructureService {
} }
} }
} else { } else {
ApiScenarioReportResult reportResult = reportResults.get(0); ApiScenarioReportResultWithBLOBs reportResult = reportResults.get(0);
reportResult = apiScenarioReportResultService.formatScenarioResult(reportResult); reportResult = apiScenarioReportResultService.formatScenarioResult(reportResult);
RequestResultExpandDTO requestResultExpandDTO = new RequestResultExpandDTO(reportResult); RequestResultExpandDTO requestResultExpandDTO = new RequestResultExpandDTO(reportResult);
dto.setStepId(reportResults.get(0).getId()); dto.setStepId(reportResults.get(0).getId());
@ -516,7 +516,7 @@ public class ApiScenarioReportStructureService {
} }
private ApiScenarioReportDTO getReport(String reportId) { private ApiScenarioReportDTO getReport(String reportId) {
List<ApiScenarioReportResult> reportResults = null; List<ApiScenarioReportResultWithBLOBs> reportResults = null;
ApiScenarioReport report = scenarioReportMapper.selectByPrimaryKey(reportId); ApiScenarioReport report = scenarioReportMapper.selectByPrimaryKey(reportId);
if (report.getReportType() != null && report.getReportType().startsWith("UI")) { if (report.getReportType() != null && report.getReportType().startsWith("UI")) {
ApiScenarioReportResultExample example = new ApiScenarioReportResultExample(); ApiScenarioReportResultExample example = new ApiScenarioReportResultExample();
@ -542,7 +542,7 @@ public class ApiScenarioReportStructureService {
ApiScenarioReportStructureWithBLOBs scenarioReportStructure = reportStructureWithBLOBs.get(0); ApiScenarioReportStructureWithBLOBs scenarioReportStructure = reportStructureWithBLOBs.get(0);
List<StepTreeDTO> stepList = JSONArray.parseArray(new String(scenarioReportStructure.getResourceTree(), StandardCharsets.UTF_8), StepTreeDTO.class); List<StepTreeDTO> stepList = JSONArray.parseArray(new String(scenarioReportStructure.getResourceTree(), StandardCharsets.UTF_8), StepTreeDTO.class);
// 匹配结果 // 匹配结果
Map<String, List<ApiScenarioReportResult>> maps = reportResults.stream().collect(Collectors.groupingBy(ApiScenarioReportResult::getResourceId)); Map<String, List<ApiScenarioReportResultWithBLOBs>> maps = reportResults.stream().collect(Collectors.groupingBy(ApiScenarioReportResult::getResourceId));
this.reportFormatting(stepList, maps); this.reportFormatting(stepList, maps);
reportDTO = this.countReportNum(stepList, reportDTO); reportDTO = this.countReportNum(stepList, reportDTO);
@ -573,7 +573,7 @@ public class ApiScenarioReportStructureService {
return reportDTO; return reportDTO;
} }
private List<ApiScenarioReportResult> selectBaseInfoResultByReportId(String reportId) { private List<ApiScenarioReportResultWithBLOBs> selectBaseInfoResultByReportId(String reportId) {
return extApiScenarioReportResultMapper.selectBaseInfoResultByReportId(reportId); return extApiScenarioReportResultMapper.selectBaseInfoResultByReportId(reportId);
} }
@ -582,11 +582,11 @@ public class ApiScenarioReportStructureService {
* *
* @param reportResults * @param reportResults
*/ */
private void removeUiResultIfNotStep(List<ApiScenarioReportResult> reportResults) { private void removeUiResultIfNotStep(List<ApiScenarioReportResultWithBLOBs> reportResults) {
if(CollectionUtils.isNotEmpty(reportResults)){ if(CollectionUtils.isNotEmpty(reportResults)){
Iterator<ApiScenarioReportResult> iterator = reportResults.iterator(); Iterator<ApiScenarioReportResultWithBLOBs> iterator = reportResults.iterator();
while (iterator.hasNext()) { while (iterator.hasNext()) {
ApiScenarioReportResult item = iterator.next(); ApiScenarioReportResultWithBLOBs item = iterator.next();
String result = new String(item.getContent(), StandardCharsets.UTF_8); String result = new String(item.getContent(), StandardCharsets.UTF_8);
if (StringUtils.isNotBlank(result)) { if (StringUtils.isNotBlank(result)) {
Boolean isNoStep = JSONObject.parseObject(result).getBoolean("isNotStep"); Boolean isNoStep = JSONObject.parseObject(result).getBoolean("isNotStep");
@ -650,7 +650,7 @@ public class ApiScenarioReportStructureService {
} }
public RequestResult selectReportContent(String stepId) { public RequestResult selectReportContent(String stepId) {
ApiScenarioReportResult apiScenarioReportResult = reportResultMapper.selectByPrimaryKey(stepId); ApiScenarioReportResultWithBLOBs apiScenarioReportResult = reportResultMapper.selectByPrimaryKey(stepId);
if (apiScenarioReportResult != null) { if (apiScenarioReportResult != null) {
RequestResult requestResult = JSON.parseObject(new String(apiScenarioReportResult.getContent(), StandardCharsets.UTF_8), RequestResult.class); RequestResult requestResult = JSON.parseObject(new String(apiScenarioReportResult.getContent(), StandardCharsets.UTF_8), RequestResult.class);
return requestResult; return requestResult;

View File

@ -23,19 +23,5 @@ public class ApiScenarioReportResult implements Serializable {
private String errorCode; private String errorCode;
private String reqName;
private Boolean reqSuccess;
private Integer reqError;
private Long reqStartTime;
private String rspCode;
private Long rspTime;
private byte[] content;
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
} }

View File

@ -693,386 +693,6 @@ public class ApiScenarioReportResultExample {
addCriterion("error_code not between", value1, value2, "errorCode"); addCriterion("error_code not between", value1, value2, "errorCode");
return (Criteria) this; return (Criteria) this;
} }
public Criteria andReqNameIsNull() {
addCriterion("req_name is null");
return (Criteria) this;
}
public Criteria andReqNameIsNotNull() {
addCriterion("req_name is not null");
return (Criteria) this;
}
public Criteria andReqNameEqualTo(String value) {
addCriterion("req_name =", value, "reqName");
return (Criteria) this;
}
public Criteria andReqNameNotEqualTo(String value) {
addCriterion("req_name <>", value, "reqName");
return (Criteria) this;
}
public Criteria andReqNameGreaterThan(String value) {
addCriterion("req_name >", value, "reqName");
return (Criteria) this;
}
public Criteria andReqNameGreaterThanOrEqualTo(String value) {
addCriterion("req_name >=", value, "reqName");
return (Criteria) this;
}
public Criteria andReqNameLessThan(String value) {
addCriterion("req_name <", value, "reqName");
return (Criteria) this;
}
public Criteria andReqNameLessThanOrEqualTo(String value) {
addCriterion("req_name <=", value, "reqName");
return (Criteria) this;
}
public Criteria andReqNameLike(String value) {
addCriterion("req_name like", value, "reqName");
return (Criteria) this;
}
public Criteria andReqNameNotLike(String value) {
addCriterion("req_name not like", value, "reqName");
return (Criteria) this;
}
public Criteria andReqNameIn(List<String> values) {
addCriterion("req_name in", values, "reqName");
return (Criteria) this;
}
public Criteria andReqNameNotIn(List<String> values) {
addCriterion("req_name not in", values, "reqName");
return (Criteria) this;
}
public Criteria andReqNameBetween(String value1, String value2) {
addCriterion("req_name between", value1, value2, "reqName");
return (Criteria) this;
}
public Criteria andReqNameNotBetween(String value1, String value2) {
addCriterion("req_name not between", value1, value2, "reqName");
return (Criteria) this;
}
public Criteria andReqSuccessIsNull() {
addCriterion("req_success is null");
return (Criteria) this;
}
public Criteria andReqSuccessIsNotNull() {
addCriterion("req_success is not null");
return (Criteria) this;
}
public Criteria andReqSuccessEqualTo(Boolean value) {
addCriterion("req_success =", value, "reqSuccess");
return (Criteria) this;
}
public Criteria andReqSuccessNotEqualTo(Boolean value) {
addCriterion("req_success <>", value, "reqSuccess");
return (Criteria) this;
}
public Criteria andReqSuccessGreaterThan(Boolean value) {
addCriterion("req_success >", value, "reqSuccess");
return (Criteria) this;
}
public Criteria andReqSuccessGreaterThanOrEqualTo(Boolean value) {
addCriterion("req_success >=", value, "reqSuccess");
return (Criteria) this;
}
public Criteria andReqSuccessLessThan(Boolean value) {
addCriterion("req_success <", value, "reqSuccess");
return (Criteria) this;
}
public Criteria andReqSuccessLessThanOrEqualTo(Boolean value) {
addCriterion("req_success <=", value, "reqSuccess");
return (Criteria) this;
}
public Criteria andReqSuccessIn(List<Boolean> values) {
addCriterion("req_success in", values, "reqSuccess");
return (Criteria) this;
}
public Criteria andReqSuccessNotIn(List<Boolean> values) {
addCriterion("req_success not in", values, "reqSuccess");
return (Criteria) this;
}
public Criteria andReqSuccessBetween(Boolean value1, Boolean value2) {
addCriterion("req_success between", value1, value2, "reqSuccess");
return (Criteria) this;
}
public Criteria andReqSuccessNotBetween(Boolean value1, Boolean value2) {
addCriterion("req_success not between", value1, value2, "reqSuccess");
return (Criteria) this;
}
public Criteria andReqErrorIsNull() {
addCriterion("req_error is null");
return (Criteria) this;
}
public Criteria andReqErrorIsNotNull() {
addCriterion("req_error is not null");
return (Criteria) this;
}
public Criteria andReqErrorEqualTo(Integer value) {
addCriterion("req_error =", value, "reqError");
return (Criteria) this;
}
public Criteria andReqErrorNotEqualTo(Integer value) {
addCriterion("req_error <>", value, "reqError");
return (Criteria) this;
}
public Criteria andReqErrorGreaterThan(Integer value) {
addCriterion("req_error >", value, "reqError");
return (Criteria) this;
}
public Criteria andReqErrorGreaterThanOrEqualTo(Integer value) {
addCriterion("req_error >=", value, "reqError");
return (Criteria) this;
}
public Criteria andReqErrorLessThan(Integer value) {
addCriterion("req_error <", value, "reqError");
return (Criteria) this;
}
public Criteria andReqErrorLessThanOrEqualTo(Integer value) {
addCriterion("req_error <=", value, "reqError");
return (Criteria) this;
}
public Criteria andReqErrorIn(List<Integer> values) {
addCriterion("req_error in", values, "reqError");
return (Criteria) this;
}
public Criteria andReqErrorNotIn(List<Integer> values) {
addCriterion("req_error not in", values, "reqError");
return (Criteria) this;
}
public Criteria andReqErrorBetween(Integer value1, Integer value2) {
addCriterion("req_error between", value1, value2, "reqError");
return (Criteria) this;
}
public Criteria andReqErrorNotBetween(Integer value1, Integer value2) {
addCriterion("req_error not between", value1, value2, "reqError");
return (Criteria) this;
}
public Criteria andReqStartTimeIsNull() {
addCriterion("req_start_time is null");
return (Criteria) this;
}
public Criteria andReqStartTimeIsNotNull() {
addCriterion("req_start_time is not null");
return (Criteria) this;
}
public Criteria andReqStartTimeEqualTo(Long value) {
addCriterion("req_start_time =", value, "reqStartTime");
return (Criteria) this;
}
public Criteria andReqStartTimeNotEqualTo(Long value) {
addCriterion("req_start_time <>", value, "reqStartTime");
return (Criteria) this;
}
public Criteria andReqStartTimeGreaterThan(Long value) {
addCriterion("req_start_time >", value, "reqStartTime");
return (Criteria) this;
}
public Criteria andReqStartTimeGreaterThanOrEqualTo(Long value) {
addCriterion("req_start_time >=", value, "reqStartTime");
return (Criteria) this;
}
public Criteria andReqStartTimeLessThan(Long value) {
addCriterion("req_start_time <", value, "reqStartTime");
return (Criteria) this;
}
public Criteria andReqStartTimeLessThanOrEqualTo(Long value) {
addCriterion("req_start_time <=", value, "reqStartTime");
return (Criteria) this;
}
public Criteria andReqStartTimeIn(List<Long> values) {
addCriterion("req_start_time in", values, "reqStartTime");
return (Criteria) this;
}
public Criteria andReqStartTimeNotIn(List<Long> values) {
addCriterion("req_start_time not in", values, "reqStartTime");
return (Criteria) this;
}
public Criteria andReqStartTimeBetween(Long value1, Long value2) {
addCriterion("req_start_time between", value1, value2, "reqStartTime");
return (Criteria) this;
}
public Criteria andReqStartTimeNotBetween(Long value1, Long value2) {
addCriterion("req_start_time not between", value1, value2, "reqStartTime");
return (Criteria) this;
}
public Criteria andRspCodeIsNull() {
addCriterion("rsp_code is null");
return (Criteria) this;
}
public Criteria andRspCodeIsNotNull() {
addCriterion("rsp_code is not null");
return (Criteria) this;
}
public Criteria andRspCodeEqualTo(String value) {
addCriterion("rsp_code =", value, "rspCode");
return (Criteria) this;
}
public Criteria andRspCodeNotEqualTo(String value) {
addCriterion("rsp_code <>", value, "rspCode");
return (Criteria) this;
}
public Criteria andRspCodeGreaterThan(String value) {
addCriterion("rsp_code >", value, "rspCode");
return (Criteria) this;
}
public Criteria andRspCodeGreaterThanOrEqualTo(String value) {
addCriterion("rsp_code >=", value, "rspCode");
return (Criteria) this;
}
public Criteria andRspCodeLessThan(String value) {
addCriterion("rsp_code <", value, "rspCode");
return (Criteria) this;
}
public Criteria andRspCodeLessThanOrEqualTo(String value) {
addCriterion("rsp_code <=", value, "rspCode");
return (Criteria) this;
}
public Criteria andRspCodeLike(String value) {
addCriterion("rsp_code like", value, "rspCode");
return (Criteria) this;
}
public Criteria andRspCodeNotLike(String value) {
addCriterion("rsp_code not like", value, "rspCode");
return (Criteria) this;
}
public Criteria andRspCodeIn(List<String> values) {
addCriterion("rsp_code in", values, "rspCode");
return (Criteria) this;
}
public Criteria andRspCodeNotIn(List<String> values) {
addCriterion("rsp_code not in", values, "rspCode");
return (Criteria) this;
}
public Criteria andRspCodeBetween(String value1, String value2) {
addCriterion("rsp_code between", value1, value2, "rspCode");
return (Criteria) this;
}
public Criteria andRspCodeNotBetween(String value1, String value2) {
addCriterion("rsp_code not between", value1, value2, "rspCode");
return (Criteria) this;
}
public Criteria andRspTimeIsNull() {
addCriterion("rsp_time is null");
return (Criteria) this;
}
public Criteria andRspTimeIsNotNull() {
addCriterion("rsp_time is not null");
return (Criteria) this;
}
public Criteria andRspTimeEqualTo(Long value) {
addCriterion("rsp_time =", value, "rspTime");
return (Criteria) this;
}
public Criteria andRspTimeNotEqualTo(Long value) {
addCriterion("rsp_time <>", value, "rspTime");
return (Criteria) this;
}
public Criteria andRspTimeGreaterThan(Long value) {
addCriterion("rsp_time >", value, "rspTime");
return (Criteria) this;
}
public Criteria andRspTimeGreaterThanOrEqualTo(Long value) {
addCriterion("rsp_time >=", value, "rspTime");
return (Criteria) this;
}
public Criteria andRspTimeLessThan(Long value) {
addCriterion("rsp_time <", value, "rspTime");
return (Criteria) this;
}
public Criteria andRspTimeLessThanOrEqualTo(Long value) {
addCriterion("rsp_time <=", value, "rspTime");
return (Criteria) this;
}
public Criteria andRspTimeIn(List<Long> values) {
addCriterion("rsp_time in", values, "rspTime");
return (Criteria) this;
}
public Criteria andRspTimeNotIn(List<Long> values) {
addCriterion("rsp_time not in", values, "rspTime");
return (Criteria) this;
}
public Criteria andRspTimeBetween(Long value1, Long value2) {
addCriterion("rsp_time between", value1, value2, "rspTime");
return (Criteria) this;
}
public Criteria andRspTimeNotBetween(Long value1, Long value2) {
addCriterion("rsp_time not between", value1, value2, "rspTime");
return (Criteria) this;
}
} }
public static class Criteria extends GeneratedCriteria { public static class Criteria extends GeneratedCriteria {

View File

@ -9,7 +9,9 @@ import lombok.ToString;
@EqualsAndHashCode(callSuper = true) @EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true) @ToString(callSuper = true)
public class ApiScenarioReportResultWithBLOBs extends ApiScenarioReportResult implements Serializable { public class ApiScenarioReportResultWithBLOBs extends ApiScenarioReportResult implements Serializable {
private String errorCode; private byte[] content;
private String baseInfo;
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
} }

View File

@ -2,6 +2,7 @@ package io.metersphere.base.mapper;
import io.metersphere.base.domain.ApiScenarioReportResult; import io.metersphere.base.domain.ApiScenarioReportResult;
import io.metersphere.base.domain.ApiScenarioReportResultExample; import io.metersphere.base.domain.ApiScenarioReportResultExample;
import io.metersphere.base.domain.ApiScenarioReportResultWithBLOBs;
import java.util.List; import java.util.List;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
@ -12,25 +13,25 @@ public interface ApiScenarioReportResultMapper {
int deleteByPrimaryKey(String id); int deleteByPrimaryKey(String id);
int insert(ApiScenarioReportResult record); int insert(ApiScenarioReportResultWithBLOBs record);
int insertSelective(ApiScenarioReportResult record); int insertSelective(ApiScenarioReportResultWithBLOBs record);
List<ApiScenarioReportResult> selectByExampleWithBLOBs(ApiScenarioReportResultExample example); List<ApiScenarioReportResultWithBLOBs> selectByExampleWithBLOBs(ApiScenarioReportResultExample example);
List<ApiScenarioReportResult> selectByExample(ApiScenarioReportResultExample example); List<ApiScenarioReportResult> selectByExample(ApiScenarioReportResultExample example);
ApiScenarioReportResult selectByPrimaryKey(String id); ApiScenarioReportResultWithBLOBs selectByPrimaryKey(String id);
int updateByExampleSelective(@Param("record") ApiScenarioReportResult record, @Param("example") ApiScenarioReportResultExample example); int updateByExampleSelective(@Param("record") ApiScenarioReportResultWithBLOBs record, @Param("example") ApiScenarioReportResultExample example);
int updateByExampleWithBLOBs(@Param("record") ApiScenarioReportResult record, @Param("example") ApiScenarioReportResultExample example); int updateByExampleWithBLOBs(@Param("record") ApiScenarioReportResultWithBLOBs record, @Param("example") ApiScenarioReportResultExample example);
int updateByExample(@Param("record") ApiScenarioReportResult record, @Param("example") ApiScenarioReportResultExample example); int updateByExample(@Param("record") ApiScenarioReportResult record, @Param("example") ApiScenarioReportResultExample example);
int updateByPrimaryKeySelective(ApiScenarioReportResult record); int updateByPrimaryKeySelective(ApiScenarioReportResultWithBLOBs record);
int updateByPrimaryKeyWithBLOBs(ApiScenarioReportResult record); int updateByPrimaryKeyWithBLOBs(ApiScenarioReportResultWithBLOBs record);
int updateByPrimaryKey(ApiScenarioReportResult record); int updateByPrimaryKey(ApiScenarioReportResult record);
} }

View File

@ -11,15 +11,10 @@
<result column="total_assertions" jdbcType="BIGINT" property="totalAssertions" /> <result column="total_assertions" jdbcType="BIGINT" property="totalAssertions" />
<result column="pass_assertions" jdbcType="BIGINT" property="passAssertions" /> <result column="pass_assertions" jdbcType="BIGINT" property="passAssertions" />
<result column="error_code" jdbcType="VARCHAR" property="errorCode" /> <result column="error_code" jdbcType="VARCHAR" property="errorCode" />
<result column="req_name" jdbcType="VARCHAR" property="reqName" />
<result column="req_success" jdbcType="BIT" property="reqSuccess" />
<result column="req_error" jdbcType="INTEGER" property="reqError" />
<result column="req_start_time" jdbcType="BIGINT" property="reqStartTime" />
<result column="rsp_code" jdbcType="VARCHAR" property="rspCode" />
<result column="rsp_time" jdbcType="BIGINT" property="rspTime" />
</resultMap> </resultMap>
<resultMap extends="BaseResultMap" id="ResultMapWithBLOBs" type="io.metersphere.base.domain.ApiScenarioReportResult"> <resultMap extends="BaseResultMap" id="ResultMapWithBLOBs" type="io.metersphere.base.domain.ApiScenarioReportResultWithBLOBs">
<result column="content" jdbcType="LONGVARBINARY" property="content" /> <result column="content" jdbcType="LONGVARBINARY" property="content" />
<result column="base_info" jdbcType="LONGVARCHAR" property="baseInfo" />
</resultMap> </resultMap>
<sql id="Example_Where_Clause"> <sql id="Example_Where_Clause">
<where> <where>
@ -81,11 +76,10 @@
</sql> </sql>
<sql id="Base_Column_List"> <sql id="Base_Column_List">
id, resource_id, report_id, create_time, `status`, request_time, total_assertions, id, resource_id, report_id, create_time, `status`, request_time, total_assertions,
pass_assertions, error_code, req_name, req_success, req_error, req_start_time, rsp_code, pass_assertions, error_code
rsp_time
</sql> </sql>
<sql id="Blob_Column_List"> <sql id="Blob_Column_List">
content content, base_info
</sql> </sql>
<select id="selectByExampleWithBLOBs" parameterType="io.metersphere.base.domain.ApiScenarioReportResultExample" resultMap="ResultMapWithBLOBs"> <select id="selectByExampleWithBLOBs" parameterType="io.metersphere.base.domain.ApiScenarioReportResultExample" resultMap="ResultMapWithBLOBs">
select select
@ -135,21 +129,17 @@
<include refid="Example_Where_Clause" /> <include refid="Example_Where_Clause" />
</if> </if>
</delete> </delete>
<insert id="insert" parameterType="io.metersphere.base.domain.ApiScenarioReportResult"> <insert id="insert" parameterType="io.metersphere.base.domain.ApiScenarioReportResultWithBLOBs">
insert into api_scenario_report_result (id, resource_id, report_id, insert into api_scenario_report_result (id, resource_id, report_id,
create_time, `status`, request_time, create_time, `status`, request_time,
total_assertions, pass_assertions, error_code, total_assertions, pass_assertions, error_code,
req_name, req_success, req_error, content, base_info)
req_start_time, rsp_code, rsp_time,
content)
values (#{id,jdbcType=VARCHAR}, #{resourceId,jdbcType=VARCHAR}, #{reportId,jdbcType=VARCHAR}, values (#{id,jdbcType=VARCHAR}, #{resourceId,jdbcType=VARCHAR}, #{reportId,jdbcType=VARCHAR},
#{createTime,jdbcType=BIGINT}, #{status,jdbcType=VARCHAR}, #{requestTime,jdbcType=BIGINT}, #{createTime,jdbcType=BIGINT}, #{status,jdbcType=VARCHAR}, #{requestTime,jdbcType=BIGINT},
#{totalAssertions,jdbcType=BIGINT}, #{passAssertions,jdbcType=BIGINT}, #{errorCode,jdbcType=VARCHAR}, #{totalAssertions,jdbcType=BIGINT}, #{passAssertions,jdbcType=BIGINT}, #{errorCode,jdbcType=VARCHAR},
#{reqName,jdbcType=VARCHAR}, #{reqSuccess,jdbcType=BIT}, #{reqError,jdbcType=INTEGER}, #{content,jdbcType=LONGVARBINARY}, #{baseInfo,jdbcType=LONGVARCHAR})
#{reqStartTime,jdbcType=BIGINT}, #{rspCode,jdbcType=VARCHAR}, #{rspTime,jdbcType=BIGINT},
#{content,jdbcType=LONGVARBINARY})
</insert> </insert>
<insert id="insertSelective" parameterType="io.metersphere.base.domain.ApiScenarioReportResult"> <insert id="insertSelective" parameterType="io.metersphere.base.domain.ApiScenarioReportResultWithBLOBs">
insert into api_scenario_report_result insert into api_scenario_report_result
<trim prefix="(" suffix=")" suffixOverrides=","> <trim prefix="(" suffix=")" suffixOverrides=",">
<if test="id != null"> <if test="id != null">
@ -179,27 +169,12 @@
<if test="errorCode != null"> <if test="errorCode != null">
error_code, error_code,
</if> </if>
<if test="reqName != null">
req_name,
</if>
<if test="reqSuccess != null">
req_success,
</if>
<if test="reqError != null">
req_error,
</if>
<if test="reqStartTime != null">
req_start_time,
</if>
<if test="rspCode != null">
rsp_code,
</if>
<if test="rspTime != null">
rsp_time,
</if>
<if test="content != null"> <if test="content != null">
content, content,
</if> </if>
<if test="baseInfo != null">
base_info,
</if>
</trim> </trim>
<trim prefix="values (" suffix=")" suffixOverrides=","> <trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="id != null"> <if test="id != null">
@ -229,27 +204,12 @@
<if test="errorCode != null"> <if test="errorCode != null">
#{errorCode,jdbcType=VARCHAR}, #{errorCode,jdbcType=VARCHAR},
</if> </if>
<if test="reqName != null">
#{reqName,jdbcType=VARCHAR},
</if>
<if test="reqSuccess != null">
#{reqSuccess,jdbcType=BIT},
</if>
<if test="reqError != null">
#{reqError,jdbcType=INTEGER},
</if>
<if test="reqStartTime != null">
#{reqStartTime,jdbcType=BIGINT},
</if>
<if test="rspCode != null">
#{rspCode,jdbcType=VARCHAR},
</if>
<if test="rspTime != null">
#{rspTime,jdbcType=BIGINT},
</if>
<if test="content != null"> <if test="content != null">
#{content,jdbcType=LONGVARBINARY}, #{content,jdbcType=LONGVARBINARY},
</if> </if>
<if test="baseInfo != null">
#{baseInfo,jdbcType=LONGVARCHAR},
</if>
</trim> </trim>
</insert> </insert>
<select id="countByExample" parameterType="io.metersphere.base.domain.ApiScenarioReportResultExample" resultType="java.lang.Long"> <select id="countByExample" parameterType="io.metersphere.base.domain.ApiScenarioReportResultExample" resultType="java.lang.Long">
@ -288,27 +248,12 @@
<if test="record.errorCode != null"> <if test="record.errorCode != null">
error_code = #{record.errorCode,jdbcType=VARCHAR}, error_code = #{record.errorCode,jdbcType=VARCHAR},
</if> </if>
<if test="record.reqName != null">
req_name = #{record.reqName,jdbcType=VARCHAR},
</if>
<if test="record.reqSuccess != null">
req_success = #{record.reqSuccess,jdbcType=BIT},
</if>
<if test="record.reqError != null">
req_error = #{record.reqError,jdbcType=INTEGER},
</if>
<if test="record.reqStartTime != null">
req_start_time = #{record.reqStartTime,jdbcType=BIGINT},
</if>
<if test="record.rspCode != null">
rsp_code = #{record.rspCode,jdbcType=VARCHAR},
</if>
<if test="record.rspTime != null">
rsp_time = #{record.rspTime,jdbcType=BIGINT},
</if>
<if test="record.content != null"> <if test="record.content != null">
content = #{record.content,jdbcType=LONGVARBINARY}, content = #{record.content,jdbcType=LONGVARBINARY},
</if> </if>
<if test="record.baseInfo != null">
base_info = #{record.baseInfo,jdbcType=LONGVARCHAR},
</if>
</set> </set>
<if test="_parameter != null"> <if test="_parameter != null">
<include refid="Update_By_Example_Where_Clause" /> <include refid="Update_By_Example_Where_Clause" />
@ -325,13 +270,8 @@
total_assertions = #{record.totalAssertions,jdbcType=BIGINT}, total_assertions = #{record.totalAssertions,jdbcType=BIGINT},
pass_assertions = #{record.passAssertions,jdbcType=BIGINT}, pass_assertions = #{record.passAssertions,jdbcType=BIGINT},
error_code = #{record.errorCode,jdbcType=VARCHAR}, error_code = #{record.errorCode,jdbcType=VARCHAR},
req_name = #{record.reqName,jdbcType=VARCHAR}, content = #{record.content,jdbcType=LONGVARBINARY},
req_success = #{record.reqSuccess,jdbcType=BIT}, base_info = #{record.baseInfo,jdbcType=LONGVARCHAR}
req_error = #{record.reqError,jdbcType=INTEGER},
req_start_time = #{record.reqStartTime,jdbcType=BIGINT},
rsp_code = #{record.rspCode,jdbcType=VARCHAR},
rsp_time = #{record.rspTime,jdbcType=BIGINT},
content = #{record.content,jdbcType=LONGVARBINARY}
<if test="_parameter != null"> <if test="_parameter != null">
<include refid="Update_By_Example_Where_Clause" /> <include refid="Update_By_Example_Where_Clause" />
</if> </if>
@ -346,18 +286,12 @@
request_time = #{record.requestTime,jdbcType=BIGINT}, request_time = #{record.requestTime,jdbcType=BIGINT},
total_assertions = #{record.totalAssertions,jdbcType=BIGINT}, total_assertions = #{record.totalAssertions,jdbcType=BIGINT},
pass_assertions = #{record.passAssertions,jdbcType=BIGINT}, pass_assertions = #{record.passAssertions,jdbcType=BIGINT},
error_code = #{record.errorCode,jdbcType=VARCHAR}, error_code = #{record.errorCode,jdbcType=VARCHAR}
req_name = #{record.reqName,jdbcType=VARCHAR},
req_success = #{record.reqSuccess,jdbcType=BIT},
req_error = #{record.reqError,jdbcType=INTEGER},
req_start_time = #{record.reqStartTime,jdbcType=BIGINT},
rsp_code = #{record.rspCode,jdbcType=VARCHAR},
rsp_time = #{record.rspTime,jdbcType=BIGINT}
<if test="_parameter != null"> <if test="_parameter != null">
<include refid="Update_By_Example_Where_Clause" /> <include refid="Update_By_Example_Where_Clause" />
</if> </if>
</update> </update>
<update id="updateByPrimaryKeySelective" parameterType="io.metersphere.base.domain.ApiScenarioReportResult"> <update id="updateByPrimaryKeySelective" parameterType="io.metersphere.base.domain.ApiScenarioReportResultWithBLOBs">
update api_scenario_report_result update api_scenario_report_result
<set> <set>
<if test="resourceId != null"> <if test="resourceId != null">
@ -384,31 +318,16 @@
<if test="errorCode != null"> <if test="errorCode != null">
error_code = #{errorCode,jdbcType=VARCHAR}, error_code = #{errorCode,jdbcType=VARCHAR},
</if> </if>
<if test="reqName != null">
req_name = #{reqName,jdbcType=VARCHAR},
</if>
<if test="reqSuccess != null">
req_success = #{reqSuccess,jdbcType=BIT},
</if>
<if test="reqError != null">
req_error = #{reqError,jdbcType=INTEGER},
</if>
<if test="reqStartTime != null">
req_start_time = #{reqStartTime,jdbcType=BIGINT},
</if>
<if test="rspCode != null">
rsp_code = #{rspCode,jdbcType=VARCHAR},
</if>
<if test="rspTime != null">
rsp_time = #{rspTime,jdbcType=BIGINT},
</if>
<if test="content != null"> <if test="content != null">
content = #{content,jdbcType=LONGVARBINARY}, content = #{content,jdbcType=LONGVARBINARY},
</if> </if>
<if test="baseInfo != null">
base_info = #{baseInfo,jdbcType=LONGVARCHAR},
</if>
</set> </set>
where id = #{id,jdbcType=VARCHAR} where id = #{id,jdbcType=VARCHAR}
</update> </update>
<update id="updateByPrimaryKeyWithBLOBs" parameterType="io.metersphere.base.domain.ApiScenarioReportResult"> <update id="updateByPrimaryKeyWithBLOBs" parameterType="io.metersphere.base.domain.ApiScenarioReportResultWithBLOBs">
update api_scenario_report_result update api_scenario_report_result
set resource_id = #{resourceId,jdbcType=VARCHAR}, set resource_id = #{resourceId,jdbcType=VARCHAR},
report_id = #{reportId,jdbcType=VARCHAR}, report_id = #{reportId,jdbcType=VARCHAR},
@ -418,13 +337,8 @@
total_assertions = #{totalAssertions,jdbcType=BIGINT}, total_assertions = #{totalAssertions,jdbcType=BIGINT},
pass_assertions = #{passAssertions,jdbcType=BIGINT}, pass_assertions = #{passAssertions,jdbcType=BIGINT},
error_code = #{errorCode,jdbcType=VARCHAR}, error_code = #{errorCode,jdbcType=VARCHAR},
req_name = #{reqName,jdbcType=VARCHAR}, content = #{content,jdbcType=LONGVARBINARY},
req_success = #{reqSuccess,jdbcType=BIT}, base_info = #{baseInfo,jdbcType=LONGVARCHAR}
req_error = #{reqError,jdbcType=INTEGER},
req_start_time = #{reqStartTime,jdbcType=BIGINT},
rsp_code = #{rspCode,jdbcType=VARCHAR},
rsp_time = #{rspTime,jdbcType=BIGINT},
content = #{content,jdbcType=LONGVARBINARY}
where id = #{id,jdbcType=VARCHAR} where id = #{id,jdbcType=VARCHAR}
</update> </update>
<update id="updateByPrimaryKey" parameterType="io.metersphere.base.domain.ApiScenarioReportResult"> <update id="updateByPrimaryKey" parameterType="io.metersphere.base.domain.ApiScenarioReportResult">
@ -436,13 +350,7 @@
request_time = #{requestTime,jdbcType=BIGINT}, request_time = #{requestTime,jdbcType=BIGINT},
total_assertions = #{totalAssertions,jdbcType=BIGINT}, total_assertions = #{totalAssertions,jdbcType=BIGINT},
pass_assertions = #{passAssertions,jdbcType=BIGINT}, pass_assertions = #{passAssertions,jdbcType=BIGINT},
error_code = #{errorCode,jdbcType=VARCHAR}, error_code = #{errorCode,jdbcType=VARCHAR}
req_name = #{reqName,jdbcType=VARCHAR},
req_success = #{reqSuccess,jdbcType=BIT},
req_error = #{reqError,jdbcType=INTEGER},
req_start_time = #{reqStartTime,jdbcType=BIGINT},
rsp_code = #{rspCode,jdbcType=VARCHAR},
rsp_time = #{rspTime,jdbcType=BIGINT}
where id = #{id,jdbcType=VARCHAR} where id = #{id,jdbcType=VARCHAR}
</update> </update>
</mapper> </mapper>

View File

@ -1,9 +1,9 @@
package io.metersphere.base.mapper.ext; package io.metersphere.base.mapper.ext;
import io.metersphere.base.domain.ApiScenarioReportResult; import io.metersphere.base.domain.ApiScenarioReportResultWithBLOBs;
import java.util.List; import java.util.List;
public interface ExtApiScenarioReportResultMapper { public interface ExtApiScenarioReportResultMapper {
List<ApiScenarioReportResult> selectBaseInfoResultByReportId(String reportId); List<ApiScenarioReportResultWithBLOBs> selectBaseInfoResultByReportId(String reportId);
} }

View File

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="io.metersphere.base.mapper.ext.ExtApiScenarioReportResultMapper"> <mapper namespace="io.metersphere.base.mapper.ext.ExtApiScenarioReportResultMapper">
<select id="selectBaseInfoResultByReportId" resultType="io.metersphere.base.domain.ApiScenarioReportResult"> <select id="selectBaseInfoResultByReportId" resultType="io.metersphere.base.domain.ApiScenarioReportResultWithBLOBs">
SELECT id, SELECT id,
resource_id, resource_id,
report_id, report_id,
@ -11,12 +11,7 @@
total_assertions, total_assertions,
pass_assertions, pass_assertions,
error_code, error_code,
req_name, base_info
req_success,
req_error,
req_start_time,
rsp_code,
rsp_time
FROM api_scenario_report_result FROM api_scenario_report_result
WHERE report_id = #{0} WHERE report_id = #{0}
</select> </select>

View File

@ -179,11 +179,4 @@ CREATE TABLE IF NOT EXISTS `test_plan_execution_queue`
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_general_ci; ) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_general_ci;
-- 场景步骤结果增加简要信息 -- 场景步骤结果增加简要信息
ALTER TABLE api_scenario_report_result ADD ( ALTER TABLE api_scenario_report_result ADD `base_info` LONGTEXT NULL;
`req_name` VARCHAR(255) NULL,
`req_success` tinyint(1) NULL DEFAULT 0,
`req_error` int(11) NULL DEFAULT 0,
`req_start_time` bigint(13) NULL DEFAULT NULL,
`rsp_code` VARCHAR(255) NULL,
`rsp_time` bigint(13) NULL DEFAULT NULL
);