From b27c72d3a671dc00bc5a1683ea309fb2a661dea3 Mon Sep 17 00:00:00 2001
From: 13693261870 <252740454@qq.com>
Date: 星期二, 05 九月 2023 16:41:05 +0800
Subject: [PATCH] 添加自动创建资源、自动更新资源功能

---
 src/main/java/com/moon/server/entity/all/StaticData.java       |    2 +
 src/main/java/com/moon/server/service/sys/ResService.java      |    5 ++
 src/main/resources/mapper/sys/ResMapper.xml                    |    4 ++
 src/main/java/com/moon/server/service/data/ShuJianService.java |   45 ++++++++++++++++++++++
 src/main/java/com/moon/server/mapper/sys/ResMapper.java        |    8 ++++
 5 files changed, 63 insertions(+), 1 deletions(-)

diff --git a/src/main/java/com/moon/server/entity/all/StaticData.java b/src/main/java/com/moon/server/entity/all/StaticData.java
index c25bc3a..20857a6 100644
--- a/src/main/java/com/moon/server/entity/all/StaticData.java
+++ b/src/main/java/com/moon/server/entity/all/StaticData.java
@@ -162,6 +162,8 @@
 
     public final static String NO = "NO";
 
+    public final static String DOM = "DOM";
+
     public final static String SUCCESS = "$SUCCESS";
 
     public final static String LINESTRING = "LINESTRING";
diff --git a/src/main/java/com/moon/server/mapper/sys/ResMapper.java b/src/main/java/com/moon/server/mapper/sys/ResMapper.java
index 8b91820..185a070 100644
--- a/src/main/java/com/moon/server/mapper/sys/ResMapper.java
+++ b/src/main/java/com/moon/server/mapper/sys/ResMapper.java
@@ -55,6 +55,14 @@
     public ResEntity selectById(int id);
 
     /**
+     * 鏍规嵁鍙戝竷ID鏌ヨ
+     *
+     * @param pubid 鍙戝竷ID
+     * @return
+     */
+    public ResEntity selectByPubid(Integer pubid);
+
+    /**
      * 鏍规嵁瑙掕壊鏌ヨ璁板綍鏁�
      *
      * @param roleid
diff --git a/src/main/java/com/moon/server/service/data/ShuJianService.java b/src/main/java/com/moon/server/service/data/ShuJianService.java
index e75ac26..9c2024a 100644
--- a/src/main/java/com/moon/server/service/data/ShuJianService.java
+++ b/src/main/java/com/moon/server/service/data/ShuJianService.java
@@ -7,6 +7,7 @@
 import com.moon.server.entity.data.MetaPubEntity;
 import com.moon.server.entity.data.PublishEntity;
 import com.moon.server.entity.shujian.*;
+import com.moon.server.entity.sys.ResEntity;
 import com.moon.server.helper.HttpHelper;
 import com.moon.server.helper.PathHelper;
 import com.moon.server.helper.RestHelper;
@@ -95,6 +96,10 @@
         if (null == id) {
             return id;
         }
+
+        publishEntity.setId(id);
+        ResEntity resEntity = createResEntity(publishEntity);
+        resService.insert(resEntity);
 
         return insertMetaPub(pub, id);
     }
@@ -242,6 +247,31 @@
     }
 
     /**
+     * 鍒涘缓璧勬簮瀹炰綋绫�
+     */
+    private ResEntity createResEntity(PublishEntity pub) {
+        ResEntity entity = new ResEntity();
+        entity.setCnName(pub.getName());
+        // 鐘舵�侊細0-绂佺敤锛�1-鍚敤鍘熷鍦板潃锛�2-鍚敤浠g悊鍦板潃
+        entity.setStatus(2);
+        // 鏈嶅姟绫诲埆锛�0-鍏朵粬锛�1-GisServer锛�2-GeoServer锛�3-鏁扮畝
+        entity.setCategory(3);
+        // 鏈嶅姟绫诲瀷锛�0-URL锛�1-TMS锛�2-WMTS锛�3-WMS锛�4-WFS锛�5-Tileset
+        entity.setType(StaticData.DOM.equals(pub.getType()) ? 2 : 0);
+        // 鏁版嵁绫诲瀷锛�0-URL锛�1-DOM锛�2-DEM
+        entity.setData(StaticData.DOM.equals(pub.getType()) ? 1 : 2);
+        entity.setUrl(pub.getUrl());
+        entity.setArgs(ak);
+        entity.setDescr("绯荤粺鑷姩鍒涘缓");
+        entity.setDepid(pub.getDepid());
+        entity.setDirid(pub.getDirid());
+        entity.setCreateUser(pub.getCreateUser());
+        entity.setPubid(pub.getId());
+
+        return entity;
+    }
+
+    /**
      * 鑾峰彇棰滆壊琛ㄧ殑JSON瀛楃涓�
      */
     public String getColorTableJson(PubEntity pub) {
@@ -308,7 +338,20 @@
             entity.setGeom(StaticData.NULL);
         }
 
-        return publishService.update(entity);
+        int rows = publishService.update(entity);
+        if (0 == rows) {
+            return 0;
+        }
+
+        ResEntity resEntity = resService.selectByPubid(entity.getId());
+        if (null == resEntity) {
+            resEntity = createResEntity(entity);
+            return resService.insert(resEntity);
+        } else {
+            resEntity.setCnName(entity.getName());
+            resEntity.setUrl(entity.getUrl());
+            return resService.update(resEntity);
+        }
     }
 
     /**
diff --git a/src/main/java/com/moon/server/service/sys/ResService.java b/src/main/java/com/moon/server/service/sys/ResService.java
index 9c31f2d..a47da15 100644
--- a/src/main/java/com/moon/server/service/sys/ResService.java
+++ b/src/main/java/com/moon/server/service/sys/ResService.java
@@ -42,6 +42,11 @@
     }
 
     @Override
+    public ResEntity selectByPubid(Integer pubid) {
+        return resMapper.selectByPubid(pubid);
+    }
+
+    @Override
     public Integer selectCountForRole(Integer roleid) {
         return resMapper.selectCountForRole(roleid);
     }
diff --git a/src/main/resources/mapper/sys/ResMapper.xml b/src/main/resources/mapper/sys/ResMapper.xml
index 4d2f895..6e93a9a 100644
--- a/src/main/resources/mapper/sys/ResMapper.xml
+++ b/src/main/resources/mapper/sys/ResMapper.xml
@@ -59,6 +59,10 @@
         where id = #{id};
     </select>
 
+    <select id="selectByPubid" resultType="com.moon.server.entity.sys.ResEntity">
+        select * from lf.sys_res where pubid = #{pubid} limit 1;
+    </select>
+
     <select id="selectCountForRole" resultType="java.lang.Integer">
         select count(a.*) from lf.sys_res a where not exists (select b.id from lf.sys_role_res b
         <where>

--
Gitblit v1.9.3