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/resources/mybatis/query-template/companyField-template.xml |  150 +++++++++++++++++++++++++++++++++++++++++++++----
 1 files changed, 136 insertions(+), 14 deletions(-)

diff --git a/src/main/resources/mybatis/query-template/companyField-template.xml b/src/main/resources/mybatis/query-template/companyField-template.xml
index 0aac445..6e3eab6 100644
--- a/src/main/resources/mybatis/query-template/companyField-template.xml
+++ b/src/main/resources/mybatis/query-template/companyField-template.xml
@@ -5,20 +5,52 @@
 
     <select id="find" resultType="java.util.HashMap" parameterType="kr.wisestone.owl.web.condition.CompanyFieldCondition">
         SELECT
-        c.id as id,
-        c.name as name,
-        c.email as email,
-        c.tel as tel,
-        c.desc as desc
+        cf.id as id,
+        cf.name as name,
+        cf.manager as manager,
+        cf.tel as tel,
+        cf.email as email,
+        cf.url as url,
+        cf.ip_start as ipStart,
+        cf.ip_end as ipEnd,
+        concat(cf.ip_start, "~", cf.ip_end) AS ipRange,
+        cf.memo as memo,
+        cf.isp_id as ispId,
+        cf.hosting_id as hostingId,
+        cf.company_type_id as companyTypeId,
+        cf.parent_sector_id as parentSectorId,
+        cf.child_sector_id as childSectorId,
+        cf.region_id as regionId,
+        cf.status_id as statusId,
+        cf.status_name as statusName,
+        sf.name AS ispName,
+        hf.name AS hostingName
         FROM
-        company c
+        company_field cf
+        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">
-            AND c.name like CONCAT('%',#{name},'%')
+        <if test="name != null and name != ''">
+            AND cf.name like CONCAT('%',#{name},'%')
         </if>
-        <if test="id != '' and id != null">
-            AND c.id like CONCAT('%',#{id},'%')
+        <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="urls != null and urls.size != 0">
+                AND
+                <foreach collection="urls" item="item" index="index" separator="or" open="(" close=")">
+                    cf.url LIKE CONCAT('%',#{item},'%')
+                </foreach>
+            </when>
+        </choose>
+        <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
         <if test="pageSize != '' and pageSize != null">
             limit #{pageSize} offset #{page};
         </if>
@@ -26,15 +58,105 @@
 
     <select id="count" resultType="java.lang.Long" parameterType="kr.wisestone.owl.web.condition.CompanyFieldCondition">
         SELECT
-        count(c.id)
+        count(DISTINCT cf.id)
         FROM
-        company c
+        company_field cf
         WHERE 1=1
         <if test="name != '' and name != null">
-            AND c.name like CONCAT('%',#{name},'%')
+            AND cf.name like CONCAT('%',#{name},'%')
         </if>
         <if test="id != '' and id != null">
-            AND c.id like CONCAT('%',#{id},'%')
+            AND cf.id like CONCAT('%',#{id},'%')
+        </if>
+    </select>
+
+    <select id="findByUrls" resultType="kr.wisestone.owl.domain.CompanyField" parameterType="kr.wisestone.owl.web.condition.CompanyFieldCondition">
+        SELECT
+        cf.id as id,
+        cf.name as name,
+        cf.email as email,
+        cf.url as url
+        FROM
+        company_field cf
+        WHERE 1=1
+        <if test="url != null and url != ''">
+            AND cf.url LIKE CONCAT('%',#{url},'%')
+        </if>
+        <choose>
+            <when test="urls != null and urls.size != 0">
+                AND
+                <foreach collection="urls" item="item" index="index" separator="or" open="(" close=")">
+                    cf.url LIKE CONCAT('%',#{item},'%')
+                </foreach>
+            </when>
+        </choose>
+    </select>
+
+    <select id="findByUrlsAndIdNot" resultType="kr.wisestone.owl.domain.CompanyField" parameterType="kr.wisestone.owl.web.condition.CompanyFieldCondition">
+        SELECT
+        cf.id as id,
+        cf.name as name,
+        cf.email as email,
+        cf.url as url,
+        cf.ip_start AS ipStart,
+        cf.ip_end AS ipEnd
+        FROM
+        company_field cf
+        WHERE 1=1
+        <if test="url != null and url != ''">
+            AND cf.url LIKE CONCAT('%',#{url},'%')
+        </if>
+        <choose>
+            <when test="urls != null and urls.size != 0">
+                AND
+                <foreach collection="urls" item="item" index="index" separator="or" open="(" close=")">
+                    cf.url LIKE CONCAT('%',#{item},'%')
+                </foreach>
+            </when>
+        </choose>
+        <if test="id != '' and id != null">
+            AND cf.id not like CONCAT('%',#{id},'%')
+        </if>
+    </select>
+
+    <select id="findByIps" resultType="kr.wisestone.owl.domain.CompanyField" parameterType="kr.wisestone.owl.web.condition.CompanyFieldCondition">
+        SELECT
+        cf.id as id,
+        cf.name as name,
+        cf.email as email,
+        cf.url as url,
+        cf.ip_start AS ipStart,
+        cf.ip_end AS ipEnd
+        FROM
+        company_field cf
+        WHERE 1=1
+        <choose>
+            <when test="ipStart != null and ipStart != '' and ipEnd != null and ipEnd != ''">
+                AND (INET_ATON(cf.ip_start) BETWEEN #{ipStart} AND #{ipEnd} OR INET_ATON(cf.ip_end) BETWEEN #{ipStart} AND #{ipEnd}
+                OR #{ipStart} BETWEEN INET_ATON(cf.ip_start) AND INET_ATON(cf.ip_end) OR #{ipEnd} BETWEEN INET_ATON(cf.ip_start) AND INET_ATON(cf.ip_end))
+            </when>
+        </choose>
+    </select>
+
+    <select id="findByIpsAndIdNot" resultType="kr.wisestone.owl.domain.CompanyField" parameterType="kr.wisestone.owl.web.condition.CompanyFieldCondition">
+        SELECT
+        cf.id as id,
+        cf.name as name,
+        cf.email as email,
+        cf.url as url,
+        cf.ip_start AS ipStart,
+        cf.ip_end AS ipEnd
+        FROM
+        company_field cf
+        WHERE 1=1
+        <choose>
+            <when test="ipStart != null and ipStart != '' and ipEnd != null and ipEnd != ''">
+                AND (INET_ATON(cf.ip_start) BETWEEN #{ipStart} AND #{ipEnd} OR INET_ATON(cf.ip_end) BETWEEN #{ipStart} AND #{ipEnd}
+                OR #{ipStart} BETWEEN INET_ATON(cf.ip_start) AND INET_ATON(cf.ip_end) OR #{ipEnd} BETWEEN INET_ATON(cf.ip_start) AND INET_ATON(cf.ip_end))
+            </when>
+        </choose>
+        <if test="id != '' and id != null">
+            AND cf.id not like CONCAT('%',#{id},'%')
         </if>
     </select>
 </mapper>
\ No newline at end of file

--
Gitblit v1.8.0