From 63b484f3fceb54cf545b3c8b722a6f0fceae1689 Mon Sep 17 00:00:00 2001
From: linwei <872216696@qq.com>
Date: Thu, 02 Apr 2026 10:54:08 +0800
Subject: [PATCH] sql改造其他模块改造

---
 drone-service/drone-system/src/main/java/org/sxkj/system/mapper/RoleMapper.xml |   37 ++++++++++++++++++++++---------------
 1 files changed, 22 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 1c91d53..c17eba9 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
@@ -65,27 +65,34 @@
 
     <!--角色查询-->
     <select id="getRoleList" resultType="org.sxkj.system.entity.Role">
+        WITH RECURSIVE role_tree AS (
+            SELECT id, parent_id, role_name, role_alias
+            FROM blade_role
+            WHERE id = #{roleParam.roleId} AND is_deleted = 0
+            UNION ALL
+            SELECT br.id, br.parent_id, br.role_name, br.role_alias
+            FROM blade_role br
+            INNER JOIN role_tree rt ON br.parent_id = rt.id
+            WHERE br.is_deleted = 0 AND br.id != 1123598816738675201
+        )
         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_tree rt ON br.id = rt.id
         <if test="roleParam.roleName!=null and roleParam.roleName!=''">
-            and role_name like concat('%',#{roleParam.roleName},'%')
+            WHERE br.role_name like concat('%',#{roleParam.roleName},'%')
         </if>
         <if test="roleParam.roleAlias!=null and roleParam.roleAlias!=''">
-            and role_alias like concat('%',#{roleParam.roleAlias},'%')
+            <choose>
+                <when test="roleParam.roleName!=null and roleParam.roleName!=''">
+                    AND br.role_alias like concat('%',#{roleParam.roleAlias},'%')
+                </when>
+                <otherwise>
+                    WHERE br.role_alias like concat('%',#{roleParam.roleAlias},'%')
+                </otherwise>
+            </choose>
         </if>
-        ) t4 on br.id = t4.id::VARCHAR
         <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}
         </if>
     </select>
 

--
Gitblit v1.9.3