이메일 전송 템플릿을 가져올때 db에서 가져오지 않고 서버의 이메일 템플릿을 가져오도록 수정
| | |
| | | void findApiIssue(ApiMonitorCondition apiMonitorCondition, Map<String, Object> resJsonData); |
| | | |
| | | void setCountDownIssues(List<IssueVo> issueVos); |
| | | |
| | | void makeIssueMapToIssue(Issue issue, Map<String, Object> issueMap); |
| | | } |
| | |
| | | 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>>{ |
| | |
| | | void realTimeSendEmail(); |
| | | |
| | | void information(Map<String, Object> params); |
| | | |
| | | String makeEmailContent(EmailType emailType, Map<String, Object> params); |
| | | } |
| | |
| | | |
| | | 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; |
| | |
| | | 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; |
| | |
| | | private EmailTemplateMapper emailTemplateMapper; |
| | | |
| | | @Autowired |
| | | private EmailTemplateService emailTemplateService; |
| | | private SystemEmailService systemEmailService; |
| | | |
| | | @Autowired |
| | | private IssueService issueService; |
| | | |
| | | @Autowired |
| | | private CommonConfiguration configuration; |
| | | |
| | | @Override |
| | | protected JpaRepository<EmailTemplate, Long> getRepository() { |
| | |
| | | |
| | | |
| | | @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); |
| | | } |
| | |
| | | } |
| | | |
| | | // 이슈 정보를 이메일 전송에 사용하기 위해 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()); |
| | |
| | | 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) |
| | |
| | | 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); |
| | |
| | | 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; |
| | | } |
| | | } |
| | |
| | | }, |
| | | 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, |
| | |
| | | |
| | | 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; |
| | | } |
| | | }) |
| | |
| | | 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" |
| | |
| | | <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> |