Merge branch 'v1.3' of https://github.com/metersphere/server into v1.3
This commit is contained in:
commit
02cffc3447
|
@ -16,5 +16,7 @@ public class Notice implements Serializable {
|
|||
|
||||
private String enable;
|
||||
|
||||
private String type;
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
}
|
|
@ -453,6 +453,76 @@ public class NoticeExample {
|
|||
addCriterion("`ENABLE` not between", value1, value2, "enable");
|
||||
return (Criteria) this;
|
||||
}
|
||||
|
||||
public Criteria andTypeIsNull() {
|
||||
addCriterion("`type` is null");
|
||||
return (Criteria) this;
|
||||
}
|
||||
|
||||
public Criteria andTypeIsNotNull() {
|
||||
addCriterion("`type` is not null");
|
||||
return (Criteria) this;
|
||||
}
|
||||
|
||||
public Criteria andTypeEqualTo(String value) {
|
||||
addCriterion("`type` =", value, "type");
|
||||
return (Criteria) this;
|
||||
}
|
||||
|
||||
public Criteria andTypeNotEqualTo(String value) {
|
||||
addCriterion("`type` <>", value, "type");
|
||||
return (Criteria) this;
|
||||
}
|
||||
|
||||
public Criteria andTypeGreaterThan(String value) {
|
||||
addCriterion("`type` >", value, "type");
|
||||
return (Criteria) this;
|
||||
}
|
||||
|
||||
public Criteria andTypeGreaterThanOrEqualTo(String value) {
|
||||
addCriterion("`type` >=", value, "type");
|
||||
return (Criteria) this;
|
||||
}
|
||||
|
||||
public Criteria andTypeLessThan(String value) {
|
||||
addCriterion("`type` <", value, "type");
|
||||
return (Criteria) this;
|
||||
}
|
||||
|
||||
public Criteria andTypeLessThanOrEqualTo(String value) {
|
||||
addCriterion("`type` <=", value, "type");
|
||||
return (Criteria) this;
|
||||
}
|
||||
|
||||
public Criteria andTypeLike(String value) {
|
||||
addCriterion("`type` like", value, "type");
|
||||
return (Criteria) this;
|
||||
}
|
||||
|
||||
public Criteria andTypeNotLike(String value) {
|
||||
addCriterion("`type` not like", value, "type");
|
||||
return (Criteria) this;
|
||||
}
|
||||
|
||||
public Criteria andTypeIn(List<String> values) {
|
||||
addCriterion("`type` in", values, "type");
|
||||
return (Criteria) this;
|
||||
}
|
||||
|
||||
public Criteria andTypeNotIn(List<String> values) {
|
||||
addCriterion("`type` not in", values, "type");
|
||||
return (Criteria) this;
|
||||
}
|
||||
|
||||
public Criteria andTypeBetween(String value1, String value2) {
|
||||
addCriterion("`type` between", value1, value2, "type");
|
||||
return (Criteria) this;
|
||||
}
|
||||
|
||||
public Criteria andTypeNotBetween(String value1, String value2) {
|
||||
addCriterion("`type` not between", value1, value2, "type");
|
||||
return (Criteria) this;
|
||||
}
|
||||
}
|
||||
|
||||
public static class Criteria extends GeneratedCriteria {
|
||||
|
|
|
@ -7,6 +7,7 @@
|
|||
<result column="TEST_ID" jdbcType="VARCHAR" property="testId" />
|
||||
<result column="NAME" jdbcType="VARCHAR" property="name" />
|
||||
<result column="ENABLE" jdbcType="VARCHAR" property="enable" />
|
||||
<result column="type" jdbcType="VARCHAR" property="type" />
|
||||
</resultMap>
|
||||
<sql id="Example_Where_Clause">
|
||||
<where>
|
||||
|
@ -67,7 +68,7 @@
|
|||
</where>
|
||||
</sql>
|
||||
<sql id="Base_Column_List">
|
||||
id, EVENT, TEST_ID, `NAME`, `ENABLE`
|
||||
id, EVENT, TEST_ID, `NAME`, `ENABLE`, `type`
|
||||
</sql>
|
||||
<select id="selectByExample" parameterType="io.metersphere.base.domain.NoticeExample" resultMap="BaseResultMap">
|
||||
select
|
||||
|
@ -84,26 +85,26 @@
|
|||
</if>
|
||||
</select>
|
||||
<select id="selectByPrimaryKey" parameterType="java.lang.String" resultMap="BaseResultMap">
|
||||
SELECT
|
||||
select
|
||||
<include refid="Base_Column_List" />
|
||||
FROM notice
|
||||
WHERE id = #{id,jdbcType=VARCHAR}
|
||||
from notice
|
||||
where id = #{id,jdbcType=VARCHAR}
|
||||
</select>
|
||||
<delete id="deleteByPrimaryKey" parameterType="java.lang.String">
|
||||
DELETE FROM notice
|
||||
WHERE id = #{id,jdbcType=VARCHAR}
|
||||
</delete>
|
||||
<delete id="deleteByExample" parameterType="io.metersphere.base.domain.NoticeExample">
|
||||
DELETE FROM notice
|
||||
delete from notice
|
||||
<if test="_parameter != null">
|
||||
<include refid="Example_Where_Clause" />
|
||||
</if>
|
||||
</delete>
|
||||
<insert id="insert" parameterType="io.metersphere.base.domain.Notice">
|
||||
INSERT INTO notice (id, EVENT, TEST_ID,
|
||||
`NAME`, `ENABLE`)
|
||||
`NAME`, `ENABLE`, `type`)
|
||||
VALUES (#{id,jdbcType=VARCHAR}, #{event,jdbcType=VARCHAR}, #{testId,jdbcType=VARCHAR},
|
||||
#{name,jdbcType=VARCHAR}, #{enable,jdbcType=VARCHAR})
|
||||
#{name,jdbcType=VARCHAR}, #{enable,jdbcType=VARCHAR}, #{type,jdbcType=VARCHAR})
|
||||
</insert>
|
||||
<insert id="insertSelective" parameterType="io.metersphere.base.domain.Notice">
|
||||
insert into notice
|
||||
|
@ -123,6 +124,9 @@
|
|||
<if test="enable != null">
|
||||
`ENABLE`,
|
||||
</if>
|
||||
<if test="type != null">
|
||||
`type`,
|
||||
</if>
|
||||
</trim>
|
||||
<trim prefix="values (" suffix=")" suffixOverrides=",">
|
||||
<if test="id != null">
|
||||
|
@ -140,6 +144,9 @@
|
|||
<if test="enable != null">
|
||||
#{enable,jdbcType=VARCHAR},
|
||||
</if>
|
||||
<if test="type != null">
|
||||
#{type,jdbcType=VARCHAR},
|
||||
</if>
|
||||
</trim>
|
||||
</insert>
|
||||
<select id="countByExample" parameterType="io.metersphere.base.domain.NoticeExample" resultType="java.lang.Long">
|
||||
|
@ -166,24 +173,28 @@
|
|||
<if test="record.enable != null">
|
||||
`ENABLE` = #{record.enable,jdbcType=VARCHAR},
|
||||
</if>
|
||||
<if test="record.type != null">
|
||||
`type` = #{record.type,jdbcType=VARCHAR},
|
||||
</if>
|
||||
</set>
|
||||
<if test="_parameter != null">
|
||||
<include refid="Update_By_Example_Where_Clause" />
|
||||
</if>
|
||||
</update>
|
||||
<update id="updateByExample" parameterType="map">
|
||||
UPDATE notice
|
||||
SET id = #{record.id,jdbcType=VARCHAR},
|
||||
update notice
|
||||
set id = #{record.id,jdbcType=VARCHAR},
|
||||
EVENT = #{record.event,jdbcType=VARCHAR},
|
||||
TEST_ID = #{record.testId,jdbcType=VARCHAR},
|
||||
`NAME` = #{record.name,jdbcType=VARCHAR},
|
||||
`ENABLE` = #{record.enable,jdbcType=VARCHAR}
|
||||
`ENABLE` = #{record.enable,jdbcType=VARCHAR},
|
||||
`type` = #{record.type,jdbcType=VARCHAR}
|
||||
<if test="_parameter != null">
|
||||
<include refid="Update_By_Example_Where_Clause" />
|
||||
</if>
|
||||
</update>
|
||||
<update id="updateByPrimaryKeySelective" parameterType="io.metersphere.base.domain.Notice">
|
||||
UPDATE notice
|
||||
update notice
|
||||
<set>
|
||||
<if test="event != null">
|
||||
EVENT = #{event,jdbcType=VARCHAR},
|
||||
|
@ -197,15 +208,19 @@
|
|||
<if test="enable != null">
|
||||
`ENABLE` = #{enable,jdbcType=VARCHAR},
|
||||
</if>
|
||||
<if test="type != null">
|
||||
`type` = #{type,jdbcType=VARCHAR},
|
||||
</if>
|
||||
</set>
|
||||
WHERE id = #{id,jdbcType=VARCHAR}
|
||||
where id = #{id,jdbcType=VARCHAR}
|
||||
</update>
|
||||
<update id="updateByPrimaryKey" parameterType="io.metersphere.base.domain.Notice">
|
||||
UPDATE notice
|
||||
SET EVENT = #{event,jdbcType=VARCHAR},
|
||||
TEST_ID = #{testId,jdbcType=VARCHAR},
|
||||
`NAME` = #{name,jdbcType=VARCHAR},
|
||||
`ENABLE` = #{enable,jdbcType=VARCHAR}
|
||||
`ENABLE` = #{enable,jdbcType=VARCHAR},
|
||||
`type` = #{type,jdbcType=VARCHAR}
|
||||
WHERE id = #{id,jdbcType=VARCHAR}
|
||||
</update>
|
||||
</mapper>
|
|
@ -0,0 +1,6 @@
|
|||
package io.metersphere.commons.constants;
|
||||
|
||||
public interface NoticeConstants {
|
||||
String EXECUTE_SUCCESSFUL = "EXECUTE_SUCCESSFUL";
|
||||
String EXECUTE_FAILED = "EXECUTE_FAILED";
|
||||
}
|
|
@ -6,8 +6,7 @@ import lombok.Data;
|
|||
import java.util.List;
|
||||
|
||||
@Data
|
||||
public class NoticeRequest extends NoticeDetail {
|
||||
private String testId;
|
||||
private List<NoticeDetail> notices;
|
||||
|
||||
public class NoticeRequest {
|
||||
private String testId;
|
||||
private List<NoticeDetail> notices;
|
||||
}
|
||||
|
|
|
@ -4,6 +4,7 @@ import io.metersphere.base.domain.ApiTestReport;
|
|||
import io.metersphere.base.domain.LoadTestWithBLOBs;
|
||||
import io.metersphere.base.domain.SystemParameter;
|
||||
import io.metersphere.base.domain.TestCaseWithBLOBs;
|
||||
import io.metersphere.commons.constants.NoticeConstants;
|
||||
import io.metersphere.commons.constants.ParamConstants;
|
||||
import io.metersphere.commons.utils.EncryptUtils;
|
||||
import io.metersphere.commons.utils.LogUtil;
|
||||
|
@ -222,10 +223,10 @@ public class MailService {
|
|||
List<String> failEmailList = new ArrayList<>();
|
||||
if (noticeList.size() > 0) {
|
||||
for (NoticeDetail n : noticeList) {
|
||||
if (n.getEnable().equals("true") && n.getEvent().equals("执行成功")) {
|
||||
if (n.getEnable().equals("true") && n.getEvent().equals(NoticeConstants.EXECUTE_SUCCESSFUL)) {
|
||||
successEmailList = userService.queryEmail(n.getNames());
|
||||
}
|
||||
if (n.getEnable().equals("true") && n.getEvent().equals("执行失败")) {
|
||||
if (n.getEnable().equals("true") && n.getEvent().equals(NoticeConstants.EXECUTE_FAILED)) {
|
||||
failEmailList = userService.queryEmail(n.getNames());
|
||||
}
|
||||
}
|
||||
|
|
|
@ -12,13 +12,15 @@ import java.util.ArrayList;
|
|||
import java.util.List;
|
||||
import java.util.UUID;
|
||||
|
||||
import static io.metersphere.commons.constants.NoticeConstants.EXECUTE_FAILED;
|
||||
import static io.metersphere.commons.constants.NoticeConstants.EXECUTE_SUCCESSFUL;
|
||||
|
||||
@Service
|
||||
public class NoticeService {
|
||||
@Resource
|
||||
private NoticeMapper noticeMapper;
|
||||
|
||||
public void saveNotice(NoticeRequest noticeRequest) {
|
||||
Notice notice = new Notice();
|
||||
NoticeExample example = new NoticeExample();
|
||||
example.createCriteria().andTestIdEqualTo(noticeRequest.getTestId());
|
||||
List<Notice> notices = noticeMapper.selectByExample(example);
|
||||
|
@ -28,11 +30,13 @@ public class NoticeService {
|
|||
noticeRequest.getNotices().forEach(n -> {
|
||||
if (n.getNames().length > 0) {
|
||||
for (String x : n.getNames()) {
|
||||
Notice notice = new Notice();
|
||||
notice.setId(UUID.randomUUID().toString());
|
||||
notice.setEvent(n.getEvent());
|
||||
notice.setEnable(n.getEnable());
|
||||
notice.setTestId(noticeRequest.getTestId());
|
||||
notice.setName(x);
|
||||
notice.setType(n.getType());
|
||||
noticeMapper.insert(notice);
|
||||
}
|
||||
}
|
||||
|
@ -43,7 +47,7 @@ public class NoticeService {
|
|||
NoticeExample example = new NoticeExample();
|
||||
example.createCriteria().andTestIdEqualTo(id);
|
||||
List<Notice> notices = noticeMapper.selectByExample(example);
|
||||
List<NoticeDetail> notice = new ArrayList<>();
|
||||
List<NoticeDetail> result = new ArrayList<>();
|
||||
List<String> success = new ArrayList<>();
|
||||
List<String> fail = new ArrayList<>();
|
||||
String[] successArray;
|
||||
|
@ -52,16 +56,18 @@ public class NoticeService {
|
|||
NoticeDetail notice2 = new NoticeDetail();
|
||||
if (notices.size() > 0) {
|
||||
for (Notice n : notices) {
|
||||
if (n.getEvent().equals("执行成功")) {
|
||||
if (n.getEvent().equals(EXECUTE_SUCCESSFUL)) {
|
||||
success.add(n.getName());
|
||||
notice1.setEnable(n.getEnable());
|
||||
notice1.setTestId(id);
|
||||
notice1.setType(n.getType());
|
||||
notice1.setEvent(n.getEvent());
|
||||
}
|
||||
if (n.getEvent().equals("执行失败")) {
|
||||
if (n.getEvent().equals(EXECUTE_FAILED)) {
|
||||
fail.add(n.getName());
|
||||
notice2.setEnable(n.getEnable());
|
||||
notice2.setTestId(id);
|
||||
notice2.setType(n.getType());
|
||||
notice2.setEvent(n.getEvent());
|
||||
}
|
||||
}
|
||||
|
@ -69,10 +75,10 @@ public class NoticeService {
|
|||
failArray = fail.toArray(new String[0]);
|
||||
notice1.setNames(successArray);
|
||||
notice2.setNames(failArray);
|
||||
notice.add(notice1);
|
||||
notice.add(notice2);
|
||||
result.add(notice1);
|
||||
result.add(notice2);
|
||||
}
|
||||
return notice;
|
||||
return result;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -6,3 +6,5 @@ ALTER TABLE notice
|
|||
MODIFY COLUMN id VARCHAR(50) PRIMARY KEY;
|
||||
ALTER TABLE notice
|
||||
DROP COLUMN EMAIL;
|
||||
ALTER TABLE notice
|
||||
ADD COLUMN type VARCHAR(100) DEFAULT 'EMAIL';
|
|
@ -1,5 +1,5 @@
|
|||
<template>
|
||||
<el-dialog :close-on-click-modal="false" width="50%" class="schedule-edit" :visible.sync="dialogVisible"
|
||||
<el-dialog :close-on-click-modal="false" width="60%" class="schedule-edit" :visible.sync="dialogVisible"
|
||||
@close="close">
|
||||
<template>
|
||||
<div>
|
||||
|
@ -21,7 +21,7 @@
|
|||
</el-form-item>
|
||||
<crontab-result :ex="form.cronValue" ref="crontabResult"/>
|
||||
</el-form>
|
||||
<el-dialog :title="$t('schedule.generate_expression')" :visible.sync="showCron" :modal="false">
|
||||
<el-dialog width="60%" :title="$t('schedule.generate_expression')" :visible.sync="showCron" :modal="false">
|
||||
<crontab @hide="showCron=false" @fill="crontabFill" :expression="schedule.value" ref="crontab"/>
|
||||
</el-dialog>
|
||||
</el-tab-pane>
|
||||
|
@ -32,9 +32,12 @@
|
|||
style="width: 100%">
|
||||
<el-table-column
|
||||
prop="event"
|
||||
:label="$t('schedule.event')"
|
||||
|
||||
>
|
||||
:label="$t('schedule.event')">
|
||||
<template v-slot:default="{row}">
|
||||
<span v-if="row.event === 'EXECUTE_SUCCESSFUL'"> {{ $t('schedule.event_success') }}</span>
|
||||
<span v-else-if="row.event === 'EXECUTE_FAILED'"> {{ $t('schedule.event_failed') }}</span>
|
||||
<span v-else>{{ row.event }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="name"
|
||||
|
@ -42,7 +45,8 @@
|
|||
width="200"
|
||||
>
|
||||
<template v-slot:default="{row}">
|
||||
<el-select v-model="row.names" filterable multiple placeholder="请选择" @click.native="userList()">
|
||||
<el-select v-model="row.names" filterable multiple :placeholder="$t('commons.please_select')"
|
||||
@click.native="userList()">
|
||||
<el-option
|
||||
v-for="item in options"
|
||||
:key="item.id"
|
||||
|
@ -53,7 +57,7 @@
|
|||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="email"
|
||||
prop="type"
|
||||
:label="$t('schedule.receiving_mode')"
|
||||
>
|
||||
</el-table-column>
|
||||
|
@ -63,10 +67,10 @@
|
|||
>
|
||||
<template v-slot:default="{row}">
|
||||
<el-switch
|
||||
v-model="row.enable"
|
||||
active-value="true"
|
||||
inactive-value="false"
|
||||
inactive-color="#DCDFE6"
|
||||
v-model="row.enable"
|
||||
active-value="true"
|
||||
inactive-value="false"
|
||||
inactive-color="#DCDFE6"
|
||||
/>
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
@ -142,19 +146,21 @@ export default {
|
|||
},
|
||||
tableData: [
|
||||
{
|
||||
event: "执行成功",
|
||||
event: "EXECUTE_SUCCESSFUL",
|
||||
type: "EMAIL",
|
||||
names: [],
|
||||
enable: false
|
||||
},
|
||||
{
|
||||
event: "执行失败",
|
||||
event: "EXECUTE_FAILED",
|
||||
type: "EMAIL",
|
||||
names: [],
|
||||
enable: false
|
||||
}
|
||||
],
|
||||
options: [{}],
|
||||
enable: true,
|
||||
email: "",
|
||||
type: "",
|
||||
activeName: 'first',
|
||||
rules: {
|
||||
cronValue: [{required: true, validator: validateCron, trigger: 'blur'}],
|
||||
|
@ -168,17 +174,18 @@ export default {
|
|||
})
|
||||
},
|
||||
handleClick() {
|
||||
if (this.activeName == "second") {
|
||||
if (this.activeName === "second") {
|
||||
this.result = this.$get('notice/query/' + this.testId, response => {
|
||||
if (response.data.length > 0) {
|
||||
this.tableData = response.data
|
||||
this.tableData[0].email="邮箱"
|
||||
this.tableData[0].event="执行成功"
|
||||
this.tableData[1].email="邮箱"
|
||||
this.tableData[1].event="执行失败"
|
||||
}else{
|
||||
this.tableData[0].names=[]
|
||||
this.tableData[1].names=[]
|
||||
|
||||
this.tableData[0].event = "EXECUTE_SUCCESSFUL"
|
||||
this.tableData[0].type = "EMAIL"
|
||||
this.tableData[1].event = "EXECUTE_FAILED"
|
||||
this.tableData[1].type = "EMAIL"
|
||||
} else {
|
||||
this.tableData[0].names = []
|
||||
this.tableData[1].names = []
|
||||
}
|
||||
})
|
||||
}
|
||||
|
|
|
@ -334,14 +334,10 @@
|
|||
},
|
||||
handleSelectAll(selection) {
|
||||
if (selection.length > 0) {
|
||||
if (selection.length === 1) {
|
||||
this.selectRows.add(selection[0]);
|
||||
} else {
|
||||
this.tableData.forEach(item => {
|
||||
this.$set(item, "showMore", true);
|
||||
this.selectRows.add(item);
|
||||
});
|
||||
}
|
||||
this.tableData.forEach(item => {
|
||||
this.$set(item, "showMore", true);
|
||||
this.selectRows.add(item);
|
||||
});
|
||||
} else {
|
||||
this.selectRows.clear();
|
||||
this.tableData.forEach(row => {
|
||||
|
@ -350,11 +346,6 @@
|
|||
}
|
||||
},
|
||||
handleSelectionChange(selection, row) {
|
||||
// if (this.selectIds.has(row.id)) {
|
||||
// this.selectIds.delete(row.id);
|
||||
// } else {
|
||||
// this.selectIds.add(row.id);
|
||||
// }
|
||||
if (this.selectRows.has(row)) {
|
||||
this.$set(row, "showMore", false);
|
||||
this.selectRows.delete(row);
|
||||
|
@ -362,17 +353,6 @@
|
|||
this.$set(row, "showMore", true);
|
||||
this.selectRows.add(row);
|
||||
}
|
||||
|
||||
let arr = Array.from(this.selectRows);
|
||||
|
||||
// 选中1个以上的用例时显示更多操作
|
||||
if (this.selectRows.size === 1) {
|
||||
this.$set(arr[0], "showMore", false);
|
||||
} else if (this.selectRows.size === 2) {
|
||||
arr.forEach(row => {
|
||||
this.$set(row, "showMore", true);
|
||||
})
|
||||
}
|
||||
},
|
||||
importTestCase() {
|
||||
this.$refs.testCaseImport.open();
|
||||
|
|
|
@ -931,6 +931,8 @@ export default {
|
|||
schedule: {
|
||||
input_email: "Please input email account",
|
||||
event: "event",
|
||||
event_success: 'EXECUTE SUCCESSFUL',
|
||||
event_failed: 'EXECUTE FAILED',
|
||||
receiving_mode: "mailbox",
|
||||
receiver: "Receiver",
|
||||
operation: "operation",
|
||||
|
|
|
@ -936,6 +936,8 @@ export default {
|
|||
schedule: {
|
||||
input_email: "请输入邮箱账号",
|
||||
event: "事件",
|
||||
event_success: '执行成功',
|
||||
event_failed: '执行失败',
|
||||
receiving_mode: "接收方式",
|
||||
receiver: "接收人",
|
||||
operation: "操作",
|
||||
|
|
|
@ -932,6 +932,8 @@ export default {
|
|||
schedule: {
|
||||
input_email: "請輸入郵箱賬號",
|
||||
event: "事件",
|
||||
event_success: '執行成功',
|
||||
event_failed: '執行失敗',
|
||||
receiving_mode: "接收方式",
|
||||
receiver: "接收人",
|
||||
operation: "操作",
|
||||
|
|
Loading…
Reference in New Issue