From 3c54a4671cf489fd2c32e24685338bc3590e8d4b Mon Sep 17 00:00:00 2001
From: minhee <alsdldlfrl@gmail.com>
Date: 화, 15 3월 2022 17:34:41 +0900
Subject: [PATCH] - api로 이슈 추가 시 사용자정의필드 타입으로 체크 => 정규식표현검사로 체크로 변경

---
 src/main/java/kr/wisestone/owl/service/impl/IssueServiceImpl.java        |   62 ++++++++++++++++++++++++++++--
 src/main/java/kr/wisestone/owl/web/condition/CompanyFieldCondition.java  |   15 ++++++-
 src/main/resources/mybatis/query-template/companyField-template.xml      |   27 +++++++++----
 src/main/java/kr/wisestone/owl/service/impl/CompanyFieldServiceImpl.java |    2 
 4 files changed, 88 insertions(+), 18 deletions(-)

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 ec738f8..f2f56c6 100644
--- a/src/main/java/kr/wisestone/owl/service/impl/CompanyFieldServiceImpl.java
+++ b/src/main/java/kr/wisestone/owl/service/impl/CompanyFieldServiceImpl.java
@@ -181,7 +181,7 @@
             }
 
             if (urls.size() > 0) {
-                condition.setUrl(urls);
+                condition.setUrls(urls);
 
                 if(id == null){
                     companyFieldList = this.companyFieldMapper.findByUrls(condition);
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 e4eb244..0c6dee8 100644
--- a/src/main/java/kr/wisestone/owl/service/impl/IssueServiceImpl.java
+++ b/src/main/java/kr/wisestone/owl/service/impl/IssueServiceImpl.java
@@ -48,6 +48,7 @@
 import java.io.IOException;
 import java.text.ParseException;
 import java.util.*;
+import java.util.regex.Pattern;
 
 import static kr.wisestone.owl.domain.enumType.CustomFieldType.*;
 
@@ -364,7 +365,7 @@
                     } else {
                         urls.add(useValue);
                     }
-                    condition.setUrl(urls);
+                    condition.setUrls(urls);
                     companyFields = this.companyFieldService.find(condition);
 
                     if(companyFields != null && companyFields.size() > 0) {
@@ -485,6 +486,38 @@
         return null;
     }
 
+    /**
+     * url �젙洹쒖떇 �몴�쁽
+     * @param url String
+     */
+    private boolean verifyUrl(String url) {
+        boolean urlChk = false;
+        if (!StringUtils.isEmpty(url)) {
+            String reg = "^((http|https)://)?(www.)?([a-zA-Z0-9]+)\\.[a-z]+([a-zA-z0-9.?#]+)?";
+            if(Pattern.matches(reg, url)) {
+                urlChk = true;
+            }
+        }
+        return urlChk;
+    }
+
+    /**
+     * ip �젙洹쒖떇 �몴�쁽
+     * @param ip String
+     * @return boolean
+     */
+    private boolean verifyIp(String ip) {
+        boolean ipChk = false;
+        if (!StringUtils.isEmpty(ip)) {
+            if (Pattern.matches("^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\" +
+                    ".(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$", ip)) {
+                ipChk = true;
+            }
+        }
+
+        return ipChk;
+    }
+
     // 以묐났�맂 �긽�쐞 �씠�뒋 寃��깋
     private List<Issue> findIssue(IssueApiForm issueApiform, IssueForm issueForm, List<CustomFieldApiOverlap> customFieldApiOverlaps, Long userId) {
         List<IssueCustomFieldValueForm> issueCustomFieldValueForms = issueApiform.getIssueCustomFieldValues();
@@ -518,7 +551,7 @@
                             useValue = useValue.replace(" ","");
                         }
 
-                        if (customFieldApiOverlap.getCustomField().getCustomFieldType().equals(IP_ADDRESS)) {
+                        if (this.verifyIp(useValue)) {
                             long ip = ConvertUtil.ipToLong(useValue);
                             customFieldType = IP_ADDRESS.toString();
                             if (cntIp == 0){
@@ -527,7 +560,24 @@
                             cntIp ++;
                         }
 
-                        if(customFieldApiOverlap.getCustomField().getCustomFieldType().equals(SITE)) {
+                        if (this.verifyUrl(useValue)) {
+                            customFieldType = SITE.toString();
+                            if (cntSite == 0) {
+                                condition.setUrl(useValue);
+                            }
+                            cntSite ++;
+                        }
+
+                        /*if (customFieldApiOverlap.getCustomField().getCustomFieldType().equals(IP_ADDRESS)) {
+                            long ip = ConvertUtil.ipToLong(useValue);
+                            customFieldType = IP_ADDRESS.toString();
+                            if (cntIp == 0){
+                                condition.setIp(ip);
+                            }
+                            cntIp ++;
+                        }*/
+
+                        /*if(customFieldApiOverlap.getCustomField().getCustomFieldType().equals(SITE)) {
                             customFieldType = SITE.toString();
                             String[] urlArr = null;
                             List<String> urls = Lists.newArrayList();
@@ -541,7 +591,7 @@
                                 condition.setUrl(urls);
                             }
                             cntSite ++;
-                        }
+                        }*/
 
                         if (useIdx > 0) {
                             concatUseValue = concatUseValue.concat(comma);
@@ -553,7 +603,9 @@
             }
 
             // 異붽� �븷 url or ip�뿉 �룷�븿�릺�뼱�엳�뒗 �뙆�듃�꼫 李얘린
-            this.findPartner(condition, issueCompanyFields, issueIspFields, issueHostingFields);
+            if ((condition.getIp() > 0) || (condition.getUrl() != null && !condition.getUrl().equals(""))) {
+                this.findPartner(condition, issueCompanyFields, issueIspFields, issueHostingFields);
+            }
 
             issueForm.setIssueCompanyFields(issueCompanyFields);
             issueForm.setIssueIspFields(issueIspFields);
diff --git a/src/main/java/kr/wisestone/owl/web/condition/CompanyFieldCondition.java b/src/main/java/kr/wisestone/owl/web/condition/CompanyFieldCondition.java
index c702ce9..e55ccf4 100644
--- a/src/main/java/kr/wisestone/owl/web/condition/CompanyFieldCondition.java
+++ b/src/main/java/kr/wisestone/owl/web/condition/CompanyFieldCondition.java
@@ -11,7 +11,8 @@
     private String manager;
     private String tel;
     private String email;
-    private List<String> url;
+    private String url;
+    private List<String> urls;
     private long ip;
     private String ipStart;
     private String ipEnd;
@@ -90,14 +91,22 @@
         PageSize = pageSize;
     }
 
-    public List<String> getUrl() {
+    public String getUrl() {
         return url;
     }
 
-    public void setUrl(List<String> url) {
+    public void setUrl(String url) {
         this.url = url;
     }
 
+    public List<String> getUrls() {
+        return urls;
+    }
+
+    public void setUrls(List<String> urls) {
+        this.urls = urls;
+    }
+
     public long getIp() {
         return ip;
     }
diff --git a/src/main/resources/mybatis/query-template/companyField-template.xml b/src/main/resources/mybatis/query-template/companyField-template.xml
index d7ce60a..a4a8708 100644
--- a/src/main/resources/mybatis/query-template/companyField-template.xml
+++ b/src/main/resources/mybatis/query-template/companyField-template.xml
@@ -30,21 +30,24 @@
         LEFT OUTER JOIN isp_field sf ON cf.isp_id = sf.id
         LEFT OUTER JOIN hosting_field hf ON cf.hosting_id = hf.id
         WHERE 1=1
-        <if test="name != '' and name != null">
+        <if test="name != null and name != ''">
             AND cf.name like CONCAT('%',#{name},'%')
         </if>
-        <if test="id != '' and id != null">
+        <if test="id != null and id != ''">
             AND cf.id like CONCAT('%',#{id},'%')
         </if>
+        <if test="url != null and url != ''">
+            AND cf.url LIKE CONCAT('%',#{url},'%')
+        </if>
         <choose>
-            <when test="url != null and url.size != 0">
+            <when test="urls != null and urls.size != 0">
                 AND
-                <foreach collection="url" item="item" index="index" separator="or" open="(" close=")">
+                <foreach collection="urls" item="item" index="index" separator="or" open="(" close=")">
                     cf.url LIKE CONCAT('%',#{item},'%')
                 </foreach>
             </when>
         </choose>
-        <if test="ip != '' and ip != null">
+        <if test="ip != null and ip != ''">
             AND INET_ATON(cf.ip_start) <![CDATA[ <= ]]> #{ip} AND INET_ATON(cf.ip_end) >= #{ip}
         </if>
         ORDER BY cf.register_date DESC
@@ -76,10 +79,13 @@
         FROM
         company_field cf
         WHERE 1=1
+        <if test="url != null and url != ''">
+            AND cf.url LIKE CONCAT('%',#{url},'%')
+        </if>
         <choose>
-            <when test="url != null and url.size != 0">
+            <when test="urls != null and urls.size != 0">
                 AND
-                <foreach collection="url" item="item" index="index" separator="or" open="(" close=")">
+                <foreach collection="urls" item="item" index="index" separator="or" open="(" close=")">
                     cf.url LIKE CONCAT('%',#{item},'%')
                 </foreach>
             </when>
@@ -95,10 +101,13 @@
         FROM
         company_field cf
         WHERE 1=1
+        <if test="url != null and url != ''">
+            AND cf.url LIKE CONCAT('%',#{url},'%')
+        </if>
         <choose>
-            <when test="url != null and url.size != 0">
+            <when test="urls != null and urls.size != 0">
                 AND
-                <foreach collection="url" item="item" index="index" separator="or" open="(" close=")">
+                <foreach collection="urls" item="item" index="index" separator="or" open="(" close=")">
                     cf.url LIKE CONCAT('%',#{item},'%')
                 </foreach>
             </when>

--
Gitblit v1.8.0