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