OWL ITS + 탐지시스템(인터넷 진흥원)
이민희
2021-12-01 98123c3ea5bb8fc53d1258046403801deb5b1584
이슈 이메일 전송 백엔드
8개 파일 변경됨
63 ■■■■ 파일 변경됨
src/main/java/kr/wisestone/owl/constant/MailConstants.java 5 ●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/java/kr/wisestone/owl/constant/MsgConstants.java 1 ●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/java/kr/wisestone/owl/domain/enumType/EmailType.java 3 ●●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/java/kr/wisestone/owl/service/impl/IssueServiceImpl.java 17 ●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/java/kr/wisestone/owl/service/impl/SystemEmailServiceImpl.java 18 ●●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/java/kr/wisestone/owl/web/controller/IssueController.java 4 ●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/java/kr/wisestone/owl/web/form/IssueForm.java 14 ●●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/webapp/WEB-INF/i18n/messages_ko_KR.properties 1 ●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/java/kr/wisestone/owl/constant/MailConstants.java
@@ -30,7 +30,10 @@
    ISSUE_ADD("issue.add.title", "issueAddEmail"),  //  이슈 생성
    ISSUE_REMOVE("issue.remove.title", "issueRemoveEmail"), //  이슈 삭제
    ISSUE_SEND("issue.send.title", "issueSendEmail"); //  이슈 이메일 전달
    ISSUE_SEND("issue.send.title", "issueSendEmail"), //  이슈 이메일 전달
    ISSUE_SEND_1("issue.send1.title", "issueSend1Email"), //  이슈 이메일 전달
    ISSUE_SEND_2("issue.send2.title", "issueSend2Email"), //  이슈 이메일 전달
    ISSUE_SEND_3("issue.send3.title", "issueSend3Email"); //  이슈 이메일 전달
    //  ISSUE_MODIFY("issue.modify.title", "issueModifyEmail"); //  이슈 수정
src/main/java/kr/wisestone/owl/constant/MsgConstants.java
@@ -114,6 +114,7 @@
    public static final String ISSUE_REMOVE_NOT_SELECT = "ISSUE_REMOVE_NOT_SELECT"; //  삭제할 이슈가 선택되지 않았습니다.
    public static final String ISSUE_NO_TITLE = "ISSUE_NO_TITLE";   //  이슈 제목이 입력되지 않았습니다.
    public static final String ISSUE_NOT_SEND_USER = "ISSUE_NOT_SEND_USER";   //  이슈 발송 대상자를 선택하지 않았습니다.
    public static final String ISSUE_NOT_SELECT_TEMPLATE = "ISSUE_NOT_SELECT_TEMPLATE";   //  이슈 발송 템플릿을 선택하지 않았습니다.
    public static final String ISSUE_COMMENT_REMOVE_NOT_SELECT = "ISSUE_COMMENT_REMOVE_NOT_SELECT"; //  삭제할 댓글을 선택하지 않았습니다.
    public static final String ISSUE_COMMENT_NOT_EXIST = "ISSUE_COMMENT_NOT_EXIST"; //  댓글이 존재하지 않습니다.
src/main/java/kr/wisestone/owl/domain/enumType/EmailType.java
@@ -32,6 +32,9 @@
    ISSUE_MODIFY,   //  이슈 수정
    ISSUE_REMOVE,   //  이슈 삭제
    ISSUE_SEND, //  이슈 정보 이메일로 전달
    ISSUE_SEND_1,
    ISSUE_SEND_2,
    ISSUE_SEND_3,
    PROJECT_ADD,    //  프로젝트 생성
    PROJECT_MODIFY, //  프로젝트 수정
    PROJECT_REMOVE, //  프로젝트 삭제
src/main/java/kr/wisestone/owl/service/impl/IssueServiceImpl.java
@@ -2480,6 +2480,9 @@
        if (issueForm.getSendEmails().size() < 1) {
            throw new OwlRuntimeException(
                    this.messageAccessor.getMessage(MsgConstants.ISSUE_NOT_SEND_USER));
        }else if (issueForm.getTemplate() != null){
            throw new OwlRuntimeException(
                    this.messageAccessor.getMessage(MsgConstants.ISSUE_NOT_SELECT_TEMPLATE));
        }
        Issue issue = this.getIssue(issueForm.getId());
@@ -2501,8 +2504,15 @@
        //  사용자 시스템 기능 사용 정보 수집
        log.info(ElasticSearchUtil.makeUserActiveHistoryMessage(this.webAppUtil.getLoginUser(), ElasticSearchConstants.ISSUE_ANOTHER_USER_SEND_EMAIL));
        //this.systemEmailService.directEmail(issueForm.getSendEmails().toArray(new String[issueForm.getSendEmails().size()]), EmailType.ISSUE_SEND, issueMap, null);
        this.systemEmailService.directEmail(issueForm.getSendEmails().toArray(new String[issueForm.getSendEmails().size()]), EmailType.ISSUE_SEND, issueMap, null); //mailType.ISSUE_SEND - 템플릿 설정
        if(issueForm.getTemplate().equals("SEND1")){
            this.systemEmailService.directEmail(issueForm.getSendEmails().toArray(new String[issueForm.getSendEmails().size()]), EmailType.ISSUE_SEND_1, issueMap, null);
        }else if(issueForm.getTemplate().equals("SEND2")){
            this.systemEmailService.directEmail(issueForm.getSendEmails().toArray(new String[issueForm.getSendEmails().size()]), EmailType.ISSUE_SEND_2, issueMap, null);
        }else if(issueForm.getTemplate().equals("SEND3")){
            this.systemEmailService.directEmail(issueForm.getSendEmails().toArray(new String[issueForm.getSendEmails().size()]), EmailType.ISSUE_SEND_3, issueMap, null);
        }
    }
    //  예약 발생 이슈를 실행한다
@@ -2686,7 +2696,6 @@
        }
        if (newParentIssueId != null) { // 추가 할 경우
           // todo 이전 하위 일감 히스토리기록 필요
            parentIssue = this.getIssue(newParentIssueId); //상위이슈(myIssue)
            issue.setParentIssue(parentIssue); //myIssue를 하위이슈의 상위이슈로 set
            this.issueHistoryService.detectDownIssues(IssueHistoryType.ADD, issue, sb); //issue = 하위이슈
@@ -2716,7 +2725,7 @@
        }
    }
    @Override
    /*@Override
    @Transactional
    public void findMailTargetAll(Map<String, Object> resJsonData, IssueCondition condition, Pageable pageable) {
        IssueVo issueVo = new IssueVo();
@@ -2752,7 +2761,7 @@
        resJsonData.put(Constants.RES_KEY_CONTENTS, emailList);
        resJsonData.put(Constants.REQ_KEY_PAGE_VO, new ResPage(pageable.getPageNumber(), pageable.getPageSize(),
                totalPage, totalCount));
    }
    }*/
    /*@Override
    @Transactional
src/main/java/kr/wisestone/owl/service/impl/SystemEmailServiceImpl.java
@@ -179,6 +179,24 @@
                content = this.springTemplateEngine.process(mailConstants.getMailTemplate(), context);
                break;
            case ISSUE_SEND_1:    //  이슈 이메일로 대상자에게 발송
                mailConstants = MailConstants.ISSUE_SEND_1;
                context = StringTemplateUtil.makeContext(params, locale);
                content = this.springTemplateEngine.process(mailConstants.getMailTemplate(), context);
                break;
            case ISSUE_SEND_2:    //  이슈 이메일로 대상자에게 발송
                mailConstants = MailConstants.ISSUE_SEND_2;
                context = StringTemplateUtil.makeContext(params, locale);
                content = this.springTemplateEngine.process(mailConstants.getMailTemplate(), context);
                break;
            case ISSUE_SEND_3:    //  이슈 이메일로 대상자에게 발송
                mailConstants = MailConstants.ISSUE_SEND_3;
                context = StringTemplateUtil.makeContext(params, locale);
                content = this.springTemplateEngine.process(mailConstants.getMailTemplate(), context);
                break;
            case USER_JOIN_STATISTICS:  //  일일 사용자 가입 정보 발송
                mailConstants = MailConstants.USER_JOIN_STATISTICS;
                context = StringTemplateUtil.makeContext(params, locale);
src/main/java/kr/wisestone/owl/web/controller/IssueController.java
@@ -165,7 +165,7 @@
    }
    //  메일 발송 대상자 목록 조회
    @RequestMapping(value = "/issue/findMailTargetAll", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_VALUE)
    /*@RequestMapping(value = "/issue/findMailTargetAll", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_VALUE)
    public
    @ResponseBody
    Map<String, Object> findMailTargetAll(@RequestBody Map<String, Map<String, Object>> params) {
@@ -175,7 +175,7 @@
        this.issueService.findMailTargetAll(resJsonData, IssueCondition.make(params.get(Constants.REQ_KEY_CONTENT)), pageable);
        return this.setSuccessMessage(resJsonData);
    }
    }*/
    /*//  업체 담당자 메일 목록 조회
src/main/java/kr/wisestone/owl/web/form/IssueForm.java
@@ -30,6 +30,7 @@
    private List<Long> userIds = Lists.newArrayList();
    private List<Long> departmentIds = Lists.newArrayList();    // 담당 부서
    private List<String> sendEmails = Lists.newArrayList(); //  이메일 발송 대상자
    private String template;
    private List<Long> attachedFileIds = Lists.newArrayList();
    private Long relationIssue;   // 연관 일감
    private List<Map<String, Object>> issueCustomFields = Lists.newArrayList();
@@ -70,6 +71,11 @@
        //  메일 발송자 정보
        if (MapUtil.getStrings(params, "sendEmails") != null) {
            form.setSendEmails(MapUtil.getStrings(params, "sendEmails"));
        }
        //  메일 템플릿 정보
        if (MapUtil.getString(params, "template") != null) {
            form.setTemplate(MapUtil.getString(params, "template"));
        }
        //  텍스트 에디터에 첨부된 파일을 이슈와 연결하는 정보
@@ -333,4 +339,12 @@
    public void setParentIssueId(Long parentIssueId) {
        this.parentIssueId = parentIssueId;
    }
    public String getTemplate() {
        return template;
    }
    public void setTemplate(String template) {
        this.template = template;
    }
}
src/main/webapp/WEB-INF/i18n/messages_ko_KR.properties
@@ -116,6 +116,7 @@
ISSUE_REMOVE_NOT_SELECT = \uC0AD\uC81C\uD560 \uC774\uC288\uAC00 \uC120\uD0DD\uB418\uC9C0 \uC54A\uC558\uC2B5\uB2C8\uB2E4.
ISSUE_NO_TITLE = \uC774\uC288 \uC81C\uBAA9\uC774 \uC785\uB825\uB418\uC9C0 \uC54A\uC558\uC2B5\uB2C8\uB2E4.
ISSUE_NOT_SEND_USER = \uC774\uC288 \uBC1C\uC1A1 \uB300\uC0C1\uC790\uB97C \uC120\uD0DD\uD558\uC9C0 \uC54A\uC558\uC2B5\uB2C8\uB2E4.
ISSUE_NOT_SELECT_TEMPLATE = \uC774\uC288 \uBC1C\uC1A1 \uD15C\uD50C\uB9BF\uC744 \uC120\uD0DD\uD558\uC9C0 \uC54A\uC558\uC2B5\uB2C8\uB2E4.
ISSUE_COMMENT_REMOVE_NOT_SELECT = \uC0AD\uC81C\uD560 \uB313\uAE00\uC744 \uC120\uD0DD\uD558\uC9C0 \uC54A\uC558\uC2B5\uB2C8\uB2E4.
ISSUE_COMMENT_NOT_EXIST = \uB313\uAE00\uC774 \uC874\uC7AC\uD558\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4.