diff --git a/backend/src/main/java/io/metersphere/api/jmeter/APIBackendListenerClient.java b/backend/src/main/java/io/metersphere/api/jmeter/APIBackendListenerClient.java index 72f73198fde1baa528077c4e9a4fcd1a503e91aa..8cef794de9b08d994f2d0baba26c4e758648c131 100644 --- a/backend/src/main/java/io/metersphere/api/jmeter/APIBackendListenerClient.java +++ b/backend/src/main/java/io/metersphere/api/jmeter/APIBackendListenerClient.java @@ -182,51 +182,41 @@ public class APIBackendListenerClient extends AbstractBackendListenerClient impl List userIds = new ArrayList<>(); MessageSettingDetail messageSettingDetail = noticeService.searchMessage(); List taskList = messageSettingDetail.getJenkinsTask(); - if (StringUtils.equals(report.getStatus(), "Success")) { - - } String contextSuccess = report.getName() + "执行成功"; - ; String contextFailed = report.getName() + "执行失败"; taskList.forEach(r -> { switch (r.getType()) { case NoticeConstants.NAIL_ROBOT: - r.getEvents().forEach(e -> { - if (StringUtils.equals(NoticeConstants.EXECUTE_SUCCESSFUL, e) && StringUtils.equals(report.getStatus(), "Success")) { + if (StringUtils.equals(NoticeConstants.EXECUTE_SUCCESSFUL,r.getEvent()) && StringUtils.equals(report.getStatus(), "Success")) { dingTaskService.sendNailRobot(r, userIds, contextSuccess, NoticeConstants.EXECUTE_SUCCESSFUL); } - if (StringUtils.equals(NoticeConstants.EXECUTE_FAILED, e) && StringUtils.equals(report.getStatus(), "Error")) { + if (StringUtils.equals(NoticeConstants.EXECUTE_FAILED, r.getEvent()) && StringUtils.equals(report.getStatus(), "Error")) { dingTaskService.sendNailRobot(r, userIds, contextFailed, NoticeConstants.EXECUTE_FAILED); } - }); break; case NoticeConstants.WECHAT_ROBOT: - r.getEvents().forEach(e -> { - if (StringUtils.equals(NoticeConstants.EXECUTE_SUCCESSFUL, e) && StringUtils.equals(report.getStatus(), "Success")) { + if (StringUtils.equals(NoticeConstants.EXECUTE_SUCCESSFUL, r.getEvent()) && StringUtils.equals(report.getStatus(), "Success")) { wxChatTaskService.sendWechatRobot(r, userIds, contextSuccess, NoticeConstants.EXECUTE_SUCCESSFUL); } - if (StringUtils.equals(NoticeConstants.EXECUTE_FAILED, e) && StringUtils.equals(report.getStatus(), "Error")) { + if (StringUtils.equals(NoticeConstants.EXECUTE_FAILED, r.getEvent()) && StringUtils.equals(report.getStatus(), "Error")) { wxChatTaskService.sendWechatRobot(r, userIds, contextFailed, NoticeConstants.EXECUTE_FAILED); } - }); break; case NoticeConstants.EMAIL: - r.getEvents().forEach(e -> { - if (StringUtils.equals(NoticeConstants.EXECUTE_SUCCESSFUL, e) && StringUtils.equals(report.getStatus(), "Success")) { + if (StringUtils.equals(NoticeConstants.EXECUTE_SUCCESSFUL, r.getEvent()) && StringUtils.equals(report.getStatus(), "Success")) { try { mailService.sendApiJenkinsNotification(contextSuccess, r); } catch (MessagingException messagingException) { messagingException.printStackTrace(); } } - if (StringUtils.equals(NoticeConstants.EXECUTE_FAILED, e) && StringUtils.equals(report.getStatus(), "Error")) { + if (StringUtils.equals(NoticeConstants.EXECUTE_FAILED, r.getEvent()) && StringUtils.equals(report.getStatus(), "Error")) { try { mailService.sendApiJenkinsNotification(contextFailed, r); } catch (MessagingException messagingException) { messagingException.printStackTrace(); } } - }); break; } }); diff --git a/backend/src/main/java/io/metersphere/base/domain/MessageTask.java b/backend/src/main/java/io/metersphere/base/domain/MessageTask.java index 22fa0434078569093b9cddf6989f6da97f6620ea..37171c38f718ca8db7922c9db07758120df392d8 100644 --- a/backend/src/main/java/io/metersphere/base/domain/MessageTask.java +++ b/backend/src/main/java/io/metersphere/base/domain/MessageTask.java @@ -21,5 +21,7 @@ public class MessageTask implements Serializable { private Boolean isSet; + private String organizationId; + private static final long serialVersionUID = 1L; } \ No newline at end of file diff --git a/backend/src/main/java/io/metersphere/base/domain/MessageTaskExample.java b/backend/src/main/java/io/metersphere/base/domain/MessageTaskExample.java index f81c60fc2ca01fa1455015ef5e31db05826b5ad2..5c41e252c8c131008d54cc5e6ce39df9a520cc23 100644 --- a/backend/src/main/java/io/metersphere/base/domain/MessageTaskExample.java +++ b/backend/src/main/java/io/metersphere/base/domain/MessageTaskExample.java @@ -653,6 +653,76 @@ public class MessageTaskExample { addCriterion("is_set not between", value1, value2, "isSet"); return (Criteria) this; } + + public Criteria andOrganizationIdIsNull() { + addCriterion("organization_id is null"); + return (Criteria) this; + } + + public Criteria andOrganizationIdIsNotNull() { + addCriterion("organization_id is not null"); + return (Criteria) this; + } + + public Criteria andOrganizationIdEqualTo(String value) { + addCriterion("organization_id =", value, "organizationId"); + return (Criteria) this; + } + + public Criteria andOrganizationIdNotEqualTo(String value) { + addCriterion("organization_id <>", value, "organizationId"); + return (Criteria) this; + } + + public Criteria andOrganizationIdGreaterThan(String value) { + addCriterion("organization_id >", value, "organizationId"); + return (Criteria) this; + } + + public Criteria andOrganizationIdGreaterThanOrEqualTo(String value) { + addCriterion("organization_id >=", value, "organizationId"); + return (Criteria) this; + } + + public Criteria andOrganizationIdLessThan(String value) { + addCriterion("organization_id <", value, "organizationId"); + return (Criteria) this; + } + + public Criteria andOrganizationIdLessThanOrEqualTo(String value) { + addCriterion("organization_id <=", value, "organizationId"); + return (Criteria) this; + } + + public Criteria andOrganizationIdLike(String value) { + addCriterion("organization_id like", value, "organizationId"); + return (Criteria) this; + } + + public Criteria andOrganizationIdNotLike(String value) { + addCriterion("organization_id not like", value, "organizationId"); + return (Criteria) this; + } + + public Criteria andOrganizationIdIn(List values) { + addCriterion("organization_id in", values, "organizationId"); + return (Criteria) this; + } + + public Criteria andOrganizationIdNotIn(List values) { + addCriterion("organization_id not in", values, "organizationId"); + return (Criteria) this; + } + + public Criteria andOrganizationIdBetween(String value1, String value2) { + addCriterion("organization_id between", value1, value2, "organizationId"); + return (Criteria) this; + } + + public Criteria andOrganizationIdNotBetween(String value1, String value2) { + addCriterion("organization_id not between", value1, value2, "organizationId"); + return (Criteria) this; + } } public static class Criteria extends GeneratedCriteria { diff --git a/backend/src/main/java/io/metersphere/base/domain/TestPlan.java b/backend/src/main/java/io/metersphere/base/domain/TestPlan.java index f66f9aa0942040636bf64a21aecd1cffb23db714..2d5ebe3aedca7902b0e823e23ad067cb8a883037 100644 --- a/backend/src/main/java/io/metersphere/base/domain/TestPlan.java +++ b/backend/src/main/java/io/metersphere/base/domain/TestPlan.java @@ -1,8 +1,7 @@ package io.metersphere.base.domain; -import lombok.Data; - import java.io.Serializable; +import lombok.Data; @Data public class TestPlan implements Serializable { diff --git a/backend/src/main/java/io/metersphere/base/mapper/MessageTaskMapper.xml b/backend/src/main/java/io/metersphere/base/mapper/MessageTaskMapper.xml index 9840abd9e4e3b19f16162c9a29ecc210a7d7fae0..a8e662fb8a48d4567bec3f2652b1a6310e461ff9 100644 --- a/backend/src/main/java/io/metersphere/base/mapper/MessageTaskMapper.xml +++ b/backend/src/main/java/io/metersphere/base/mapper/MessageTaskMapper.xml @@ -9,7 +9,8 @@ - + + @@ -70,7 +71,7 @@ - id, `type`, event, user_id, task_type, webhook, identification, is_set + id, `type`, event, user_id, task_type, webhook, identification, is_set, organization_id @@ -198,6 +207,9 @@ is_set = #{record.isSet,jdbcType=BIT}, + + organization_id = #{record.organizationId,jdbcType=VARCHAR}, + @@ -206,13 +218,14 @@ update message_task set id = #{record.id,jdbcType=VARCHAR}, - `type` = #{record.type,jdbcType=VARCHAR}, - event = #{record.event,jdbcType=VARCHAR}, - user_id = #{record.userId,jdbcType=VARCHAR}, - task_type = #{record.taskType,jdbcType=VARCHAR}, - webhook = #{record.webhook,jdbcType=VARCHAR}, - identification = #{record.identification,jdbcType=VARCHAR}, - is_set = #{record.isSet,jdbcType=BIT} + `type` = #{record.type,jdbcType=VARCHAR}, + event = #{record.event,jdbcType=VARCHAR}, + user_id = #{record.userId,jdbcType=VARCHAR}, + task_type = #{record.taskType,jdbcType=VARCHAR}, + webhook = #{record.webhook,jdbcType=VARCHAR}, + identification = #{record.identification,jdbcType=VARCHAR}, + is_set = #{record.isSet,jdbcType=BIT}, + organization_id = #{record.organizationId,jdbcType=VARCHAR} @@ -241,18 +254,22 @@ is_set = #{isSet,jdbcType=BIT}, + + organization_id = #{organizationId,jdbcType=VARCHAR}, + where id = #{id,jdbcType=VARCHAR} update message_task - set `type` = #{type,jdbcType=VARCHAR}, - event = #{event,jdbcType=VARCHAR}, - user_id = #{userId,jdbcType=VARCHAR}, - task_type = #{taskType,jdbcType=VARCHAR}, - webhook = #{webhook,jdbcType=VARCHAR}, - identification = #{identification,jdbcType=VARCHAR}, - is_set = #{isSet,jdbcType=BIT} + set `type` = #{type,jdbcType=VARCHAR}, + event = #{event,jdbcType=VARCHAR}, + user_id = #{userId,jdbcType=VARCHAR}, + task_type = #{taskType,jdbcType=VARCHAR}, + webhook = #{webhook,jdbcType=VARCHAR}, + identification = #{identification,jdbcType=VARCHAR}, + is_set = #{isSet,jdbcType=BIT}, + organization_id = #{organizationId,jdbcType=VARCHAR} where id = #{id,jdbcType=VARCHAR} \ No newline at end of file diff --git a/backend/src/main/java/io/metersphere/base/mapper/TestPlanMapper.xml b/backend/src/main/java/io/metersphere/base/mapper/TestPlanMapper.xml index 9f970519e72e5e568dc1905ff839e6a0a706bc04..d423f2d073a16d9c2894e42f9f630f86c3c69d0c 100644 --- a/backend/src/main/java/io/metersphere/base/mapper/TestPlanMapper.xml +++ b/backend/src/main/java/io/metersphere/base/mapper/TestPlanMapper.xml @@ -2,23 +2,23 @@ - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + @@ -82,7 +82,7 @@ - id, workspace_id, report_id, `name`, description, `status`, stage, principal, test_case_match_rule, + id, workspace_id, report_id, `name`, description, `status`, stage, principal, test_case_match_rule, executor_match_rule, create_time, update_time, actual_end_time, planned_start_time, planned_end_time, actual_start_time, creator @@ -120,8 +120,8 @@ @@ -296,47 +298,47 @@ stage = #{record.stage,jdbcType=VARCHAR}, - - principal = #{record.principal,jdbcType=VARCHAR}, - - - test_case_match_rule = #{record.testCaseMatchRule,jdbcType=VARCHAR}, - - - executor_match_rule = #{record.executorMatchRule,jdbcType=VARCHAR}, - - - create_time = #{record.createTime,jdbcType=BIGINT}, - - - update_time = #{record.updateTime,jdbcType=BIGINT}, - - - actual_end_time = #{record.actualEndTime,jdbcType=BIGINT}, - - - planned_start_time = #{record.plannedStartTime,jdbcType=BIGINT}, - - - planned_end_time = #{record.plannedEndTime,jdbcType=BIGINT}, - - - actual_start_time = #{record.actualStartTime,jdbcType=BIGINT}, - - - creator = #{record.creator,jdbcType=VARCHAR}, - - - tags = #{record.tags,jdbcType=LONGVARCHAR}, - + + principal = #{record.principal,jdbcType=VARCHAR}, + + + test_case_match_rule = #{record.testCaseMatchRule,jdbcType=VARCHAR}, + + + executor_match_rule = #{record.executorMatchRule,jdbcType=VARCHAR}, + + + create_time = #{record.createTime,jdbcType=BIGINT}, + + + update_time = #{record.updateTime,jdbcType=BIGINT}, + + + actual_end_time = #{record.actualEndTime,jdbcType=BIGINT}, + + + planned_start_time = #{record.plannedStartTime,jdbcType=BIGINT}, + + + planned_end_time = #{record.plannedEndTime,jdbcType=BIGINT}, + + + actual_start_time = #{record.actualStartTime,jdbcType=BIGINT}, + + + creator = #{record.creator,jdbcType=VARCHAR}, + + + tags = #{record.tags,jdbcType=LONGVARCHAR}, + - update test_plan - set id = #{record.id,jdbcType=VARCHAR}, + update test_plan + set id = #{record.id,jdbcType=VARCHAR}, workspace_id = #{record.workspaceId,jdbcType=VARCHAR}, report_id = #{record.reportId,jdbcType=VARCHAR}, `name` = #{record.name,jdbcType=VARCHAR}, @@ -354,13 +356,13 @@ actual_start_time = #{record.actualStartTime,jdbcType=BIGINT}, creator = #{record.creator,jdbcType=VARCHAR}, tags = #{record.tags,jdbcType=LONGVARCHAR} - + - update test_plan - set id = #{record.id,jdbcType=VARCHAR}, + update test_plan + set id = #{record.id,jdbcType=VARCHAR}, workspace_id = #{record.workspaceId,jdbcType=VARCHAR}, report_id = #{record.reportId,jdbcType=VARCHAR}, `name` = #{record.name,jdbcType=VARCHAR}, @@ -377,7 +379,7 @@ planned_end_time = #{record.plannedEndTime,jdbcType=BIGINT}, actual_start_time = #{record.actualStartTime,jdbcType=BIGINT}, creator = #{record.creator,jdbcType=VARCHAR} - + @@ -400,83 +402,83 @@ `status` = #{status,jdbcType=VARCHAR}, - stage = #{stage,jdbcType=VARCHAR}, + stage = #{stage,jdbcType=VARCHAR}, + + + principal = #{principal,jdbcType=VARCHAR}, + + + test_case_match_rule = #{testCaseMatchRule,jdbcType=VARCHAR}, + + + executor_match_rule = #{executorMatchRule,jdbcType=VARCHAR}, + + + create_time = #{createTime,jdbcType=BIGINT}, + + + update_time = #{updateTime,jdbcType=BIGINT}, + + + actual_end_time = #{actualEndTime,jdbcType=BIGINT}, + + + planned_start_time = #{plannedStartTime,jdbcType=BIGINT}, + + + planned_end_time = #{plannedEndTime,jdbcType=BIGINT}, + + + actual_start_time = #{actualStartTime,jdbcType=BIGINT}, + + + creator = #{creator,jdbcType=VARCHAR}, + + + tags = #{tags,jdbcType=LONGVARCHAR}, - - principal = #{principal,jdbcType=VARCHAR}, - - - test_case_match_rule = #{testCaseMatchRule,jdbcType=VARCHAR}, - - - executor_match_rule = #{executorMatchRule,jdbcType=VARCHAR}, - - - create_time = #{createTime,jdbcType=BIGINT}, - - - update_time = #{updateTime,jdbcType=BIGINT}, - - - actual_end_time = #{actualEndTime,jdbcType=BIGINT}, - - - planned_start_time = #{plannedStartTime,jdbcType=BIGINT}, - - - planned_end_time = #{plannedEndTime,jdbcType=BIGINT}, - - - actual_start_time = #{actualStartTime,jdbcType=BIGINT}, - - - creator = #{creator,jdbcType=VARCHAR}, - - - tags = #{tags,jdbcType=LONGVARCHAR}, - where id = #{id,jdbcType=VARCHAR} - update test_plan - set workspace_id = #{workspaceId,jdbcType=VARCHAR}, - report_id = #{reportId,jdbcType=VARCHAR}, - `name` = #{name,jdbcType=VARCHAR}, - description = #{description,jdbcType=VARCHAR}, - `status` = #{status,jdbcType=VARCHAR}, - stage = #{stage,jdbcType=VARCHAR}, - principal = #{principal,jdbcType=VARCHAR}, - test_case_match_rule = #{testCaseMatchRule,jdbcType=VARCHAR}, - executor_match_rule = #{executorMatchRule,jdbcType=VARCHAR}, - create_time = #{createTime,jdbcType=BIGINT}, - update_time = #{updateTime,jdbcType=BIGINT}, - actual_end_time = #{actualEndTime,jdbcType=BIGINT}, - planned_start_time = #{plannedStartTime,jdbcType=BIGINT}, - planned_end_time = #{plannedEndTime,jdbcType=BIGINT}, - actual_start_time = #{actualStartTime,jdbcType=BIGINT}, - creator = #{creator,jdbcType=VARCHAR}, - tags = #{tags,jdbcType=LONGVARCHAR} - where id = #{id,jdbcType=VARCHAR} + update test_plan + set workspace_id = #{workspaceId,jdbcType=VARCHAR}, + report_id = #{reportId,jdbcType=VARCHAR}, + `name` = #{name,jdbcType=VARCHAR}, + description = #{description,jdbcType=VARCHAR}, + `status` = #{status,jdbcType=VARCHAR}, + stage = #{stage,jdbcType=VARCHAR}, + principal = #{principal,jdbcType=VARCHAR}, + test_case_match_rule = #{testCaseMatchRule,jdbcType=VARCHAR}, + executor_match_rule = #{executorMatchRule,jdbcType=VARCHAR}, + create_time = #{createTime,jdbcType=BIGINT}, + update_time = #{updateTime,jdbcType=BIGINT}, + actual_end_time = #{actualEndTime,jdbcType=BIGINT}, + planned_start_time = #{plannedStartTime,jdbcType=BIGINT}, + planned_end_time = #{plannedEndTime,jdbcType=BIGINT}, + actual_start_time = #{actualStartTime,jdbcType=BIGINT}, + creator = #{creator,jdbcType=VARCHAR}, + tags = #{tags,jdbcType=LONGVARCHAR} + where id = #{id,jdbcType=VARCHAR} - update test_plan - set workspace_id = #{workspaceId,jdbcType=VARCHAR}, - report_id = #{reportId,jdbcType=VARCHAR}, - `name` = #{name,jdbcType=VARCHAR}, - description = #{description,jdbcType=VARCHAR}, - `status` = #{status,jdbcType=VARCHAR}, - stage = #{stage,jdbcType=VARCHAR}, - principal = #{principal,jdbcType=VARCHAR}, - test_case_match_rule = #{testCaseMatchRule,jdbcType=VARCHAR}, - executor_match_rule = #{executorMatchRule,jdbcType=VARCHAR}, - create_time = #{createTime,jdbcType=BIGINT}, - update_time = #{updateTime,jdbcType=BIGINT}, - actual_end_time = #{actualEndTime,jdbcType=BIGINT}, - planned_start_time = #{plannedStartTime,jdbcType=BIGINT}, - planned_end_time = #{plannedEndTime,jdbcType=BIGINT}, - actual_start_time = #{actualStartTime,jdbcType=BIGINT}, - creator = #{creator,jdbcType=VARCHAR} - where id = #{id,jdbcType=VARCHAR} + update test_plan + set workspace_id = #{workspaceId,jdbcType=VARCHAR}, + report_id = #{reportId,jdbcType=VARCHAR}, + `name` = #{name,jdbcType=VARCHAR}, + description = #{description,jdbcType=VARCHAR}, + `status` = #{status,jdbcType=VARCHAR}, + stage = #{stage,jdbcType=VARCHAR}, + principal = #{principal,jdbcType=VARCHAR}, + test_case_match_rule = #{testCaseMatchRule,jdbcType=VARCHAR}, + executor_match_rule = #{executorMatchRule,jdbcType=VARCHAR}, + create_time = #{createTime,jdbcType=BIGINT}, + update_time = #{updateTime,jdbcType=BIGINT}, + actual_end_time = #{actualEndTime,jdbcType=BIGINT}, + planned_start_time = #{plannedStartTime,jdbcType=BIGINT}, + planned_end_time = #{plannedEndTime,jdbcType=BIGINT}, + actual_start_time = #{actualStartTime,jdbcType=BIGINT}, + creator = #{creator,jdbcType=VARCHAR} + where id = #{id,jdbcType=VARCHAR} \ No newline at end of file diff --git a/backend/src/main/java/io/metersphere/commons/constants/NoticeConstants.java b/backend/src/main/java/io/metersphere/commons/constants/NoticeConstants.java index ddd3e67e749287602ff450f7c75bb837a5945824..565c9980944db30e3a558e5d5081fa02d2ce38b3 100644 --- a/backend/src/main/java/io/metersphere/commons/constants/NoticeConstants.java +++ b/backend/src/main/java/io/metersphere/commons/constants/NoticeConstants.java @@ -9,14 +9,14 @@ public interface NoticeConstants { String CREATE = "CREATE"; String UPDATE = "UPDATE"; String DELETE = "DELETE"; + String COMMENT = "COMMENT"; String JENKINS_TASK = "JENKINS_TASK"; String TEST_PLAN_TASK = "TEST_PLAN_TASK"; String REVIEW_TASK = "REVIEW_TASK"; String DEFECT_TASK = "DEFECT_TASK"; - String FOUNDER = "FOUNDER"; - String EXECUTOR = "EXECUTOR"; - String MAINTAINER = "MAINTAINER"; - String COMMENT = "COMMENT"; + String FOUNDER = "FOUNDER";//创建人 + String EXECUTOR = "EXECUTOR";//负责人(评审人) + String MAINTAINER = "MAINTAINER";//维护人 String API = "API"; String SCHEDULE = "SCHEDULE"; diff --git a/backend/src/main/java/io/metersphere/controller/UserController.java b/backend/src/main/java/io/metersphere/controller/UserController.java index a78b6c3803b638da8e100e8111146cd0ee11d8dd..2f9de7e05e9a91d2b0ee1a496e089aa50007b037 100644 --- a/backend/src/main/java/io/metersphere/controller/UserController.java +++ b/backend/src/main/java/io/metersphere/controller/UserController.java @@ -133,7 +133,10 @@ public class UserController { public List getUserList() { return userService.getUserList(); } - + @GetMapping("/list/orgId") + public List getUserListByOrgId() { + return userService.getUserListByOrgId(); + } @PostMapping("/update/current") public UserDTO updateCurrentUser(@RequestBody User user) { userService.updateUser(user); diff --git a/backend/src/main/java/io/metersphere/notice/domain/MessageDetail.java b/backend/src/main/java/io/metersphere/notice/domain/MessageDetail.java index d2ea3a6510f8e0a3d1fa2e84616bc38bdf31a59c..1c4faecf486f000c39b68eb5d87198535c89a53a 100644 --- a/backend/src/main/java/io/metersphere/notice/domain/MessageDetail.java +++ b/backend/src/main/java/io/metersphere/notice/domain/MessageDetail.java @@ -9,10 +9,11 @@ import java.util.List; @Data public class MessageDetail { private List userIds = new ArrayList<>(); - private List events = new ArrayList<>(); + private String event; private String taskType; private String webhook; private String type; private String identification; + private String organizationId; private Boolean isSet; } diff --git a/backend/src/main/java/io/metersphere/notice/service/DingTaskService.java b/backend/src/main/java/io/metersphere/notice/service/DingTaskService.java index ac1112bad7615874ed788d90dca1d192ba3d4aeb..fef93eb1268df913b4ca64819f49e3199985a6b4 100644 --- a/backend/src/main/java/io/metersphere/notice/service/DingTaskService.java +++ b/backend/src/main/java/io/metersphere/notice/service/DingTaskService.java @@ -27,30 +27,17 @@ public class DingTaskService { public void sendNailRobot(MessageDetail messageDetail, List userIds, String context, String eventType) { List addresseeIdList = new ArrayList<>(); - messageDetail.getEvents().forEach(e -> { - if (StringUtils.equals(eventType, e)) { + if (StringUtils.equals(eventType, messageDetail.getEvent())) { messageDetail.getUserIds().forEach(u -> { - if (!StringUtils.equals(NoticeConstants.EXECUTOR, u) && !StringUtils.equals(NoticeConstants.EXECUTOR, u) && !StringUtils.equals(NoticeConstants.MAINTAINER, u)) { + if (!StringUtils.equals(NoticeConstants.EXECUTOR, u) && !StringUtils.equals(NoticeConstants.FOUNDER, u) && !StringUtils.equals(NoticeConstants.MAINTAINER, u)) { addresseeIdList.add(u); - } - if (StringUtils.equals(NoticeConstants.CREATE, eventType) && StringUtils.equals(NoticeConstants.EXECUTOR, u)) { - addresseeIdList.addAll(userIds); - } - if (StringUtils.equals(NoticeConstants.UPDATE, eventType) && StringUtils.equals(NoticeConstants.FOUNDER, u)) { - addresseeIdList.addAll(userIds); - } - if (StringUtils.equals(NoticeConstants.DELETE, eventType) && StringUtils.equals(NoticeConstants.FOUNDER, u)) { - addresseeIdList.addAll(userIds); - } - if (StringUtils.equals(NoticeConstants.COMMENT, eventType) && StringUtils.equals(NoticeConstants.MAINTAINER, u)) { + }else{ addresseeIdList.addAll(userIds); } - }); sendDingTask(context, addresseeIdList, messageDetail.getWebhook()); } - }); } public void sendDingTask(String context, List userIds, String Webhook) { diff --git a/backend/src/main/java/io/metersphere/notice/service/MailService.java b/backend/src/main/java/io/metersphere/notice/service/MailService.java index 516be9d7bf82de041a7a18efa09f2afaedea56a2..9b7cf20490a9aa6182eb117b737b30bb63ccd9ea 100644 --- a/backend/src/main/java/io/metersphere/notice/service/MailService.java +++ b/backend/src/main/java/io/metersphere/notice/service/MailService.java @@ -172,7 +172,7 @@ public class MailService { public void sendReviewerNotice(MessageDetail messageDetail, List userIds, SaveTestCaseReviewRequest reviewRequest, String eventType) { Map context = getReviewContext(reviewRequest); try { - String reviewerTemplate = IOUtils.toString(this.getClass().getResource("/mail/reviewer.html"), StandardCharsets.UTF_8); + String reviewerTemplate = IOUtils.toString(this.getClass().getResource("/mail/end.html"), StandardCharsets.UTF_8); sendReviewNotice(addresseeIdList(messageDetail, userIds, eventType), context, reviewerTemplate); } catch (Exception e) { LogUtil.error(e); @@ -183,7 +183,7 @@ public class MailService { public void sendTestPlanStartNotice(MessageDetail messageDetail, List userIds, AddTestPlanRequest testPlan, String eventType) { Map context = getTestPlanContext(testPlan); - context.put("creator", userIds.toString()); + context.put("creator", testPlan.getCreator()); try { String endTemplate = IOUtils.toString(this.getClass().getResource("/mail/testPlanStart.html"), StandardCharsets.UTF_8); sendTestPlanNotice(addresseeIdList(messageDetail, userIds, eventType), context, endTemplate); @@ -424,8 +424,7 @@ public class MailService { private List addresseeIdList(MessageDetail messageDetail, List userIds, String eventType) { List addresseeIdList = new ArrayList<>(); - messageDetail.getEvents().forEach(e -> { - if (StringUtils.equals(eventType, e)) { + if (StringUtils.equals(eventType, messageDetail.getEvent())) { messageDetail.getUserIds().forEach(u -> { if (!StringUtils.equals(NoticeConstants.EXECUTOR, u) && !StringUtils.equals(NoticeConstants.EXECUTOR, u) && !StringUtils.equals(NoticeConstants.MAINTAINER, u)) { addresseeIdList.add(u); @@ -446,7 +445,6 @@ public class MailService { }); } - }); return addresseeIdList; } } diff --git a/backend/src/main/java/io/metersphere/notice/service/NoticeService.java b/backend/src/main/java/io/metersphere/notice/service/NoticeService.java index c48e2ba854f5bf3311d1c139709fd3eef70d2e13..ffa82d455e2e010727181b1b10b864481c0a9949 100644 --- a/backend/src/main/java/io/metersphere/notice/service/NoticeService.java +++ b/backend/src/main/java/io/metersphere/notice/service/NoticeService.java @@ -7,6 +7,8 @@ import io.metersphere.base.domain.NoticeExample; import io.metersphere.base.mapper.MessageTaskMapper; import io.metersphere.base.mapper.NoticeMapper; import io.metersphere.commons.constants.NoticeConstants; +import io.metersphere.commons.user.SessionUser; +import io.metersphere.commons.utils.SessionUtils; import io.metersphere.notice.controller.request.MessageRequest; import io.metersphere.notice.controller.request.NoticeRequest; import io.metersphere.notice.domain.MessageDetail; @@ -31,9 +33,6 @@ public class NoticeService { @Resource private MessageTaskMapper messageTaskMapper; - @Resource - MailService mailService; - public void saveNotice(NoticeRequest noticeRequest) { NoticeExample example = new NoticeExample(); example.createCriteria().andTestIdEqualTo(noticeRequest.getTestId()); @@ -93,29 +92,30 @@ public class NoticeService { public void saveMessageTask(MessageRequest messageRequest) { String identification = UUID.randomUUID().toString(); + SessionUser user = SessionUtils.getUser(); + String orgId = user.getLastOrganizationId(); messageRequest.getMessageDetail().forEach(list -> { - list.getEvents().forEach(n -> { list.getUserIds().forEach(m -> { MessageTask message = new MessageTask(); message.setId(UUID.randomUUID().toString()); - message.setEvent(n); + message.setEvent(list.getEvent()); message.setTaskType(list.getTaskType()); message.setUserId(m); message.setType(list.getType()); message.setWebhook(list.getWebhook()); message.setIdentification(identification); message.setIsSet(list.getIsSet()); + message.setOrganizationId(orgId); messageTaskMapper.insert(message); }); }); - }); - - } public MessageSettingDetail searchMessage() { + SessionUser user = SessionUtils.getUser(); + String orgId = user.getLastOrganizationId(); MessageTaskExample messageTaskExample = new MessageTaskExample(); - messageTaskExample.createCriteria(); + messageTaskExample.createCriteria().andOrganizationIdEqualTo(orgId); List messageTaskLists = new ArrayList<>(); MessageSettingDetail messageSettingDetail = new MessageSettingDetail(); List MessageDetailList = new ArrayList<>(); @@ -123,18 +123,16 @@ public class NoticeService { Map> MessageTaskMap = messageTaskLists.stream().collect(Collectors.groupingBy(e -> fetchGroupKey(e))); MessageTaskMap.forEach((k, v) -> { Set userIds = new HashSet(); - Set events = new HashSet(); MessageDetail messageDetail = new MessageDetail(); for (MessageTask m : v) { userIds.add(m.getUserId()); - events.add(m.getEvent()); + messageDetail.setEvent(m.getEvent()); messageDetail.setTaskType(m.getTaskType()); messageDetail.setWebhook(m.getWebhook()); messageDetail.setIdentification(m.getIdentification()); messageDetail.setType(m.getType()); messageDetail.setIsSet(m.getIsSet()); } - messageDetail.setEvents(new ArrayList(events)); messageDetail.setUserIds(new ArrayList(userIds)); MessageDetailList.add(messageDetail); }); @@ -158,86 +156,4 @@ public class NoticeService { example.createCriteria().andIdentificationEqualTo(identification); return messageTaskMapper.deleteByExample(example); } -/* - public void sendTask(List userIds,String context,String taskType,String eventType){ - MessageSettingDetail messageSettingDetail = noticeService.searchMessage(); - List taskList=new ArrayList<>(); - switch (taskType) { - case NoticeConstants.REVIEW_TASK: - taskList=messageSettingDetail.getReviewTask(); - break; - case NoticeConstants.JENKINS_TASK: - taskList=messageSettingDetail.getJenkinsTask(); - break; - case NoticeConstants.DEFECT_TASK: - taskList=messageSettingDetail.getDefectTask(); - break; - case NoticeConstants.TEST_PLAN_TASK: - taskList=messageSettingDetail.getTestCasePlanTask(); - break; - } - - taskList.forEach(r->{ - switch (r.getType()) { - case NoticeConstants.NAIL_ROBOT: - sendNailRobot(r,userIds,context,eventType); - break; - case NoticeConstants.WECHAT_ROBOT: - sendWechatRobot(r,userIds,context,eventType); - break; - case NoticeConstants.EMAIL: - sendEmail(r,userIds,context,eventType); - break; - } - }); - } -*/ - /*private void sendNailRobot(MessageDetail messageDetail,List userIds,String context,String eventType){ - List addresseeIdList=new ArrayList<>(); - messageDetail.getEvents().forEach(e->{ - if(StringUtils.equals(eventType,e)){ - messageDetail.getUserIds().forEach(u->{ - if(StringUtils.equals(NoticeConstants.FOUNDER,u)){ - addresseeIdList.addAll(userIds); - }else{ - addresseeIdList.add(u); - } - }); - dingTaskService.sendDingTask(context, addresseeIdList,messageDetail.getWebhook()); - } - }); - } - private void sendWechatRobot(MessageDetail messageDetail,List userIds,String context,String eventType){ - List addresseeIdList=new ArrayList<>(); - messageDetail.getEvents().forEach(e->{ - if(StringUtils.equals(eventType,e)){ - messageDetail.getUserIds().forEach(u->{ - if(StringUtils.equals(NoticeConstants.FOUNDER,u)){ - addresseeIdList.addAll(userIds); - }else{ - addresseeIdList.add(u); - } - }); - wxChatTaskService.enterpriseWechatTask(context, addresseeIdList,messageDetail.getWebhook()); - } - }); - } - private void sendEmail(MessageDetail messageDetail,List userIds,String context,String eventType){ - List addresseeIdList=new ArrayList<>(); - if(StringUtils.equals(NoticeConstants.EMAIL,messageDetail.getType())){ - messageDetail.getEvents().forEach(e->{ - if(StringUtils.equals(eventType,e)){ - messageDetail.getUserIds().forEach(u->{ - if(StringUtils.equals(NoticeConstants.FOUNDER,u)){ - addresseeIdList.addAll(userIds); - }else{ - addresseeIdList.add(u); - } - }); - mailService.sendReviewerNotice(addresseeIdList, context); - } - }); - } - - }*/ } \ No newline at end of file diff --git a/backend/src/main/java/io/metersphere/notice/service/WxChatTaskService.java b/backend/src/main/java/io/metersphere/notice/service/WxChatTaskService.java index c7b71ae2057b9013191b81c520499ccb862ded41..a4bc03e904cf34523c7b0a11c436f16bc918a5aa 100644 --- a/backend/src/main/java/io/metersphere/notice/service/WxChatTaskService.java +++ b/backend/src/main/java/io/metersphere/notice/service/WxChatTaskService.java @@ -26,30 +26,16 @@ public class WxChatTaskService { public void sendWechatRobot(MessageDetail messageDetail, List userIds, String context, String eventType) { List addresseeIdList = new ArrayList<>(); - messageDetail.getEvents().forEach(e -> { - if (StringUtils.equals(eventType, e)) { + if (StringUtils.equals(eventType, messageDetail.getEvent())) { messageDetail.getUserIds().forEach(u -> { - if (!StringUtils.equals(NoticeConstants.EXECUTOR, u) && !StringUtils.equals(NoticeConstants.EXECUTOR, u) && !StringUtils.equals(NoticeConstants.MAINTAINER, u)) { + if (!StringUtils.equals(NoticeConstants.EXECUTOR, u) && !StringUtils.equals(NoticeConstants.FOUNDER, u) && !StringUtils.equals(NoticeConstants.MAINTAINER, u)) { addresseeIdList.add(u); - } - if (StringUtils.equals(NoticeConstants.CREATE, eventType) && StringUtils.equals(NoticeConstants.EXECUTOR, u)) { - addresseeIdList.addAll(userIds); - } - if (StringUtils.equals(NoticeConstants.UPDATE, eventType) && StringUtils.equals(NoticeConstants.FOUNDER, u)) { - addresseeIdList.addAll(userIds); - } - if (StringUtils.equals(NoticeConstants.DELETE, eventType) && StringUtils.equals(NoticeConstants.FOUNDER, u)) { + }else{ addresseeIdList.addAll(userIds); } - if (StringUtils.equals(NoticeConstants.COMMENT, eventType) && StringUtils.equals(NoticeConstants.MAINTAINER, u)) { - addresseeIdList.addAll(userIds); - } - - }); enterpriseWechatTask(context, addresseeIdList, messageDetail.getWebhook()); } - }); } public void enterpriseWechatTask(String context, List userIds, String Webhook) { diff --git a/backend/src/main/java/io/metersphere/service/UserService.java b/backend/src/main/java/io/metersphere/service/UserService.java index 6da6a242ff3631aeeebc2020893a3ddab308a8ce..60cc806adcad38af737cf7dfdefdd8eb8c454e8d 100644 --- a/backend/src/main/java/io/metersphere/service/UserService.java +++ b/backend/src/main/java/io/metersphere/service/UserService.java @@ -266,6 +266,13 @@ public class UserService { example.setOrderByClause("update_time desc"); return userMapper.selectByExample(example); } + public List getUserListByOrgId() { + SessionUser user = SessionUtils.getUser(); + String orgId = user.getLastOrganizationId(); + UserExample example = new UserExample(); + example.createCriteria().andLastOrganizationIdEqualTo(orgId); + return userMapper.selectByExample(example); + } public List getUserListWithRequest(io.metersphere.controller.request.UserRequest request) { return extUserMapper.getUserList(request); diff --git a/backend/src/main/java/io/metersphere/track/service/TestCaseReviewService.java b/backend/src/main/java/io/metersphere/track/service/TestCaseReviewService.java index aba21779ec3d95fa2c64132baadccf793dbf0dcd..fa7e5c46df9871de045013428938ba38e3b08cf5 100644 --- a/backend/src/main/java/io/metersphere/track/service/TestCaseReviewService.java +++ b/backend/src/main/java/io/metersphere/track/service/TestCaseReviewService.java @@ -184,6 +184,8 @@ public class TestCaseReviewService { testCaseReview.setUpdateTime(System.currentTimeMillis()); checkCaseReviewExist(testCaseReview); testCaseReviewMapper.updateByPrimaryKeySelective(testCaseReview); + List userIds=new ArrayList<>(); + userIds.addAll(testCaseReview.getUserIds()); try { String context = getReviewContext(testCaseReview, NoticeConstants.CREATE); MessageSettingDetail messageSettingDetail = noticeService.searchMessage(); @@ -191,13 +193,13 @@ public class TestCaseReviewService { taskList.forEach(r -> { switch (r.getType()) { case NoticeConstants.NAIL_ROBOT: - dingTaskService.sendNailRobot(r, testCaseReview.getUserIds(), context, NoticeConstants.CREATE); + dingTaskService.sendNailRobot(r, userIds, context, NoticeConstants.CREATE); break; case NoticeConstants.WECHAT_ROBOT: - wxChatTaskService.sendWechatRobot(r, testCaseReview.getUserIds(), context, NoticeConstants.CREATE); + wxChatTaskService.sendWechatRobot(r, userIds, context, NoticeConstants.CREATE); break; case NoticeConstants.EMAIL: - mailService.sendReviewerNotice(r, testCaseReview.getUserIds(), testCaseReview, NoticeConstants.CREATE); + mailService.sendReviewerNotice(r, userIds, testCaseReview, NoticeConstants.CREATE); break; } }); diff --git a/backend/src/main/java/io/metersphere/track/service/TestPlanService.java b/backend/src/main/java/io/metersphere/track/service/TestPlanService.java index d3dcc11733971e07acc4c79c793227c5f03e816f..01b8af27f3016c5fe70384e028e45efbc9425188 100644 --- a/backend/src/main/java/io/metersphere/track/service/TestPlanService.java +++ b/backend/src/main/java/io/metersphere/track/service/TestPlanService.java @@ -115,7 +115,6 @@ public class TestPlanService { testPlan.setUpdateTime(System.currentTimeMillis()); testPlan.setCreator(SessionUtils.getUser().getId()); testPlanMapper.insert(testPlan); - List userIds = new ArrayList<>(); userIds.add(testPlan.getPrincipal()); try { @@ -160,33 +159,34 @@ public class TestPlanService { testPlan.setActualStartTime(System.currentTimeMillis()); } else if (TestPlanStatus.Completed.name().equals(testPlan.getStatus())) { + List userIds = new ArrayList<>(); + userIds.add(testPlan.getPrincipal()); + AddTestPlanRequest testPlans = new AddTestPlanRequest(); //已完成,写入实际完成时间 testPlan.setActualEndTime(System.currentTimeMillis()); + try { + BeanUtils.copyBean(testPlans, testPlan); + String context = getTestPlanContext(testPlans, NoticeConstants.CREATE); + MessageSettingDetail messageSettingDetail = noticeService.searchMessage(); + List taskList = messageSettingDetail.getReviewTask(); + taskList.forEach(r -> { + switch (r.getType()) { + case NoticeConstants.NAIL_ROBOT: + dingTaskService.sendNailRobot(r, userIds, context, NoticeConstants.CREATE); + break; + case NoticeConstants.WECHAT_ROBOT: + wxChatTaskService.sendWechatRobot(r, userIds, context, NoticeConstants.CREATE); + break; + case NoticeConstants.EMAIL: + mailService.sendTestPlanStartNotice(r, userIds, testPlans, NoticeConstants.CREATE); + break; + } + }); + } catch (Exception e) { + LogUtil.error(e); + } } - List userIds = new ArrayList<>(); - userIds.add(testPlan.getPrincipal()); - AddTestPlanRequest testPlans = new AddTestPlanRequest(); - /* try { - BeanUtils.copyBean(testPlans, testPlan); - String context = getTestPlanContext(testPlans, NoticeConstants.CREATE); - MessageSettingDetail messageSettingDetail = noticeService.searchMessage(); - List taskList = messageSettingDetail.getReviewTask(); - taskList.forEach(r -> { - switch (r.getType()) { - case NoticeConstants.NAIL_ROBOT: - dingTaskService.sendNailRobot(r, userIds, context, NoticeConstants.CREATE); - break; - case NoticeConstants.WECHAT_ROBOT: - wxChatTaskService.sendWechatRobot(r, userIds, context, NoticeConstants.CREATE); - break; - case NoticeConstants.EMAIL: - mailService.sendTestPlanStartNotice(r, userIds, testPlans, NoticeConstants.CREATE); - break; - } - }); - } catch (Exception e) { - LogUtil.error(e); - }*/ + return testPlanMapper.updateByPrimaryKeySelective(testPlan); } @@ -253,7 +253,7 @@ public class TestPlanService { BeanUtils.copyBean(testPlans, testPlan); String context = getTestPlanContext(testPlans, NoticeConstants.DELETE); MessageSettingDetail messageSettingDetail = noticeService.searchMessage(); - List taskList = messageSettingDetail.getReviewTask(); + List taskList = messageSettingDetail.getTestCasePlanTask(); taskList.forEach(r -> { switch (r.getType()) { case NoticeConstants.NAIL_ROBOT: @@ -493,7 +493,7 @@ public class TestPlanService { BeanUtils.copyBean(_testPlans, testPlans); String context = getTestPlanContext(_testPlans, NoticeConstants.UPDATE); MessageSettingDetail messageSettingDetail = noticeService.searchMessage(); - List taskList = messageSettingDetail.getReviewTask(); + List taskList = messageSettingDetail.getTestCasePlanTask(); taskList.forEach(r -> { switch (r.getType()) { case NoticeConstants.NAIL_ROBOT: diff --git a/backend/src/main/resources/db/migration/V36__add_messag_task.sql b/backend/src/main/resources/db/migration/V36__add_messag_task.sql new file mode 100644 index 0000000000000000000000000000000000000000..6929e395d73f5001dbd2f9ab4693b70731e761c2 --- /dev/null +++ b/backend/src/main/resources/db/migration/V36__add_messag_task.sql @@ -0,0 +1,2 @@ +alter table message_task + add organization_id varchar(255) null; \ No newline at end of file diff --git a/backend/src/main/resources/mail/deleteReview.html b/backend/src/main/resources/mail/deleteReview.html index 3293c49f4a92dfdd651b3345bc1ffe9590f9ef2f..0ece6c789ea4cd5c3c56d92174cfaea1777a3275 100644 --- a/backend/src/main/resources/mail/deleteReview.html +++ b/backend/src/main/resources/mail/deleteReview.html @@ -6,7 +6,7 @@
-

${creator} 发起的:
+

${creator} 发起的用例评审:
${reviewName}
计划开始时间是:${start}
计划结束时间为:${end}
diff --git a/backend/src/main/resources/mail/testPlanStart.html b/backend/src/main/resources/mail/testPlanStart.html index a998b3643491be7f34a5a9f110e19de19001795b..ee2dce65379de39138d1532ac1787e0ab867e772 100644 --- a/backend/src/main/resources/mail/testPlanStart.html +++ b/backend/src/main/resources/mail/testPlanStart.html @@ -12,7 +12,7 @@ 计划结束时间为:${end}
请跟进!
点击下面链接进入测试计划页面

- ${url}/#/track/plan/view + ${url}/#/track/plan/all
\ No newline at end of file diff --git a/frontend/src/business/components/settings/organization/TaskNotification.vue b/frontend/src/business/components/settings/organization/TaskNotification.vue index 710c8be89d2a1dee5818c0a3f98e51c224461fdf..e2a789e774831bb16a5debf43ea092fbcffb641e 100644 --- a/frontend/src/business/components/settings/organization/TaskNotification.vue +++ b/frontend/src/business/components/settings/organization/TaskNotification.vue @@ -1,8 +1,12 @@