From f3dac2f82e3a6e2836a15a66df4bafd4f5cfd733 Mon Sep 17 00:00:00 2001
From: linwei <872216696@qq.com>
Date: Fri, 19 Jan 2024 14:29:14 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 src/main/java/org/springblade/modules/system/mapper/RegionMapper.java            |    4 +++-
 src/main/java/org/springblade/modules/system/mapper/RegionMapper.xml             |   14 ++++++++++++--
 src/main/java/org/springblade/modules/system/service/impl/RegionServiceImpl.java |    9 ++++-----
 3 files changed, 19 insertions(+), 8 deletions(-)

diff --git a/src/main/java/org/springblade/modules/system/mapper/RegionMapper.java b/src/main/java/org/springblade/modules/system/mapper/RegionMapper.java
index 1da8e49..2eb46c2 100644
--- a/src/main/java/org/springblade/modules/system/mapper/RegionMapper.java
+++ b/src/main/java/org/springblade/modules/system/mapper/RegionMapper.java
@@ -67,7 +67,9 @@
 	 * @return
 	 */
 	@MapKey(value = "id")
-    Map<String, TreeStringNode> getTreeList(@Param("region") RegionVO region);
+    Map<String, TreeStringNode> getTreeList(@Param("region") RegionVO region,
+											@Param("regionChildCodesList") List<String> regionChildCodesList,
+											@Param("isAdministrator") Integer isAdministrator);
 
 	/**
 	 * 树列表(获取当前树)
diff --git a/src/main/java/org/springblade/modules/system/mapper/RegionMapper.xml b/src/main/java/org/springblade/modules/system/mapper/RegionMapper.xml
index 5d9b55e..ea9370a 100644
--- a/src/main/java/org/springblade/modules/system/mapper/RegionMapper.xml
+++ b/src/main/java/org/springblade/modules/system/mapper/RegionMapper.xml
@@ -123,8 +123,18 @@
         <if test="region.parentCode!=null and region.parentCode!=''">
             and parent_code = #{region.parentCode}
         </if>
-        <if test="region.regionCode!=null and region.regionCode!=''">
-            and code like concat('%',#{region.regionCode},'%')
+        <if test="isAdministrator==2">
+            <choose>
+                <when test="regionChildCodesList !=null and regionChildCodesList.size()>0">
+                    and code in
+                    <foreach collection="regionChildCodesList" item="code" open="(" close=")" separator=",">
+                        #{code}
+                    </foreach>
+                </when>
+                <otherwise>
+                    and code in ('')
+                </otherwise>
+            </choose>
         </if>
     </select>
 
diff --git a/src/main/java/org/springblade/modules/system/service/impl/RegionServiceImpl.java b/src/main/java/org/springblade/modules/system/service/impl/RegionServiceImpl.java
index f2f3053..470736d 100644
--- a/src/main/java/org/springblade/modules/system/service/impl/RegionServiceImpl.java
+++ b/src/main/java/org/springblade/modules/system/service/impl/RegionServiceImpl.java
@@ -21,6 +21,7 @@
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.logging.log4j.util.Strings;
+import org.springblade.common.cache.SysCache;
 import org.springblade.common.node.TreeStringNode;
 import org.springblade.common.utils.NodeTreeUtil;
 import org.springblade.core.log.exception.ServiceException;
@@ -136,11 +137,9 @@
 	 */
 	@Override
 	public List<TreeStringNode> getTree(RegionVO region) {
-		Dept dept = deptService.getById(AuthUtil.getDeptId());
-		if (null != dept) {
-			region.setRegionCode(dept.getRegionCode());
-		}
-		return NodeTreeUtil.getStringNodeTree(baseMapper.getTreeList(region));
+		List<String> regionChildCodesList = SysCache.getRegionChildCodesByDeptId(AuthUtil.getDeptId());
+		Integer isAdministrator = AuthUtil.isAdministrator()==true?1:2;
+		return NodeTreeUtil.getStringNodeTree(baseMapper.getTreeList(region,regionChildCodesList,isAdministrator));
 	}
 
 	/**

--
Gitblit v1.9.3