提交 25839107 authored 作者: mry's avatar mry

feat(web): swagger解析,以及数据导入(不包括用例导入)

上级 cc739885
......@@ -70,7 +70,7 @@ public class ReporterData {
// Map<Long, List<TestDataExecuteResult>> longListMap = ReporterUtils.userResultMap.get(1L);
// Set<Long> longs = longListMap.keySet();
// for (Long caseId : longs) {
// TestCase testCase = java.util.Optional.of(testCaseService.getById(caseId))
// Case testCase = java.util.Optional.of(testCaseService.getById(caseId))
// .orElseThrow(() -> new GlobalException(String.format("没有找到id = %d 的TestCase", caseId)));
// testDataExecuteResults = ReporterUtils.resultMap.get(caseId);
// for (TestDataExecuteResult testDataExecuteResult : testDataExecuteResults) {
......
package org.matrix.entity;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import org.matrix.entity.BaseEntity;
/**
* <p>
* 测试用例表,测试的平台的主体数据
* </p>
*
* @author mry
* @since 2022-07-18
*/
@Data
@EqualsAndHashCode(callSuper = true)
@AllArgsConstructor
@NoArgsConstructor
@TableName(value = "test_case")
@ApiModel(value = "TestCase对象", description = "测试用例")
public class Case extends BaseEntity {
/**
* 名称
*/
@TableField(fill = FieldFill.UPDATE)
@ApiModelProperty("名称")
private String name;
/**
* 接口文档id
*/
@TableField(fill = FieldFill.UPDATE)
@ApiModelProperty("接口文档id")
private Long docId;
/**
* 参数详情(包括参数值)
*/
@TableField(fill = FieldFill.UPDATE)
@ApiModelProperty("参数详情(包括参数值)")
private String parameters;
/**
* 前置动作id
*/
@TableField(fill = FieldFill.UPDATE)
@ApiModelProperty("前置动作id")
private Long moveBefore;
/**
* 后置动作id
*/
@TableField(fill = FieldFill.UPDATE)
@ApiModelProperty("后置动作id")
private Long moveAfter;
/**
* 项目id
*/
@TableField(fill = FieldFill.UPDATE)
@ApiModelProperty("项目id")
private Long projectId;
/**
* 环境id
*/
@TableField(fill = FieldFill.UPDATE)
@ApiModelProperty("环境id")
private Long envId;
}
package org.matrix.entity;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import org.matrix.enums.SyncStatus;
/**
* <p>
*
* </p>
*
* @author mry
* @since 2022-07-18
*/
@Data
@EqualsAndHashCode(callSuper = true)
@AllArgsConstructor
@NoArgsConstructor
@TableName(value = "kt_interface_doc")
@ApiModel(value = "InterfaceDoc对象", description = "接口文档")
public class InterfaceDoc extends BaseEntity {
/**
* 名称
*/
@TableField(fill = FieldFill.UPDATE)
@ApiModelProperty("名称")
private String summary;
/**
* 说明
*/
@TableField(fill = FieldFill.UPDATE)
@ApiModelProperty("说明")
private String des;
/**
* 请求方式
*/
@TableField(fill = FieldFill.UPDATE)
@ApiModelProperty("请求方式")
private String httpMethod;
/**
* 接口相对路径
*/
@TableField(fill = FieldFill.UPDATE)
@ApiModelProperty("接口相对路径")
private String pathUrl;
/**
* 参数详情(整段json)
*/
@TableField(fill = FieldFill.UPDATE)
@ApiModelProperty("参数详情(整段json)")
private String parameters;
/**
* 返回值信息(整段json)
*/
@TableField(fill = FieldFill.UPDATE)
@ApiModelProperty("返回值信息(整段json)")
private String responses;
/**
* 项目id
*/
@TableField(fill = FieldFill.UPDATE)
@ApiModelProperty("项目id")
private Long projectId;
/**
* 环境id
*/
@TableField(fill = FieldFill.UPDATE)
@ApiModelProperty("环境id")
private Long envId;
/**
* 分组id
*/
@TableField(fill = FieldFill.UPDATE)
@ApiModelProperty("分组id")
private Long interfaceGroupId;
/**
* 同步状态
*/
@TableField(fill = FieldFill.UPDATE)
@ApiModelProperty("同步状态")
private SyncStatus status;
/**
* 开发状态
*/
@TableField(fill = FieldFill.UPDATE)
@ApiModelProperty("开发状态")
private String devStatus;
/**
* 负责人
*/
@TableField(fill = FieldFill.UPDATE)
@ApiModelProperty("负责人")
private String dutyPeople;
}
package org.matrix.entity;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
/**
* <p>
*
* </p>
*
* @author mry
* @since 2022-07-18
*/
@Data
@EqualsAndHashCode(callSuper = true)
@AllArgsConstructor
@NoArgsConstructor
@TableName(value = "kt_interface_grouping")
@ApiModel(value = "InterfaceGrouping对象", description = "接口分组")
public class InterfaceGrouping extends BaseEntity {
/**
* 名称(标签/分组(存在根目录))
*/
@TableField(fill = FieldFill.UPDATE)
@ApiModelProperty("名称(标签/分组(存在根目录))")
private String tag;
/**
* 说明
*/
@TableField(fill = FieldFill.UPDATE)
@ApiModelProperty("说明")
private String des;
/**
* 环境id
*/
@TableField(fill = FieldFill.UPDATE)
@ApiModelProperty("环境id")
private Long envId;
/**
* 项目id
*/
@TableField(fill = FieldFill.UPDATE)
@ApiModelProperty("项目id")
private Long projectId;
/**
* 前置操作id
*/
@TableField(fill = FieldFill.UPDATE)
@ApiModelProperty("前置操作id")
private Long moveBefore;
/**
* 后置操作id
*/
@TableField(fill = FieldFill.UPDATE)
@ApiModelProperty("后置操作id")
private Long moveAfter;
/**
* 父类id(根目录默认为0)
*/
@TableField(fill = FieldFill.UPDATE)
@ApiModelProperty("父类id(根目录默认为0)")
private Long interfaceGroupingId;
}
package org.matrix.entity;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import org.matrix.enums.SyncStatus;
/**
* <p>
*
* </p>
*
* @author mry
* @since 2022-07-18
*/
@Data
@EqualsAndHashCode(callSuper = true)
@AllArgsConstructor
@NoArgsConstructor
@TableName(value = "kt_mould_doc")
@ApiModel(value = "MouldDoc对象", description = "模型文档")
public class MouldDoc extends BaseEntity {
/**
* 项目id
*/
@ApiModelProperty("项目id")
private Long projectId;
/**
* 名称
*/
@TableField(fill = FieldFill.UPDATE)
@ApiModelProperty("名称")
private String objName;
/**
* 分组id
*/
@TableField(fill = FieldFill.UPDATE)
@ApiModelProperty("分组id")
private Long mouldGroupingId;
/**
* 备注
*/
@TableField(fill = FieldFill.UPDATE)
@ApiModelProperty("备注")
private String remarks;
/**
* 属性
*/
@TableField(fill = FieldFill.UPDATE)
@ApiModelProperty("属性")
private String attributeOutVo;
/**
* 同步状态
*/
@TableField(fill = FieldFill.UPDATE)
@ApiModelProperty("同步状态")
private SyncStatus status;
}
package org.matrix.entity;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
/**
* <p>
*
* </p>
*
* @author mry
* @since 2022-07-18
*/
@Data
@EqualsAndHashCode(callSuper = true)
@AllArgsConstructor
@NoArgsConstructor
@TableName(value = "kt_mould_grouping")
@ApiModel(value = "MouldGrouping对象", description = "模型分组")
public class MouldGrouping extends BaseEntity {
/**
* 项目id
*/
@ApiModelProperty("项目id")
private Long projectId;
/**
* 名称
*/
@TableField(fill = FieldFill.UPDATE)
@ApiModelProperty("名称")
private String name;
/**
* 父类id(默认为0)
*/
@TableField(fill = FieldFill.UPDATE)
@ApiModelProperty("父类id(默认为0)")
private Long mouldId;
}
package org.matrix.enums;
import com.baomidou.mybatisplus.annotation.EnumValue;
import com.fasterxml.jackson.annotation.JsonValue;
import lombok.AllArgsConstructor;
import lombok.Getter;
/**
* swagger导入数据类型
*
* @author mruny
* @create 2022/7/19 16:03:33
*/
@AllArgsConstructor
@Getter
public enum SwaggerDataType {
/**
* 接口/文档
*/
INTERFACE_DOC(0, "接口/文档"),
/**
* 数据模型
*/
MOULD_DOC(1, "数据模型"),
/**
* 环境
*/
ENV(2,"环境"),
/**
* 测试用例
*/
TEST_CAST(3,"测试用例"),
/**
* 测试套件
*/
TEST_SUITE(4,"测试套件");
@EnumValue
@JsonValue
private final int code;
/**
* 描述
*/
private final String des;
}
package org.matrix.enums;
import com.baomidou.mybatisplus.annotation.EnumValue;
import com.fasterxml.jackson.annotation.JsonValue;
import lombok.AllArgsConstructor;
import lombok.Getter;
/**
* 同步状态
*
* @author mruny
* @create 2022/7/20 17:12:20
*/
@AllArgsConstructor
@Getter
public enum SyncStatus {
/**
* 覆盖
*/
UPDATE(0, "更新"),
/**
* 新增
*/
INSERT(1, "新增"),
/**
* 复制
*/
COPY(2, "同时存在"),
/**
* 未同步
*/
NO(3, "未同步"),
/**
* 上次忽略的
*/
IGNORE(4,"上次忽略的"),
/**
* 上次导入不存在
*/
OTHER(4, "上次导入不存在");
@EnumValue
@JsonValue
private final int code;
/**
* 描述
*/
private final String des;
}
package org.matrix.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.matrix.entity.Case;
import org.springframework.stereotype.Repository;
/**
* @author mruny
* @create 2022/7/18 11:25:28
*/
@Repository
public interface CaseMapper extends BaseMapper<Case> {
}
package org.matrix.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.matrix.entity.InterfaceDoc;
import org.springframework.stereotype.Repository;
/**
* @author mruny
* @create 2022/7/18 11:23:41
*/
@Repository
public interface InterfaceDocMapper extends BaseMapper<InterfaceDoc> {
}
package org.matrix.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.matrix.entity.InterfaceGrouping;
import org.springframework.stereotype.Repository;
/**
* @author mruny
* @create 2022/7/18 11:24:25
*/
@Repository
public interface InterfaceGroupingMapper extends BaseMapper<InterfaceGrouping> {
}
package org.matrix.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.matrix.entity.MouldDoc;
import org.springframework.stereotype.Repository;
/**
* @author mruny
* @create 2022/7/18 11:24:50
*/
@Repository
public interface MouldDocMapper extends BaseMapper<MouldDoc> {
}
package org.matrix.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.matrix.entity.MouldGrouping;
import org.springframework.stereotype.Repository;
/**
* @author mruny
* @create 2022/7/18 11:25:10
*/
@Repository
public interface MouldGroupingMapper extends BaseMapper<MouldGrouping> {
}
package org.matrix.service;
import com.baomidou.mybatisplus.extension.service.IService;
import org.matrix.entity.Case;
/**
* @author mruny
* @create 2022/7/18 11:28:08
*/
public interface ICaseService extends IService<Case> {
}
......@@ -3,6 +3,7 @@ package org.matrix.service;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.extension.service.IService;
import org.matrix.entity.Environment;
import org.matrix.vo.StatusCode;
/**
* <p>
......@@ -20,4 +21,12 @@ public interface IEnvironmentService extends IService<Environment> {
* @param wrappers
*/
Boolean setIsDefaultByWrapper(Boolean isDefault, Wrapper wrappers);
/**
* swagger导入环境
*
* @param environment 环境对象
* @return 导入结果
*/
StatusCode importEnv(Environment environment);
}
package org.matrix.service;
import com.baomidou.mybatisplus.extension.service.IService;
import org.matrix.entity.InterfaceDoc;
import org.matrix.vo.InterfaceVo;
import org.matrix.vo.StatusCode;
import java.util.List;
/**
* @author mruny
* @create 2022/7/18 11:26:10
*/
public interface IInterfaceDocService extends IService<InterfaceDoc> {
/**
* 导入接口文档
*
* @param interfaceVos 接口文档VO类
* @param projectId 项目id
* @param envId 环境id
* @param pattern 导入方式(1:同url覆盖,2:同url同组覆盖,3:同url不同步,4:同url同组不同步,5:同时保留)
* @param interfaceId 上级分组
* @param bool 是否导入测试用例
* @return 导入结果
*/
StatusCode importInterfaceDoc(List<InterfaceVo> interfaceVos, Long projectId, Long envId, int pattern, Long interfaceId, boolean bool);
}
package org.matrix.service;
import com.baomidou.mybatisplus.extension.service.IService;
import org.matrix.entity.InterfaceGrouping;
/**
* @author mruny
* @create 2022/7/18 11:26:46
*/
public interface IInterfaceGroupingService extends IService<InterfaceGrouping> {
/**
* 删除分组,以及分组下的所有
*
* @param id 接口分组主键id
*/
void removeInterfaceGrouping(Long id);
}
package org.matrix.service;
import com.baomidou.mybatisplus.extension.service.IService;
import org.matrix.entity.MouldDoc;
import org.matrix.vo.StatusCode;
import java.util.List;
/**
* @author mruny
* @create 2022/7/18 11:27:17
*/
public interface IMouldDocService extends IService<MouldDoc> {
/**
* 导入数据模型文档
*
* @param mouldDocs 数据模型文档对象集合
* @param projectId 项目id
* @param pattern 导入方式(1:同名覆盖,2:同名同组覆盖,3:同名不同步,4:同名同组不同步,5:同时保留)
* @param mouldId 上级分组
* @return 导入结果
*/
StatusCode importMouldDoc(List<MouldDoc> mouldDocs, Long projectId, int pattern, Long mouldId);
}
package org.matrix.service;
import com.baomidou.mybatisplus.extension.service.IService;
import org.matrix.entity.MouldGrouping;
/**
* @author mruny
* @create 2022/7/18 11:27:36
*/
public interface IMouldGroupingService extends IService<MouldGrouping> {
/**
* 删除分组,以及分组下的所有
*
* @param id 数据模型分组主键id
*/
void removeMould(Long id);
}
package org.matrix.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.matrix.entity.Case;
import org.matrix.mapper.CaseMapper;
import org.matrix.service.ICaseService;
import org.springframework.stereotype.Service;
/**
* @author mruny
* @create 2022/7/18 11:29:39
*/
@Service
public class CaseServiceImpl extends ServiceImpl<CaseMapper, Case> implements ICaseService {
}
......@@ -3,8 +3,12 @@ package org.matrix.service.impl;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.matrix.entity.Environment;
import org.matrix.enums.SwaggerDataType;
import org.matrix.exception.GlobalException;
import org.matrix.mapper.EnvironmentMapper;
import org.matrix.service.IEnvironmentService;
import org.matrix.vo.StatusCode;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.Optional;
......@@ -20,11 +24,32 @@ import java.util.Optional;
@Service
public class EnvironmentServiceImpl extends ServiceImpl<EnvironmentMapper, Environment> implements IEnvironmentService {
@Autowired
private EnvironmentMapper environmentMapper;
@Override
public Boolean setIsDefaultByWrapper(Boolean isDefault, Wrapper wrappers) {
Environment environment = new Environment();
environment.setIsDefault(isDefault);
return Optional.of(this
.update(environment,wrappers)).get();
.update(environment, wrappers)).get();
}
@Override
public StatusCode importEnv(Environment environment) {
int saveNum = 0;
int updateNum = 0;
int ignoreNum = 0;
StatusCode statusCode = new StatusCode();
statusCode.setSwaggerDataType(SwaggerDataType.ENV);
if (environment != null && environment.getIp() != null) {
Integer integer = Optional.of(environmentMapper.insert(environment)).orElseThrow(() -> new GlobalException("添加失败"));
saveNum = saveNum + integer;
}
statusCode.setSaveNum(saveNum);
statusCode.setSaveNum(saveNum);
statusCode.setUpdateNum(updateNum);
statusCode.setIgnoreNum(ignoreNum);
return statusCode;
}
}
package org.matrix.service.impl;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.matrix.entity.InterfaceDoc;
import org.matrix.entity.InterfaceGrouping;
import org.matrix.mapper.InterfaceDocMapper;
import org.matrix.mapper.InterfaceGroupingMapper;
import org.matrix.service.IInterfaceGroupingService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.List;
import java.util.Optional;
/**
* @author mruny
* @create 2022/7/18 11:29:05
*/
@Service
public class InterfaceGroupingServiceImpl extends ServiceImpl<InterfaceGroupingMapper, InterfaceGrouping> implements IInterfaceGroupingService {
@Autowired
private InterfaceGroupingMapper interfaceGroupingMapper;
@Autowired
private InterfaceDocMapper interfaceDocMapper;
@Override
public void removeInterfaceGrouping(Long id) {
//删除当前分组下的接口文档
List<InterfaceDoc> interfaceDocs = Optional.ofNullable(interfaceDocMapper.selectList(Wrappers.lambdaQuery(InterfaceDoc.class)
.eq(InterfaceDoc::getInterfaceGroupId, id))).orElse(new ArrayList<>());
if (interfaceDocs.size() != 0) {
interfaceDocMapper.deleteBatchIds(interfaceDocs);
}
recursionInterface(id);
//最后删除当前分组
interfaceGroupingMapper.deleteById(id);
}
/**
* 递归处理当前分组下的分组
*
* @param id 当前分组id
*/
public void recursionInterface(Long id) {
//找到当前分组下的子分组
List<InterfaceGrouping> interfaceGroupings = Optional.ofNullable(interfaceGroupingMapper.selectList(Wrappers.lambdaQuery(InterfaceGrouping.class)
.eq(InterfaceGrouping::getInterfaceGroupingId, id))).orElse(new ArrayList<>());
//是否存在子分组,如果不存在就不做任何操作,如果存在进入下一层
if (interfaceGroupings.size() != 0) {
//找到当前分组下的每个子类分组
for (InterfaceGrouping interfaceGrouping : interfaceGroupings) {
//删除子类分组中的数据模型
Long groupingId = interfaceGrouping.getId();
List<InterfaceGrouping> recursionsInterfaces = Optional.ofNullable(interfaceGroupingMapper.selectList(Wrappers.lambdaQuery(InterfaceGrouping.class)
.eq(InterfaceGrouping::getInterfaceGroupingId, groupingId))).orElse(new ArrayList<>());
if (recursionsInterfaces.size() != 0) {
interfaceDocMapper.deleteBatchIds(recursionsInterfaces);
}
recursionInterface(groupingId);
//删除当前分组下的接口
List<InterfaceDoc> interfaceDocs = Optional.ofNullable(interfaceDocMapper.selectList(Wrappers.lambdaQuery(InterfaceDoc.class)
.eq(InterfaceDoc::getInterfaceGroupId, groupingId))).orElse(new ArrayList<>());
if (interfaceDocs.size() != 0) {
interfaceDocMapper.deleteBatchIds(interfaceDocs);
}
}
}
}
}
package org.matrix.service.impl;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.matrix.entity.MouldDoc;
import org.matrix.entity.MouldGrouping;
import org.matrix.mapper.MouldDocMapper;
import org.matrix.mapper.MouldGroupingMapper;
import org.matrix.service.IMouldGroupingService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.List;
import java.util.Optional;
/**
* @author mruny
* @create 2022/7/18 11:29:29
*/
@Service
public class MouldGroupingServiceImpl extends ServiceImpl<MouldGroupingMapper, MouldGrouping> implements IMouldGroupingService {
@Autowired
private MouldGroupingMapper mouldGroupingMapper;
@Autowired
private MouldDocMapper mouldDocMapper;
@Override
public void removeMould(Long id) {
//删除当前分组下的数据模型
List<MouldDoc> mouldDocs = Optional.ofNullable(mouldDocMapper.selectList(Wrappers.lambdaQuery(MouldDoc.class)
.eq(MouldDoc::getMouldGroupingId, id))).orElse(new ArrayList<>());
if (mouldDocs.size() != 0) {
mouldDocMapper.deleteBatchIds(mouldDocs);
}
recursionMould(id);
//最后删除当前分组
mouldGroupingMapper.deleteById(id);
}
/**
* 递归处理当前分组下的分组
*
* @param id 当前分组id
*/
public void recursionMould(Long id) {
//找到当前分组下的子分组
List<MouldGrouping> mouldGroupings = Optional.ofNullable(mouldGroupingMapper.selectList(Wrappers.lambdaQuery(MouldGrouping.class)
.eq(MouldGrouping::getMouldId, id))).orElse(new ArrayList<>());
//是否存在子分组,如果不存在就不做任何操作,如果存在进入下一层
if (mouldGroupings.size() != 0) {
//找到当前分组下的每个子类分组
for (MouldGrouping mouldGrouping : mouldGroupings) {
//删除子类分组中的数据模型
Long groupingId = mouldGrouping.getId();
List<MouldGrouping> recursionsMoulds = Optional.ofNullable(mouldGroupingMapper.selectList(Wrappers.lambdaQuery(MouldGrouping.class)
.eq(MouldGrouping::getMouldId, groupingId))).orElse(new ArrayList<>());
if (recursionsMoulds.size() != 0) {
mouldDocMapper.deleteBatchIds(recursionsMoulds);
}
recursionMould(groupingId);
//删除当前分组下的接口
List<MouldDoc> mouldDocs = Optional.ofNullable(mouldDocMapper.selectList(Wrappers.lambdaQuery(MouldDoc.class)
.eq(MouldDoc::getMouldGroupingId, groupingId))).orElse(new ArrayList<>());
if (mouldDocs.size() != 0) {
mouldDocMapper.deleteBatchIds(mouldDocs);
}
}
}
}
}
package org.matrix.vo;
/**
* 接口导入方式
*
* @author mruny
* @create 2022/7/27 13:19:17
*/
public class ImportInterfaceDoc {
/**
* 1. 同url覆盖
*/
public static final int URL_OVERWRITE = 1;
/**
* 2. 同url同组覆盖
*/
public static final int URL_GROUPING_OVERWRITE = 2;
/**
* 3. 同url不覆盖
*/
public static final int NOT_URL_OVERWRITE = 3;
/**
* 4. 同rul同组不覆盖
*/
public static final int NOT_URL_GROUPING_OVERWRITE = 4;
/**
* 5. 同时存在
*/
public static final int COEXIST = 5;
}
package org.matrix.vo;
/**
* 数据模型导入方式
*
* @author mruny
* @create 2022/7/19 14:23:03
*/
public class ImportMouldDoc {
/**
* 1. 同名覆盖
*/
public static final int NAME_OVERWRITE = 1;
/**
* 2. 同名同组覆盖
*/
public static final int NAME_GROUPING_OVERWRITE = 2;
/**
* 3. 同名不覆盖
*/
public static final int NOT_NAME_OVERWRITE = 3;
/**
* 4. 同名同组不覆盖
*/
public static final int NOT_NAME_GROUPING_OVERWRITE = 4;
/**
* 5. 同时存在
*/
public static final int COEXIST = 5;
}
package org.matrix.vo;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import org.matrix.entity.InterfaceDoc;
import org.springframework.beans.BeanUtils;
/**
* @author mruny
* @create 2022/7/18 15:53:34
*/
@Data
@EqualsAndHashCode(callSuper = true)
@AllArgsConstructor
@NoArgsConstructor
public class InterfaceVo extends InterfaceDoc {
private String tag;
public InterfaceDoc toInterfaceDoc() {
InterfaceDoc interfaceDoc = new InterfaceDoc();
BeanUtils.copyProperties(this, interfaceDoc);
return interfaceDoc;
}
}
package org.matrix.vo;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.matrix.enums.SwaggerDataType;
/**
* 导入状态
*
* @author mruny
* @create 2022/7/19 16:02:06
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
public class StatusCode {
/**
* swagger导入数据类型
*/
private SwaggerDataType swaggerDataType;
/**
* 新增数量
*/
private Integer saveNum;
/**
* 修改数量
*/
private Integer updateNum;
/**
* 忽略数量
*/
private Integer ignoreNum;
}
......@@ -26,10 +26,10 @@ public class AttributeInVo {
@ApiModelProperty("描述")
private String description;
@ApiModelProperty("格式,可能为null")
@ApiModelProperty("格式")
private String format;
@ApiModelProperty("枚举,可能为null")
@ApiModelProperty("枚举")
private List<String> enumType;
@ApiModelProperty("map类型出现的情况")
......
......@@ -18,6 +18,9 @@ import lombok.NoArgsConstructor;
@ApiModel("DefinitionsVo对象,以及对象中的属性及具体信息")
public class DefinitionsVo {
@ApiModelProperty("id")
private Long identifierId;
@ApiModelProperty("对象名称")
private String objName;
......
......@@ -16,7 +16,7 @@ import lombok.NoArgsConstructor;
@AllArgsConstructor
@NoArgsConstructor
@ApiModel("response返回值信息")
public class ResponsesVo {
public class ResponseVo {
@ApiModelProperty("状态码")
private String code;
......
......@@ -6,7 +6,7 @@ import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.matrix.vo.swaggerEntityVo.responsesEntity.ResponsesVo;
import org.matrix.vo.swaggerEntityVo.responsesEntity.ResponseVo;
import java.util.List;
......@@ -19,6 +19,12 @@ import java.util.List;
@ApiModel("PathVo接口信息")
public class PathVo {
@ApiModelProperty("id")
private Long identifierId;
@ApiModelProperty("tagId")
private Long tagId;
@ApiModelProperty("url地址")
private String pathUrl;
......@@ -29,13 +35,13 @@ public class PathVo {
private String summary;
@ApiModelProperty("类名,标签")
private JSONArray tags;
private String tags;
@ApiModelProperty("入参")
private JSONArray parameters;
@ApiModelProperty("返回值")
private List<ResponsesVo> responses;
private List<ResponseVo> responses;
@ApiModelProperty("operationId")
private String operationId;
......
......@@ -19,8 +19,11 @@ import java.util.List;
@ApiModel("TagSummary一级标签与二级标签")
public class TagSummary {
@ApiModelProperty("id")
private Long identifierId;
@ApiModelProperty("一级标签")
private JSONArray tag;
private String tag;
@ApiModelProperty("二级标签以及swagger具体信息")
private List<PathVo> paths;
......
......@@ -20,7 +20,7 @@ public class MessageConfig {
/**
* 可接收的类型
*/
@ApiModelProperty(value = "可接收的类型,等同与对应数据的java类名",example = "['Action','Environment','TestCase']")
@ApiModelProperty(value = "可接收的类型,等同与对应数据的java类名",example = "['Action','Environment','Case']")
private List<String> available;
}
package org.matrix.autotest.controller;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.matrix.entity.Case;
import org.matrix.service.ICaseService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import java.util.ArrayList;
import java.util.List;
import java.util.Optional;
/**
* @author mruny
* @create 2022/8/2 10:39:01
*/
@CrossOrigin
@RestController
@RequestMapping("/cases")
@Api(tags = "对用例Case的基本操作")
public class CaseController {
@Autowired
private ICaseService caseService;
@ApiOperation("查询所有当前项目中的测试用例")
@GetMapping
public ResponseEntity<List<Case>> findCase(@RequestParam Long projectId) {
List<Case> cases = Optional.ofNullable(caseService.list(Wrappers.lambdaQuery(Case.class)
.eq(Case::getProjectId, projectId))).orElse(new ArrayList<>());
return ResponseEntity.ok(cases);
}
@ApiOperation("根据主键id查询测试用例")
@GetMapping("/id")
public ResponseEntity<Case> findByIdCase(@RequestParam Long id) {
Case aCase = Optional.ofNullable(caseService.getById(id)).orElse(new Case());
return ResponseEntity.ok(aCase);
}
// @ApiOperation("根据测试用例所在的接口查询")
// @GetMapping("/")
}
package org.matrix.autotest.controller;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiModelProperty;
import io.swagger.annotations.ApiOperation;
import org.matrix.entity.InterfaceDoc;
import org.matrix.exception.GlobalException;
import org.matrix.service.IInterfaceDocService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import java.util.ArrayList;
import java.util.List;
import java.util.Optional;
/**
* @author mruny
* @create 2022/8/1 10:11:52
*/
@CrossOrigin
@RestController
@RequestMapping("/interfaceDocs")
@Api(tags = "对接口文档InterfaceDoc的基本操作")
public class InterfaceDocController {
@Autowired
private IInterfaceDocService interfaceDocService;
@ApiOperation("根据id删除接口文档")
@DeleteMapping("/{id}")
public ResponseEntity<String> removeInterfaceDoc(@PathVariable Long id) {
interfaceDocService.removeById(id);
return ResponseEntity.ok(String.format("删除成功,删除的接口文档id为: %d", id));
}
@ApiModelProperty("添加接口文档")
@PostMapping
public ResponseEntity<InterfaceDoc> insertInterfaceDoc(@RequestBody InterfaceDoc interfaceDoc) {
return Optional.of(interfaceDocService.save(interfaceDoc)).orElseThrow(() -> new GlobalException("添加失败"))
? ResponseEntity.ok(interfaceDoc)
: ResponseEntity.status(HttpStatus.BAD_REQUEST).body(interfaceDoc);
}
@ApiOperation("修改接口文档")
@PutMapping
public ResponseEntity<InterfaceDoc> updateInterfaceDoc(@RequestBody InterfaceDoc interfaceDoc) {
return Optional.of(interfaceDocService.updateById(interfaceDoc)).orElseThrow(() -> new GlobalException("添加失败"))
? ResponseEntity.ok(interfaceDoc)
: ResponseEntity.status(HttpStatus.BAD_REQUEST).body(interfaceDoc);
}
@ApiOperation("查询当前项目下所有接口文档")
@GetMapping
public ResponseEntity<List<InterfaceDoc>> findInterfaceDoc(@RequestParam(required = false,defaultValue = "1") Long projectId) {
List<InterfaceDoc> interfaceDocList = Optional.ofNullable(interfaceDocService.list(Wrappers.lambdaQuery(InterfaceDoc.class)
.eq(InterfaceDoc::getProjectId, projectId))).orElse(new ArrayList<>());
return ResponseEntity.ok(interfaceDocList);
}
@ApiOperation("根据主键id查询接口文档")
@GetMapping("/id")
public ResponseEntity<InterfaceDoc> findByIdInterfaceDoc(@RequestParam Long id) {
InterfaceDoc interfaceDoc = Optional.ofNullable(interfaceDocService.getById(id)).orElse(new InterfaceDoc());
return ResponseEntity.ok(interfaceDoc);
}
@ApiOperation("根据分组id查询接口文档")
@GetMapping("/groupingId")
public ResponseEntity<List<InterfaceDoc>> findByGroupingIdInterfaceDoc(@RequestParam Long groupingId) {
List<InterfaceDoc> interfaceDocList = Optional.ofNullable(interfaceDocService.list(Wrappers.lambdaQuery(InterfaceDoc.class)
.eq(InterfaceDoc::getInterfaceGroupId, groupingId))).orElse(new ArrayList<>());
return ResponseEntity.ok(interfaceDocList);
}
}
package org.matrix.autotest.controller;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.matrix.entity.InterfaceGrouping;
import org.matrix.exception.GlobalException;
import org.matrix.service.IInterfaceGroupingService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import java.util.ArrayList;
import java.util.List;
import java.util.Optional;
/**
* @author mruny
* @create 2022/8/1 10:12:10
*/
@CrossOrigin
@RestController
@RequestMapping("/interfaceGroupings")
@Api(tags = "对接口文档分组InterfaceGrouping的基本操作")
public class InterfaceGroupingController {
@Autowired
private IInterfaceGroupingService interfaceGroupingService;
@ApiOperation("添加接口分组")
@PostMapping
public ResponseEntity<InterfaceGrouping> insertInterfaceGrouping(@RequestBody InterfaceGrouping interfaceGrouping) {
return Optional.of(interfaceGroupingService.save(interfaceGrouping)).orElseThrow(() -> new GlobalException("添加失败"))
? ResponseEntity.ok(interfaceGrouping)
: ResponseEntity.status(HttpStatus.BAD_REQUEST).body(interfaceGrouping);
}
@ApiOperation("修改接口分组")
@PutMapping
public ResponseEntity<InterfaceGrouping> updateInterfaceGrouping(@RequestBody InterfaceGrouping interfaceGrouping) {
return Optional.of(interfaceGroupingService.updateById(interfaceGrouping)).orElseThrow(() -> new GlobalException("添加失败"))
? ResponseEntity.ok(interfaceGrouping)
: ResponseEntity.status(HttpStatus.BAD_REQUEST).body(interfaceGrouping);
}
@ApiOperation("查询当前项目下所有接口分组")
@GetMapping
public ResponseEntity<List<InterfaceGrouping>> findInterfaceGrouping(@RequestParam Long projectId) {
List<InterfaceGrouping> interfaceGroupings = Optional.ofNullable(interfaceGroupingService.list(Wrappers.lambdaQuery(InterfaceGrouping.class)
.eq(InterfaceGrouping::getProjectId, projectId))).orElse(new ArrayList<>());
return ResponseEntity.ok(interfaceGroupings);
}
@ApiOperation("根据主键id查询接口分组")
@GetMapping("/id")
public ResponseEntity<InterfaceGrouping> findByIdInterfaceGrouping(@RequestParam Long id) {
InterfaceGrouping interfaceGrouping = Optional.ofNullable(interfaceGroupingService.getById(id)).orElse(new InterfaceGrouping());
return ResponseEntity.ok(interfaceGrouping);
}
@ApiOperation("根据接口分组主键id删除分组以及分组下的接口文档")
@DeleteMapping("/{id}")
public ResponseEntity<String> removeInterfaceGrouping(@PathVariable Long id) {
interfaceGroupingService.removeInterfaceGrouping(id);
return ResponseEntity.ok(String.format("删除成功,删除的接口分组id为: %d", id));
}
}
package org.matrix.autotest.controller;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.matrix.entity.MouldDoc;
import org.matrix.exception.GlobalException;
import org.matrix.service.IMouldDocService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import java.util.ArrayList;
import java.util.List;
import java.util.Optional;
/**
* @author mruny
* @create 2022/7/18 13:35:36
*/
@CrossOrigin
@RestController
@RequestMapping("/mouldDocs")
@Api(tags = "对数据模型MouldDoc的基本操作")
public class MouldDocController {
@Autowired
private IMouldDocService mouldDocService;
@ApiOperation("根据主键id删除数据模型")
@DeleteMapping("/{id}")
public ResponseEntity<String> removeMouldDoc(@PathVariable Long id) {
mouldDocService.removeById(id);
return ResponseEntity.ok(String.format("删除成功,删除的数据模型id为: %d", id));
}
@ApiOperation("添加数据模型")
@PostMapping
public ResponseEntity<MouldDoc> insertMouldDoc(@RequestBody MouldDoc mouldDoc) {
return Optional.of(mouldDocService.save(mouldDoc)).orElseThrow(() -> new GlobalException("添加失败"))
? ResponseEntity.ok(mouldDoc)
: ResponseEntity.status(HttpStatus.BAD_REQUEST).body(mouldDoc);
}
@ApiOperation("修改数据模型")
@PutMapping
public ResponseEntity<MouldDoc> updateMouldDoc(@RequestBody MouldDoc mouldDoc) {
return Optional.of(mouldDocService.updateById(mouldDoc)).orElseThrow(() -> new GlobalException("修改失败"))
? ResponseEntity.ok(mouldDoc)
: ResponseEntity.status(HttpStatus.BAD_REQUEST).body(mouldDoc);
}
@ApiOperation("查询当前项目下所有数据模型")
@GetMapping
public ResponseEntity<List<MouldDoc>> findMouldDoc(@RequestParam Long projectId) {
List<MouldDoc> mouldDocList = Optional.ofNullable(mouldDocService.list(Wrappers.lambdaQuery(MouldDoc.class)
.eq(MouldDoc::getProjectId, projectId))).orElse(new ArrayList<>());
return ResponseEntity.ok(mouldDocList);
}
@ApiOperation("根据主键id数据模型")
@GetMapping("/id")
public ResponseEntity<MouldDoc> findByIdMouldDoc(@RequestParam Long id) {
MouldDoc mouldDoc = Optional.ofNullable(mouldDocService.getById(id)).orElse(new MouldDoc());
return ResponseEntity.ok(mouldDoc);
}
@ApiOperation("根据分组id查询数据模型")
@GetMapping("/groupingId")
public ResponseEntity<List<MouldDoc>> findByGroupingIdMouldDoc(@RequestParam Long groupingId) {
List<MouldDoc> mouldDocList = Optional.ofNullable(mouldDocService.list(Wrappers.lambdaQuery(MouldDoc.class)
.eq(MouldDoc::getMouldGroupingId, groupingId))).orElse(new ArrayList<>());
return ResponseEntity.ok(mouldDocList);
}
}
package org.matrix.autotest.controller;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.matrix.entity.MouldGrouping;
import org.matrix.exception.GlobalException;
import org.matrix.service.IMouldGroupingService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.*;
import java.util.ArrayList;
import java.util.List;
import java.util.Optional;
/**
* @author mruny
* @create 2022/7/18 13:15:08
*/
@CrossOrigin
@RestController
@RequestMapping("/mouldGroupings")
@Api(tags = "对数据模型分组MouldGrouping的基本操作")
public class MouldGroupingController {
@Autowired
private IMouldGroupingService mouldGroupingService;
@PostMapping
@ApiOperation("新增数据模型分组")
public ResponseEntity<MouldGrouping> insertMouldGrouping(@RequestBody MouldGrouping mouldGrouping) {
return Optional.of(mouldGroupingService.save(mouldGrouping)).orElseThrow(() -> new GlobalException("添加失败"))
? ResponseEntity.ok(mouldGrouping)
: ResponseEntity.status(HttpStatus.BAD_REQUEST).body(mouldGrouping);
}
@PutMapping
@ApiOperation("修改数据模型分组")
public ResponseEntity<MouldGrouping> updateMouldGrouping(@RequestBody MouldGrouping mouldGrouping) {
return Optional.of(mouldGroupingService.updateById(mouldGrouping)).orElseThrow(() -> new GlobalException("修改失败"))
? ResponseEntity.ok(mouldGrouping)
: ResponseEntity.status(HttpStatus.BAD_REQUEST).body(mouldGrouping);
}
@GetMapping
@ApiOperation("查询当前项目下所有数据模型分组")
public ResponseEntity<List<MouldGrouping>> findMouldGrouping(@RequestParam Long projectId) {
List<MouldGrouping> mouldGroupings = Optional.of(mouldGroupingService.list(Wrappers.lambdaQuery(MouldGrouping.class)
.eq(MouldGrouping::getProjectId, projectId))).orElse(new ArrayList<>());
return ResponseEntity.ok(mouldGroupings);
}
@ApiOperation("根据主键id查询数据模型分组")
@GetMapping("/id")
public ResponseEntity<MouldGrouping> findByMouldGrouping(@RequestParam Long id) {
MouldGrouping mouldGrouping = Optional.ofNullable(mouldGroupingService.getById(id)).orElse(new MouldGrouping());
return ResponseEntity.ok(mouldGrouping);
}
@ApiOperation("根据数据模型分组主键id,删除分组以及分组下的数据模型")
@DeleteMapping("/{id}")
@Transactional(rollbackFor = Exception.class)
public ResponseEntity<String> removeMouldGrouping(@PathVariable Long id) {
mouldGroupingService.removeMould(id);
return ResponseEntity.ok(String.format("删除成功,删除的模型分组id为: %d", id));
}
}
......@@ -15,12 +15,12 @@ spring:
driverClassName: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://127.0.0.1:3306/key_stone?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=UTC
username: root
password: ldf3291369
password: root
zentao:
driverClassName: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://127.0.0.1:3306/zentao?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=UTC&&zeroDateTimeBehavior=convertToNull
username: root
password: ldf3291369
password: root
mybatis-plus:
# configuration:
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论