Browse Source

关于过滤url负载均衡

chenendian 1 month ago
parent
commit
1cd2dcbe18

+ 9 - 0
onemap-modules/onemap-apply/src/main/java/com/onemap/apply/domain/yzt/ZymlDTO.java

@@ -13,6 +13,7 @@ public class ZymlDTO {
     private String type;
     private String pbsm;
     private String icon;
+    private String urlOld;
     private String url;
     private Integer lev;
     private Integer sort;
@@ -143,6 +144,13 @@ public class ZymlDTO {
     public void setIcon(String icon) {
         this.icon = icon;
     }
+    public String getUrlOld() {
+        return urlOld;
+    }
+
+    public void setUrlOld(String urlOld) {
+        this.urlOld = urlOld;
+    }
 
     public String getUrl() {
         return url;
@@ -152,6 +160,7 @@ public class ZymlDTO {
         this.url = url;
     }
 
+
     public Integer getLev() {
         return lev;
     }

+ 9 - 0
onemap-modules/onemap-apply/src/main/java/com/onemap/apply/domain/yzt/ZymlTreeDataDTO.java

@@ -15,6 +15,7 @@ public class ZymlTreeDataDTO {
     private String label;
     private String title;
     private String type;
+    private String urlOld;
     private String url;
     private String source;
     private String legend;
@@ -137,6 +138,14 @@ public class ZymlTreeDataDTO {
         this.type = type;
     }
 
+    public String getUrlOld() {
+        return urlOld;
+    }
+
+    public void setUrlOld(String urlOld) {
+        this.urlOld = urlOld;
+    }
+
     public String getUrl() {
         return url;
     }

+ 10 - 3
onemap-modules/onemap-apply/src/main/java/com/onemap/apply/service/impl/yzt/SearchServiceImpl.java

@@ -5,6 +5,7 @@ import com.onemap.apply.domain.yzt.*;
 import com.onemap.apply.mapper.yzt.CollectionMapper;
 import com.onemap.apply.mapper.yzt.SearchMapper;
 import com.onemap.apply.service.yzt.ISearchService;
+import com.onemap.common.core.utils.StringUtils;
 import com.onemap.common.core.web.domain.RequestResult;
 import com.onemap.common.datasource.annotation.Slave;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -76,13 +77,20 @@ public class SearchServiceImpl implements ISearchService {
         return RequestResult.error("删除失败!", 0);
     }
 
-
     @Override
     @Slave
     public List<PoiDTO> poiSearch(PoiSearchDTO poiSearchDTO) {
-        if (poiSearchDTO.getOffset() == null || poiSearchDTO.getOffset() <0 ) {
+        if (poiSearchDTO.getOffset() == null || poiSearchDTO.getOffset() < 0 ) {
             poiSearchDTO.setOffset(0);
         }
+        //如果输入文字过长,相似度词汇取第一个分词
+        if(StringUtils.isNotBlank(poiSearchDTO.getName()) && poiSearchDTO.getName().length() >10 && !poiSearchDTO.getChildrenWord().isEmpty()){
+            poiSearchDTO.setName(poiSearchDTO.getChildrenWord().get(0));
+        }
+        //如果标题过短,则把标题也加入相似度词汇
+        if(StringUtils.isNotBlank(poiSearchDTO.getName()) && poiSearchDTO.getName().length() <=3){
+            poiSearchDTO.getChildrenWord().add(poiSearchDTO.getName());
+        }
         List<PoiDTO> res = searchMapper.poiLikeName(poiSearchDTO.getName(), poiSearchDTO.getChildrenWord(), poiSearchDTO.getLimit(), poiSearchDTO.getOffset());
         return res;
     }
@@ -97,5 +105,4 @@ public class SearchServiceImpl implements ISearchService {
 
 
 
-
 }

+ 1 - 0
onemap-modules/onemap-apply/src/main/java/com/onemap/apply/service/impl/yzt/ZymlServiceImpl.java

@@ -117,6 +117,7 @@ public class ZymlServiceImpl implements IZymlService {
                 c.setTitle(cur.getName());
                 c.setType(cur.getType());
                 c.setLegend(cur.getLegend());
+                c.setUrlOld(cur.getUrlOld());
                 c.setUrl(cur.getUrl());
                 c.setSource(cur.getSde());
                 c.setFavorite(cur.getMy());

+ 26 - 2
onemap-modules/onemap-apply/src/main/resources/mapper/postgresql/yzt/SearchMapper.xml

@@ -38,8 +38,7 @@
         from  poi t  where t.name  = #{name}  limit 1 offset  0
     </select>
 
-
-    <select id="poiLikeName"  resultType="com.onemap.apply.domain.yzt.PoiDTO">
+    <select id="poiLikeName222"  resultType="com.onemap.apply.domain.yzt.PoiDTO">
 <!--        select t.name,t.adress,public.st_x ( t.geom ) x,public.st_y ( t.geom ) y-->
 <!--        from  poi t  where 1=1-->
 <!--         <if test="nameList != null and nameList.size()>0">-->
@@ -54,6 +53,31 @@
         limit ${limit} offset  ${offset}
     </select>
 
+    <select id="poiLikeName" resultType="com.onemap.apply.domain.yzt.PoiDTO">
+        SELECT
+        t.name,
+        t.adress,
+        public.st_x(t.geom) AS x,
+        public.st_y(t.geom) AS y,
+        public.similarity(t.name, #{name}) AS score
+        FROM poi t
+        <where>
+            <if test="nameList != null and nameList.size() > 0">
+                t.name ILIKE ANY (
+                ARRAY[
+                <foreach collection="nameList"
+                         item="item"
+                         separator=",">
+                    CONCAT('%', #{item}, '%')
+                </foreach>
+                ]
+                )
+            </if>
+        </where>
+        ORDER BY score DESC
+        LIMIT #{limit} OFFSET #{offset}
+    </select>
+
 
 
 

+ 2 - 1
onemap-modules/onemap-apply/src/main/resources/mapper/postgresql/yzt/ZymlMapper.xml

@@ -94,7 +94,8 @@
         t.type as "type",
         t.pbsm as "pbsm",
         t.icon as "icon",
-        t.url as "url",
+        t.url as "urlOld",
+        case when t.type='S3M' then REGEXP_REPLACE(url, '^(http://\d{1,3}(\.\d{1,3}){3}:\d{1,5})' , 'http://{s}')  else url end  as "url",
         t.lev as "lev",
         t.sort as "sort",
         t.state as "state",