From 1fac1465cdef9f3b4573edf1869af120c5cbee79 Mon Sep 17 00:00:00 2001
From: 이민희 <mhlee@maprex.co.kr>
Date: 수, 15 12월 2021 15:27:07 +0900
Subject: [PATCH] api 이슈 추가시 업체/isp/호스팅에 해당 도메인이 포함되면 해당 업체 자동 입력

---
 src/main/java/kr/wisestone/owl/service/impl/IssueServiceImpl.java        |   56 ++++++++++++++++++++++++++++
 src/main/resources/mybatis/query-template/IspField-template.xml          |   15 +++++++
 src/main/java/kr/wisestone/owl/service/impl/IspFieldServiceImpl.java     |    4 ++
 src/main/resources/mybatis/query-template/HostingField-template.xml      |   15 +++++++
 src/main/java/kr/wisestone/owl/mapper/HostingFieldMapper.java            |    2 
 src/main/java/kr/wisestone/owl/service/HostingFieldService.java          |    2 +
 src/main/java/kr/wisestone/owl/service/CompanyFieldService.java          |    2 +
 src/main/java/kr/wisestone/owl/service/impl/CompanyFieldServiceImpl.java |    9 ++--
 src/main/java/kr/wisestone/owl/web/form/IssueForm.java                   |    1 
 src/main/java/kr/wisestone/owl/mapper/IspFieldMapper.java                |    2 
 src/main/java/kr/wisestone/owl/service/impl/HostingFieldServiceImpl.java |    3 +
 src/main/java/kr/wisestone/owl/service/IspFieldService.java              |    2 +
 12 files changed, 107 insertions(+), 6 deletions(-)

diff --git a/src/main/java/kr/wisestone/owl/mapper/HostingFieldMapper.java b/src/main/java/kr/wisestone/owl/mapper/HostingFieldMapper.java
index e9afb76..a6f90a0 100644
--- a/src/main/java/kr/wisestone/owl/mapper/HostingFieldMapper.java
+++ b/src/main/java/kr/wisestone/owl/mapper/HostingFieldMapper.java
@@ -17,5 +17,5 @@
 
     List<Map<String, Object>> findEvent();
 
-    Long findByHosting(Long id);
+    Map<String, Object> findById(Long id);
 }
diff --git a/src/main/java/kr/wisestone/owl/mapper/IspFieldMapper.java b/src/main/java/kr/wisestone/owl/mapper/IspFieldMapper.java
index dbede2d..3f2f406 100644
--- a/src/main/java/kr/wisestone/owl/mapper/IspFieldMapper.java
+++ b/src/main/java/kr/wisestone/owl/mapper/IspFieldMapper.java
@@ -17,5 +17,5 @@
 
     List<Map<String, Object>> findEvent();
 
-    Long findByIsp(Long id);
+    Map<String, Object> findById(Long id);
 }
diff --git a/src/main/java/kr/wisestone/owl/service/CompanyFieldService.java b/src/main/java/kr/wisestone/owl/service/CompanyFieldService.java
index 99c35b7..7066067 100644
--- a/src/main/java/kr/wisestone/owl/service/CompanyFieldService.java
+++ b/src/main/java/kr/wisestone/owl/service/CompanyFieldService.java
@@ -17,6 +17,8 @@
 
     List<CompanyFieldVo> findCompany(Map<String, Object> resJsonData, CompanyFieldCondition make, Pageable pageable);
 
+    List<Map<String, Object>> find(CompanyFieldCondition condition);
+
     CompanyField getCompany(Long id);
 
     void detailCompany(Map<String, Object> resJsonData, CompanyFieldCondition make);
diff --git a/src/main/java/kr/wisestone/owl/service/HostingFieldService.java b/src/main/java/kr/wisestone/owl/service/HostingFieldService.java
index e1ddbec..666bc86 100644
--- a/src/main/java/kr/wisestone/owl/service/HostingFieldService.java
+++ b/src/main/java/kr/wisestone/owl/service/HostingFieldService.java
@@ -17,6 +17,8 @@
 
     List<HostingFieldVo> find(Map<String, Object> resJsonData, HostingFieldCondition make, Pageable pageable);
 
+    Map<String, Object> find(Long id);
+
     HostingField getHosting(Long id);
 
     void detail(Map<String, Object> resJsonData, HostingFieldCondition make);
diff --git a/src/main/java/kr/wisestone/owl/service/IspFieldService.java b/src/main/java/kr/wisestone/owl/service/IspFieldService.java
index 9278825..ab5dcbf 100644
--- a/src/main/java/kr/wisestone/owl/service/IspFieldService.java
+++ b/src/main/java/kr/wisestone/owl/service/IspFieldService.java
@@ -17,6 +17,8 @@
 
     List<IspFieldVo> find(Map<String, Object> resJsonData, IspFieldCondition make, Pageable pageable);
 
+    Map<String, Object> find(Long id);
+
     IspField getIsp(Long id);
 
     void detail(Map<String, Object> resJsonData, IspFieldCondition make);
diff --git a/src/main/java/kr/wisestone/owl/service/impl/CompanyFieldServiceImpl.java b/src/main/java/kr/wisestone/owl/service/impl/CompanyFieldServiceImpl.java
index ed1783e..8a39129 100644
--- a/src/main/java/kr/wisestone/owl/service/impl/CompanyFieldServiceImpl.java
+++ b/src/main/java/kr/wisestone/owl/service/impl/CompanyFieldServiceImpl.java
@@ -1,9 +1,6 @@
 package kr.wisestone.owl.service.impl;
 
-import kr.wisestone.owl.domain.CompanyField;
-import kr.wisestone.owl.domain.CustomField;
-import kr.wisestone.owl.domain.HostingField;
-import kr.wisestone.owl.domain.IspField;
+import kr.wisestone.owl.domain.*;
 import kr.wisestone.owl.repository.HostingFieldRepository;
 import kr.wisestone.owl.repository.IspFieldRepository;
 import kr.wisestone.owl.service.*;
@@ -116,6 +113,10 @@
         return this.convertCompanyVoToMap(results, totalCompanyCount, pageable, resJsonData);
     }
 
+    public List<Map<String, Object>> find(CompanyFieldCondition condition) {
+        return this.companyFieldMapper.find(condition);
+    }
+
     // �뾽泥� �긽�꽭 議고쉶�븳�떎.
     @Override
     @Transactional
diff --git a/src/main/java/kr/wisestone/owl/service/impl/HostingFieldServiceImpl.java b/src/main/java/kr/wisestone/owl/service/impl/HostingFieldServiceImpl.java
index 44d32d4..26f8d67 100644
--- a/src/main/java/kr/wisestone/owl/service/impl/HostingFieldServiceImpl.java
+++ b/src/main/java/kr/wisestone/owl/service/impl/HostingFieldServiceImpl.java
@@ -76,6 +76,9 @@
         return this.convertHostingVoToMap(results, totalHostingCount, pageable, resJsonData);
     }
 
+    public Map<String, Object> find(Long id) {
+        return this.hostingFieldMapper.findById(id);
+    }
 
     // Hosting �긽�꽭 議고쉶�븳�떎.
     @Override
diff --git a/src/main/java/kr/wisestone/owl/service/impl/IspFieldServiceImpl.java b/src/main/java/kr/wisestone/owl/service/impl/IspFieldServiceImpl.java
index 785fb73..2893698 100644
--- a/src/main/java/kr/wisestone/owl/service/impl/IspFieldServiceImpl.java
+++ b/src/main/java/kr/wisestone/owl/service/impl/IspFieldServiceImpl.java
@@ -76,6 +76,10 @@
         return this.convertIspVoToMap(results, totalIspCount, pageable, resJsonData);
     }
 
+    public Map<String, Object> find(Long id) {
+        return this.ispFieldMapper.findById(id);
+    }
+
     // Isp �긽�꽭 議고쉶�븳�떎.
     @Override
     public void detail(Map<String, Object> resJsonData, IspFieldCondition ispFieldCondition) {
diff --git a/src/main/java/kr/wisestone/owl/service/impl/IssueServiceImpl.java b/src/main/java/kr/wisestone/owl/service/impl/IssueServiceImpl.java
index c2d6601..d259bbe 100644
--- a/src/main/java/kr/wisestone/owl/service/impl/IssueServiceImpl.java
+++ b/src/main/java/kr/wisestone/owl/service/impl/IssueServiceImpl.java
@@ -82,6 +82,15 @@
     private ApiTokenService apiTokenService;
 
     @Autowired
+    private CompanyFieldService companyFieldService;
+
+    @Autowired
+    private IspFieldService ispFieldService;
+
+    @Autowired
+    private HostingFieldService hostingFieldService;
+
+    @Autowired
     private CommonConfiguration configuration;
 
     @Autowired
@@ -282,6 +291,8 @@
 
             // �궗�슜�옄 �젙�쓽 �븘�뱶 �꽕�젙
             issueForm.setIssueCustomFields(issueApiForm.getCustomFieldValues());
+            //  媛숈� �룄硫붿씤 �뾽泥� 李얘린
+            this.findCompanyField(issueForm);
 
             // api �엯�젰媛� �쟻�슜
             ConvertUtil.copyProperties(issueApiForm, issueForm);
@@ -293,6 +304,51 @@
         }
     }
 
+    private void findCompanyField(IssueForm issueForm) {
+        if(issueForm.getIssueCustomFields() != null && issueForm.getIssueCustomFields().size() > 0) {
+            CompanyFieldCondition condition = new CompanyFieldCondition();
+            List<Map<String, Object>> companyFields = this.companyFieldService.find(condition);
+            List<Map<String, Object>> issueCompanyFields = Lists.newArrayList();
+            List<Map<String, Object>> issueIspFields = Lists.newArrayList();
+            List<Map<String, Object>> issueHostingFields = Lists.newArrayList();
+
+            for (Map<String, Object> issueCustomField : issueForm.getIssueCustomFields()) {
+                int customFieldId = (Integer) issueCustomField.get("customFieldId");
+                Long customId = (long) customFieldId;
+                CustomField customField = this.customFieldService.getCustomField(customId);
+                if(customField != null && customField.getCustomFieldType().toString().equals("SITE") && customField.getName().equals("�룄硫붿씤")) {
+                    String useValue = issueCustomField.get("useValue").toString();
+                    if(companyFields != null && companyFields.size() > 0) {
+                        for (Map<String, Object> companyField : companyFields) {
+                            CompanyFieldVo companyFieldVo = ConvertUtil.convertMapToClass(companyField, CompanyFieldVo.class);
+                            if(useValue.equals(companyFieldVo.getUrl())) {
+                                companyField.put("companyId", companyField.get("id"));
+                                issueCompanyFields.add(companyField);
+                                if(companyFieldVo.getIspId() != null) {
+                                    Map<String, Object> ispField = this.ispFieldService.find(companyFieldVo.getIspId());
+                                    if (ispField != null) {
+                                        ispField.put("ispId", ispField.get("id"));
+                                        issueIspFields.add(ispField);
+                                    }
+                                }
+                                if(companyFieldVo.getHostingId() != null) {
+                                    Map<String, Object> hostingField = this.hostingFieldService.find(companyFieldVo.getHostingId());
+                                    if (hostingField != null) {
+                                        hostingField.put("hostingId", hostingField.get("id"));
+                                        issueHostingFields.add(hostingField);
+                                    }
+                                }
+                            }
+                        }
+                    }
+                }
+                issueForm.setIssueCompanyFields(issueCompanyFields);
+                issueForm.setIssueIspFields(issueIspFields);
+                issueForm.setIssueHostingFields(issueHostingFields);
+            }
+        }
+    }
+
     private User convertToUser(String token) {
         // �넗�겙�쑝濡� �쑀�� �젙蹂� 媛��졇�삤湲�
         UserVo userVo = this.apiTokenService.certification(token);
diff --git a/src/main/java/kr/wisestone/owl/web/form/IssueForm.java b/src/main/java/kr/wisestone/owl/web/form/IssueForm.java
index f5f185d..0d795cd 100644
--- a/src/main/java/kr/wisestone/owl/web/form/IssueForm.java
+++ b/src/main/java/kr/wisestone/owl/web/form/IssueForm.java
@@ -3,6 +3,7 @@
 import com.google.common.collect.Lists;
 import kr.wisestone.owl.util.ConvertUtil;
 import kr.wisestone.owl.util.MapUtil;
+import kr.wisestone.owl.vo.CompanyFieldVo;
 
 import java.util.List;
 import java.util.Map;
diff --git a/src/main/resources/mybatis/query-template/HostingField-template.xml b/src/main/resources/mybatis/query-template/HostingField-template.xml
index 34f29db..4a14e27 100644
--- a/src/main/resources/mybatis/query-template/HostingField-template.xml
+++ b/src/main/resources/mybatis/query-template/HostingField-template.xml
@@ -40,4 +40,19 @@
             AND h.id like CONCAT('%',#{id},'%')
         </if>
     </select>
+
+    <select id="findById" resultType="java.util.HashMap" parameterType="java.lang.Long">
+        SELECT
+            h.id as id,
+            h.code as code,
+            h.name as name,
+            h.manager as manager,
+            h.tel as tel,
+            h.email as email,
+            h.url as url,
+            h.memo as memo
+        FROM
+            hosting_field h
+        WHERE h.id = ${id}
+    </select>
 </mapper>
\ No newline at end of file
diff --git a/src/main/resources/mybatis/query-template/IspField-template.xml b/src/main/resources/mybatis/query-template/IspField-template.xml
index 11685ce..37afa9e 100644
--- a/src/main/resources/mybatis/query-template/IspField-template.xml
+++ b/src/main/resources/mybatis/query-template/IspField-template.xml
@@ -40,4 +40,19 @@
             AND i.id like CONCAT('%',#{id},'%')
         </if>
     </select>
+
+    <select id="findById" resultType="java.util.HashMap" parameterType="java.lang.Long">
+        SELECT
+        i.id as id,
+        i.code as code,
+        i.name as name,
+        i.manager as manager,
+        i.tel as tel,
+        i.email as email,
+        i.url as url,
+        i.memo as memo
+        FROM
+        isp_field i
+        WHERE i.id = ${id}
+    </select>
 </mapper>
\ No newline at end of file

--
Gitblit v1.8.0