From 11712ec7e37adda4674899ab115f0c53451ccf56 Mon Sep 17 00:00:00 2001 From: cwchen <1048842385@qq.com> Date: Fri, 22 Aug 2025 15:04:56 +0800 Subject: [PATCH] =?UTF-8?q?=E7=B3=BB=E7=BB=9F=E7=AE=A1=E7=90=86SQL=20?= =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/bonus/bmw/basic/dao/CompanyDao.java | 2 +- .../bonus/bmw/basic/dao/PermissionDao.java | 16 ++++++- .../java/com/bonus/bmw/basic/dao/RoleDao.java | 2 +- .../bonus/bmw/basic/dao/SubCompanyDao.java | 2 +- .../mapper/person/GetChildListMapper.xml | 46 ++++++++++++++++++- 5 files changed, 62 insertions(+), 6 deletions(-) diff --git a/modules/bmw/src/main/java/com/bonus/bmw/basic/dao/CompanyDao.java b/modules/bmw/src/main/java/com/bonus/bmw/basic/dao/CompanyDao.java index 51d5a59..54576b8 100644 --- a/modules/bmw/src/main/java/com/bonus/bmw/basic/dao/CompanyDao.java +++ b/modules/bmw/src/main/java/com/bonus/bmw/basic/dao/CompanyDao.java @@ -18,7 +18,7 @@ public interface CompanyDao { @Select("SELECT \"id\",\"name\" AS companyName FROM \"ynrealname\".\"pm_company\" where \"name\" = #{companyName} and \"is_active\" = '1'") CompanyBean getCompanyByName(String companyName); - @SelectKey(statement = "SELECT IDENTITY()", keyProperty = "id", before = false, resultType = Long.class) + @SelectKey(statement = "SELECT @@IDENTITY", keyProperty = "id", before = false, resultType = Long.class) @Insert("INSERT INTO \"ynrealname\".\"pm_company\"(\"name\", \"type_id\", \"address\", \"register_date\", \"legal_person\", \"legal_phone\", \"legal_idnumber\", \"is_active\") VALUES (#{companyName}, #{unitType}, #{address}, #{registerDate}, #{represent}, #{representPhone}, #{representIdNumber}, '1')") int saveCompany(CompanyBean o); diff --git a/modules/bmw/src/main/java/com/bonus/bmw/basic/dao/PermissionDao.java b/modules/bmw/src/main/java/com/bonus/bmw/basic/dao/PermissionDao.java index 15184cd..4bf262d 100644 --- a/modules/bmw/src/main/java/com/bonus/bmw/basic/dao/PermissionDao.java +++ b/modules/bmw/src/main/java/com/bonus/bmw/basic/dao/PermissionDao.java @@ -2,6 +2,8 @@ package com.bonus.bmw.basic.dao; import com.bonus.system.api.model.Permission; import org.apache.ibatis.annotations.*; +import org.apache.ibatis.mapping.StatementType; + import java.util.List; import java.util.Set; @@ -63,6 +65,18 @@ public interface PermissionDao { @Select("select p.* from \"ynrealname\".\"sys_permission\" p inner join \"ynrealname\".\"sys_role_permission\" rp on p.\"id\" = rp.\"permissionId\" where rp.\"roleId\" = #{appRoleId} and p.\"is_active\" = '1' and rp.\"is_active\" = 1 AND p.\"permission_type\"='APP' order by p.\"sort\"") List listByBackApp(Long appRoleId); - @Select("select getPermissionChildList(#{id})") + @Select("WITH RECURSIVE permission_tree(id, path) AS (\n" + + " SELECT \"id\", TO_CHAR(\"id\") AS path\n" + + " FROM \"ynrealname\".\"sys_permission\"\n" + + " WHERE \"id\" = #{id}\n" + + " \n" + + " UNION ALL\n" + + " \n" + + " SELECT p.\"id\", t.path || ',' || TO_CHAR(p.\"id\")\n" + + " FROM \"ynrealname\".\"sys_permission\" p\n" + + " INNER JOIN permission_tree t ON p.\"parentId\" = t.id\n" + + ")\n" + + "SELECT LISTAGG(id,',') AS result\n" + + "FROM permission_tree;") String getChildString(Long id); } diff --git a/modules/bmw/src/main/java/com/bonus/bmw/basic/dao/RoleDao.java b/modules/bmw/src/main/java/com/bonus/bmw/basic/dao/RoleDao.java index 740167e..b462ff9 100644 --- a/modules/bmw/src/main/java/com/bonus/bmw/basic/dao/RoleDao.java +++ b/modules/bmw/src/main/java/com/bonus/bmw/basic/dao/RoleDao.java @@ -9,7 +9,7 @@ import java.util.Map; @Mapper public interface RoleDao { - @SelectKey(statement = "SELECT IDENTITY()", keyProperty = "id", before = false, resultType = Long.class) + @SelectKey(statement = "SELECT @@IDENTITY", keyProperty = "id", before = false, resultType = Long.class) @Insert("insert into \"ynrealname\".\"sys_role\"(\"name\", \"company_id\", \"description\", \"type\", \"level\", \"status\") values(#{name}, #{companyId}, #{description}, #{type}, #{level}, #{status})") int save(Role role); diff --git a/modules/bmw/src/main/java/com/bonus/bmw/basic/dao/SubCompanyDao.java b/modules/bmw/src/main/java/com/bonus/bmw/basic/dao/SubCompanyDao.java index c62587f..96d125b 100644 --- a/modules/bmw/src/main/java/com/bonus/bmw/basic/dao/SubCompanyDao.java +++ b/modules/bmw/src/main/java/com/bonus/bmw/basic/dao/SubCompanyDao.java @@ -16,7 +16,7 @@ public interface SubCompanyDao { @Select("SELECT \"id\",\"name\" AS subCompanyName FROM \"ynrealname\".\"pm_dept\" where \"name\" = #{companyName} and \"is_active\" = '1'") SubCompanyBean getCompanyByName(String companyName); - @SelectKey(statement = "SELECT IDENTITY()", keyProperty = "id", before = false, resultType = Long.class) + @SelectKey(statement = "SELECT @@IDENTITY", keyProperty = "id", before = false, resultType = Long.class) @Insert("INSERT INTO \"ynrealname\".\"pm_dept\"(\"name\", \"abbreviation\", \"company_id\", \"status\", \"is_active\") VALUES (#{subCompanyName}, #{abbreviation}, #{companyId}, '1', '1')") int saveCompany(SubCompanyBean o); diff --git a/modules/bmw/src/main/resources/mapper/person/GetChildListMapper.xml b/modules/bmw/src/main/resources/mapper/person/GetChildListMapper.xml index 6d980bf..a9a0cad 100644 --- a/modules/bmw/src/main/resources/mapper/person/GetChildListMapper.xml +++ b/modules/bmw/src/main/resources/mapper/person/GetChildListMapper.xml @@ -4,10 +4,52 @@ \ No newline at end of file