OWL ITS + 탐지시스템(인터넷 진흥원)
사용자정의 필드 날짜 수정, 프로젝트 생성시 대쉬보드 이동 오류 수정
9개 파일 변경됨
4개 파일 추가됨
156 ■■■■ 파일 변경됨
src/main/java/kr/wisestone/owl/service/NoticeService.java 5 ●●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/java/kr/wisestone/owl/service/impl/NoticeServiceImpl.java 55 ●●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/java/kr/wisestone/owl/web/controller/NoticeController.java 8 ●●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/webapp/WEB-INF/i18n/code_ko_KR.properties 3 ●●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/webapp/assets/images/Email.png 패치 | 보기 | raw | blame | 히스토리
src/main/webapp/assets/images/badcode.png 패치 | 보기 | raw | blame | 히스토리
src/main/webapp/assets/images/domain.png 패치 | 보기 | raw | blame | 히스토리
src/main/webapp/assets/images/hosting.png 패치 | 보기 | raw | blame | 히스토리
src/main/webapp/assets/styles/main.css 28 ●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/webapp/scripts/app/common/common.controller.js 4 ●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/webapp/scripts/app/issue/issueSendMailPartners.controller.js 14 ●●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/webapp/views/issue/issueDetail.html 26 ●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/webapp/views/issue/issueSendMailPartners.html 13 ●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/java/kr/wisestone/owl/service/NoticeService.java
@@ -6,7 +6,10 @@
import kr.wisestone.owl.web.form.NoticeForm;
import org.springframework.data.domain.Pageable;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.ui.Model;
import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpServletRequest;
import java.util.List;
import java.util.Map;
@@ -23,4 +26,6 @@
    void detailNotice(Map<String, Object> resJsonData, NoticeCondition noticeCondition);
    void sendNotice(NoticeForm noticeForm);
    ModelAndView downloadExcel(HttpServletRequest request, Model model);
}
src/main/java/kr/wisestone/owl/service/impl/NoticeServiceImpl.java
@@ -1,5 +1,6 @@
package kr.wisestone.owl.service.impl;
import kr.wisestone.owl.common.ExcelConditionCheck;
import kr.wisestone.owl.config.kafka.KafkaSender;
import kr.wisestone.owl.constant.Constants;
import kr.wisestone.owl.constant.MsgConstants;
@@ -10,17 +11,23 @@
import kr.wisestone.owl.repository.NoticeRepository;
import kr.wisestone.owl.service.NoticeService;
import kr.wisestone.owl.service.UserService;
import kr.wisestone.owl.service.WorkspaceService;
import kr.wisestone.owl.util.ConvertUtil;
import kr.wisestone.owl.vo.NoticeVo;
import kr.wisestone.owl.vo.ResPage;
import kr.wisestone.owl.vo.*;
import kr.wisestone.owl.web.condition.CompanyFieldCondition;
import kr.wisestone.owl.web.condition.NoticeCondition;
import kr.wisestone.owl.web.form.NoticeForm;
import kr.wisestone.owl.web.view.ExcelView;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Pageable;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.ui.Model;
import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpServletRequest;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@@ -32,13 +39,22 @@
    private NoticeRepository noticeRepository;
    @Autowired
    private NoticeMapper noticeMapper;
    @Autowired
    private UserService userService;
    @Autowired
    private KafkaSender kafkaSender;
    private WorkspaceService workspaceService;
    @Autowired
    private NoticeMapper noticeMapper;
    private ExcelView excelView;
    @Autowired
    private ExcelConditionCheck excelConditionCheck;
    @Autowired
    private KafkaSender kafkaSender;
    @Override
    protected JpaRepository<Notice, Long> getRepository() {
@@ -153,4 +169,35 @@
            this.kafkaSender.send("common-topic", message);
        }
    }
    @Override
    public ModelAndView downloadExcel(HttpServletRequest request, Model model) {
        ModelAndView modelAndView = this.workspaceService.checkUseExcelDownload(model);
        if (modelAndView != null) {
            return modelAndView;
        }
        Map<String, Object> conditions = new HashMap<>();
        //  엑셀 다운로드에 필요한 검색 조건 정보를 추출하고 검색 조건 추출에 오류가 발생하면 경고를 표시해준다.
        modelAndView = this.excelConditionCheck.checkCondition(conditions, request, model);
        if (modelAndView != null) {
            return modelAndView;
        }
        NoticeCondition noticeCondition = NoticeCondition.make(conditions);
        List<Map<String, Object>> results = this.noticeMapper.find(noticeCondition);
        List<NoticeVo> noticeVos = ConvertUtil.convertListToListClass(results, NoticeVo.class);
        // code_ko_KR 에 code명 설정
        ExportExcelVo excelInfo = new ExportExcelVo();
        excelInfo.setFileName(this.messageAccessor.message("공지사항 목록"));
        excelInfo.addAttrInfos(new ExportExcelAttrVo("title", this.messageAccessor.message("notice.title"), 6, ExportExcelAttrVo.ALIGN_CENTER));
        excelInfo.addAttrInfos(new ExportExcelAttrVo("registerDate", this.messageAccessor.message("notice.registerDate"), 10, ExportExcelAttrVo.ALIGN_CENTER));
        excelInfo.addAttrInfos(new ExportExcelAttrVo("registerId", this.messageAccessor.message("notice.registerId"), 10, ExportExcelAttrVo.ALIGN_CENTER));
        excelInfo.setDatas(noticeVos);
        model.addAttribute(Constants.EXCEL, excelInfo);
        return new ModelAndView(this.excelView);
    }
}
src/main/java/kr/wisestone/owl/web/controller/NoticeController.java
@@ -8,11 +8,14 @@
import org.springframework.data.domain.Pageable;
import org.springframework.http.MediaType;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpServletRequest;
import java.util.HashMap;
import java.util.Map;
@@ -85,5 +88,10 @@
        return this.setSuccessMessage(resJsonData);
    }
    @RequestMapping(value = "/notice/downloadExcel", method = RequestMethod.POST)
    public ModelAndView downloadExcel(HttpServletRequest request, Model model) {
        return this.noticeService.downloadExcel(request, model);
    }
}
src/main/webapp/WEB-INF/i18n/code_ko_KR.properties
@@ -119,6 +119,9 @@
manageUser.manageFAQPerm=FAQ \uAD00\uB9AC
manageUser.manageQnAPerm=QnA \uAD00\uB9AC
manageUser.manageGuidePerm=\uAC00\uC774\uB4DC \uAD00\uB9AC
notice.title=\uC81C\uBAA9
notice.registerDate=\uB4F1\uB85D\uC77C
notice.registerId=\uB4F1\uB85D\uC790
department.departmentName=\uBD80\uC11C\uBA85
department.departmentDescription=\uBD80\uC11C\uC124\uBA85
department.departmentCount=\uBD80\uC11C\uC778\uC6D0
src/main/webapp/assets/images/Email.png
src/main/webapp/assets/images/badcode.png
src/main/webapp/assets/images/domain.png
src/main/webapp/assets/images/hosting.png
src/main/webapp/assets/styles/main.css
@@ -897,6 +897,9 @@
.offset-detail-2 {
    margin-left: 4%;
}
.offset-detail-3 {
    margin-left: 9.2%;
}
.offset-1 {
    margin-left: 8.3333333333%;
@@ -28472,6 +28475,14 @@
    margin-top: 30px !important;
}
.mt-40 {
    margin-top: 40px; !important;
}
.mt-50 {
    margin-top: 50px; !important;
}
.ml-10 {
    margin-left: 10px !important;
}
@@ -30379,6 +30390,20 @@
    font-weight: 600;
}
.email_font {
    color: #494848;
    font-size: 0.75rem;
    line-height: 1.5;
    font-weight: 600;
}
.info_detail_font {
    color: #000;
    font-size: 1rem;
    line-height: 1.5;
    font-weight: 600;
}
.email_color {
    color:#0066ff;
}
@@ -30422,7 +30447,4 @@
    margin: 0 auto;
}
.Email-Template-detail {
}
/* 간트차트 end */
src/main/webapp/scripts/app/common/common.controller.js
@@ -86,8 +86,8 @@
                            moveMenu("issues.list");
                        }
                    }
                    $rootScope.$broadcast("changeIssueListMenu", $rootScope.issueTypeMenu);
                    moveMenu("issues.list");
                    //$rootScope.$broadcast("changeIssueListMenu", $rootScope.issueTypeMenu);
                    if ($rootScope.user.lastIssueTypeId !== issueTypeId) {
                        $scope.fn.setLastIssueType(issueTypeId);
src/main/webapp/scripts/app/issue/issueSendMailPartners.controller.js
@@ -140,6 +140,8 @@
                function showEmailTemplate() {
                    const div1 = document.getElementById('Email-Template1');
                    const div2 = document.getElementById('Email-Template2');
                    const div3 = document.getElementById('Email-Template3');
                    const div4 = document.getElementById('Email-Template4');
                    if(div1.style.display === 'none') {
                        div1.style.display = 'block';
@@ -151,6 +153,18 @@
                    } else if (div2.style.display == 'block') {
                        div2.style.display = 'none';
                    }
                    if (div3.style.display == 'none') {
                        div3.style.display = 'block';
                    } else if (div3.style.display == 'block') {
                        div3.style.display = 'none';
                    }
                    if (div4.style.display == 'none') {
                        div4.style.display = 'block';
                    } else if (div4.style.display == 'block') {
                        div4.style.display = 'none';
                    }
                }
            }]);
    });
src/main/webapp/views/issue/issueDetail.html
@@ -188,14 +188,9 @@
                <div class="row">
                    <div class="col-md-4">
                        <div class="form-group">
                            <h6 class="info_font" translate="common.detectingInfo">탐지정보</h6>
                            <h6 class="info_detail_font" translate="common.detectingInfo">탐지정보</h6>
                            <span class="issue-detail-label" style="position: relative; top: 1rem" ng-show="vm.viewer.issueCustomFields == ''">사용자 정의 필드값이 없습니다.</span>
                        </div>
                    </div>
                    <div class="col-md-2">
                        <issue-detail-image-preview images="vm.images"></issue-detail-image-preview>
                    </div>
                    <div ng-show="vm.images.length < 1" class="detail-not-elements width-100">
                    </div>
                </div>
                <!-- 사용자 정의 필드 -->
@@ -259,9 +254,16 @@
                                ng-repeat="useValue in issueCustomField.useValues">{{::useValue.value}}, </span>
                                <span ng-if="!$root.isDefined(issueCustomField.useValues)">-</span>
                            </div>
                        </div>
                    </div>
                    </div>
                    <!--이미지 미리보기-->
                    <div class="col-md-2">
                        <issue-detail-image-preview images="vm.images"></issue-detail-image-preview>
                    </div>
                    <div ng-show="vm.images.length < 1" class="detail-not-elements width-100">
                    </div>
                </div>
@@ -278,7 +280,7 @@
                <div ng-show="fn.containsPartner('업체')" class="row">
                    <div class="col-sm-2">
                        <div class="form-group">
                            <h6 class="info_font" translate="companyField.info">업체정보</h6>
                            <h6 class="info_detail_font" translate="companyField.info">업체정보</h6>
                        </div>
                    </div>
                </div>
@@ -332,7 +334,7 @@
                <div ng-show="fn.containsPartner('ISP');" class="row">
                    <div class="col-sm-2">
                        <div class="form-group">
                            <h6 class="info_font" translate="ispField.info">ISP정보</h6>
                            <h6 class="info_detail_font" translate="ispField.info">ISP정보</h6>
                        </div>
                    </div>
                </div>
@@ -393,7 +395,7 @@
                <div ng-show="fn.containsPartner('호스팅');" class="row">
                    <div class="col-sm-2">
                        <div class="form-group">
                            <h6 class="info_font" translate="hostingField.info">호스팅정보</h6>
                            <h6 class="info_detail_font" translate="hostingField.info">호스팅정보</h6>
                        </div>
                    </div>
                </div>
@@ -454,7 +456,7 @@
                <div class="row mt-30">
                    <div class="col-md-10">
                        <span class="info_font h3" translate="issue.relationIssue">연관 이슈</span>
                        <span class="info_detail_font h3" translate="issue.relationIssue">연관 이슈</span>
                    </div>
                    <div class="col-md-1">
                        <button class="btn btn-darkgrey offset-12" ng-click="fn.addRelationIssueTableConfig()" type="button"><span translate="issue.settingTableDisplay">테이블 표시 설정</span></button>
@@ -501,7 +503,7 @@
                <div class="row mt-30">
                    <div class="col-md-10">
                        <span class="info_font h3" translate="issue.downIssue">하위 이슈</span>
                        <span class="info_detail_font h3" translate="issue.downIssue">하위 이슈</span>
                    </div>
                    <div class="col-md-1">
                        <button class="btn btn-darkgrey offset-12"  ng-click="fn.addDownIssueTableConfig()" type="button"><span translate="issue.settingTableDisplay">테이블 표시 설정</span></button>
src/main/webapp/views/issue/issueSendMailPartners.html
@@ -34,10 +34,15 @@
                                       type : 'partner', maxlength : 100, autoResize : true, stopRemoveBodyEvent : true }"></js-input-autocomplete>
                    <div class="Template-area mt-20">
                        <label class="issue-detail-label">이메일 템플릿</label>
                            <div class="mt-20">
                            <div class="mt-10">
                                <img id="ISSUE_SEND_1" class="TemplateIMG" src="assets/images/image-email.png" ng-click="fn.changeTemplate('ISSUE_SEND_1')">
                                <img id="ISSUE_SEND_2" class="TemplateIMG" src="assets/images/image-email.png" ng-click="fn.changeTemplate('ISSUE_SEND_2')">
                                <img id="ISSUE_SEND_3" class="TemplateIMG" src="assets/images/image-email.png" ng-click="fn.changeTemplate('ISSUE_SEND_3')">
                                <div>
                                    <span class="email_font">악성코드</span>
                                    <span class="email_font offset-detail-3">도메인</span>
                                    <span class="email_font offset-detail-3">호스팅</span>
                                </div>
                            </div>
                        <input class="btn-toggled btn-primary table-bordered" style="float: left" type="button" value="템플릿" ng-click="fn.showEmailTemplate()">
                    </div>
@@ -55,7 +60,9 @@
        </button>
    </div>
    <div>
        <img style="height: 350px; width: 330px; display: none; margin: 0 auto;" class="mt-20" id="Email-Template1" src="assets/images/email-temp-detail.png">
        <img style="height: 350px; width: 330px; display: none; margin: 0 auto;" class="mt-20 mb-30" id="Email-Template2" src="assets/images/email-temp.png">
        <img style="height: 24px; width: 250px; display: none; margin: 0 auto;" id="Email-Template1" src="assets/images/domain.png">
        <img style="height: 24px; width: 250px; display: none; margin: 0 auto; margin-top: 50px" id="Email-Template2" src="assets/images/badcode.png">
        <img style="height: 24px; width: 250px; display: none; margin: 0 auto; margin-top: 50px" id="Email-Template3" src="assets/images/hosting.png">
    </div>
    <img style="height: 500px; width: 440px; display: none; margin: 0 auto;" class="mt-20 mb-30" id="Email-Template4" src="assets/images/Email.png">
</div>