OWL ITS + 탐지시스템(인터넷 진흥원)
이메일 전송 템플릿을 가져올때 db에서 가져오지 않고 서버의 이메일 템플릿을 가져오도록 수정
8개 파일 변경됨
114 ■■■■ 파일 변경됨
src/main/java/kr/wisestone/owl/service/IssueService.java 2 ●●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/java/kr/wisestone/owl/service/SystemEmailService.java 3 ●●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/java/kr/wisestone/owl/service/impl/EmailTemplateServiceImpl.java 35 ●●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/java/kr/wisestone/owl/service/impl/IssueServiceImpl.java 2 ●●● 패치 | 보기 | raw | blame | 히스토리
src/main/java/kr/wisestone/owl/service/impl/SystemEmailServiceImpl.java 32 ●●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/java/kr/wisestone/owl/web/condition/EmailTemplateCondition.java 18 ●●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/webapp/scripts/app/issue/issueSendMailPartners.controller.js 17 ●●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/webapp/views/issue/issueSendMailPartners.html 5 ●●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/java/kr/wisestone/owl/service/IssueService.java
@@ -110,4 +110,6 @@
    void findApiIssue(ApiMonitorCondition apiMonitorCondition, Map<String, Object> resJsonData);
    void setCountDownIssues(List<IssueVo> issueVos);
    void makeIssueMapToIssue(Issue issue, Map<String, Object> issueMap);
}
src/main/java/kr/wisestone/owl/service/SystemEmailService.java
@@ -7,6 +7,7 @@
import org.springframework.data.jpa.repository.JpaRepository;
import java.util.List;
import java.util.Locale;
import java.util.Map;
public interface SystemEmailService extends AbstractService<SystemEmail, Long, JpaRepository<SystemEmail, Long>>{
@@ -28,4 +29,6 @@
    void realTimeSendEmail();
    void information(Map<String, Object> params);
    String makeEmailContent(EmailType emailType, Map<String, Object> params);
}
src/main/java/kr/wisestone/owl/service/impl/EmailTemplateServiceImpl.java
@@ -2,9 +2,11 @@
import com.google.common.collect.Lists;
import kr.wisestone.owl.common.ExcelConditionCheck;
import kr.wisestone.owl.config.CommonConfiguration;
import kr.wisestone.owl.constant.Constants;
import kr.wisestone.owl.constant.MsgConstants;
import kr.wisestone.owl.domain.*;
import kr.wisestone.owl.domain.enumType.EmailType;
import kr.wisestone.owl.exception.OwlRuntimeException;
import kr.wisestone.owl.mapper.CompanyFieldMapper;
import kr.wisestone.owl.mapper.EmailTemplateMapper;
@@ -13,6 +15,7 @@
import kr.wisestone.owl.repository.HostingFieldRepository;
import kr.wisestone.owl.repository.IspFieldRepository;
import kr.wisestone.owl.service.*;
import kr.wisestone.owl.util.CommonUtil;
import kr.wisestone.owl.util.ConvertUtil;
import kr.wisestone.owl.vo.*;
import kr.wisestone.owl.web.condition.CompanyFieldCondition;
@@ -43,7 +46,13 @@
    private EmailTemplateMapper emailTemplateMapper;
    @Autowired
    private EmailTemplateService emailTemplateService;
    private SystemEmailService systemEmailService;
    @Autowired
    private IssueService issueService;
    @Autowired
    private CommonConfiguration configuration;
    @Override
    protected JpaRepository<EmailTemplate, Long> getRepository() {
@@ -52,9 +61,29 @@
    @Override
    @Transactional
    public void find(Map<String, Object> resJsonData, EmailTemplateCondition condition) {
        EmailTemplate emailTemplate = this.getEmailTemplate(condition.getId());
        EmailTemplateVo emailTemplateVo = ConvertUtil.copyProperties(emailTemplate, EmailTemplateVo.class);
        //EmailTemplate emailTemplate = this.getEmailTemplate(condition.getId());
        //EmailTemplateVo emailTemplateVo = ConvertUtil.copyProperties(emailTemplate, EmailTemplateVo.class);
        Issue issue = this.issueService.getIssue(condition.getIssueId());
        Map<String, Object> issueMap = new HashMap<>();
        //  이슈 정보를 이메일 전송에 사용하기 위해 Map 형태로 변환한다.
        this.issueService.makeIssueMapToIssue(issue, issueMap);
        //  발신자 표시
        UserVo toUser = this.webAppUtil.getLoginUser();
        issueMap.put("toUser", toUser.getName() + "(" + CommonUtil.decryptAES128(toUser.getAccount()) + ")");
        // 이슈 링크
        String projectKey = issue.getProject().getProjectKey();
        Long IssueNumber = issue.getIssueNumber();
        String link = this.configuration.getEmailSendUrl() + "/#/issues/issueList?projectKey=" + projectKey + "&issueNumber=" + IssueNumber.toString();
        issueMap.put("issueLink", link);
        issueMap.put("projectLink", link);
        EmailType emailType = EmailType.valueOf(condition.getTemplateType());
        String type = this.systemEmailService.makeEmailContent(emailType, issueMap);
        EmailTemplateVo emailTemplateVo = new EmailTemplateVo();
        emailTemplateVo.setTemplate(type);
        resJsonData.put(Constants.RES_KEY_CONTENTS, emailTemplateVo);
    }
src/main/java/kr/wisestone/owl/service/impl/IssueServiceImpl.java
@@ -716,7 +716,7 @@
    }
    //  이슈 정보를 이메일 전송에 사용하기 위해 Map 형태로 변환한다.
    private void makeIssueMapToIssue(Issue issue, Map<String, Object> issueMap) {
    public void makeIssueMapToIssue(Issue issue, Map<String, Object> issueMap) {
        issueMap.put("title", issue.getTitle());
        issueMap.put("issueNumber", issue.getIssueNumber());
        issueMap.put("issueTypeName", issue.getIssueType().getName());
src/main/java/kr/wisestone/owl/service/impl/SystemEmailServiceImpl.java
@@ -227,6 +227,38 @@
        this.sendEmail(this.messageAccessor.message(mailConstants.getTitle(), locale), content, sendUsers, filePaths);
    }
    //  이메일 템플릿 찾기
    public String makeEmailContent(EmailType emailType, Map<String, Object> params) {
        MailConstants mailConstants = null;
        Context context;
        String content = null;
        //params.put("url", this.commonConfiguration.getEmailSendUrl());
        Locale locale = Locale.getDefault();
        switch (emailType) {
            case ISSUE_SEND_1:    //  이슈 이메일 템플릿1로 대상자에게 발송
                mailConstants = MailConstants.ISSUE_SEND_1;
                context = StringTemplateUtil.makeContext(params, locale);
                content = this.springTemplateEngine.process(mailConstants.getMailTemplate(), context);
                break;
            case ISSUE_SEND_2:    //  이슈 이메일 템플릿2로 대상자에게 발송
                mailConstants = MailConstants.ISSUE_SEND_2;
                context = StringTemplateUtil.makeContext(params, locale);
                content = this.springTemplateEngine.process(mailConstants.getMailTemplate(), context);
                break;
            case ISSUE_SEND_3:    //  이슈 이메일 템플릿3로 대상자에게 발송
                mailConstants = MailConstants.ISSUE_SEND_3;
                context = StringTemplateUtil.makeContext(params, locale);
                content = this.springTemplateEngine.process(mailConstants.getMailTemplate(), context);
                break;
        }
        return content;
    }
    //  이메일을 발송한다.
    @Override
    @Transactional(readOnly = true)
src/main/java/kr/wisestone/owl/web/condition/EmailTemplateCondition.java
@@ -8,6 +8,8 @@
    private Long id;
    private String title;
    private String template;
    private String templateType;
    private Long issueId;
    public static EmailTemplateCondition make(Map<String, Object> condition) {
        return ConvertUtil.convertMapToClass(condition, EmailTemplateCondition.class);
@@ -36,4 +38,20 @@
    public void setTemplate(String template) {
        this.template = template;
    }
    public String getTemplateType() {
        return templateType;
    }
    public void setTemplateType(String templateType) {
        this.templateType = templateType;
    }
    public Long getIssueId() {
        return issueId;
    }
    public void setIssueId(Long issueId) {
        this.issueId = issueId;
    }
}
src/main/webapp/scripts/app/issue/issueSendMailPartners.controller.js
@@ -40,14 +40,16 @@
                    },
                    emailTitle : "",
                    emailTemplateId : -1,
                    emailTemplates : []
                    emailTemplates : [],
                    emailTemplateType : "",
                };
                angular.extend(this, $controller('autoCompleteController', {$scope : $scope, $injector : $injector}));
                function onChangeEmailTemplate() {
                    var content = {
                        id : $scope.vm.emailTemplateId
                        templateType : $scope.vm.emailTemplateType,
                        issueId : parameter.issueId
                    }
                    EmailTemplate.find($resourceProvider.getContent(
                        content,
@@ -66,25 +68,28 @@
                function getEmailTemplateList() {
                    $scope.vm.emailTemplates.push({
                            id : 1,
                            templateType : "ISSUE_SEND_1",
                            title : "템플릿1"
                    });
                    $scope.vm.emailTemplates.push({
                            id : 2,
                            templateType : "ISSUE_SEND_2",
                            title : "템플릿2"
                    });
                    $scope.vm.emailTemplates.push({
                            id : 3,
                            templateType : "ISSUE_SEND_3",
                            title : "템플릿3"
                    });
                    $scope.vm.emailTemplateId = 1;
                    $scope.vm.emailTitle = "";
                    $scope.vm.emailTemplates.forEach(function (emailTemplate) {
                        if (emailTemplate.id === $scope.vm.emailTemplateId) {
                        /*if (emailTemplate.id === $scope.vm.emailTemplateId) {
                            $scope.vm.emailTitle = emailTemplate.title;
                        }*/
                        if (emailTemplate.templateType === $scope.vm.emailTemplateType) {
                            $scope.vm.emailTitle = emailTemplate.title;
                        }
                    })
src/main/webapp/views/issue/issueSendMailPartners.html
@@ -24,6 +24,7 @@
                                       owl-auto-focus
                                       target=".auto-complete-i0nput"
                                       selected-model="vm.form.mailUsers"
                                       custom-input="true"
                                       search="vm.userName"
                                       page="vm.autoCompletePage.user.page"
                                       total-page="vm.autoCompletePage.user.totalPage"
@@ -40,11 +41,11 @@
                            <select id="emailTemplateForm"
                                    name="emailTemplate"
                                    class="form-control input-sm issue-select-label"
                                    ng-model="vm.emailTemplateId"
                                    ng-model="vm.emailTemplateType"
                                    ng-change="fn.onChangeEmailTemplate()"
                                    required>
                                <option ng-repeat="emailTemplate in vm.emailTemplates"
                                        value="{{emailTemplate.id}}"
                                        value="{{emailTemplate.templateType}}"
                                        translate="{{emailTemplate.title}}">
                                </option>
                            </select>