Kaynağa Gözat

动态条件优化

shimingxy 9 saat önce
ebeveyn
işleme
4adb5e2f57

+ 3 - 16
maxkey-persistence/src/main/java/org/dromara/maxkey/persistence/service/impl/GroupsServiceImpl.java

@@ -62,23 +62,10 @@ public class GroupsServiceImpl  extends JpaServiceImpl<GroupsMapper,Groups,Strin
     
     public void refreshDynamicGroups(Groups dynamicGroup){
         if(dynamicGroup.getCategory().equals(Roles.Category.DYNAMIC)) {
-            
-            if(StringUtils.isNotBlank(dynamicGroup.getOrgIdsList())) {
-                String []orgIds = dynamicGroup.getOrgIdsList().split(",");
-                StringBuffer orgIdFilters = new StringBuffer();
-                for(String orgId : orgIds) {
-                    if(StringUtils.isNotBlank(orgId)) {
-                        if(orgIdFilters.length() > 0) {
-                            orgIdFilters.append(",");
-                        }
-                        orgIdFilters.append("'").append(orgId).append("'");
-                    }
-                }
-                if(orgIdFilters.length() > 0) {
-                    dynamicGroup.setOrgIdsList(orgIdFilters.toString());
-                }
+        	if(StringUtils.isNotBlank(dynamicGroup.getOrgIdsList())) {
+                dynamicGroup.setOrgIds(StrUtils.string2List(dynamicGroup.getOrgIdsList(), "','"));
+                _logger.debug("OrgIds {}" , dynamicGroup.getOrgIds());
             }
-            
             String filters = dynamicGroup.getFilters();
             if(StringUtils.isNotBlank(filters)) {
                 if(StrUtils.filtersSQLInjection(filters.toLowerCase())) {  

+ 3 - 16
maxkey-persistence/src/main/java/org/dromara/maxkey/persistence/service/impl/RolesServiceImpl.java

@@ -64,23 +64,10 @@ public class RolesServiceImpl  extends JpaServiceImpl<RolesMapper,Roles,String>
     
     public void refreshDynamicRoles(Roles dynamicRole){
         if(dynamicRole.getCategory().equals(Roles.Category.DYNAMIC)) {
-            
-            if(StringUtils.isNotBlank(dynamicRole.getOrgIdsList())) {
-                String []orgIds = dynamicRole.getOrgIdsList().split(",");
-                StringBuffer orgIdFilters = new StringBuffer();
-                for(String orgId : orgIds) {
-                    if(StringUtils.isNotBlank(orgId)) {
-                        if(orgIdFilters.length() > 0) {
-                            orgIdFilters.append(",");
-                        }
-                        orgIdFilters.append("'").append(orgId).append("'");
-                    }
-                }
-                if(orgIdFilters.length() > 0) {
-                    dynamicRole.setOrgIdsList(orgIdFilters.toString());
-                }
+        	if(StringUtils.isNotBlank(dynamicRole.getOrgIdsList())) {
+        		dynamicRole.setOrgIds(StrUtils.string2List(dynamicRole.getOrgIdsList(), "','"));
+                _logger.debug("OrgIds {}" , dynamicRole.getOrgIds());
             }
-            
             String filters = dynamicRole.getFilters();
             _logger.debug("filters {}" , filters);
             if(StringUtils.isNotBlank(filters)) {

+ 12 - 4
maxkey-persistence/src/main/resources/org/dromara/maxkey/persistence/mapper/xml/mysql/GroupMemberMapper.xml

@@ -208,8 +208,12 @@
 		<if test="filters != null and filters != ''">
 				and (${filters})
 		</if>
-		<if test="orgIdsList != null and orgIdsList != ''">
-				and u.departmentid in( ${orgIdsList})
+		<if test="orgIds != null and orgIds.size() > 0">
+				and u.departmentid in( 
+				<foreach collection="orgIds" item="item" separator=",">
+					#{item}
+				</foreach>
+				)	
 		</if>
     </update>
     
@@ -225,8 +229,12 @@
 				<if test="filters != null and filters != ''">
 						and (${filters})
 				</if>
-				<if test="orgIdsList != null and orgIdsList != ''">
-						and u.departmentid in ( ${orgIdsList})
+				<if test="orgIds != null and orgIds.size() > 0">
+						and u.departmentid in ( 
+						<foreach collection="orgIds" item="item" separator=",">
+		                    #{item}
+		                </foreach>
+						)
 				</if>
 			)
     </delete>

+ 12 - 4
maxkey-persistence/src/main/resources/org/dromara/maxkey/persistence/mapper/xml/mysql/RoleMemberMapper.xml

@@ -155,8 +155,12 @@
 		<if test="filters != null and filters != ''">
 				and (${filters})
 		</if>
-		<if test="orgIdsList != null and orgIdsList != ''">
-				and u.departmentid in( ${orgIdsList})
+		<if test="orgIds != null and orgIds.size() > 0">
+				and u.departmentid in(
+				<foreach collection="orgIds" item="item" separator=",">
+					#{item}
+				</foreach>
+				)
 		</if>
     </update>
     
@@ -172,8 +176,12 @@
 				<if test="filters != null and filters != ''">
 						and (${filters})
 				</if>
-				<if test="orgIdsList != null and orgIdsList != ''">
-						and u.departmentid in ( ${orgIdsList})
+				<if test="orgIds != null and orgIds.size() > 0">
+						and u.departmentid in ( 
+						<foreach collection="orgIds" item="item" separator=",">
+							#{item}
+						</foreach>
+						)
 				</if>
 			)
     </delete>