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

---
 src/main/java/kr/wisestone/owl/service/impl/CompanyFieldServiceImpl.java |  154 ++++++++++++++++++++++++++++++++++++++++++---------
 1 files changed, 127 insertions(+), 27 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 f2f56c6..0b9734d 100644
--- a/src/main/java/kr/wisestone/owl/service/impl/CompanyFieldServiceImpl.java
+++ b/src/main/java/kr/wisestone/owl/service/impl/CompanyFieldServiceImpl.java
@@ -84,30 +84,41 @@
         //  �뾽泥대챸 以묐났 泥댄겕
         this.verifyTitle(companyFieldForm.getName(), null);
 
-        if (companyFieldForm.getIpStart() != null && companyFieldForm.getIpEnd() != null) {
-            //  �븘�씠�뵾 �쑀�슚�꽦 泥댄겕
-            this.verifyIp(companyFieldForm.getIpStart(), companyFieldForm.getIpEnd(), null);
-        }
-
         if (companyFieldForm.getUrl() != null) {
             //  url �쑀�슚�꽦 泥댄겕
             this.verifyUrl(companyFieldForm.getUrl(), null);
         }
 
+        if (companyFieldForm.getIpStarts() != null && companyFieldForm.getIpStarts().size() > 0
+                && companyFieldForm.getIpEnds() != null && companyFieldForm.getIpEnds().size() > 0) {
+
+            for (int i=0; i<companyFieldForm.getIpStarts().size(); i++) {
+                //  �븘�씠�뵾 �쑀�슚�꽦 泥댄겕
+                this.verifyIp(companyFieldForm.getIpStarts().get(i), companyFieldForm.getIpEnds().get(i), null);
+            }
+
+            String startIps = companyFieldForm.getIpStarts().toString();
+            //  ��愿꾪샇 �젣嫄�
+            startIps = this.removeSquare(startIps);
+            companyFieldForm.setIpStart(startIps.trim());
+
+            String endIps = companyFieldForm.getIpEnds().toString();
+            //  ��愿꾪샇 �젣嫄�
+            endIps = this.removeSquare(endIps);
+            companyFieldForm.setIpEnd(endIps.trim());
+        }
+
         if (companyFieldForm.getTelList() != null && companyFieldForm.getTelList().size() > 0) {
             String tels = companyFieldForm.getTelList().toString();
-            if (tels.contains("[")) {
-                tels = tels.substring(1, tels.indexOf("]"));
-            }
+            //  ��愿꾪샇 �젣嫄�
+            tels = this.removeSquare(tels);
             companyFieldForm.setTel(tels.trim());
         }
         if (companyFieldForm.getEmailList() != null && companyFieldForm.getEmailList().size() > 0) {
             String emails = companyFieldForm.getEmailList().toString();
-            String email = "";
-            if (emails.contains("[")) {
-                email = emails.substring(1, emails.indexOf("]"));
-            }
-            companyFieldForm.setEmail(email.trim());
+            //  ��愿꾪샇 �젣嫄�
+            emails = this.removeSquare(emails);
+            companyFieldForm.setEmail(emails.trim());
         }
 
         CompanyField companyField = ConvertUtil.copyProperties(companyFieldForm, CompanyField.class);
@@ -116,8 +127,23 @@
     }
 
     /**
+     * ��愿꾪샇([]) �젣嫄� �븿�닔
+     * @param str String
+     * @return str
+     */
+    private String removeSquare(String str) {
+        if (str.contains("[")) {
+            str = str.substring(1, str.indexOf("]"));
+        }
+        
+        return str;
+    }
+
+    /**
      * IP �쑀�슚�꽦 泥댄겕
      * @param ip String
+     * @param ip2 String
+     * @param id Long
      */
     private void verifyIp(String ip, String ip2, Long id) {
         if (!StringUtils.isEmpty(ip)) {
@@ -146,14 +172,76 @@
             condition.setIpEnd(String.valueOf(ipEnd));
             if (id != null) {
                 condition.setId(id);
-                companyFields = this.companyFieldMapper.findByIpsAndIdNot(condition);
+                companyFields = this.companyFieldRepository.findByIdNot(condition.getId());
             } else {
-                companyFields = this.companyFieldMapper.findByIps(condition);
+                companyFields = this.companyFieldRepository.findAll();
             }
 
             //  IP���뿭�� 以묐났 泥댄겕
-            if (companyFields != null && companyFields.size() > 0) {
+            this.ipOverlapChk(companyFields, ipStart, ipEnd);
+
+            /*if (companyFields != null && companyFields.size() > 0) {
                 throw new OwlRuntimeException(this.messageAccessor.getMessage(MsgConstants.COMPANY_EXIST_IP));
+            }*/
+        }
+    }
+
+    /**
+     * ip ���뿭�� 以묐났 泥댄겕
+     * @param companyFields List<CompanyField>
+     */
+    private void ipOverlapChk(List<CompanyField> companyFields, long ipStart, long ipEnd) {
+        String[] ipStartArr = null;
+        String[] ipEndArr = null;
+        List<String> startIpList = Lists.newArrayList();
+        List<String> endIpList = Lists.newArrayList();
+        String startIp = "";
+        String endIp = "";
+        List<Long> startIps = Lists.newArrayList();
+        List<Long> endIps = Lists.newArrayList();
+
+        if (companyFields.size() > 0) {
+            for (CompanyField companyField : companyFields) {
+                if(companyField.getIpStart() != null && companyField.getIpEnd() != null) {
+                    startIp = companyField.getIpStart();
+                    if (startIp.contains(" ")) {
+                        startIp = startIp.replace(" ","");
+                    }
+                    if (startIp.contains(",")) {
+                        ipStartArr = startIp.split(",");
+                        startIpList.addAll(Arrays.asList(ipStartArr));
+                    } else {
+                        startIpList.add(startIp.trim());
+                    }
+
+                    endIp = companyField.getIpEnd();
+                    if (endIp.contains(" ")) {
+                        endIp = endIp.replace(" ","");
+                    }
+                    if (endIp.contains(",")) {
+                        ipEndArr = endIp.split(",");
+                        endIpList.addAll(Arrays.asList(ipEndArr));
+                    } else {
+                        endIpList.add(endIp.trim());
+                    }
+                }
+            }
+            if (startIpList.size() > 0) {
+                for (String ipS : startIpList) {
+                    long start = ConvertUtil.ipToLong(ipS);
+                    startIps.add(start);
+                }
+                for (String ipE : endIpList) {
+                    long end = ConvertUtil.ipToLong(ipE);
+                    endIps.add(end);
+                }
+            }
+
+            for (int i=0; i<startIps.size(); i++) {
+                if (startIps.get(i) >= ipStart && startIps.get(i) <= ipEnd || endIps.get(i) >= ipStart && endIps.get(i) <= ipEnd
+                    || ipStart >= startIps.get(i) && ipStart <= endIps.get(i) || ipEnd >= startIps.get(i) && ipEnd <= endIps.get(i)) {
+                    throw new OwlRuntimeException(this.messageAccessor.getMessage(MsgConstants.COMPANY_EXIST_IP));
+                }
             }
         }
     }
@@ -297,28 +385,40 @@
         //  �뾽泥대챸 �쑀�슚�꽦 泥댄겕
         this.verifyTitle(companyFieldForm.getName(), companyFieldForm.getId());
 
-        if (companyFieldForm.getIpStart() != null && companyFieldForm.getIpEnd() != null) {
-            //  �븘�씠�뵾 �쑀�슚�꽦 泥댄겕
-            this.verifyIp(companyFieldForm.getIpStart(), companyFieldForm.getIpEnd(), companyFieldForm.getId());
-        }
-
         if (companyFieldForm.getUrl() != null) {
             //  url �쑀�슚�꽦 泥댄겕
             this.verifyUrl(companyFieldForm.getUrl(), companyFieldForm.getId());
         }
 
+        if (companyFieldForm.getIpStarts() != null && companyFieldForm.getIpStarts().size() > 0
+                && companyFieldForm.getIpEnds() != null && companyFieldForm.getIpEnds().size() > 0) {
+
+            for (int i=0; i<companyFieldForm.getIpStarts().size(); i++) {
+                //  �븘�씠�뵾 �쑀�슚�꽦 泥댄겕
+                this.verifyIp(companyFieldForm.getIpStarts().get(i), companyFieldForm.getIpEnds().get(i), companyFieldForm.getId());
+            }
+
+            String startIps = companyFieldForm.getIpStarts().toString();
+            //  ��愿꾪샇 �젣嫄�
+            startIps = this.removeSquare(startIps);
+            companyFieldForm.setIpStart(startIps.trim());
+
+            String endIps = companyFieldForm.getIpEnds().toString();
+            //  ��愿꾪샇 �젣嫄�
+            endIps = this.removeSquare(endIps);
+            companyFieldForm.setIpEnd(endIps.trim());
+        }
+
         if (companyFieldForm.getTelList() != null && companyFieldForm.getTelList().size() > 0) {
             String tels = companyFieldForm.getTelList().toString();
-            if (tels.contains("[")) {
-                tels = tels.substring(1, tels.indexOf("]"));
-            }
+            //  ��愿꾪샇 �젣嫄�
+            tels = this.removeSquare(tels);
             companyFieldForm.setTel(tels.trim());
         }
         if (companyFieldForm.getEmailList() != null && companyFieldForm.getEmailList().size() > 0) {
             String emails = companyFieldForm.getEmailList().toString();
-            if (emails.contains("[")) {
-                emails = emails.substring(1, emails.indexOf("]"));
-            }
+            //  ��愿꾪샇 �젣嫄�
+            emails = this.removeSquare(emails);
             companyFieldForm.setEmail(emails.trim());
         }
 

--
Gitblit v1.8.0