From 6e43ac3b06f272925a87f4193ad238acc9f32f49 Mon Sep 17 00:00:00 2001
From: linwei <872216696@qq.com>
Date: Fri, 06 Feb 2026 17:32:30 +0800
Subject: [PATCH] mysql调整成pgsql

---
 drone-service/drone-system/src/main/java/org/sxkj/system/mapper/RoleMapper.xml |   31 ++++++++++++++++---------------
 1 files changed, 16 insertions(+), 15 deletions(-)

diff --git a/drone-service/drone-system/src/main/java/org/sxkj/system/mapper/RoleMapper.xml b/drone-service/drone-system/src/main/java/org/sxkj/system/mapper/RoleMapper.xml
index be835d4..1305119 100644
--- a/drone-service/drone-system/src/main/java/org/sxkj/system/mapper/RoleMapper.xml
+++ b/drone-service/drone-system/src/main/java/org/sxkj/system/mapper/RoleMapper.xml
@@ -62,27 +62,28 @@
 
     <!--角色查询-->
     <select id="getRoleList" resultType="org.sxkj.system.entity.Role">
+        WITH RECURSIVE role_hierarchy AS (
+            SELECT id, parent_id, role_name, role_alias 
+            FROM blade_role 
+            WHERE id = #{roleParam.roleId} AND is_deleted = 0
+            UNION ALL
+            SELECT r.id, r.parent_id, r.role_name, r.role_alias 
+            FROM blade_role r 
+            JOIN role_hierarchy rh ON r.parent_id = rh.id 
+            WHERE r.is_deleted = 0
+        )
         SELECT br.* FROM blade_role br
-        inner join (
-        SELECT * FROM
-        (
-        SELECT t1.*,IF( find_in_set( parent_id, @pids ) > 0, @pids := concat( @pids, ',', id ), 0 ) AS ischild FROM
-        ( SELECT id, parent_id,role_name,role_alias FROM blade_role t where is_deleted =0 ORDER BY parent_id, id ) t1,
-        ( SELECT @pids := #{roleParam.roleId} ) t2
-        ) t3
-        WHERE id != 1123598816738675201
+        INNER JOIN role_hierarchy rh ON br.id = rh.id
+        WHERE br.id != 1123598816738675201
         <if test="roleParam.roleName!=null and roleParam.roleName!=''">
-            and role_name like concat('%',#{roleParam.roleName},'%')
+            AND br.role_name LIKE concat('%',#{roleParam.roleName},'%')
         </if>
         <if test="roleParam.roleAlias!=null and roleParam.roleAlias!=''">
-            and role_alias like concat('%',#{roleParam.roleAlias},'%')
+            AND br.role_alias LIKE concat('%',#{roleParam.roleAlias},'%')
         </if>
-        ) t4 on br.id = t4.id
         <if test="roleParam.isNowLevel==0">
-            union all
-            (
-            SELECT * FROM blade_role where id = #{roleParam.roleId}
-            )
+            UNION ALL
+            SELECT * FROM blade_role WHERE id = #{roleParam.roleId} AND is_deleted = 0
         </if>
     </select>
 

--
Gitblit v1.9.3