From cb054a76352b728ea76d31a6a76874eff97cbd4d Mon Sep 17 00:00:00 2001
From: 13693261870 <252740454@qq.com>
Date: 星期六, 02 九月 2023 10:06:48 +0800
Subject: [PATCH] 级联删除发布服务及权限

---
 src/main/java/com/moon/server/controller/sys/ResController.java |    4 +++-
 src/main/java/com/moon/server/service/sys/ResService.java       |    2 +-
 src/main/resources/mapper/sys/ResMapper.xml                     |    9 ++++-----
 src/main/java/com/moon/server/mapper/sys/ResMapper.java         |    2 +-
 src/main/resources/mapper/data/PublishMapper.xml                |   14 +++++++++++---
 5 files changed, 20 insertions(+), 11 deletions(-)

diff --git a/src/main/java/com/moon/server/controller/sys/ResController.java b/src/main/java/com/moon/server/controller/sys/ResController.java
index e8f6d9b..072c767 100644
--- a/src/main/java/com/moon/server/controller/sys/ResController.java
+++ b/src/main/java/com/moon/server/controller/sys/ResController.java
@@ -5,6 +5,7 @@
 import com.moon.server.entity.all.ResponseMsg;
 import com.moon.server.entity.sys.ResEntity;
 import com.moon.server.entity.sys.UserEntity;
+import com.moon.server.helper.StringHelper;
 import com.moon.server.service.all.PermsService;
 import com.moon.server.service.all.UploadAttachService;
 import com.moon.server.service.sys.ResService;
@@ -208,7 +209,8 @@
             }
 
             permsService.clearPermsCache();
-            int count = resService.deletes(ids);
+            String strs = StringHelper.join(ids, ",");
+            int count = resService.deletes(strs);
 
             return success(count);
         } catch (Exception ex) {
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 676d5ea..8b91820 100644
--- a/src/main/java/com/moon/server/mapper/sys/ResMapper.java
+++ b/src/main/java/com/moon/server/mapper/sys/ResMapper.java
@@ -102,7 +102,7 @@
      * @param ids
      * @return
      */
-    public Integer deletes(List<Integer> ids);
+    public Integer deletes(String ids);
 
     /**
      * 鏇存柊涓�鏉�
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 4319c83..9c31f2d 100644
--- a/src/main/java/com/moon/server/service/sys/ResService.java
+++ b/src/main/java/com/moon/server/service/sys/ResService.java
@@ -67,7 +67,7 @@
     }
 
     @Override
-    public Integer deletes(List<Integer> ids) {
+    public Integer deletes(String ids) {
         return resMapper.deletes(ids);
     }
 
diff --git a/src/main/resources/mapper/data/PublishMapper.xml b/src/main/resources/mapper/data/PublishMapper.xml
index 3e6cf74..8dfb4f1 100644
--- a/src/main/resources/mapper/data/PublishMapper.xml
+++ b/src/main/resources/mapper/data/PublishMapper.xml
@@ -134,13 +134,21 @@
     </insert>
 
     <delete id="delete">
-        delete from lf.sys_publish where id = #{id}
+        delete from lf.sys_role_layer where layerid in (select a.id from lf.sys_layer a inner join lf.sys_res b on a.resid = b.id where b.pubid = #{id});
+        delete from lf.sys_role_res where resid in (select id from lf.sys_res where pubid = #{id});
+        delete from lf.sys_layer where resid in (select id from lf.sys_res where pubid = #{id});
+        delete from lf.sys_res where pubid = #{id};
+        delete from lf.sys_meta_pub where pubid = #{id};
+        delete from lf.sys_publish where id = #{id};
     </delete>
 
     <delete id="deletes">
-        delete from lf.sys_publish where id in (${ids});
-        delete from lf.sys_layer where pubid in (${ids});
+        delete from lf.sys_role_layer where layerid in (select a.id from lf.sys_layer a inner join lf.sys_res b on a.resid = b.id where b.pubid in (${ids}));
+        delete from lf.sys_role_res where resid in (select id from lf.sys_res where pubid in (${ids}));
+        delete from lf.sys_layer where resid in (select id from lf.sys_res where pubid in (${ids}));
+        delete from lf.sys_res where pubid in (${ids});
         delete from lf.sys_meta_pub where pubid in (${ids});
+        delete from lf.sys_publish where id in (${ids});
     </delete>
 
     <update id="update">
diff --git a/src/main/resources/mapper/sys/ResMapper.xml b/src/main/resources/mapper/sys/ResMapper.xml
index b9d506d..4d2f895 100644
--- a/src/main/resources/mapper/sys/ResMapper.xml
+++ b/src/main/resources/mapper/sys/ResMapper.xml
@@ -100,14 +100,13 @@
     </insert>
 
     <delete id="delete">
-        delete from lf.sys_res where id = #{id}
+        delete from lf.sys_layer where resid = #{id};
+        delete from lf.sys_res where id = #{id};
     </delete>
 
     <delete id="deletes">
-        delete from lf.sys_res where id in
-        <foreach item="id" collection="ids" index="index" open="(" separator="," close=")">
-            #{id}
-        </foreach>
+        delete from lf.sys_layer where resid in (${ids});
+        delete from lf.sys_res where id in (${ids});
     </delete>
 
     <update id="update">

--
Gitblit v1.9.3