diff --git a/backend/src/main/java/io/metersphere/api/dto/scenario/controller/IfController.java b/backend/src/main/java/io/metersphere/api/dto/scenario/controller/IfController.java new file mode 100644 index 0000000000..e90289334b --- /dev/null +++ b/backend/src/main/java/io/metersphere/api/dto/scenario/controller/IfController.java @@ -0,0 +1,13 @@ +package io.metersphere.api.dto.scenario.controller; + +import lombok.Data; + +@Data +public class IfController { + private String type; + private String id; + private Boolean enable; + private String variable; + private String operator; + private String value; +} diff --git a/backend/src/main/java/io/metersphere/api/dto/scenario/request/DubboRequest.java b/backend/src/main/java/io/metersphere/api/dto/scenario/request/DubboRequest.java index 48398edb1c..db5cce8a74 100644 --- a/backend/src/main/java/io/metersphere/api/dto/scenario/request/DubboRequest.java +++ b/backend/src/main/java/io/metersphere/api/dto/scenario/request/DubboRequest.java @@ -5,6 +5,7 @@ import com.alibaba.fastjson.annotation.JSONType; import com.fasterxml.jackson.annotation.JsonProperty; import io.metersphere.api.dto.scenario.KeyValue; import io.metersphere.api.dto.scenario.assertions.Assertions; +import io.metersphere.api.dto.scenario.controller.IfController; import io.metersphere.api.dto.scenario.extract.Extract; import io.metersphere.api.dto.scenario.processor.BeanShellPostProcessor; import io.metersphere.api.dto.scenario.processor.BeanShellPreProcessor; @@ -13,6 +14,7 @@ import io.metersphere.api.dto.scenario.processor.JSR223PreProcessor; import io.metersphere.api.dto.scenario.request.dubbo.ConfigCenter; import io.metersphere.api.dto.scenario.request.dubbo.ConsumerAndService; import io.metersphere.api.dto.scenario.request.dubbo.RegistryCenter; +import io.metersphere.api.dto.scenario.timer.ConstantTimer; import lombok.Data; import java.util.List; @@ -59,4 +61,8 @@ public class DubboRequest implements Request { private JSR223PreProcessor jsr223PreProcessor; @JSONField(ordinal = 16) private JSR223PostProcessor jsr223PostProcessor; + @JSONField(ordinal = 17) + private IfController controller; + @JSONField(ordinal = 18) + private ConstantTimer timer; } diff --git a/backend/src/main/java/io/metersphere/api/dto/scenario/request/HttpRequest.java b/backend/src/main/java/io/metersphere/api/dto/scenario/request/HttpRequest.java index dc0ffde3c8..95477f8c6d 100644 --- a/backend/src/main/java/io/metersphere/api/dto/scenario/request/HttpRequest.java +++ b/backend/src/main/java/io/metersphere/api/dto/scenario/request/HttpRequest.java @@ -5,11 +5,13 @@ import com.alibaba.fastjson.annotation.JSONType; import io.metersphere.api.dto.scenario.Body; import io.metersphere.api.dto.scenario.KeyValue; import io.metersphere.api.dto.scenario.assertions.Assertions; +import io.metersphere.api.dto.scenario.controller.IfController; import io.metersphere.api.dto.scenario.extract.Extract; import io.metersphere.api.dto.scenario.processor.BeanShellPostProcessor; import io.metersphere.api.dto.scenario.processor.BeanShellPreProcessor; import io.metersphere.api.dto.scenario.processor.JSR223PostProcessor; import io.metersphere.api.dto.scenario.processor.JSR223PreProcessor; +import io.metersphere.api.dto.scenario.timer.ConstantTimer; import lombok.Data; import java.util.List; @@ -57,4 +59,8 @@ public class HttpRequest implements Request { private JSR223PreProcessor jsr223PreProcessor; @JSONField(ordinal = 18) private JSR223PostProcessor jsr223PostProcessor; + @JSONField(ordinal = 19) + private IfController controller; + @JSONField(ordinal = 20) + private ConstantTimer timer; } diff --git a/backend/src/main/java/io/metersphere/api/dto/scenario/timer/ConstantTimer.java b/backend/src/main/java/io/metersphere/api/dto/scenario/timer/ConstantTimer.java new file mode 100644 index 0000000000..8823337b0c --- /dev/null +++ b/backend/src/main/java/io/metersphere/api/dto/scenario/timer/ConstantTimer.java @@ -0,0 +1,11 @@ +package io.metersphere.api.dto.scenario.timer; + +import lombok.Data; + +@Data +public class ConstantTimer { + private String type; + private String id; + private Boolean enable; + private String delay; +} diff --git a/backend/src/main/java/io/metersphere/base/domain/TestCaseComment.java b/backend/src/main/java/io/metersphere/base/domain/TestCaseComment.java new file mode 100644 index 0000000000..16bd29e7dd --- /dev/null +++ b/backend/src/main/java/io/metersphere/base/domain/TestCaseComment.java @@ -0,0 +1,21 @@ +package io.metersphere.base.domain; + +import java.io.Serializable; +import lombok.Data; + +@Data +public class TestCaseComment implements Serializable { + private String id; + + private String caseId; + + private String author; + + private Long createTime; + + private Long updateTime; + + private String description; + + private static final long serialVersionUID = 1L; +} \ No newline at end of file diff --git a/backend/src/main/java/io/metersphere/base/domain/TestCaseCommentExample.java b/backend/src/main/java/io/metersphere/base/domain/TestCaseCommentExample.java new file mode 100644 index 0000000000..2164371f36 --- /dev/null +++ b/backend/src/main/java/io/metersphere/base/domain/TestCaseCommentExample.java @@ -0,0 +1,530 @@ +package io.metersphere.base.domain; + +import java.util.ArrayList; +import java.util.List; + +public class TestCaseCommentExample { + protected String orderByClause; + + protected boolean distinct; + + protected List oredCriteria; + + public TestCaseCommentExample() { + oredCriteria = new ArrayList(); + } + + public void setOrderByClause(String orderByClause) { + this.orderByClause = orderByClause; + } + + public String getOrderByClause() { + return orderByClause; + } + + public void setDistinct(boolean distinct) { + this.distinct = distinct; + } + + public boolean isDistinct() { + return distinct; + } + + public List getOredCriteria() { + return oredCriteria; + } + + public void or(Criteria criteria) { + oredCriteria.add(criteria); + } + + public Criteria or() { + Criteria criteria = createCriteriaInternal(); + oredCriteria.add(criteria); + return criteria; + } + + public Criteria createCriteria() { + Criteria criteria = createCriteriaInternal(); + if (oredCriteria.size() == 0) { + oredCriteria.add(criteria); + } + return criteria; + } + + protected Criteria createCriteriaInternal() { + Criteria criteria = new Criteria(); + return criteria; + } + + public void clear() { + oredCriteria.clear(); + orderByClause = null; + distinct = false; + } + + protected abstract static class GeneratedCriteria { + protected List criteria; + + protected GeneratedCriteria() { + super(); + criteria = new ArrayList(); + } + + public boolean isValid() { + return criteria.size() > 0; + } + + public List getAllCriteria() { + return criteria; + } + + public List getCriteria() { + return criteria; + } + + protected void addCriterion(String condition) { + if (condition == null) { + throw new RuntimeException("Value for condition cannot be null"); + } + criteria.add(new Criterion(condition)); + } + + protected void addCriterion(String condition, Object value, String property) { + if (value == null) { + throw new RuntimeException("Value for " + property + " cannot be null"); + } + criteria.add(new Criterion(condition, value)); + } + + protected void addCriterion(String condition, Object value1, Object value2, String property) { + if (value1 == null || value2 == null) { + throw new RuntimeException("Between values for " + property + " cannot be null"); + } + criteria.add(new Criterion(condition, value1, value2)); + } + + public Criteria andIdIsNull() { + addCriterion("id is null"); + return (Criteria) this; + } + + public Criteria andIdIsNotNull() { + addCriterion("id is not null"); + return (Criteria) this; + } + + public Criteria andIdEqualTo(String value) { + addCriterion("id =", value, "id"); + return (Criteria) this; + } + + public Criteria andIdNotEqualTo(String value) { + addCriterion("id <>", value, "id"); + return (Criteria) this; + } + + public Criteria andIdGreaterThan(String value) { + addCriterion("id >", value, "id"); + return (Criteria) this; + } + + public Criteria andIdGreaterThanOrEqualTo(String value) { + addCriterion("id >=", value, "id"); + return (Criteria) this; + } + + public Criteria andIdLessThan(String value) { + addCriterion("id <", value, "id"); + return (Criteria) this; + } + + public Criteria andIdLessThanOrEqualTo(String value) { + addCriterion("id <=", value, "id"); + return (Criteria) this; + } + + public Criteria andIdLike(String value) { + addCriterion("id like", value, "id"); + return (Criteria) this; + } + + public Criteria andIdNotLike(String value) { + addCriterion("id not like", value, "id"); + return (Criteria) this; + } + + public Criteria andIdIn(List values) { + addCriterion("id in", values, "id"); + return (Criteria) this; + } + + public Criteria andIdNotIn(List values) { + addCriterion("id not in", values, "id"); + return (Criteria) this; + } + + public Criteria andIdBetween(String value1, String value2) { + addCriterion("id between", value1, value2, "id"); + return (Criteria) this; + } + + public Criteria andIdNotBetween(String value1, String value2) { + addCriterion("id not between", value1, value2, "id"); + return (Criteria) this; + } + + public Criteria andCaseIdIsNull() { + addCriterion("case_id is null"); + return (Criteria) this; + } + + public Criteria andCaseIdIsNotNull() { + addCriterion("case_id is not null"); + return (Criteria) this; + } + + public Criteria andCaseIdEqualTo(String value) { + addCriterion("case_id =", value, "caseId"); + return (Criteria) this; + } + + public Criteria andCaseIdNotEqualTo(String value) { + addCriterion("case_id <>", value, "caseId"); + return (Criteria) this; + } + + public Criteria andCaseIdGreaterThan(String value) { + addCriterion("case_id >", value, "caseId"); + return (Criteria) this; + } + + public Criteria andCaseIdGreaterThanOrEqualTo(String value) { + addCriterion("case_id >=", value, "caseId"); + return (Criteria) this; + } + + public Criteria andCaseIdLessThan(String value) { + addCriterion("case_id <", value, "caseId"); + return (Criteria) this; + } + + public Criteria andCaseIdLessThanOrEqualTo(String value) { + addCriterion("case_id <=", value, "caseId"); + return (Criteria) this; + } + + public Criteria andCaseIdLike(String value) { + addCriterion("case_id like", value, "caseId"); + return (Criteria) this; + } + + public Criteria andCaseIdNotLike(String value) { + addCriterion("case_id not like", value, "caseId"); + return (Criteria) this; + } + + public Criteria andCaseIdIn(List values) { + addCriterion("case_id in", values, "caseId"); + return (Criteria) this; + } + + public Criteria andCaseIdNotIn(List values) { + addCriterion("case_id not in", values, "caseId"); + return (Criteria) this; + } + + public Criteria andCaseIdBetween(String value1, String value2) { + addCriterion("case_id between", value1, value2, "caseId"); + return (Criteria) this; + } + + public Criteria andCaseIdNotBetween(String value1, String value2) { + addCriterion("case_id not between", value1, value2, "caseId"); + return (Criteria) this; + } + + public Criteria andAuthorIsNull() { + addCriterion("author is null"); + return (Criteria) this; + } + + public Criteria andAuthorIsNotNull() { + addCriterion("author is not null"); + return (Criteria) this; + } + + public Criteria andAuthorEqualTo(String value) { + addCriterion("author =", value, "author"); + return (Criteria) this; + } + + public Criteria andAuthorNotEqualTo(String value) { + addCriterion("author <>", value, "author"); + return (Criteria) this; + } + + public Criteria andAuthorGreaterThan(String value) { + addCriterion("author >", value, "author"); + return (Criteria) this; + } + + public Criteria andAuthorGreaterThanOrEqualTo(String value) { + addCriterion("author >=", value, "author"); + return (Criteria) this; + } + + public Criteria andAuthorLessThan(String value) { + addCriterion("author <", value, "author"); + return (Criteria) this; + } + + public Criteria andAuthorLessThanOrEqualTo(String value) { + addCriterion("author <=", value, "author"); + return (Criteria) this; + } + + public Criteria andAuthorLike(String value) { + addCriterion("author like", value, "author"); + return (Criteria) this; + } + + public Criteria andAuthorNotLike(String value) { + addCriterion("author not like", value, "author"); + return (Criteria) this; + } + + public Criteria andAuthorIn(List values) { + addCriterion("author in", values, "author"); + return (Criteria) this; + } + + public Criteria andAuthorNotIn(List values) { + addCriterion("author not in", values, "author"); + return (Criteria) this; + } + + public Criteria andAuthorBetween(String value1, String value2) { + addCriterion("author between", value1, value2, "author"); + return (Criteria) this; + } + + public Criteria andAuthorNotBetween(String value1, String value2) { + addCriterion("author not between", value1, value2, "author"); + return (Criteria) this; + } + + public Criteria andCreateTimeIsNull() { + addCriterion("create_time is null"); + return (Criteria) this; + } + + public Criteria andCreateTimeIsNotNull() { + addCriterion("create_time is not null"); + return (Criteria) this; + } + + public Criteria andCreateTimeEqualTo(Long value) { + addCriterion("create_time =", value, "createTime"); + return (Criteria) this; + } + + public Criteria andCreateTimeNotEqualTo(Long value) { + addCriterion("create_time <>", value, "createTime"); + return (Criteria) this; + } + + public Criteria andCreateTimeGreaterThan(Long value) { + addCriterion("create_time >", value, "createTime"); + return (Criteria) this; + } + + public Criteria andCreateTimeGreaterThanOrEqualTo(Long value) { + addCriterion("create_time >=", value, "createTime"); + return (Criteria) this; + } + + public Criteria andCreateTimeLessThan(Long value) { + addCriterion("create_time <", value, "createTime"); + return (Criteria) this; + } + + public Criteria andCreateTimeLessThanOrEqualTo(Long value) { + addCriterion("create_time <=", value, "createTime"); + return (Criteria) this; + } + + public Criteria andCreateTimeIn(List values) { + addCriterion("create_time in", values, "createTime"); + return (Criteria) this; + } + + public Criteria andCreateTimeNotIn(List values) { + addCriterion("create_time not in", values, "createTime"); + return (Criteria) this; + } + + public Criteria andCreateTimeBetween(Long value1, Long value2) { + addCriterion("create_time between", value1, value2, "createTime"); + return (Criteria) this; + } + + public Criteria andCreateTimeNotBetween(Long value1, Long value2) { + addCriterion("create_time not between", value1, value2, "createTime"); + return (Criteria) this; + } + + public Criteria andUpdateTimeIsNull() { + addCriterion("update_time is null"); + return (Criteria) this; + } + + public Criteria andUpdateTimeIsNotNull() { + addCriterion("update_time is not null"); + return (Criteria) this; + } + + public Criteria andUpdateTimeEqualTo(Long value) { + addCriterion("update_time =", value, "updateTime"); + return (Criteria) this; + } + + public Criteria andUpdateTimeNotEqualTo(Long value) { + addCriterion("update_time <>", value, "updateTime"); + return (Criteria) this; + } + + public Criteria andUpdateTimeGreaterThan(Long value) { + addCriterion("update_time >", value, "updateTime"); + return (Criteria) this; + } + + public Criteria andUpdateTimeGreaterThanOrEqualTo(Long value) { + addCriterion("update_time >=", value, "updateTime"); + return (Criteria) this; + } + + public Criteria andUpdateTimeLessThan(Long value) { + addCriterion("update_time <", value, "updateTime"); + return (Criteria) this; + } + + public Criteria andUpdateTimeLessThanOrEqualTo(Long value) { + addCriterion("update_time <=", value, "updateTime"); + return (Criteria) this; + } + + public Criteria andUpdateTimeIn(List values) { + addCriterion("update_time in", values, "updateTime"); + return (Criteria) this; + } + + public Criteria andUpdateTimeNotIn(List values) { + addCriterion("update_time not in", values, "updateTime"); + return (Criteria) this; + } + + public Criteria andUpdateTimeBetween(Long value1, Long value2) { + addCriterion("update_time between", value1, value2, "updateTime"); + return (Criteria) this; + } + + public Criteria andUpdateTimeNotBetween(Long value1, Long value2) { + addCriterion("update_time not between", value1, value2, "updateTime"); + return (Criteria) this; + } + } + + public static class Criteria extends GeneratedCriteria { + + protected Criteria() { + super(); + } + } + + public static class Criterion { + private String condition; + + private Object value; + + private Object secondValue; + + private boolean noValue; + + private boolean singleValue; + + private boolean betweenValue; + + private boolean listValue; + + private String typeHandler; + + public String getCondition() { + return condition; + } + + public Object getValue() { + return value; + } + + public Object getSecondValue() { + return secondValue; + } + + public boolean isNoValue() { + return noValue; + } + + public boolean isSingleValue() { + return singleValue; + } + + public boolean isBetweenValue() { + return betweenValue; + } + + public boolean isListValue() { + return listValue; + } + + public String getTypeHandler() { + return typeHandler; + } + + protected Criterion(String condition) { + super(); + this.condition = condition; + this.typeHandler = null; + this.noValue = true; + } + + protected Criterion(String condition, Object value, String typeHandler) { + super(); + this.condition = condition; + this.value = value; + this.typeHandler = typeHandler; + if (value instanceof List) { + this.listValue = true; + } else { + this.singleValue = true; + } + } + + protected Criterion(String condition, Object value) { + this(condition, value, null); + } + + protected Criterion(String condition, Object value, Object secondValue, String typeHandler) { + super(); + this.condition = condition; + this.value = value; + this.secondValue = secondValue; + this.typeHandler = typeHandler; + this.betweenValue = true; + } + + protected Criterion(String condition, Object value, Object secondValue) { + this(condition, value, secondValue, null); + } + } +} \ No newline at end of file diff --git a/backend/src/main/java/io/metersphere/base/domain/TestCaseReview.java b/backend/src/main/java/io/metersphere/base/domain/TestCaseReview.java new file mode 100644 index 0000000000..145cb42127 --- /dev/null +++ b/backend/src/main/java/io/metersphere/base/domain/TestCaseReview.java @@ -0,0 +1,25 @@ +package io.metersphere.base.domain; + +import java.io.Serializable; +import lombok.Data; + +@Data +public class TestCaseReview implements Serializable { + private String id; + + private String name; + + private String creator; + + private String status; + + private Long createTime; + + private Long updateTime; + + private Long endTime; + + private String description; + + private static final long serialVersionUID = 1L; +} \ No newline at end of file diff --git a/backend/src/main/java/io/metersphere/base/domain/TestCaseReviewExample.java b/backend/src/main/java/io/metersphere/base/domain/TestCaseReviewExample.java new file mode 100644 index 0000000000..551c4b23ae --- /dev/null +++ b/backend/src/main/java/io/metersphere/base/domain/TestCaseReviewExample.java @@ -0,0 +1,660 @@ +package io.metersphere.base.domain; + +import java.util.ArrayList; +import java.util.List; + +public class TestCaseReviewExample { + protected String orderByClause; + + protected boolean distinct; + + protected List oredCriteria; + + public TestCaseReviewExample() { + oredCriteria = new ArrayList(); + } + + public void setOrderByClause(String orderByClause) { + this.orderByClause = orderByClause; + } + + public String getOrderByClause() { + return orderByClause; + } + + public void setDistinct(boolean distinct) { + this.distinct = distinct; + } + + public boolean isDistinct() { + return distinct; + } + + public List getOredCriteria() { + return oredCriteria; + } + + public void or(Criteria criteria) { + oredCriteria.add(criteria); + } + + public Criteria or() { + Criteria criteria = createCriteriaInternal(); + oredCriteria.add(criteria); + return criteria; + } + + public Criteria createCriteria() { + Criteria criteria = createCriteriaInternal(); + if (oredCriteria.size() == 0) { + oredCriteria.add(criteria); + } + return criteria; + } + + protected Criteria createCriteriaInternal() { + Criteria criteria = new Criteria(); + return criteria; + } + + public void clear() { + oredCriteria.clear(); + orderByClause = null; + distinct = false; + } + + protected abstract static class GeneratedCriteria { + protected List criteria; + + protected GeneratedCriteria() { + super(); + criteria = new ArrayList(); + } + + public boolean isValid() { + return criteria.size() > 0; + } + + public List getAllCriteria() { + return criteria; + } + + public List getCriteria() { + return criteria; + } + + protected void addCriterion(String condition) { + if (condition == null) { + throw new RuntimeException("Value for condition cannot be null"); + } + criteria.add(new Criterion(condition)); + } + + protected void addCriterion(String condition, Object value, String property) { + if (value == null) { + throw new RuntimeException("Value for " + property + " cannot be null"); + } + criteria.add(new Criterion(condition, value)); + } + + protected void addCriterion(String condition, Object value1, Object value2, String property) { + if (value1 == null || value2 == null) { + throw new RuntimeException("Between values for " + property + " cannot be null"); + } + criteria.add(new Criterion(condition, value1, value2)); + } + + public Criteria andIdIsNull() { + addCriterion("id is null"); + return (Criteria) this; + } + + public Criteria andIdIsNotNull() { + addCriterion("id is not null"); + return (Criteria) this; + } + + public Criteria andIdEqualTo(String value) { + addCriterion("id =", value, "id"); + return (Criteria) this; + } + + public Criteria andIdNotEqualTo(String value) { + addCriterion("id <>", value, "id"); + return (Criteria) this; + } + + public Criteria andIdGreaterThan(String value) { + addCriterion("id >", value, "id"); + return (Criteria) this; + } + + public Criteria andIdGreaterThanOrEqualTo(String value) { + addCriterion("id >=", value, "id"); + return (Criteria) this; + } + + public Criteria andIdLessThan(String value) { + addCriterion("id <", value, "id"); + return (Criteria) this; + } + + public Criteria andIdLessThanOrEqualTo(String value) { + addCriterion("id <=", value, "id"); + return (Criteria) this; + } + + public Criteria andIdLike(String value) { + addCriterion("id like", value, "id"); + return (Criteria) this; + } + + public Criteria andIdNotLike(String value) { + addCriterion("id not like", value, "id"); + return (Criteria) this; + } + + public Criteria andIdIn(List values) { + addCriterion("id in", values, "id"); + return (Criteria) this; + } + + public Criteria andIdNotIn(List values) { + addCriterion("id not in", values, "id"); + return (Criteria) this; + } + + public Criteria andIdBetween(String value1, String value2) { + addCriterion("id between", value1, value2, "id"); + return (Criteria) this; + } + + public Criteria andIdNotBetween(String value1, String value2) { + addCriterion("id not between", value1, value2, "id"); + return (Criteria) this; + } + + public Criteria andNameIsNull() { + addCriterion("`name` is null"); + return (Criteria) this; + } + + public Criteria andNameIsNotNull() { + addCriterion("`name` is not null"); + return (Criteria) this; + } + + public Criteria andNameEqualTo(String value) { + addCriterion("`name` =", value, "name"); + return (Criteria) this; + } + + public Criteria andNameNotEqualTo(String value) { + addCriterion("`name` <>", value, "name"); + return (Criteria) this; + } + + public Criteria andNameGreaterThan(String value) { + addCriterion("`name` >", value, "name"); + return (Criteria) this; + } + + public Criteria andNameGreaterThanOrEqualTo(String value) { + addCriterion("`name` >=", value, "name"); + return (Criteria) this; + } + + public Criteria andNameLessThan(String value) { + addCriterion("`name` <", value, "name"); + return (Criteria) this; + } + + public Criteria andNameLessThanOrEqualTo(String value) { + addCriterion("`name` <=", value, "name"); + return (Criteria) this; + } + + public Criteria andNameLike(String value) { + addCriterion("`name` like", value, "name"); + return (Criteria) this; + } + + public Criteria andNameNotLike(String value) { + addCriterion("`name` not like", value, "name"); + return (Criteria) this; + } + + public Criteria andNameIn(List values) { + addCriterion("`name` in", values, "name"); + return (Criteria) this; + } + + public Criteria andNameNotIn(List values) { + addCriterion("`name` not in", values, "name"); + return (Criteria) this; + } + + public Criteria andNameBetween(String value1, String value2) { + addCriterion("`name` between", value1, value2, "name"); + return (Criteria) this; + } + + public Criteria andNameNotBetween(String value1, String value2) { + addCriterion("`name` not between", value1, value2, "name"); + return (Criteria) this; + } + + public Criteria andCreatorIsNull() { + addCriterion("creator is null"); + return (Criteria) this; + } + + public Criteria andCreatorIsNotNull() { + addCriterion("creator is not null"); + return (Criteria) this; + } + + public Criteria andCreatorEqualTo(String value) { + addCriterion("creator =", value, "creator"); + return (Criteria) this; + } + + public Criteria andCreatorNotEqualTo(String value) { + addCriterion("creator <>", value, "creator"); + return (Criteria) this; + } + + public Criteria andCreatorGreaterThan(String value) { + addCriterion("creator >", value, "creator"); + return (Criteria) this; + } + + public Criteria andCreatorGreaterThanOrEqualTo(String value) { + addCriterion("creator >=", value, "creator"); + return (Criteria) this; + } + + public Criteria andCreatorLessThan(String value) { + addCriterion("creator <", value, "creator"); + return (Criteria) this; + } + + public Criteria andCreatorLessThanOrEqualTo(String value) { + addCriterion("creator <=", value, "creator"); + return (Criteria) this; + } + + public Criteria andCreatorLike(String value) { + addCriterion("creator like", value, "creator"); + return (Criteria) this; + } + + public Criteria andCreatorNotLike(String value) { + addCriterion("creator not like", value, "creator"); + return (Criteria) this; + } + + public Criteria andCreatorIn(List values) { + addCriterion("creator in", values, "creator"); + return (Criteria) this; + } + + public Criteria andCreatorNotIn(List values) { + addCriterion("creator not in", values, "creator"); + return (Criteria) this; + } + + public Criteria andCreatorBetween(String value1, String value2) { + addCriterion("creator between", value1, value2, "creator"); + return (Criteria) this; + } + + public Criteria andCreatorNotBetween(String value1, String value2) { + addCriterion("creator not between", value1, value2, "creator"); + return (Criteria) this; + } + + public Criteria andStatusIsNull() { + addCriterion("`status` is null"); + return (Criteria) this; + } + + public Criteria andStatusIsNotNull() { + addCriterion("`status` is not null"); + return (Criteria) this; + } + + public Criteria andStatusEqualTo(String value) { + addCriterion("`status` =", value, "status"); + return (Criteria) this; + } + + public Criteria andStatusNotEqualTo(String value) { + addCriterion("`status` <>", value, "status"); + return (Criteria) this; + } + + public Criteria andStatusGreaterThan(String value) { + addCriterion("`status` >", value, "status"); + return (Criteria) this; + } + + public Criteria andStatusGreaterThanOrEqualTo(String value) { + addCriterion("`status` >=", value, "status"); + return (Criteria) this; + } + + public Criteria andStatusLessThan(String value) { + addCriterion("`status` <", value, "status"); + return (Criteria) this; + } + + public Criteria andStatusLessThanOrEqualTo(String value) { + addCriterion("`status` <=", value, "status"); + return (Criteria) this; + } + + public Criteria andStatusLike(String value) { + addCriterion("`status` like", value, "status"); + return (Criteria) this; + } + + public Criteria andStatusNotLike(String value) { + addCriterion("`status` not like", value, "status"); + return (Criteria) this; + } + + public Criteria andStatusIn(List values) { + addCriterion("`status` in", values, "status"); + return (Criteria) this; + } + + public Criteria andStatusNotIn(List values) { + addCriterion("`status` not in", values, "status"); + return (Criteria) this; + } + + public Criteria andStatusBetween(String value1, String value2) { + addCriterion("`status` between", value1, value2, "status"); + return (Criteria) this; + } + + public Criteria andStatusNotBetween(String value1, String value2) { + addCriterion("`status` not between", value1, value2, "status"); + return (Criteria) this; + } + + public Criteria andCreateTimeIsNull() { + addCriterion("create_time is null"); + return (Criteria) this; + } + + public Criteria andCreateTimeIsNotNull() { + addCriterion("create_time is not null"); + return (Criteria) this; + } + + public Criteria andCreateTimeEqualTo(Long value) { + addCriterion("create_time =", value, "createTime"); + return (Criteria) this; + } + + public Criteria andCreateTimeNotEqualTo(Long value) { + addCriterion("create_time <>", value, "createTime"); + return (Criteria) this; + } + + public Criteria andCreateTimeGreaterThan(Long value) { + addCriterion("create_time >", value, "createTime"); + return (Criteria) this; + } + + public Criteria andCreateTimeGreaterThanOrEqualTo(Long value) { + addCriterion("create_time >=", value, "createTime"); + return (Criteria) this; + } + + public Criteria andCreateTimeLessThan(Long value) { + addCriterion("create_time <", value, "createTime"); + return (Criteria) this; + } + + public Criteria andCreateTimeLessThanOrEqualTo(Long value) { + addCriterion("create_time <=", value, "createTime"); + return (Criteria) this; + } + + public Criteria andCreateTimeIn(List values) { + addCriterion("create_time in", values, "createTime"); + return (Criteria) this; + } + + public Criteria andCreateTimeNotIn(List values) { + addCriterion("create_time not in", values, "createTime"); + return (Criteria) this; + } + + public Criteria andCreateTimeBetween(Long value1, Long value2) { + addCriterion("create_time between", value1, value2, "createTime"); + return (Criteria) this; + } + + public Criteria andCreateTimeNotBetween(Long value1, Long value2) { + addCriterion("create_time not between", value1, value2, "createTime"); + return (Criteria) this; + } + + public Criteria andUpdateTimeIsNull() { + addCriterion("update_time is null"); + return (Criteria) this; + } + + public Criteria andUpdateTimeIsNotNull() { + addCriterion("update_time is not null"); + return (Criteria) this; + } + + public Criteria andUpdateTimeEqualTo(Long value) { + addCriterion("update_time =", value, "updateTime"); + return (Criteria) this; + } + + public Criteria andUpdateTimeNotEqualTo(Long value) { + addCriterion("update_time <>", value, "updateTime"); + return (Criteria) this; + } + + public Criteria andUpdateTimeGreaterThan(Long value) { + addCriterion("update_time >", value, "updateTime"); + return (Criteria) this; + } + + public Criteria andUpdateTimeGreaterThanOrEqualTo(Long value) { + addCriterion("update_time >=", value, "updateTime"); + return (Criteria) this; + } + + public Criteria andUpdateTimeLessThan(Long value) { + addCriterion("update_time <", value, "updateTime"); + return (Criteria) this; + } + + public Criteria andUpdateTimeLessThanOrEqualTo(Long value) { + addCriterion("update_time <=", value, "updateTime"); + return (Criteria) this; + } + + public Criteria andUpdateTimeIn(List values) { + addCriterion("update_time in", values, "updateTime"); + return (Criteria) this; + } + + public Criteria andUpdateTimeNotIn(List values) { + addCriterion("update_time not in", values, "updateTime"); + return (Criteria) this; + } + + public Criteria andUpdateTimeBetween(Long value1, Long value2) { + addCriterion("update_time between", value1, value2, "updateTime"); + return (Criteria) this; + } + + public Criteria andUpdateTimeNotBetween(Long value1, Long value2) { + addCriterion("update_time not between", value1, value2, "updateTime"); + return (Criteria) this; + } + + public Criteria andEndTimeIsNull() { + addCriterion("end_time is null"); + return (Criteria) this; + } + + public Criteria andEndTimeIsNotNull() { + addCriterion("end_time is not null"); + return (Criteria) this; + } + + public Criteria andEndTimeEqualTo(Long value) { + addCriterion("end_time =", value, "endTime"); + return (Criteria) this; + } + + public Criteria andEndTimeNotEqualTo(Long value) { + addCriterion("end_time <>", value, "endTime"); + return (Criteria) this; + } + + public Criteria andEndTimeGreaterThan(Long value) { + addCriterion("end_time >", value, "endTime"); + return (Criteria) this; + } + + public Criteria andEndTimeGreaterThanOrEqualTo(Long value) { + addCriterion("end_time >=", value, "endTime"); + return (Criteria) this; + } + + public Criteria andEndTimeLessThan(Long value) { + addCriterion("end_time <", value, "endTime"); + return (Criteria) this; + } + + public Criteria andEndTimeLessThanOrEqualTo(Long value) { + addCriterion("end_time <=", value, "endTime"); + return (Criteria) this; + } + + public Criteria andEndTimeIn(List values) { + addCriterion("end_time in", values, "endTime"); + return (Criteria) this; + } + + public Criteria andEndTimeNotIn(List values) { + addCriterion("end_time not in", values, "endTime"); + return (Criteria) this; + } + + public Criteria andEndTimeBetween(Long value1, Long value2) { + addCriterion("end_time between", value1, value2, "endTime"); + return (Criteria) this; + } + + public Criteria andEndTimeNotBetween(Long value1, Long value2) { + addCriterion("end_time not between", value1, value2, "endTime"); + return (Criteria) this; + } + } + + public static class Criteria extends GeneratedCriteria { + + protected Criteria() { + super(); + } + } + + public static class Criterion { + private String condition; + + private Object value; + + private Object secondValue; + + private boolean noValue; + + private boolean singleValue; + + private boolean betweenValue; + + private boolean listValue; + + private String typeHandler; + + public String getCondition() { + return condition; + } + + public Object getValue() { + return value; + } + + public Object getSecondValue() { + return secondValue; + } + + public boolean isNoValue() { + return noValue; + } + + public boolean isSingleValue() { + return singleValue; + } + + public boolean isBetweenValue() { + return betweenValue; + } + + public boolean isListValue() { + return listValue; + } + + public String getTypeHandler() { + return typeHandler; + } + + protected Criterion(String condition) { + super(); + this.condition = condition; + this.typeHandler = null; + this.noValue = true; + } + + protected Criterion(String condition, Object value, String typeHandler) { + super(); + this.condition = condition; + this.value = value; + this.typeHandler = typeHandler; + if (value instanceof List) { + this.listValue = true; + } else { + this.singleValue = true; + } + } + + protected Criterion(String condition, Object value) { + this(condition, value, null); + } + + protected Criterion(String condition, Object value, Object secondValue, String typeHandler) { + super(); + this.condition = condition; + this.value = value; + this.secondValue = secondValue; + this.typeHandler = typeHandler; + this.betweenValue = true; + } + + protected Criterion(String condition, Object value, Object secondValue) { + this(condition, value, secondValue, null); + } + } +} \ No newline at end of file diff --git a/backend/src/main/java/io/metersphere/base/domain/TestCaseReviewProject.java b/backend/src/main/java/io/metersphere/base/domain/TestCaseReviewProject.java new file mode 100644 index 0000000000..413f253925 --- /dev/null +++ b/backend/src/main/java/io/metersphere/base/domain/TestCaseReviewProject.java @@ -0,0 +1,13 @@ +package io.metersphere.base.domain; + +import java.io.Serializable; +import lombok.Data; + +@Data +public class TestCaseReviewProject implements Serializable { + private String reviewId; + + private String projectId; + + private static final long serialVersionUID = 1L; +} \ No newline at end of file diff --git a/backend/src/main/java/io/metersphere/base/domain/TestCaseReviewProjectExample.java b/backend/src/main/java/io/metersphere/base/domain/TestCaseReviewProjectExample.java new file mode 100644 index 0000000000..b3c6c998ed --- /dev/null +++ b/backend/src/main/java/io/metersphere/base/domain/TestCaseReviewProjectExample.java @@ -0,0 +1,340 @@ +package io.metersphere.base.domain; + +import java.util.ArrayList; +import java.util.List; + +public class TestCaseReviewProjectExample { + protected String orderByClause; + + protected boolean distinct; + + protected List oredCriteria; + + public TestCaseReviewProjectExample() { + oredCriteria = new ArrayList(); + } + + public void setOrderByClause(String orderByClause) { + this.orderByClause = orderByClause; + } + + public String getOrderByClause() { + return orderByClause; + } + + public void setDistinct(boolean distinct) { + this.distinct = distinct; + } + + public boolean isDistinct() { + return distinct; + } + + public List getOredCriteria() { + return oredCriteria; + } + + public void or(Criteria criteria) { + oredCriteria.add(criteria); + } + + public Criteria or() { + Criteria criteria = createCriteriaInternal(); + oredCriteria.add(criteria); + return criteria; + } + + public Criteria createCriteria() { + Criteria criteria = createCriteriaInternal(); + if (oredCriteria.size() == 0) { + oredCriteria.add(criteria); + } + return criteria; + } + + protected Criteria createCriteriaInternal() { + Criteria criteria = new Criteria(); + return criteria; + } + + public void clear() { + oredCriteria.clear(); + orderByClause = null; + distinct = false; + } + + protected abstract static class GeneratedCriteria { + protected List criteria; + + protected GeneratedCriteria() { + super(); + criteria = new ArrayList(); + } + + public boolean isValid() { + return criteria.size() > 0; + } + + public List getAllCriteria() { + return criteria; + } + + public List getCriteria() { + return criteria; + } + + protected void addCriterion(String condition) { + if (condition == null) { + throw new RuntimeException("Value for condition cannot be null"); + } + criteria.add(new Criterion(condition)); + } + + protected void addCriterion(String condition, Object value, String property) { + if (value == null) { + throw new RuntimeException("Value for " + property + " cannot be null"); + } + criteria.add(new Criterion(condition, value)); + } + + protected void addCriterion(String condition, Object value1, Object value2, String property) { + if (value1 == null || value2 == null) { + throw new RuntimeException("Between values for " + property + " cannot be null"); + } + criteria.add(new Criterion(condition, value1, value2)); + } + + public Criteria andReviewIdIsNull() { + addCriterion("review_id is null"); + return (Criteria) this; + } + + public Criteria andReviewIdIsNotNull() { + addCriterion("review_id is not null"); + return (Criteria) this; + } + + public Criteria andReviewIdEqualTo(String value) { + addCriterion("review_id =", value, "reviewId"); + return (Criteria) this; + } + + public Criteria andReviewIdNotEqualTo(String value) { + addCriterion("review_id <>", value, "reviewId"); + return (Criteria) this; + } + + public Criteria andReviewIdGreaterThan(String value) { + addCriterion("review_id >", value, "reviewId"); + return (Criteria) this; + } + + public Criteria andReviewIdGreaterThanOrEqualTo(String value) { + addCriterion("review_id >=", value, "reviewId"); + return (Criteria) this; + } + + public Criteria andReviewIdLessThan(String value) { + addCriterion("review_id <", value, "reviewId"); + return (Criteria) this; + } + + public Criteria andReviewIdLessThanOrEqualTo(String value) { + addCriterion("review_id <=", value, "reviewId"); + return (Criteria) this; + } + + public Criteria andReviewIdLike(String value) { + addCriterion("review_id like", value, "reviewId"); + return (Criteria) this; + } + + public Criteria andReviewIdNotLike(String value) { + addCriterion("review_id not like", value, "reviewId"); + return (Criteria) this; + } + + public Criteria andReviewIdIn(List values) { + addCriterion("review_id in", values, "reviewId"); + return (Criteria) this; + } + + public Criteria andReviewIdNotIn(List values) { + addCriterion("review_id not in", values, "reviewId"); + return (Criteria) this; + } + + public Criteria andReviewIdBetween(String value1, String value2) { + addCriterion("review_id between", value1, value2, "reviewId"); + return (Criteria) this; + } + + public Criteria andReviewIdNotBetween(String value1, String value2) { + addCriterion("review_id not between", value1, value2, "reviewId"); + return (Criteria) this; + } + + public Criteria andProjectIdIsNull() { + addCriterion("project_id is null"); + return (Criteria) this; + } + + public Criteria andProjectIdIsNotNull() { + addCriterion("project_id is not null"); + return (Criteria) this; + } + + public Criteria andProjectIdEqualTo(String value) { + addCriterion("project_id =", value, "projectId"); + return (Criteria) this; + } + + public Criteria andProjectIdNotEqualTo(String value) { + addCriterion("project_id <>", value, "projectId"); + return (Criteria) this; + } + + public Criteria andProjectIdGreaterThan(String value) { + addCriterion("project_id >", value, "projectId"); + return (Criteria) this; + } + + public Criteria andProjectIdGreaterThanOrEqualTo(String value) { + addCriterion("project_id >=", value, "projectId"); + return (Criteria) this; + } + + public Criteria andProjectIdLessThan(String value) { + addCriterion("project_id <", value, "projectId"); + return (Criteria) this; + } + + public Criteria andProjectIdLessThanOrEqualTo(String value) { + addCriterion("project_id <=", value, "projectId"); + return (Criteria) this; + } + + public Criteria andProjectIdLike(String value) { + addCriterion("project_id like", value, "projectId"); + return (Criteria) this; + } + + public Criteria andProjectIdNotLike(String value) { + addCriterion("project_id not like", value, "projectId"); + return (Criteria) this; + } + + public Criteria andProjectIdIn(List values) { + addCriterion("project_id in", values, "projectId"); + return (Criteria) this; + } + + public Criteria andProjectIdNotIn(List values) { + addCriterion("project_id not in", values, "projectId"); + return (Criteria) this; + } + + public Criteria andProjectIdBetween(String value1, String value2) { + addCriterion("project_id between", value1, value2, "projectId"); + return (Criteria) this; + } + + public Criteria andProjectIdNotBetween(String value1, String value2) { + addCriterion("project_id not between", value1, value2, "projectId"); + return (Criteria) this; + } + } + + public static class Criteria extends GeneratedCriteria { + + protected Criteria() { + super(); + } + } + + public static class Criterion { + private String condition; + + private Object value; + + private Object secondValue; + + private boolean noValue; + + private boolean singleValue; + + private boolean betweenValue; + + private boolean listValue; + + private String typeHandler; + + public String getCondition() { + return condition; + } + + public Object getValue() { + return value; + } + + public Object getSecondValue() { + return secondValue; + } + + public boolean isNoValue() { + return noValue; + } + + public boolean isSingleValue() { + return singleValue; + } + + public boolean isBetweenValue() { + return betweenValue; + } + + public boolean isListValue() { + return listValue; + } + + public String getTypeHandler() { + return typeHandler; + } + + protected Criterion(String condition) { + super(); + this.condition = condition; + this.typeHandler = null; + this.noValue = true; + } + + protected Criterion(String condition, Object value, String typeHandler) { + super(); + this.condition = condition; + this.value = value; + this.typeHandler = typeHandler; + if (value instanceof List) { + this.listValue = true; + } else { + this.singleValue = true; + } + } + + protected Criterion(String condition, Object value) { + this(condition, value, null); + } + + protected Criterion(String condition, Object value, Object secondValue, String typeHandler) { + super(); + this.condition = condition; + this.value = value; + this.secondValue = secondValue; + this.typeHandler = typeHandler; + this.betweenValue = true; + } + + protected Criterion(String condition, Object value, Object secondValue) { + this(condition, value, secondValue, null); + } + } +} \ No newline at end of file diff --git a/backend/src/main/java/io/metersphere/base/domain/TestCaseReviewTestCase.java b/backend/src/main/java/io/metersphere/base/domain/TestCaseReviewTestCase.java new file mode 100644 index 0000000000..15644070e0 --- /dev/null +++ b/backend/src/main/java/io/metersphere/base/domain/TestCaseReviewTestCase.java @@ -0,0 +1,25 @@ +package io.metersphere.base.domain; + +import java.io.Serializable; +import lombok.Data; + +@Data +public class TestCaseReviewTestCase implements Serializable { + private String id; + + private String reviewId; + + private String caseId; + + private String status; + + private String result; + + private String reviewer; + + private Long createTime; + + private Long updateTime; + + private static final long serialVersionUID = 1L; +} \ No newline at end of file diff --git a/backend/src/main/java/io/metersphere/base/domain/TestCaseReviewTestCaseExample.java b/backend/src/main/java/io/metersphere/base/domain/TestCaseReviewTestCaseExample.java new file mode 100644 index 0000000000..ac0827ab7e --- /dev/null +++ b/backend/src/main/java/io/metersphere/base/domain/TestCaseReviewTestCaseExample.java @@ -0,0 +1,740 @@ +package io.metersphere.base.domain; + +import java.util.ArrayList; +import java.util.List; + +public class TestCaseReviewTestCaseExample { + protected String orderByClause; + + protected boolean distinct; + + protected List oredCriteria; + + public TestCaseReviewTestCaseExample() { + oredCriteria = new ArrayList(); + } + + public void setOrderByClause(String orderByClause) { + this.orderByClause = orderByClause; + } + + public String getOrderByClause() { + return orderByClause; + } + + public void setDistinct(boolean distinct) { + this.distinct = distinct; + } + + public boolean isDistinct() { + return distinct; + } + + public List getOredCriteria() { + return oredCriteria; + } + + public void or(Criteria criteria) { + oredCriteria.add(criteria); + } + + public Criteria or() { + Criteria criteria = createCriteriaInternal(); + oredCriteria.add(criteria); + return criteria; + } + + public Criteria createCriteria() { + Criteria criteria = createCriteriaInternal(); + if (oredCriteria.size() == 0) { + oredCriteria.add(criteria); + } + return criteria; + } + + protected Criteria createCriteriaInternal() { + Criteria criteria = new Criteria(); + return criteria; + } + + public void clear() { + oredCriteria.clear(); + orderByClause = null; + distinct = false; + } + + protected abstract static class GeneratedCriteria { + protected List criteria; + + protected GeneratedCriteria() { + super(); + criteria = new ArrayList(); + } + + public boolean isValid() { + return criteria.size() > 0; + } + + public List getAllCriteria() { + return criteria; + } + + public List getCriteria() { + return criteria; + } + + protected void addCriterion(String condition) { + if (condition == null) { + throw new RuntimeException("Value for condition cannot be null"); + } + criteria.add(new Criterion(condition)); + } + + protected void addCriterion(String condition, Object value, String property) { + if (value == null) { + throw new RuntimeException("Value for " + property + " cannot be null"); + } + criteria.add(new Criterion(condition, value)); + } + + protected void addCriterion(String condition, Object value1, Object value2, String property) { + if (value1 == null || value2 == null) { + throw new RuntimeException("Between values for " + property + " cannot be null"); + } + criteria.add(new Criterion(condition, value1, value2)); + } + + public Criteria andIdIsNull() { + addCriterion("id is null"); + return (Criteria) this; + } + + public Criteria andIdIsNotNull() { + addCriterion("id is not null"); + return (Criteria) this; + } + + public Criteria andIdEqualTo(String value) { + addCriterion("id =", value, "id"); + return (Criteria) this; + } + + public Criteria andIdNotEqualTo(String value) { + addCriterion("id <>", value, "id"); + return (Criteria) this; + } + + public Criteria andIdGreaterThan(String value) { + addCriterion("id >", value, "id"); + return (Criteria) this; + } + + public Criteria andIdGreaterThanOrEqualTo(String value) { + addCriterion("id >=", value, "id"); + return (Criteria) this; + } + + public Criteria andIdLessThan(String value) { + addCriterion("id <", value, "id"); + return (Criteria) this; + } + + public Criteria andIdLessThanOrEqualTo(String value) { + addCriterion("id <=", value, "id"); + return (Criteria) this; + } + + public Criteria andIdLike(String value) { + addCriterion("id like", value, "id"); + return (Criteria) this; + } + + public Criteria andIdNotLike(String value) { + addCriterion("id not like", value, "id"); + return (Criteria) this; + } + + public Criteria andIdIn(List values) { + addCriterion("id in", values, "id"); + return (Criteria) this; + } + + public Criteria andIdNotIn(List values) { + addCriterion("id not in", values, "id"); + return (Criteria) this; + } + + public Criteria andIdBetween(String value1, String value2) { + addCriterion("id between", value1, value2, "id"); + return (Criteria) this; + } + + public Criteria andIdNotBetween(String value1, String value2) { + addCriterion("id not between", value1, value2, "id"); + return (Criteria) this; + } + + public Criteria andReviewIdIsNull() { + addCriterion("review_id is null"); + return (Criteria) this; + } + + public Criteria andReviewIdIsNotNull() { + addCriterion("review_id is not null"); + return (Criteria) this; + } + + public Criteria andReviewIdEqualTo(String value) { + addCriterion("review_id =", value, "reviewId"); + return (Criteria) this; + } + + public Criteria andReviewIdNotEqualTo(String value) { + addCriterion("review_id <>", value, "reviewId"); + return (Criteria) this; + } + + public Criteria andReviewIdGreaterThan(String value) { + addCriterion("review_id >", value, "reviewId"); + return (Criteria) this; + } + + public Criteria andReviewIdGreaterThanOrEqualTo(String value) { + addCriterion("review_id >=", value, "reviewId"); + return (Criteria) this; + } + + public Criteria andReviewIdLessThan(String value) { + addCriterion("review_id <", value, "reviewId"); + return (Criteria) this; + } + + public Criteria andReviewIdLessThanOrEqualTo(String value) { + addCriterion("review_id <=", value, "reviewId"); + return (Criteria) this; + } + + public Criteria andReviewIdLike(String value) { + addCriterion("review_id like", value, "reviewId"); + return (Criteria) this; + } + + public Criteria andReviewIdNotLike(String value) { + addCriterion("review_id not like", value, "reviewId"); + return (Criteria) this; + } + + public Criteria andReviewIdIn(List values) { + addCriterion("review_id in", values, "reviewId"); + return (Criteria) this; + } + + public Criteria andReviewIdNotIn(List values) { + addCriterion("review_id not in", values, "reviewId"); + return (Criteria) this; + } + + public Criteria andReviewIdBetween(String value1, String value2) { + addCriterion("review_id between", value1, value2, "reviewId"); + return (Criteria) this; + } + + public Criteria andReviewIdNotBetween(String value1, String value2) { + addCriterion("review_id not between", value1, value2, "reviewId"); + return (Criteria) this; + } + + public Criteria andCaseIdIsNull() { + addCriterion("case_id is null"); + return (Criteria) this; + } + + public Criteria andCaseIdIsNotNull() { + addCriterion("case_id is not null"); + return (Criteria) this; + } + + public Criteria andCaseIdEqualTo(String value) { + addCriterion("case_id =", value, "caseId"); + return (Criteria) this; + } + + public Criteria andCaseIdNotEqualTo(String value) { + addCriterion("case_id <>", value, "caseId"); + return (Criteria) this; + } + + public Criteria andCaseIdGreaterThan(String value) { + addCriterion("case_id >", value, "caseId"); + return (Criteria) this; + } + + public Criteria andCaseIdGreaterThanOrEqualTo(String value) { + addCriterion("case_id >=", value, "caseId"); + return (Criteria) this; + } + + public Criteria andCaseIdLessThan(String value) { + addCriterion("case_id <", value, "caseId"); + return (Criteria) this; + } + + public Criteria andCaseIdLessThanOrEqualTo(String value) { + addCriterion("case_id <=", value, "caseId"); + return (Criteria) this; + } + + public Criteria andCaseIdLike(String value) { + addCriterion("case_id like", value, "caseId"); + return (Criteria) this; + } + + public Criteria andCaseIdNotLike(String value) { + addCriterion("case_id not like", value, "caseId"); + return (Criteria) this; + } + + public Criteria andCaseIdIn(List values) { + addCriterion("case_id in", values, "caseId"); + return (Criteria) this; + } + + public Criteria andCaseIdNotIn(List values) { + addCriterion("case_id not in", values, "caseId"); + return (Criteria) this; + } + + public Criteria andCaseIdBetween(String value1, String value2) { + addCriterion("case_id between", value1, value2, "caseId"); + return (Criteria) this; + } + + public Criteria andCaseIdNotBetween(String value1, String value2) { + addCriterion("case_id not between", value1, value2, "caseId"); + return (Criteria) this; + } + + public Criteria andStatusIsNull() { + addCriterion("`status` is null"); + return (Criteria) this; + } + + public Criteria andStatusIsNotNull() { + addCriterion("`status` is not null"); + return (Criteria) this; + } + + public Criteria andStatusEqualTo(String value) { + addCriterion("`status` =", value, "status"); + return (Criteria) this; + } + + public Criteria andStatusNotEqualTo(String value) { + addCriterion("`status` <>", value, "status"); + return (Criteria) this; + } + + public Criteria andStatusGreaterThan(String value) { + addCriterion("`status` >", value, "status"); + return (Criteria) this; + } + + public Criteria andStatusGreaterThanOrEqualTo(String value) { + addCriterion("`status` >=", value, "status"); + return (Criteria) this; + } + + public Criteria andStatusLessThan(String value) { + addCriterion("`status` <", value, "status"); + return (Criteria) this; + } + + public Criteria andStatusLessThanOrEqualTo(String value) { + addCriterion("`status` <=", value, "status"); + return (Criteria) this; + } + + public Criteria andStatusLike(String value) { + addCriterion("`status` like", value, "status"); + return (Criteria) this; + } + + public Criteria andStatusNotLike(String value) { + addCriterion("`status` not like", value, "status"); + return (Criteria) this; + } + + public Criteria andStatusIn(List values) { + addCriterion("`status` in", values, "status"); + return (Criteria) this; + } + + public Criteria andStatusNotIn(List values) { + addCriterion("`status` not in", values, "status"); + return (Criteria) this; + } + + public Criteria andStatusBetween(String value1, String value2) { + addCriterion("`status` between", value1, value2, "status"); + return (Criteria) this; + } + + public Criteria andStatusNotBetween(String value1, String value2) { + addCriterion("`status` not between", value1, value2, "status"); + return (Criteria) this; + } + + public Criteria andResultIsNull() { + addCriterion("`result` is null"); + return (Criteria) this; + } + + public Criteria andResultIsNotNull() { + addCriterion("`result` is not null"); + return (Criteria) this; + } + + public Criteria andResultEqualTo(String value) { + addCriterion("`result` =", value, "result"); + return (Criteria) this; + } + + public Criteria andResultNotEqualTo(String value) { + addCriterion("`result` <>", value, "result"); + return (Criteria) this; + } + + public Criteria andResultGreaterThan(String value) { + addCriterion("`result` >", value, "result"); + return (Criteria) this; + } + + public Criteria andResultGreaterThanOrEqualTo(String value) { + addCriterion("`result` >=", value, "result"); + return (Criteria) this; + } + + public Criteria andResultLessThan(String value) { + addCriterion("`result` <", value, "result"); + return (Criteria) this; + } + + public Criteria andResultLessThanOrEqualTo(String value) { + addCriterion("`result` <=", value, "result"); + return (Criteria) this; + } + + public Criteria andResultLike(String value) { + addCriterion("`result` like", value, "result"); + return (Criteria) this; + } + + public Criteria andResultNotLike(String value) { + addCriterion("`result` not like", value, "result"); + return (Criteria) this; + } + + public Criteria andResultIn(List values) { + addCriterion("`result` in", values, "result"); + return (Criteria) this; + } + + public Criteria andResultNotIn(List values) { + addCriterion("`result` not in", values, "result"); + return (Criteria) this; + } + + public Criteria andResultBetween(String value1, String value2) { + addCriterion("`result` between", value1, value2, "result"); + return (Criteria) this; + } + + public Criteria andResultNotBetween(String value1, String value2) { + addCriterion("`result` not between", value1, value2, "result"); + return (Criteria) this; + } + + public Criteria andReviewerIsNull() { + addCriterion("reviewer is null"); + return (Criteria) this; + } + + public Criteria andReviewerIsNotNull() { + addCriterion("reviewer is not null"); + return (Criteria) this; + } + + public Criteria andReviewerEqualTo(String value) { + addCriterion("reviewer =", value, "reviewer"); + return (Criteria) this; + } + + public Criteria andReviewerNotEqualTo(String value) { + addCriterion("reviewer <>", value, "reviewer"); + return (Criteria) this; + } + + public Criteria andReviewerGreaterThan(String value) { + addCriterion("reviewer >", value, "reviewer"); + return (Criteria) this; + } + + public Criteria andReviewerGreaterThanOrEqualTo(String value) { + addCriterion("reviewer >=", value, "reviewer"); + return (Criteria) this; + } + + public Criteria andReviewerLessThan(String value) { + addCriterion("reviewer <", value, "reviewer"); + return (Criteria) this; + } + + public Criteria andReviewerLessThanOrEqualTo(String value) { + addCriterion("reviewer <=", value, "reviewer"); + return (Criteria) this; + } + + public Criteria andReviewerLike(String value) { + addCriterion("reviewer like", value, "reviewer"); + return (Criteria) this; + } + + public Criteria andReviewerNotLike(String value) { + addCriterion("reviewer not like", value, "reviewer"); + return (Criteria) this; + } + + public Criteria andReviewerIn(List values) { + addCriterion("reviewer in", values, "reviewer"); + return (Criteria) this; + } + + public Criteria andReviewerNotIn(List values) { + addCriterion("reviewer not in", values, "reviewer"); + return (Criteria) this; + } + + public Criteria andReviewerBetween(String value1, String value2) { + addCriterion("reviewer between", value1, value2, "reviewer"); + return (Criteria) this; + } + + public Criteria andReviewerNotBetween(String value1, String value2) { + addCriterion("reviewer not between", value1, value2, "reviewer"); + return (Criteria) this; + } + + public Criteria andCreateTimeIsNull() { + addCriterion("create_time is null"); + return (Criteria) this; + } + + public Criteria andCreateTimeIsNotNull() { + addCriterion("create_time is not null"); + return (Criteria) this; + } + + public Criteria andCreateTimeEqualTo(Long value) { + addCriterion("create_time =", value, "createTime"); + return (Criteria) this; + } + + public Criteria andCreateTimeNotEqualTo(Long value) { + addCriterion("create_time <>", value, "createTime"); + return (Criteria) this; + } + + public Criteria andCreateTimeGreaterThan(Long value) { + addCriterion("create_time >", value, "createTime"); + return (Criteria) this; + } + + public Criteria andCreateTimeGreaterThanOrEqualTo(Long value) { + addCriterion("create_time >=", value, "createTime"); + return (Criteria) this; + } + + public Criteria andCreateTimeLessThan(Long value) { + addCriterion("create_time <", value, "createTime"); + return (Criteria) this; + } + + public Criteria andCreateTimeLessThanOrEqualTo(Long value) { + addCriterion("create_time <=", value, "createTime"); + return (Criteria) this; + } + + public Criteria andCreateTimeIn(List values) { + addCriterion("create_time in", values, "createTime"); + return (Criteria) this; + } + + public Criteria andCreateTimeNotIn(List values) { + addCriterion("create_time not in", values, "createTime"); + return (Criteria) this; + } + + public Criteria andCreateTimeBetween(Long value1, Long value2) { + addCriterion("create_time between", value1, value2, "createTime"); + return (Criteria) this; + } + + public Criteria andCreateTimeNotBetween(Long value1, Long value2) { + addCriterion("create_time not between", value1, value2, "createTime"); + return (Criteria) this; + } + + public Criteria andUpdateTimeIsNull() { + addCriterion("update_time is null"); + return (Criteria) this; + } + + public Criteria andUpdateTimeIsNotNull() { + addCriterion("update_time is not null"); + return (Criteria) this; + } + + public Criteria andUpdateTimeEqualTo(Long value) { + addCriterion("update_time =", value, "updateTime"); + return (Criteria) this; + } + + public Criteria andUpdateTimeNotEqualTo(Long value) { + addCriterion("update_time <>", value, "updateTime"); + return (Criteria) this; + } + + public Criteria andUpdateTimeGreaterThan(Long value) { + addCriterion("update_time >", value, "updateTime"); + return (Criteria) this; + } + + public Criteria andUpdateTimeGreaterThanOrEqualTo(Long value) { + addCriterion("update_time >=", value, "updateTime"); + return (Criteria) this; + } + + public Criteria andUpdateTimeLessThan(Long value) { + addCriterion("update_time <", value, "updateTime"); + return (Criteria) this; + } + + public Criteria andUpdateTimeLessThanOrEqualTo(Long value) { + addCriterion("update_time <=", value, "updateTime"); + return (Criteria) this; + } + + public Criteria andUpdateTimeIn(List values) { + addCriterion("update_time in", values, "updateTime"); + return (Criteria) this; + } + + public Criteria andUpdateTimeNotIn(List values) { + addCriterion("update_time not in", values, "updateTime"); + return (Criteria) this; + } + + public Criteria andUpdateTimeBetween(Long value1, Long value2) { + addCriterion("update_time between", value1, value2, "updateTime"); + return (Criteria) this; + } + + public Criteria andUpdateTimeNotBetween(Long value1, Long value2) { + addCriterion("update_time not between", value1, value2, "updateTime"); + return (Criteria) this; + } + } + + public static class Criteria extends GeneratedCriteria { + + protected Criteria() { + super(); + } + } + + public static class Criterion { + private String condition; + + private Object value; + + private Object secondValue; + + private boolean noValue; + + private boolean singleValue; + + private boolean betweenValue; + + private boolean listValue; + + private String typeHandler; + + public String getCondition() { + return condition; + } + + public Object getValue() { + return value; + } + + public Object getSecondValue() { + return secondValue; + } + + public boolean isNoValue() { + return noValue; + } + + public boolean isSingleValue() { + return singleValue; + } + + public boolean isBetweenValue() { + return betweenValue; + } + + public boolean isListValue() { + return listValue; + } + + public String getTypeHandler() { + return typeHandler; + } + + protected Criterion(String condition) { + super(); + this.condition = condition; + this.typeHandler = null; + this.noValue = true; + } + + protected Criterion(String condition, Object value, String typeHandler) { + super(); + this.condition = condition; + this.value = value; + this.typeHandler = typeHandler; + if (value instanceof List) { + this.listValue = true; + } else { + this.singleValue = true; + } + } + + protected Criterion(String condition, Object value) { + this(condition, value, null); + } + + protected Criterion(String condition, Object value, Object secondValue, String typeHandler) { + super(); + this.condition = condition; + this.value = value; + this.secondValue = secondValue; + this.typeHandler = typeHandler; + this.betweenValue = true; + } + + protected Criterion(String condition, Object value, Object secondValue) { + this(condition, value, secondValue, null); + } + } +} \ No newline at end of file diff --git a/backend/src/main/java/io/metersphere/base/domain/TestCaseReviewUsers.java b/backend/src/main/java/io/metersphere/base/domain/TestCaseReviewUsers.java new file mode 100644 index 0000000000..7c2f69a425 --- /dev/null +++ b/backend/src/main/java/io/metersphere/base/domain/TestCaseReviewUsers.java @@ -0,0 +1,13 @@ +package io.metersphere.base.domain; + +import java.io.Serializable; +import lombok.Data; + +@Data +public class TestCaseReviewUsers implements Serializable { + private String reviewId; + + private String userId; + + private static final long serialVersionUID = 1L; +} \ No newline at end of file diff --git a/backend/src/main/java/io/metersphere/base/domain/TestCaseReviewUsersExample.java b/backend/src/main/java/io/metersphere/base/domain/TestCaseReviewUsersExample.java new file mode 100644 index 0000000000..dd2faedec8 --- /dev/null +++ b/backend/src/main/java/io/metersphere/base/domain/TestCaseReviewUsersExample.java @@ -0,0 +1,340 @@ +package io.metersphere.base.domain; + +import java.util.ArrayList; +import java.util.List; + +public class TestCaseReviewUsersExample { + protected String orderByClause; + + protected boolean distinct; + + protected List oredCriteria; + + public TestCaseReviewUsersExample() { + oredCriteria = new ArrayList(); + } + + public void setOrderByClause(String orderByClause) { + this.orderByClause = orderByClause; + } + + public String getOrderByClause() { + return orderByClause; + } + + public void setDistinct(boolean distinct) { + this.distinct = distinct; + } + + public boolean isDistinct() { + return distinct; + } + + public List getOredCriteria() { + return oredCriteria; + } + + public void or(Criteria criteria) { + oredCriteria.add(criteria); + } + + public Criteria or() { + Criteria criteria = createCriteriaInternal(); + oredCriteria.add(criteria); + return criteria; + } + + public Criteria createCriteria() { + Criteria criteria = createCriteriaInternal(); + if (oredCriteria.size() == 0) { + oredCriteria.add(criteria); + } + return criteria; + } + + protected Criteria createCriteriaInternal() { + Criteria criteria = new Criteria(); + return criteria; + } + + public void clear() { + oredCriteria.clear(); + orderByClause = null; + distinct = false; + } + + protected abstract static class GeneratedCriteria { + protected List criteria; + + protected GeneratedCriteria() { + super(); + criteria = new ArrayList(); + } + + public boolean isValid() { + return criteria.size() > 0; + } + + public List getAllCriteria() { + return criteria; + } + + public List getCriteria() { + return criteria; + } + + protected void addCriterion(String condition) { + if (condition == null) { + throw new RuntimeException("Value for condition cannot be null"); + } + criteria.add(new Criterion(condition)); + } + + protected void addCriterion(String condition, Object value, String property) { + if (value == null) { + throw new RuntimeException("Value for " + property + " cannot be null"); + } + criteria.add(new Criterion(condition, value)); + } + + protected void addCriterion(String condition, Object value1, Object value2, String property) { + if (value1 == null || value2 == null) { + throw new RuntimeException("Between values for " + property + " cannot be null"); + } + criteria.add(new Criterion(condition, value1, value2)); + } + + public Criteria andReviewIdIsNull() { + addCriterion("review_id is null"); + return (Criteria) this; + } + + public Criteria andReviewIdIsNotNull() { + addCriterion("review_id is not null"); + return (Criteria) this; + } + + public Criteria andReviewIdEqualTo(String value) { + addCriterion("review_id =", value, "reviewId"); + return (Criteria) this; + } + + public Criteria andReviewIdNotEqualTo(String value) { + addCriterion("review_id <>", value, "reviewId"); + return (Criteria) this; + } + + public Criteria andReviewIdGreaterThan(String value) { + addCriterion("review_id >", value, "reviewId"); + return (Criteria) this; + } + + public Criteria andReviewIdGreaterThanOrEqualTo(String value) { + addCriterion("review_id >=", value, "reviewId"); + return (Criteria) this; + } + + public Criteria andReviewIdLessThan(String value) { + addCriterion("review_id <", value, "reviewId"); + return (Criteria) this; + } + + public Criteria andReviewIdLessThanOrEqualTo(String value) { + addCriterion("review_id <=", value, "reviewId"); + return (Criteria) this; + } + + public Criteria andReviewIdLike(String value) { + addCriterion("review_id like", value, "reviewId"); + return (Criteria) this; + } + + public Criteria andReviewIdNotLike(String value) { + addCriterion("review_id not like", value, "reviewId"); + return (Criteria) this; + } + + public Criteria andReviewIdIn(List values) { + addCriterion("review_id in", values, "reviewId"); + return (Criteria) this; + } + + public Criteria andReviewIdNotIn(List values) { + addCriterion("review_id not in", values, "reviewId"); + return (Criteria) this; + } + + public Criteria andReviewIdBetween(String value1, String value2) { + addCriterion("review_id between", value1, value2, "reviewId"); + return (Criteria) this; + } + + public Criteria andReviewIdNotBetween(String value1, String value2) { + addCriterion("review_id not between", value1, value2, "reviewId"); + return (Criteria) this; + } + + public Criteria andUserIdIsNull() { + addCriterion("user_id is null"); + return (Criteria) this; + } + + public Criteria andUserIdIsNotNull() { + addCriterion("user_id is not null"); + return (Criteria) this; + } + + public Criteria andUserIdEqualTo(String value) { + addCriterion("user_id =", value, "userId"); + return (Criteria) this; + } + + public Criteria andUserIdNotEqualTo(String value) { + addCriterion("user_id <>", value, "userId"); + return (Criteria) this; + } + + public Criteria andUserIdGreaterThan(String value) { + addCriterion("user_id >", value, "userId"); + return (Criteria) this; + } + + public Criteria andUserIdGreaterThanOrEqualTo(String value) { + addCriterion("user_id >=", value, "userId"); + return (Criteria) this; + } + + public Criteria andUserIdLessThan(String value) { + addCriterion("user_id <", value, "userId"); + return (Criteria) this; + } + + public Criteria andUserIdLessThanOrEqualTo(String value) { + addCriterion("user_id <=", value, "userId"); + return (Criteria) this; + } + + public Criteria andUserIdLike(String value) { + addCriterion("user_id like", value, "userId"); + return (Criteria) this; + } + + public Criteria andUserIdNotLike(String value) { + addCriterion("user_id not like", value, "userId"); + return (Criteria) this; + } + + public Criteria andUserIdIn(List values) { + addCriterion("user_id in", values, "userId"); + return (Criteria) this; + } + + public Criteria andUserIdNotIn(List values) { + addCriterion("user_id not in", values, "userId"); + return (Criteria) this; + } + + public Criteria andUserIdBetween(String value1, String value2) { + addCriterion("user_id between", value1, value2, "userId"); + return (Criteria) this; + } + + public Criteria andUserIdNotBetween(String value1, String value2) { + addCriterion("user_id not between", value1, value2, "userId"); + return (Criteria) this; + } + } + + public static class Criteria extends GeneratedCriteria { + + protected Criteria() { + super(); + } + } + + public static class Criterion { + private String condition; + + private Object value; + + private Object secondValue; + + private boolean noValue; + + private boolean singleValue; + + private boolean betweenValue; + + private boolean listValue; + + private String typeHandler; + + public String getCondition() { + return condition; + } + + public Object getValue() { + return value; + } + + public Object getSecondValue() { + return secondValue; + } + + public boolean isNoValue() { + return noValue; + } + + public boolean isSingleValue() { + return singleValue; + } + + public boolean isBetweenValue() { + return betweenValue; + } + + public boolean isListValue() { + return listValue; + } + + public String getTypeHandler() { + return typeHandler; + } + + protected Criterion(String condition) { + super(); + this.condition = condition; + this.typeHandler = null; + this.noValue = true; + } + + protected Criterion(String condition, Object value, String typeHandler) { + super(); + this.condition = condition; + this.value = value; + this.typeHandler = typeHandler; + if (value instanceof List) { + this.listValue = true; + } else { + this.singleValue = true; + } + } + + protected Criterion(String condition, Object value) { + this(condition, value, null); + } + + protected Criterion(String condition, Object value, Object secondValue, String typeHandler) { + super(); + this.condition = condition; + this.value = value; + this.secondValue = secondValue; + this.typeHandler = typeHandler; + this.betweenValue = true; + } + + protected Criterion(String condition, Object value, Object secondValue) { + this(condition, value, secondValue, null); + } + } +} \ No newline at end of file diff --git a/backend/src/main/java/io/metersphere/base/mapper/TestCaseCommentMapper.java b/backend/src/main/java/io/metersphere/base/mapper/TestCaseCommentMapper.java new file mode 100644 index 0000000000..aa39a64b34 --- /dev/null +++ b/backend/src/main/java/io/metersphere/base/mapper/TestCaseCommentMapper.java @@ -0,0 +1,36 @@ +package io.metersphere.base.mapper; + +import io.metersphere.base.domain.TestCaseComment; +import io.metersphere.base.domain.TestCaseCommentExample; +import java.util.List; +import org.apache.ibatis.annotations.Param; + +public interface TestCaseCommentMapper { + long countByExample(TestCaseCommentExample example); + + int deleteByExample(TestCaseCommentExample example); + + int deleteByPrimaryKey(String id); + + int insert(TestCaseComment record); + + int insertSelective(TestCaseComment record); + + List selectByExampleWithBLOBs(TestCaseCommentExample example); + + List selectByExample(TestCaseCommentExample example); + + TestCaseComment selectByPrimaryKey(String id); + + int updateByExampleSelective(@Param("record") TestCaseComment record, @Param("example") TestCaseCommentExample example); + + int updateByExampleWithBLOBs(@Param("record") TestCaseComment record, @Param("example") TestCaseCommentExample example); + + int updateByExample(@Param("record") TestCaseComment record, @Param("example") TestCaseCommentExample example); + + int updateByPrimaryKeySelective(TestCaseComment record); + + int updateByPrimaryKeyWithBLOBs(TestCaseComment record); + + int updateByPrimaryKey(TestCaseComment record); +} \ No newline at end of file diff --git a/backend/src/main/java/io/metersphere/base/mapper/TestCaseCommentMapper.xml b/backend/src/main/java/io/metersphere/base/mapper/TestCaseCommentMapper.xml new file mode 100644 index 0000000000..78217a13a7 --- /dev/null +++ b/backend/src/main/java/io/metersphere/base/mapper/TestCaseCommentMapper.xml @@ -0,0 +1,270 @@ + + + + + + + + + + + + + + + + + + + + + + and ${criterion.condition} + + + and ${criterion.condition} #{criterion.value} + + + and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} + + + and ${criterion.condition} + + #{listItem} + + + + + + + + + + + + + + + + + + and ${criterion.condition} + + + and ${criterion.condition} #{criterion.value} + + + and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} + + + and ${criterion.condition} + + #{listItem} + + + + + + + + + + + id, case_id, author, create_time, update_time + + + description + + + + + + delete from test_case_comment + where id = #{id,jdbcType=VARCHAR} + + + delete from test_case_comment + + + + + + insert into test_case_comment (id, case_id, author, + create_time, update_time, description + ) + values (#{id,jdbcType=VARCHAR}, #{caseId,jdbcType=VARCHAR}, #{author,jdbcType=VARCHAR}, + #{createTime,jdbcType=BIGINT}, #{updateTime,jdbcType=BIGINT}, #{description,jdbcType=LONGVARCHAR} + ) + + + insert into test_case_comment + + + id, + + + case_id, + + + author, + + + create_time, + + + update_time, + + + description, + + + + + #{id,jdbcType=VARCHAR}, + + + #{caseId,jdbcType=VARCHAR}, + + + #{author,jdbcType=VARCHAR}, + + + #{createTime,jdbcType=BIGINT}, + + + #{updateTime,jdbcType=BIGINT}, + + + #{description,jdbcType=LONGVARCHAR}, + + + + + + update test_case_comment + + + id = #{record.id,jdbcType=VARCHAR}, + + + case_id = #{record.caseId,jdbcType=VARCHAR}, + + + author = #{record.author,jdbcType=VARCHAR}, + + + create_time = #{record.createTime,jdbcType=BIGINT}, + + + update_time = #{record.updateTime,jdbcType=BIGINT}, + + + description = #{record.description,jdbcType=LONGVARCHAR}, + + + + + + + + update test_case_comment + set id = #{record.id,jdbcType=VARCHAR}, + case_id = #{record.caseId,jdbcType=VARCHAR}, + author = #{record.author,jdbcType=VARCHAR}, + create_time = #{record.createTime,jdbcType=BIGINT}, + update_time = #{record.updateTime,jdbcType=BIGINT}, + description = #{record.description,jdbcType=LONGVARCHAR} + + + + + + update test_case_comment + set id = #{record.id,jdbcType=VARCHAR}, + case_id = #{record.caseId,jdbcType=VARCHAR}, + author = #{record.author,jdbcType=VARCHAR}, + create_time = #{record.createTime,jdbcType=BIGINT}, + update_time = #{record.updateTime,jdbcType=BIGINT} + + + + + + update test_case_comment + + + case_id = #{caseId,jdbcType=VARCHAR}, + + + author = #{author,jdbcType=VARCHAR}, + + + create_time = #{createTime,jdbcType=BIGINT}, + + + update_time = #{updateTime,jdbcType=BIGINT}, + + + description = #{description,jdbcType=LONGVARCHAR}, + + + where id = #{id,jdbcType=VARCHAR} + + + update test_case_comment + set case_id = #{caseId,jdbcType=VARCHAR}, + author = #{author,jdbcType=VARCHAR}, + create_time = #{createTime,jdbcType=BIGINT}, + update_time = #{updateTime,jdbcType=BIGINT}, + description = #{description,jdbcType=LONGVARCHAR} + where id = #{id,jdbcType=VARCHAR} + + + update test_case_comment + set case_id = #{caseId,jdbcType=VARCHAR}, + author = #{author,jdbcType=VARCHAR}, + create_time = #{createTime,jdbcType=BIGINT}, + update_time = #{updateTime,jdbcType=BIGINT} + where id = #{id,jdbcType=VARCHAR} + + \ No newline at end of file diff --git a/backend/src/main/java/io/metersphere/base/mapper/TestCaseReviewMapper.java b/backend/src/main/java/io/metersphere/base/mapper/TestCaseReviewMapper.java new file mode 100644 index 0000000000..294924e964 --- /dev/null +++ b/backend/src/main/java/io/metersphere/base/mapper/TestCaseReviewMapper.java @@ -0,0 +1,36 @@ +package io.metersphere.base.mapper; + +import io.metersphere.base.domain.TestCaseReview; +import io.metersphere.base.domain.TestCaseReviewExample; +import java.util.List; +import org.apache.ibatis.annotations.Param; + +public interface TestCaseReviewMapper { + long countByExample(TestCaseReviewExample example); + + int deleteByExample(TestCaseReviewExample example); + + int deleteByPrimaryKey(String id); + + int insert(TestCaseReview record); + + int insertSelective(TestCaseReview record); + + List selectByExampleWithBLOBs(TestCaseReviewExample example); + + List selectByExample(TestCaseReviewExample example); + + TestCaseReview selectByPrimaryKey(String id); + + int updateByExampleSelective(@Param("record") TestCaseReview record, @Param("example") TestCaseReviewExample example); + + int updateByExampleWithBLOBs(@Param("record") TestCaseReview record, @Param("example") TestCaseReviewExample example); + + int updateByExample(@Param("record") TestCaseReview record, @Param("example") TestCaseReviewExample example); + + int updateByPrimaryKeySelective(TestCaseReview record); + + int updateByPrimaryKeyWithBLOBs(TestCaseReview record); + + int updateByPrimaryKey(TestCaseReview record); +} \ No newline at end of file diff --git a/backend/src/main/java/io/metersphere/base/mapper/TestCaseReviewMapper.xml b/backend/src/main/java/io/metersphere/base/mapper/TestCaseReviewMapper.xml new file mode 100644 index 0000000000..54c5352f42 --- /dev/null +++ b/backend/src/main/java/io/metersphere/base/mapper/TestCaseReviewMapper.xml @@ -0,0 +1,304 @@ + + + + + + + + + + + + + + + + + + + + + + + + and ${criterion.condition} + + + and ${criterion.condition} #{criterion.value} + + + and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} + + + and ${criterion.condition} + + #{listItem} + + + + + + + + + + + + + + + + + + and ${criterion.condition} + + + and ${criterion.condition} #{criterion.value} + + + and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} + + + and ${criterion.condition} + + #{listItem} + + + + + + + + + + + id, `name`, creator, `status`, create_time, update_time, end_time + + + description + + + + + + delete from test_case_review + where id = #{id,jdbcType=VARCHAR} + + + delete from test_case_review + + + + + + insert into test_case_review (id, `name`, creator, + `status`, create_time, update_time, + end_time, description) + values (#{id,jdbcType=VARCHAR}, #{name,jdbcType=VARCHAR}, #{creator,jdbcType=VARCHAR}, + #{status,jdbcType=VARCHAR}, #{createTime,jdbcType=BIGINT}, #{updateTime,jdbcType=BIGINT}, + #{endTime,jdbcType=BIGINT}, #{description,jdbcType=LONGVARCHAR}) + + + insert into test_case_review + + + id, + + + `name`, + + + creator, + + + `status`, + + + create_time, + + + update_time, + + + end_time, + + + description, + + + + + #{id,jdbcType=VARCHAR}, + + + #{name,jdbcType=VARCHAR}, + + + #{creator,jdbcType=VARCHAR}, + + + #{status,jdbcType=VARCHAR}, + + + #{createTime,jdbcType=BIGINT}, + + + #{updateTime,jdbcType=BIGINT}, + + + #{endTime,jdbcType=BIGINT}, + + + #{description,jdbcType=LONGVARCHAR}, + + + + + + update test_case_review + + + id = #{record.id,jdbcType=VARCHAR}, + + + `name` = #{record.name,jdbcType=VARCHAR}, + + + creator = #{record.creator,jdbcType=VARCHAR}, + + + `status` = #{record.status,jdbcType=VARCHAR}, + + + create_time = #{record.createTime,jdbcType=BIGINT}, + + + update_time = #{record.updateTime,jdbcType=BIGINT}, + + + end_time = #{record.endTime,jdbcType=BIGINT}, + + + description = #{record.description,jdbcType=LONGVARCHAR}, + + + + + + + + update test_case_review + set id = #{record.id,jdbcType=VARCHAR}, + `name` = #{record.name,jdbcType=VARCHAR}, + creator = #{record.creator,jdbcType=VARCHAR}, + `status` = #{record.status,jdbcType=VARCHAR}, + create_time = #{record.createTime,jdbcType=BIGINT}, + update_time = #{record.updateTime,jdbcType=BIGINT}, + end_time = #{record.endTime,jdbcType=BIGINT}, + description = #{record.description,jdbcType=LONGVARCHAR} + + + + + + update test_case_review + set id = #{record.id,jdbcType=VARCHAR}, + `name` = #{record.name,jdbcType=VARCHAR}, + creator = #{record.creator,jdbcType=VARCHAR}, + `status` = #{record.status,jdbcType=VARCHAR}, + create_time = #{record.createTime,jdbcType=BIGINT}, + update_time = #{record.updateTime,jdbcType=BIGINT}, + end_time = #{record.endTime,jdbcType=BIGINT} + + + + + + update test_case_review + + + `name` = #{name,jdbcType=VARCHAR}, + + + creator = #{creator,jdbcType=VARCHAR}, + + + `status` = #{status,jdbcType=VARCHAR}, + + + create_time = #{createTime,jdbcType=BIGINT}, + + + update_time = #{updateTime,jdbcType=BIGINT}, + + + end_time = #{endTime,jdbcType=BIGINT}, + + + description = #{description,jdbcType=LONGVARCHAR}, + + + where id = #{id,jdbcType=VARCHAR} + + + update test_case_review + set `name` = #{name,jdbcType=VARCHAR}, + creator = #{creator,jdbcType=VARCHAR}, + `status` = #{status,jdbcType=VARCHAR}, + create_time = #{createTime,jdbcType=BIGINT}, + update_time = #{updateTime,jdbcType=BIGINT}, + end_time = #{endTime,jdbcType=BIGINT}, + description = #{description,jdbcType=LONGVARCHAR} + where id = #{id,jdbcType=VARCHAR} + + + update test_case_review + set `name` = #{name,jdbcType=VARCHAR}, + creator = #{creator,jdbcType=VARCHAR}, + `status` = #{status,jdbcType=VARCHAR}, + create_time = #{createTime,jdbcType=BIGINT}, + update_time = #{updateTime,jdbcType=BIGINT}, + end_time = #{endTime,jdbcType=BIGINT} + where id = #{id,jdbcType=VARCHAR} + + \ No newline at end of file diff --git a/backend/src/main/java/io/metersphere/base/mapper/TestCaseReviewProjectMapper.java b/backend/src/main/java/io/metersphere/base/mapper/TestCaseReviewProjectMapper.java new file mode 100644 index 0000000000..840b7287c2 --- /dev/null +++ b/backend/src/main/java/io/metersphere/base/mapper/TestCaseReviewProjectMapper.java @@ -0,0 +1,22 @@ +package io.metersphere.base.mapper; + +import io.metersphere.base.domain.TestCaseReviewProject; +import io.metersphere.base.domain.TestCaseReviewProjectExample; +import java.util.List; +import org.apache.ibatis.annotations.Param; + +public interface TestCaseReviewProjectMapper { + long countByExample(TestCaseReviewProjectExample example); + + int deleteByExample(TestCaseReviewProjectExample example); + + int insert(TestCaseReviewProject record); + + int insertSelective(TestCaseReviewProject record); + + List selectByExample(TestCaseReviewProjectExample example); + + int updateByExampleSelective(@Param("record") TestCaseReviewProject record, @Param("example") TestCaseReviewProjectExample example); + + int updateByExample(@Param("record") TestCaseReviewProject record, @Param("example") TestCaseReviewProjectExample example); +} \ No newline at end of file diff --git a/backend/src/main/java/io/metersphere/base/mapper/TestCaseReviewProjectMapper.xml b/backend/src/main/java/io/metersphere/base/mapper/TestCaseReviewProjectMapper.xml new file mode 100644 index 0000000000..8c8bb30db8 --- /dev/null +++ b/backend/src/main/java/io/metersphere/base/mapper/TestCaseReviewProjectMapper.xml @@ -0,0 +1,140 @@ + + + + + + + + + + + + + + + + and ${criterion.condition} + + + and ${criterion.condition} #{criterion.value} + + + and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} + + + and ${criterion.condition} + + #{listItem} + + + + + + + + + + + + + + + + + + and ${criterion.condition} + + + and ${criterion.condition} #{criterion.value} + + + and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} + + + and ${criterion.condition} + + #{listItem} + + + + + + + + + + + review_id, project_id + + + + delete from test_case_review_project + + + + + + insert into test_case_review_project (review_id, project_id) + values (#{reviewId,jdbcType=VARCHAR}, #{projectId,jdbcType=VARCHAR}) + + + insert into test_case_review_project + + + review_id, + + + project_id, + + + + + #{reviewId,jdbcType=VARCHAR}, + + + #{projectId,jdbcType=VARCHAR}, + + + + + + update test_case_review_project + + + review_id = #{record.reviewId,jdbcType=VARCHAR}, + + + project_id = #{record.projectId,jdbcType=VARCHAR}, + + + + + + + + update test_case_review_project + set review_id = #{record.reviewId,jdbcType=VARCHAR}, + project_id = #{record.projectId,jdbcType=VARCHAR} + + + + + \ No newline at end of file diff --git a/backend/src/main/java/io/metersphere/base/mapper/TestCaseReviewTestCaseMapper.java b/backend/src/main/java/io/metersphere/base/mapper/TestCaseReviewTestCaseMapper.java new file mode 100644 index 0000000000..1edffb5ea7 --- /dev/null +++ b/backend/src/main/java/io/metersphere/base/mapper/TestCaseReviewTestCaseMapper.java @@ -0,0 +1,30 @@ +package io.metersphere.base.mapper; + +import io.metersphere.base.domain.TestCaseReviewTestCase; +import io.metersphere.base.domain.TestCaseReviewTestCaseExample; +import java.util.List; +import org.apache.ibatis.annotations.Param; + +public interface TestCaseReviewTestCaseMapper { + long countByExample(TestCaseReviewTestCaseExample example); + + int deleteByExample(TestCaseReviewTestCaseExample example); + + int deleteByPrimaryKey(String id); + + int insert(TestCaseReviewTestCase record); + + int insertSelective(TestCaseReviewTestCase record); + + List selectByExample(TestCaseReviewTestCaseExample example); + + TestCaseReviewTestCase selectByPrimaryKey(String id); + + int updateByExampleSelective(@Param("record") TestCaseReviewTestCase record, @Param("example") TestCaseReviewTestCaseExample example); + + int updateByExample(@Param("record") TestCaseReviewTestCase record, @Param("example") TestCaseReviewTestCaseExample example); + + int updateByPrimaryKeySelective(TestCaseReviewTestCase record); + + int updateByPrimaryKey(TestCaseReviewTestCase record); +} \ No newline at end of file diff --git a/backend/src/main/java/io/metersphere/base/mapper/TestCaseReviewTestCaseMapper.xml b/backend/src/main/java/io/metersphere/base/mapper/TestCaseReviewTestCaseMapper.xml new file mode 100644 index 0000000000..e04fd76189 --- /dev/null +++ b/backend/src/main/java/io/metersphere/base/mapper/TestCaseReviewTestCaseMapper.xml @@ -0,0 +1,258 @@ + + + + + + + + + + + + + + + + + + + + + + and ${criterion.condition} + + + and ${criterion.condition} #{criterion.value} + + + and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} + + + and ${criterion.condition} + + #{listItem} + + + + + + + + + + + + + + + + + + and ${criterion.condition} + + + and ${criterion.condition} #{criterion.value} + + + and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} + + + and ${criterion.condition} + + #{listItem} + + + + + + + + + + + id, review_id, case_id, `status`, `result`, reviewer, create_time, update_time + + + + + delete from test_case_review_test_case + where id = #{id,jdbcType=VARCHAR} + + + delete from test_case_review_test_case + + + + + + insert into test_case_review_test_case (id, review_id, case_id, + `status`, `result`, reviewer, + create_time, update_time) + values (#{id,jdbcType=VARCHAR}, #{reviewId,jdbcType=VARCHAR}, #{caseId,jdbcType=VARCHAR}, + #{status,jdbcType=VARCHAR}, #{result,jdbcType=VARCHAR}, #{reviewer,jdbcType=VARCHAR}, + #{createTime,jdbcType=BIGINT}, #{updateTime,jdbcType=BIGINT}) + + + insert into test_case_review_test_case + + + id, + + + review_id, + + + case_id, + + + `status`, + + + `result`, + + + reviewer, + + + create_time, + + + update_time, + + + + + #{id,jdbcType=VARCHAR}, + + + #{reviewId,jdbcType=VARCHAR}, + + + #{caseId,jdbcType=VARCHAR}, + + + #{status,jdbcType=VARCHAR}, + + + #{result,jdbcType=VARCHAR}, + + + #{reviewer,jdbcType=VARCHAR}, + + + #{createTime,jdbcType=BIGINT}, + + + #{updateTime,jdbcType=BIGINT}, + + + + + + update test_case_review_test_case + + + id = #{record.id,jdbcType=VARCHAR}, + + + review_id = #{record.reviewId,jdbcType=VARCHAR}, + + + case_id = #{record.caseId,jdbcType=VARCHAR}, + + + `status` = #{record.status,jdbcType=VARCHAR}, + + + `result` = #{record.result,jdbcType=VARCHAR}, + + + reviewer = #{record.reviewer,jdbcType=VARCHAR}, + + + create_time = #{record.createTime,jdbcType=BIGINT}, + + + update_time = #{record.updateTime,jdbcType=BIGINT}, + + + + + + + + update test_case_review_test_case + set id = #{record.id,jdbcType=VARCHAR}, + review_id = #{record.reviewId,jdbcType=VARCHAR}, + case_id = #{record.caseId,jdbcType=VARCHAR}, + `status` = #{record.status,jdbcType=VARCHAR}, + `result` = #{record.result,jdbcType=VARCHAR}, + reviewer = #{record.reviewer,jdbcType=VARCHAR}, + create_time = #{record.createTime,jdbcType=BIGINT}, + update_time = #{record.updateTime,jdbcType=BIGINT} + + + + + + update test_case_review_test_case + + + review_id = #{reviewId,jdbcType=VARCHAR}, + + + case_id = #{caseId,jdbcType=VARCHAR}, + + + `status` = #{status,jdbcType=VARCHAR}, + + + `result` = #{result,jdbcType=VARCHAR}, + + + reviewer = #{reviewer,jdbcType=VARCHAR}, + + + create_time = #{createTime,jdbcType=BIGINT}, + + + update_time = #{updateTime,jdbcType=BIGINT}, + + + where id = #{id,jdbcType=VARCHAR} + + + update test_case_review_test_case + set review_id = #{reviewId,jdbcType=VARCHAR}, + case_id = #{caseId,jdbcType=VARCHAR}, + `status` = #{status,jdbcType=VARCHAR}, + `result` = #{result,jdbcType=VARCHAR}, + reviewer = #{reviewer,jdbcType=VARCHAR}, + create_time = #{createTime,jdbcType=BIGINT}, + update_time = #{updateTime,jdbcType=BIGINT} + where id = #{id,jdbcType=VARCHAR} + + \ No newline at end of file diff --git a/backend/src/main/java/io/metersphere/base/mapper/TestCaseReviewUsersMapper.java b/backend/src/main/java/io/metersphere/base/mapper/TestCaseReviewUsersMapper.java new file mode 100644 index 0000000000..42920bf3ff --- /dev/null +++ b/backend/src/main/java/io/metersphere/base/mapper/TestCaseReviewUsersMapper.java @@ -0,0 +1,22 @@ +package io.metersphere.base.mapper; + +import io.metersphere.base.domain.TestCaseReviewUsers; +import io.metersphere.base.domain.TestCaseReviewUsersExample; +import java.util.List; +import org.apache.ibatis.annotations.Param; + +public interface TestCaseReviewUsersMapper { + long countByExample(TestCaseReviewUsersExample example); + + int deleteByExample(TestCaseReviewUsersExample example); + + int insert(TestCaseReviewUsers record); + + int insertSelective(TestCaseReviewUsers record); + + List selectByExample(TestCaseReviewUsersExample example); + + int updateByExampleSelective(@Param("record") TestCaseReviewUsers record, @Param("example") TestCaseReviewUsersExample example); + + int updateByExample(@Param("record") TestCaseReviewUsers record, @Param("example") TestCaseReviewUsersExample example); +} \ No newline at end of file diff --git a/backend/src/main/java/io/metersphere/base/mapper/TestCaseReviewUsersMapper.xml b/backend/src/main/java/io/metersphere/base/mapper/TestCaseReviewUsersMapper.xml new file mode 100644 index 0000000000..ca035d005d --- /dev/null +++ b/backend/src/main/java/io/metersphere/base/mapper/TestCaseReviewUsersMapper.xml @@ -0,0 +1,140 @@ + + + + + + + + + + + + + + + + and ${criterion.condition} + + + and ${criterion.condition} #{criterion.value} + + + and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} + + + and ${criterion.condition} + + #{listItem} + + + + + + + + + + + + + + + + + + and ${criterion.condition} + + + and ${criterion.condition} #{criterion.value} + + + and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} + + + and ${criterion.condition} + + #{listItem} + + + + + + + + + + + review_id, user_id + + + + delete from test_case_review_users + + + + + + insert into test_case_review_users (review_id, user_id) + values (#{reviewId,jdbcType=VARCHAR}, #{userId,jdbcType=VARCHAR}) + + + insert into test_case_review_users + + + review_id, + + + user_id, + + + + + #{reviewId,jdbcType=VARCHAR}, + + + #{userId,jdbcType=VARCHAR}, + + + + + + update test_case_review_users + + + review_id = #{record.reviewId,jdbcType=VARCHAR}, + + + user_id = #{record.userId,jdbcType=VARCHAR}, + + + + + + + + update test_case_review_users + set review_id = #{record.reviewId,jdbcType=VARCHAR}, + user_id = #{record.userId,jdbcType=VARCHAR} + + + + + \ No newline at end of file diff --git a/backend/src/main/java/io/metersphere/base/mapper/ext/ExtTestCaseReviewMapper.java b/backend/src/main/java/io/metersphere/base/mapper/ext/ExtTestCaseReviewMapper.java new file mode 100644 index 0000000000..071827642b --- /dev/null +++ b/backend/src/main/java/io/metersphere/base/mapper/ext/ExtTestCaseReviewMapper.java @@ -0,0 +1,14 @@ +package io.metersphere.base.mapper.ext; + +import io.metersphere.track.dto.TestCaseReviewDTO; +import io.metersphere.track.request.testreview.QueryCaseReviewRequest; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +public interface ExtTestCaseReviewMapper { + + List list(@Param("request") QueryCaseReviewRequest params); + + List listByWorkspaceId(@Param("workspaceId") String workspaceId); +} diff --git a/backend/src/main/java/io/metersphere/base/mapper/ext/ExtTestCaseReviewMapper.xml b/backend/src/main/java/io/metersphere/base/mapper/ext/ExtTestCaseReviewMapper.xml new file mode 100644 index 0000000000..7c1d2986ce --- /dev/null +++ b/backend/src/main/java/io/metersphere/base/mapper/ext/ExtTestCaseReviewMapper.xml @@ -0,0 +1,30 @@ + + + + + + + + \ No newline at end of file diff --git a/backend/src/main/java/io/metersphere/commons/constants/TestCaseReviewStatus.java b/backend/src/main/java/io/metersphere/commons/constants/TestCaseReviewStatus.java new file mode 100644 index 0000000000..2903628417 --- /dev/null +++ b/backend/src/main/java/io/metersphere/commons/constants/TestCaseReviewStatus.java @@ -0,0 +1,5 @@ +package io.metersphere.commons.constants; + +public enum TestCaseReviewStatus { + Prepare, Underway, Completed +} diff --git a/backend/src/main/java/io/metersphere/track/controller/TestCaseReviewController.java b/backend/src/main/java/io/metersphere/track/controller/TestCaseReviewController.java new file mode 100644 index 0000000000..211c63a4f9 --- /dev/null +++ b/backend/src/main/java/io/metersphere/track/controller/TestCaseReviewController.java @@ -0,0 +1,73 @@ +package io.metersphere.track.controller; + +import com.github.pagehelper.Page; +import com.github.pagehelper.PageHelper; +import io.metersphere.base.domain.Project; +import io.metersphere.base.domain.TestCaseReview; +import io.metersphere.base.domain.User; +import io.metersphere.commons.constants.RoleConstants; +import io.metersphere.commons.utils.PageUtils; +import io.metersphere.commons.utils.Pager; +import io.metersphere.commons.utils.SessionUtils; +import io.metersphere.track.dto.TestCaseReviewDTO; +import io.metersphere.track.request.testreview.QueryCaseReviewRequest; +import io.metersphere.track.request.testreview.SaveTestCaseReviewRequest; +import io.metersphere.track.service.TestCaseReviewService; +import org.apache.shiro.authz.annotation.Logical; +import org.apache.shiro.authz.annotation.RequiresRoles; +import org.springframework.web.bind.annotation.*; +import javax.annotation.Resource; +import java.util.List; + +@RequestMapping("/test/case/review") +@RestController +public class TestCaseReviewController { + + @Resource + TestCaseReviewService testCaseReviewService; + + @PostMapping("/list/{goPage}/{pageSize}") + @RequiresRoles(value = {RoleConstants.TEST_USER, RoleConstants.TEST_MANAGER}, logical = Logical.OR) + public Pager> list(@PathVariable int goPage, @PathVariable int pageSize, @RequestBody QueryCaseReviewRequest request) { + Page page = PageHelper.startPage(goPage, pageSize, true); + return PageUtils.setPageInfo(page, testCaseReviewService.listCaseReview(request)); + } + + @PostMapping("/save") + @RequiresRoles(value = {RoleConstants.TEST_USER, RoleConstants.TEST_MANAGER}, logical = Logical.OR) + public void saveCaseReview(@RequestBody SaveTestCaseReviewRequest reviewRequest) { + testCaseReviewService.saveTestCaseReview(reviewRequest); + } + + @PostMapping("/project") + @RequiresRoles(value = {RoleConstants.TEST_USER, RoleConstants.TEST_MANAGER}, logical = Logical.OR) + public List getProjectByReviewId(@RequestBody TestCaseReview request) { + return testCaseReviewService.getProjectByReviewId(request); + } + + @PostMapping("/reviewer") + @RequiresRoles(value = {RoleConstants.TEST_USER, RoleConstants.TEST_MANAGER}, logical = Logical.OR) + public List getUserByReviewId(@RequestBody TestCaseReview request) { + return testCaseReviewService.getUserByReviewId(request); + } + + @GetMapping("/recent/{count}") + @RequiresRoles(value = {RoleConstants.TEST_USER, RoleConstants.TEST_MANAGER}, logical = Logical.OR) + public List recentTestPlans(@PathVariable int count) { + String currentWorkspaceId = SessionUtils.getCurrentWorkspaceId(); + PageHelper.startPage(1, count, true); + return testCaseReviewService.recent(currentWorkspaceId); + } + + @PostMapping("/edit") + @RequiresRoles(value = {RoleConstants.TEST_USER, RoleConstants.TEST_MANAGER}, logical = Logical.OR) + public void editCaseReview(@RequestBody TestCaseReview testCaseReview) { + testCaseReviewService.editCaseReview(testCaseReview); + } + + @GetMapping("/delete/{reviewId}") + @RequiresRoles(value = {RoleConstants.TEST_USER, RoleConstants.TEST_MANAGER}, logical = Logical.OR) + public void deleteCaseReview(@PathVariable String reviewId) { + testCaseReviewService.deleteCaseReview(reviewId); + } +} diff --git a/backend/src/main/java/io/metersphere/track/dto/TestCaseReviewDTO.java b/backend/src/main/java/io/metersphere/track/dto/TestCaseReviewDTO.java new file mode 100644 index 0000000000..5e85f82850 --- /dev/null +++ b/backend/src/main/java/io/metersphere/track/dto/TestCaseReviewDTO.java @@ -0,0 +1,13 @@ +package io.metersphere.track.dto; + +import io.metersphere.base.domain.TestCaseReview; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class TestCaseReviewDTO extends TestCaseReview { + + private String projectName; + private String reviewerName; +} diff --git a/backend/src/main/java/io/metersphere/track/request/testreview/QueryCaseReviewRequest.java b/backend/src/main/java/io/metersphere/track/request/testreview/QueryCaseReviewRequest.java new file mode 100644 index 0000000000..d93f0c54c7 --- /dev/null +++ b/backend/src/main/java/io/metersphere/track/request/testreview/QueryCaseReviewRequest.java @@ -0,0 +1,14 @@ +package io.metersphere.track.request.testreview; + +import io.metersphere.base.domain.TestCaseReview; +import io.metersphere.controller.request.OrderRequest; +import lombok.Getter; +import lombok.Setter; + +import java.util.List; + +@Getter +@Setter +public class QueryCaseReviewRequest extends TestCaseReview { + private List orders; +} diff --git a/backend/src/main/java/io/metersphere/track/request/testreview/SaveTestCaseReviewRequest.java b/backend/src/main/java/io/metersphere/track/request/testreview/SaveTestCaseReviewRequest.java new file mode 100644 index 0000000000..32efe54542 --- /dev/null +++ b/backend/src/main/java/io/metersphere/track/request/testreview/SaveTestCaseReviewRequest.java @@ -0,0 +1,14 @@ +package io.metersphere.track.request.testreview; + +import io.metersphere.base.domain.TestCaseReview; +import lombok.Getter; +import lombok.Setter; + +import java.util.List; + +@Getter +@Setter +public class SaveTestCaseReviewRequest extends TestCaseReview { + private List projectIds; + private List userIds; +} diff --git a/backend/src/main/java/io/metersphere/track/service/TestCaseReviewService.java b/backend/src/main/java/io/metersphere/track/service/TestCaseReviewService.java new file mode 100644 index 0000000000..acf0e76f53 --- /dev/null +++ b/backend/src/main/java/io/metersphere/track/service/TestCaseReviewService.java @@ -0,0 +1,150 @@ +package io.metersphere.track.service; + +import io.metersphere.base.domain.*; +import io.metersphere.base.mapper.*; +import io.metersphere.base.mapper.ext.ExtTestCaseReviewMapper; +import io.metersphere.commons.constants.TestCaseReviewStatus; +import io.metersphere.commons.exception.MSException; +import io.metersphere.commons.utils.ServiceUtils; +import io.metersphere.commons.utils.SessionUtils; +import io.metersphere.track.dto.TestCaseReviewDTO; +import io.metersphere.track.request.testreview.QueryCaseReviewRequest; +import io.metersphere.track.request.testreview.SaveTestCaseReviewRequest; +import org.apache.commons.lang3.StringUtils; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import javax.annotation.Resource; +import java.util.List; +import java.util.UUID; +import java.util.stream.Collectors; + +@Service +@Transactional(rollbackFor = Exception.class) +public class TestCaseReviewService { + + @Resource + private TestCaseReviewProjectMapper testCaseReviewProjectMapper; + @Resource + private TestCaseReviewUsersMapper testCaseReviewUsersMapper; + @Resource + private TestCaseReviewMapper testCaseReviewMapper; + @Resource + private ExtTestCaseReviewMapper extTestCaseReviewMapper; + @Resource + private ProjectMapper projectMapper; + @Resource + private UserMapper userMapper; + + public void saveTestCaseReview(SaveTestCaseReviewRequest reviewRequest) { + checkCaseReviewExist(reviewRequest); + + String reviewId = UUID.randomUUID().toString(); + List projectIds = reviewRequest.getProjectIds(); + List userIds = reviewRequest.getUserIds(); + + projectIds.forEach(projectId -> { + TestCaseReviewProject testCaseReviewProject = new TestCaseReviewProject(); + testCaseReviewProject.setProjectId(projectId); + testCaseReviewProject.setReviewId(reviewId); + testCaseReviewProjectMapper.insertSelective(testCaseReviewProject); + }); + + userIds.forEach(userId -> { + TestCaseReviewUsers testCaseReviewUsers = new TestCaseReviewUsers(); + testCaseReviewUsers.setReviewId(reviewId); + testCaseReviewUsers.setUserId(userId); + testCaseReviewUsersMapper.insert(testCaseReviewUsers); + }); + + reviewRequest.setId(reviewId); + reviewRequest.setCreateTime(System.currentTimeMillis()); + reviewRequest.setUpdateTime(System.currentTimeMillis()); + reviewRequest.setCreator(SessionUtils.getUser().getId()); + reviewRequest.setStatus(TestCaseReviewStatus.Prepare.name()); + testCaseReviewMapper.insert(reviewRequest); + } + + public List listCaseReview(QueryCaseReviewRequest request) { + request.setOrders(ServiceUtils.getDefaultOrder(request.getOrders())); + return extTestCaseReviewMapper.list(request); + } + + public List getProjectByReviewId(TestCaseReview request) { + String reviewId = request.getId(); + + TestCaseReviewProjectExample testCaseReviewProjectExample = new TestCaseReviewProjectExample(); + testCaseReviewProjectExample.createCriteria().andReviewIdEqualTo(reviewId); + List testCaseReviewProject = testCaseReviewProjectMapper.selectByExample(testCaseReviewProjectExample); + + List projectIds = testCaseReviewProject + .stream() + .map(TestCaseReviewProject::getProjectId) + .collect(Collectors.toList()); + + ProjectExample projectExample = new ProjectExample(); + projectExample.createCriteria().andIdIn(projectIds); + return projectMapper.selectByExample(projectExample); + } + + public List getUserByReviewId(TestCaseReview request) { + String reviewId = request.getId(); + + TestCaseReviewUsersExample testCaseReviewUsersExample = new TestCaseReviewUsersExample(); + testCaseReviewUsersExample.createCriteria().andReviewIdEqualTo(reviewId); + List testCaseReviewUsers = testCaseReviewUsersMapper.selectByExample(testCaseReviewUsersExample); + + List userIds = testCaseReviewUsers + .stream() + .map(TestCaseReviewUsers::getUserId) + .collect(Collectors.toList()); + + UserExample userExample = new UserExample(); + userExample.createCriteria().andIdIn(userIds); + return userMapper.selectByExample(userExample); + } + + public List recent(String currentWorkspaceId) { + return extTestCaseReviewMapper.listByWorkspaceId(currentWorkspaceId); + } + + public void editCaseReview(TestCaseReview testCaseReview) { + testCaseReview.setUpdateTime(System.currentTimeMillis()); + checkCaseReviewExist(testCaseReview); + testCaseReviewMapper.updateByPrimaryKeySelective(testCaseReview); + } + + private void checkCaseReviewExist(TestCaseReview testCaseReview) { + if (testCaseReview.getName() != null) { + TestCaseReviewExample example = new TestCaseReviewExample(); + TestCaseReviewExample.Criteria criteria = example + .createCriteria() + .andNameEqualTo(testCaseReview.getName()); + + if (StringUtils.isNotBlank(testCaseReview.getId())) { + criteria.andIdNotEqualTo(testCaseReview.getId()); + } + + if (testCaseReviewMapper.selectByExample(example).size() > 0) { + MSException.throwException("评审名称已存在"); + } + } + } + + public void deleteCaseReview(String reviewId) { + deleteCaseReviewProject(reviewId); + deleteCaseReviewUsers(reviewId); + testCaseReviewMapper.deleteByPrimaryKey(reviewId); + } + + private void deleteCaseReviewProject(String reviewId) { + TestCaseReviewProjectExample testCaseReviewProjectExample = new TestCaseReviewProjectExample(); + testCaseReviewProjectExample.createCriteria().andReviewIdEqualTo(reviewId); + testCaseReviewProjectMapper.deleteByExample(testCaseReviewProjectExample); + } + + private void deleteCaseReviewUsers(String reviewId) { + TestCaseReviewUsersExample testCaseReviewUsersExample = new TestCaseReviewUsersExample(); + testCaseReviewUsersExample.createCriteria().andReviewIdEqualTo(reviewId); + testCaseReviewUsersMapper.deleteByExample(testCaseReviewUsersExample); + } +} diff --git a/backend/src/main/java/io/metersphere/xpack b/backend/src/main/java/io/metersphere/xpack index d5b4969642..b72b002a16 160000 --- a/backend/src/main/java/io/metersphere/xpack +++ b/backend/src/main/java/io/metersphere/xpack @@ -1 +1 @@ -Subproject commit d5b4969642fd8d10cc2f949d7377e0a0e5217a3a +Subproject commit b72b002a16d72cb3674d4d4dc4e48027693fdf7e diff --git a/frontend/src/business/components/api/test/ApiTestConfig.vue b/frontend/src/business/components/api/test/ApiTestConfig.vue index d937b9e94d..9d90a5b12d 100644 --- a/frontend/src/business/components/api/test/ApiTestConfig.vue +++ b/frontend/src/business/components/api/test/ApiTestConfig.vue @@ -292,7 +292,8 @@ export default { }); }, cancel() { - this.$router.push('/api/test/list/all'); + console.log(this.test.toJMX().xml) + // this.$router.push('/api/test/list/all'); }, handleCommand(command) { switch (command) { diff --git a/frontend/src/business/components/api/test/components/request/ApiRequestConfig.vue b/frontend/src/business/components/api/test/components/request/ApiRequestConfig.vue index a43739cd45..f90f90a9f8 100644 --- a/frontend/src/business/components/api/test/components/request/ApiRequestConfig.vue +++ b/frontend/src/business/components/api/test/components/request/ApiRequestConfig.vue @@ -4,6 +4,7 @@ :disabled="isReference">
+
{{ request.showType() }} @@ -32,6 +33,12 @@ :command="{type: 'enable', index: index}"> {{ $t('api_test.scenario.enable') }} + + {{ $t('api_test.request.condition') }} + + + {{ $t('api_test.request.wait') }} +
@@ -47,18 +54,22 @@ - + +
+ + diff --git a/frontend/src/business/components/api/test/components/request/condition/ConstantTimer.vue b/frontend/src/business/components/api/test/components/request/condition/ConstantTimer.vue new file mode 100644 index 0000000000..4492f9f125 --- /dev/null +++ b/frontend/src/business/components/api/test/components/request/condition/ConstantTimer.vue @@ -0,0 +1,54 @@ + + + + + diff --git a/frontend/src/business/components/api/test/components/request/condition/IfController.vue b/frontend/src/business/components/api/test/components/request/condition/IfController.vue new file mode 100644 index 0000000000..e8827281cd --- /dev/null +++ b/frontend/src/business/components/api/test/components/request/condition/IfController.vue @@ -0,0 +1,88 @@ + + + + + diff --git a/frontend/src/business/components/api/test/model/JMX.js b/frontend/src/business/components/api/test/model/JMX.js index 22d41dfea8..6aafa738d3 100644 --- a/frontend/src/business/components/api/test/model/JMX.js +++ b/frontend/src/business/components/api/test/model/JMX.js @@ -513,6 +513,25 @@ export class BeanShellPostProcessor extends BeanShellProcessor { } } +export class IfController extends DefaultTestElement { + constructor(testName, controller = {}) { + super('IfController', 'IfControllerPanel', 'IfController', testName); + + this.stringProp('IfController.comments', controller.comments); + this.stringProp('IfController.condition', controller.condition); + this.boolProp('IfController.evaluateAll', controller.evaluateAll, false); + this.boolProp('IfController.useExpression', controller.useExpression, true); + } +} + +export class ConstantTimer extends DefaultTestElement { + constructor(testName, timer = {}) { + super('ConstantTimer', 'ConstantTimerGui', 'ConstantTimer', testName); + + this.stringProp('ConstantTimer.delay', timer.delay); + } +} + export class HeaderManager extends DefaultTestElement { constructor(testName, headers) { super('HeaderManager', 'HeaderPanel', 'HeaderManager', testName); diff --git a/frontend/src/business/components/api/test/model/ScenarioModel.js b/frontend/src/business/components/api/test/model/ScenarioModel.js index 8f8035efd7..22a0296fd2 100644 --- a/frontend/src/business/components/api/test/model/ScenarioModel.js +++ b/frontend/src/business/components/api/test/model/ScenarioModel.js @@ -1,5 +1,5 @@ import { - Arguments, BeanShellPostProcessor, BeanShellPreProcessor, + Arguments, CookieManager, DNSCacheManager, DubboSample, @@ -7,10 +7,15 @@ import { Element, HashTree, HeaderManager, + HTTPSamplerArguments, + HTTPsamplerFiles, + HTTPSamplerProxy, HTTPSamplerArguments, HTTPsamplerFiles, HTTPSamplerProxy, JDBCDataSource, JDBCSampler, JSONPathAssertion, - JSONPostProcessor, JSR223PostProcessor, JSR223PreProcessor, + JSONPostProcessor, + JSR223PostProcessor, + JSR223PreProcessor, RegexExtractor, ResponseCodeAssertion, ResponseDataAssertion, @@ -19,6 +24,8 @@ import { TestPlan, ThreadGroup, XPath2Extractor, + IfController as JMXIfController, + ConstantTimer as JMXConstantTimer, } from "./JMX"; import Mock from "mockjs"; import {funcFilters} from "@/common/js/func-filter"; @@ -295,9 +302,12 @@ export class RequestFactory { } export class Request extends BaseConfig { - constructor(type) { + constructor(type, options = {}) { super(); this.type = type; + options.id = options.id || uuid(); + options.timer = new ConstantTimer(options.timer); + options.controller = new IfController(options.controller); } showType() { @@ -311,8 +321,7 @@ export class Request extends BaseConfig { export class HttpRequest extends Request { constructor(options) { - super(RequestFactory.TYPES.HTTP); - this.id = undefined; + super(RequestFactory.TYPES.HTTP, options); this.name = undefined; this.url = undefined; this.path = undefined; @@ -339,7 +348,6 @@ export class HttpRequest extends Request { } initOptions(options = {}) { - options.id = options.id || uuid(); options.method = options.method || "GET"; options.body = new Body(options.body); options.assertions = new Assertions(options.assertions); @@ -397,8 +405,7 @@ export class DubboRequest extends Request { } constructor(options = {}) { - super(RequestFactory.TYPES.DUBBO); - this.id = options.id || uuid(); + super(RequestFactory.TYPES.DUBBO, options); this.name = options.name; this.protocol = options.protocol || DubboRequest.PROTOCOLS.DUBBO; this.interface = options.interface; @@ -840,6 +847,77 @@ export class ExtractXPath extends ExtractCommon { } } +export class Controller extends BaseConfig { + static TYPES = { + IF_CONTROLLER: "If Controller", + } + + constructor(type, options = {}) { + super(); + this.type = type + options.id = options.id || uuid(); + options.enable = options.enable || true; + } +} + +export class IfController extends Controller { + constructor(options = {}) { + super(Controller.TYPES.IF_CONTROLLER, options); + this.variable; + this.operator; + this.value; + + this.set(options); + } + + isValid() { + return !!this.variable && !!this.operator && !!this.value; + } + + label() { + if (this.isValid()) { + let label = this.variable; + label += " " + this.operator; + label += " " + this.value; + return label; + } + return ""; + } +} + +export class Timer extends BaseConfig { + static TYPES = { + CONSTANT_TIMER: "Constant Timer", + } + + constructor(type, options = {}) { + super(); + this.type = type; + options.id = options.id || uuid(); + options.enable = options.enable || true; + } +} + +export class ConstantTimer extends Timer { + constructor(options = {}) { + super(Timer.TYPES.CONSTANT_TIMER, options); + this.delay; + + this.set(options); + } + + isValid() { + return this.delay > 0; + } + + label() { + if (this.isValid()) { + return this.delay + " ms"; + } + return ""; + } +} + /** ------------------------------------------------------------------------ **/ const JMX_ASSERTION_CONDITION = { MATCH: 1, @@ -1003,10 +1081,18 @@ class JMXGenerator { this.addJSR223PreProcessor(sampler, request); - threadGroup.put(sampler); + this.addConstantsTimer(sampler, request); + + if (request.controller.isValid() && request.controller.enable) { + if (request.controller instanceof IfController) { + let controller = this.getController(sampler, request); + threadGroup.put(controller); + } + } else { + threadGroup.put(sampler); + } } }) - testPlan.put(threadGroup); } @@ -1123,6 +1209,31 @@ class JMXGenerator { } } + addConstantsTimer(sampler, request) { + if (request.timer.isValid() && request.timer.enable) { + sampler.put(new JMXConstantTimer(request.timer.label(), request.timer)); + } + } + + getController(sampler, request) { + if (request.controller.isValid() && request.controller.enable) { + if (request.controller instanceof IfController) { + let name = request.controller.label(); + let variable = request.controller.variable; + let operator = request.controller.operator; + let value = request.controller.value; + if (operator === "=~" || operator === "!~") { + value = "\".*" + value + ".*\""; + } + + let condition = "${__jexl3(" + variable + operator + value + ")}"; + let controller = new JMXIfController(name, {condition: condition}); + controller.put(sampler); + return controller; + } + } + } + addBodyFormat(request) { let bodyFormat = request.body.format; if (!request.body.isKV() && bodyFormat) { diff --git a/frontend/src/business/components/common/components/MsTipButton.vue b/frontend/src/business/components/common/components/MsTipButton.vue index dfcc4003dc..d5b6030155 100644 --- a/frontend/src/business/components/common/components/MsTipButton.vue +++ b/frontend/src/business/components/common/components/MsTipButton.vue @@ -2,6 +2,7 @@ - + @@ -30,6 +30,16 @@ :title="$t('test_track.case.create_case')"/> + + + + + + + + + @@ -41,7 +51,7 @@ - + @@ -61,6 +71,7 @@ export default { testPlanViewPath: '', isRouterAlive: true, testCaseEditPath: '', + testCaseReviewEditPath: '', testCaseProjectPath: '', isProjectActivation: true, projectRecent: { @@ -82,6 +93,15 @@ export default { router: function (item) { } }, + reviewRecent: { + title: "最近的评审", + url: "/test/case/review/recent/5", + index: function (item) { + return '/test/case/review/' + item.id; + }, + router: function (item) { + } + }, planRecent: { title: this.$t('test_track.recent_plan'), url: "/test/plan/recent/5", diff --git a/frontend/src/business/components/track/review/TestCaseReview.vue b/frontend/src/business/components/track/review/TestCaseReview.vue new file mode 100644 index 0000000000..80f9c5df92 --- /dev/null +++ b/frontend/src/business/components/track/review/TestCaseReview.vue @@ -0,0 +1,63 @@ + + + + + diff --git a/frontend/src/business/components/track/review/components/TestCaseReviewEdit.vue b/frontend/src/business/components/track/review/components/TestCaseReviewEdit.vue new file mode 100644 index 0000000000..7dfc0298b8 --- /dev/null +++ b/frontend/src/business/components/track/review/components/TestCaseReviewEdit.vue @@ -0,0 +1,245 @@ + + + + + + diff --git a/frontend/src/business/components/track/review/components/TestCaseReviewList.vue b/frontend/src/business/components/track/review/components/TestCaseReviewList.vue new file mode 100644 index 0000000000..cf0afb8cc1 --- /dev/null +++ b/frontend/src/business/components/track/review/components/TestCaseReviewList.vue @@ -0,0 +1,227 @@ + + + + + diff --git a/frontend/src/business/components/track/router.js b/frontend/src/business/components/track/router.js index 759af75bd8..336a3fc76a 100644 --- a/frontend/src/business/components/track/router.js +++ b/frontend/src/business/components/track/router.js @@ -4,6 +4,7 @@ const TestTrack = () => import(/* webpackChunkName: "track" */ '@/business/compo const TrackHome = () => import(/* webpackChunkName: "track" */ '@/business/components/track/home/TrackHome') const TestCase = () => import(/* webpackChunkName: "track" */ '@/business/components/track/case/TestCase') const TestPlan = () => import(/* webpackChunkName: "track" */ '@/business/components/track/plan/TestPlan') +const TestCaseReview = () => import(/* webpackChunkName: "track" */ '@/business/components/track/review/TestCaseReview') const TestPlanView = () => import(/* webpackChunkName: "track" */ '@/business/components/track/plan/view/TestPlanView') export default { @@ -53,6 +54,11 @@ export default { path: "project/:type", name: "trackProject", component: MsProject - } + }, + { + path: "review/:type", + name: "testCaseReview", + component: TestCaseReview + }, ] } diff --git a/frontend/src/business/components/xpack b/frontend/src/business/components/xpack index 0a375848d0..2d5807501b 160000 --- a/frontend/src/business/components/xpack +++ b/frontend/src/business/components/xpack @@ -1 +1 @@ -Subproject commit 0a375848d034d20eaf05caf11769e1c75c39235c +Subproject commit 2d5807501b026efc48c309daab988ee0719356d4 diff --git a/frontend/src/i18n/en-US.js b/frontend/src/i18n/en-US.js index dc26cbd7f1..c847c1f461 100644 --- a/frontend/src/i18n/en-US.js +++ b/frontend/src/i18n/en-US.js @@ -150,12 +150,13 @@ export default { lt: "<", le: "<=", equals: "=", + not_equals: "!=", between: "Between", current_user: "Current user" } } }, - license:{ + license: { title: 'Authorization management', corporation: 'corporation', time: 'Authorization time', @@ -444,7 +445,7 @@ export default { test_name: "Test Name", reference: "Reference", clone: "Copy", - cant_reference:'Historical test files, can be referenced after re-saving' + cant_reference: 'Historical test files, can be referenced after re-saving' }, request: { debug: "Debug", @@ -486,6 +487,9 @@ export default { response_timeout: "Response Timeout", follow_redirects: "Follow Redirects", body_upload_limit_size: "The file size does not exceed 500 MB", + condition: "condition", + condition_variable: "Variable, e.g: ${var}", + wait: "wait", assertions: { label: "Assertion", text: "Text", diff --git a/frontend/src/i18n/zh-CN.js b/frontend/src/i18n/zh-CN.js index d1857d72d6..03c58b948c 100644 --- a/frontend/src/i18n/zh-CN.js +++ b/frontend/src/i18n/zh-CN.js @@ -150,12 +150,13 @@ export default { lt: "小于", le: "小于等于", equals: "等于", + not_equals: "不等于", between: "之间", current_user: "是当前用户" } } }, - license:{ + license: { title: '授权管理', corporation: '客户名称', time: '授权时间', @@ -487,6 +488,9 @@ export default { response_timeout: "响应超时", follow_redirects: "跟随重定向", body_upload_limit_size: "上传文件大小不能超过 500 MB!", + condition: "条件", + condition_variable: "变量,例如: ${var}", + wait: "等待", assertions: { label: "断言", text: "文本", diff --git a/frontend/src/i18n/zh-TW.js b/frontend/src/i18n/zh-TW.js index 13897a56bf..5b833eda2d 100644 --- a/frontend/src/i18n/zh-TW.js +++ b/frontend/src/i18n/zh-TW.js @@ -149,6 +149,7 @@ export default { ge: "大於等於", lt: "小於", le: "小於等於", + not_equals: "不等於", equals: "等於", between: "之間", current_user: "是當前用戶" @@ -487,6 +488,9 @@ export default { response_timeout: "響應超時", follow_redirects: "跟隨重定向", body_upload_limit_size: "上傳文件大小不能超過 500 MB!", + condition: "條件", + condition_variable: "變量,例如: ${var}", + wait: "等待", assertions: { label: "斷言", text: "文本",