From b04b02aa6a6cb50da58c1a7165394252c94f78e9 Mon Sep 17 00:00:00 2001
From: linwei <872216696@qq.com>
Date: Sat, 20 Jan 2024 17:56:13 +0800
Subject: [PATCH] 物业公司人员查询数据过滤

---
 src/main/java/org/springblade/modules/property/service/impl/PropertyCompanyServiceImpl.java |    9 ++++
 src/main/java/org/springblade/modules/system/service/impl/RoleServiceImpl.java              |   11 +++++
 src/main/java/org/springblade/modules/system/mapper/DeptMapper.java                         |    2 
 src/main/java/org/springblade/modules/system/vo/DeptVO.java                                 |    3 +
 src/main/java/org/springblade/modules/system/mapper/DeptMapper.xml                          |    8 +++-
 src/main/java/org/springblade/modules/system/service/impl/DeptServiceImpl.java              |   60 ++++++++++++++++++++++++------
 src/main/java/org/springblade/modules/article/mapper/ArticleMapper.xml                      |    2 
 src/main/java/org/springblade/modules/system/controller/UserController.java                 |    2 
 src/main/java/org/springblade/modules/system/vo/RoleVO.java                                 |    3 +
 src/main/java/org/springblade/modules/article/service/impl/ArticleServiceImpl.java          |    5 ++
 10 files changed, 86 insertions(+), 19 deletions(-)

diff --git a/src/main/java/org/springblade/modules/article/mapper/ArticleMapper.xml b/src/main/java/org/springblade/modules/article/mapper/ArticleMapper.xml
index f16510b..6bee315 100644
--- a/src/main/java/org/springblade/modules/article/mapper/ArticleMapper.xml
+++ b/src/main/java/org/springblade/modules/article/mapper/ArticleMapper.xml
@@ -208,7 +208,7 @@
             AND CONCAT(title,source_name)
             LIKE CONCAT ('%', #{article.keyword},'%')
         </if>
-        <if test="article.districtIdList != null and article.districtIdList != ''">
+        <if test="article.districtIdList != null and article.districtIdList.size() > 0 ">
             and (article_range like
             <foreach collection="article.districtIdList" separator=" or article_range like" item="id">'%${id}%'
             </foreach>
diff --git a/src/main/java/org/springblade/modules/article/service/impl/ArticleServiceImpl.java b/src/main/java/org/springblade/modules/article/service/impl/ArticleServiceImpl.java
index c983d2f..74c6f03 100644
--- a/src/main/java/org/springblade/modules/article/service/impl/ArticleServiceImpl.java
+++ b/src/main/java/org/springblade/modules/article/service/impl/ArticleServiceImpl.java
@@ -38,6 +38,7 @@
 		String userRole = AuthUtil.getUserRole();
 		// 物业身份,只查询该物业公司下的公告
 		if (userRole.contains("wygly")) {
+			// 物业公司 有哪些小区
 			IPropertyCompanyDistrictService bean = SpringUtils.getBean(IPropertyCompanyDistrictService.class);
 			List<PropertyCompanyDistrictEntity> list = bean.list(Wrappers.<PropertyCompanyDistrictEntity>lambdaQuery()
 				.eq(PropertyCompanyDistrictEntity::getUserId, AuthUtil.getUserId()));
@@ -50,7 +51,9 @@
 //			List<DistrictEntity> list = bean.list(Wrappers.<DistrictEntity>lambdaQuery()
 //				.in(DistrictEntity::getCommunityCode, regionChildCodesList));
 //			List<String> fieldValues = list.stream().map(DistrictEntity::getId).collect(Collectors.toList());
-			article.setDistrictIdList(regionChildCodesList);
+			if (regionChildCodesList.size() > 0) {
+				article.setDistrictIdList(regionChildCodesList);
+			}
 		}
 		return page.setRecords(baseMapper.selectArticlePage(page, article));
 	}
diff --git a/src/main/java/org/springblade/modules/property/service/impl/PropertyCompanyServiceImpl.java b/src/main/java/org/springblade/modules/property/service/impl/PropertyCompanyServiceImpl.java
index b2204ae..bfbd74c 100644
--- a/src/main/java/org/springblade/modules/property/service/impl/PropertyCompanyServiceImpl.java
+++ b/src/main/java/org/springblade/modules/property/service/impl/PropertyCompanyServiceImpl.java
@@ -19,10 +19,13 @@
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springblade.common.cache.SysCache;
 import org.springblade.common.constant.CommonConstant;
 import org.springblade.common.utils.SpringUtils;
 import org.springblade.core.mp.support.Condition;
+import org.springblade.core.secure.utils.AuthUtil;
 import org.springblade.core.tool.utils.DigestUtil;
+import org.springblade.core.tool.utils.Func;
 import org.springblade.modules.pay.entity.AliPayInfo;
 import org.springblade.modules.pay.entity.WxPayInfo;
 import org.springblade.modules.pay.service.IAliPayService;
@@ -82,6 +85,12 @@
 	 */
 	@Override
 	public List<PropertyCompanyVO> getPropertyCompanyList(PropertyCompanyVO propertyCompany) {
+		String userRole = AuthUtil.getUserRole();
+		if (!AuthUtil.isAdministrator() && userRole.contains("wygly")) {
+			Long deptId = Func.firstLong(AuthUtil.getDeptId());
+			Dept dept = SysCache.getDept(deptId);
+			propertyCompany.setName(dept.getDeptName());
+		}
 		return baseMapper.getPropertyCompanyList(propertyCompany);
 	}
 
diff --git a/src/main/java/org/springblade/modules/system/controller/UserController.java b/src/main/java/org/springblade/modules/system/controller/UserController.java
index 29913ec..bf8f184 100644
--- a/src/main/java/org/springblade/modules/system/controller/UserController.java
+++ b/src/main/java/org/springblade/modules/system/controller/UserController.java
@@ -182,7 +182,7 @@
 	@PostMapping("/submit")
 	@ApiOperationSupport(order = 4)
 	@ApiOperation(value = "新增或修改", notes = "传入User")
-	@PreAuth(RoleConstant.HAS_ROLE_ADMIN)
+	@PreAuth("hasAnyRole('administrator', 'admin','wygly')")
 	public R submit(@Valid @RequestBody User user) {
 		CacheUtil.clear(USER_CACHE);
 		return R.status(userService.submit(user));
diff --git a/src/main/java/org/springblade/modules/system/mapper/DeptMapper.java b/src/main/java/org/springblade/modules/system/mapper/DeptMapper.java
index 7a028cd..7d0b5e1 100644
--- a/src/main/java/org/springblade/modules/system/mapper/DeptMapper.java
+++ b/src/main/java/org/springblade/modules/system/mapper/DeptMapper.java
@@ -47,7 +47,7 @@
 	 * @param tenantId
 	 * @return
 	 */
-	List<DeptVO> tree(String tenantId);
+	List<DeptVO> tree(String tenantId, Long parentId);
 
 	/**
 	 * 懒加载获取树形节点
diff --git a/src/main/java/org/springblade/modules/system/mapper/DeptMapper.xml b/src/main/java/org/springblade/modules/system/mapper/DeptMapper.xml
index 021b2f8..985a331 100644
--- a/src/main/java/org/springblade/modules/system/mapper/DeptMapper.xml
+++ b/src/main/java/org/springblade/modules/system/mapper/DeptMapper.xml
@@ -68,8 +68,12 @@
 
     <select id="tree" resultMap="treeNodeResultMap">
         select id, parent_id, dept_name as title, id as "value", id as "key" from blade_dept where is_deleted = 0
-        <if test="_parameter!=null and _parameter!=''">
-            and tenant_id = #{_parameter}
+        <if test="param1!=null and param1!=''">
+            and tenant_id = #{param1}
+        </if>
+
+        <if test="param2!=null and param2!=''">
+            and parent_id = #{param2}
         </if>
         ORDER BY sort
     </select>
diff --git a/src/main/java/org/springblade/modules/system/service/impl/DeptServiceImpl.java b/src/main/java/org/springblade/modules/system/service/impl/DeptServiceImpl.java
index 231c67f..bfdea32 100644
--- a/src/main/java/org/springblade/modules/system/service/impl/DeptServiceImpl.java
+++ b/src/main/java/org/springblade/modules/system/service/impl/DeptServiceImpl.java
@@ -26,6 +26,7 @@
 import org.springblade.core.secure.utils.AuthUtil;
 import org.springblade.core.tool.constant.BladeConstant;
 import org.springblade.core.tool.node.ForestNodeMerger;
+import org.springblade.core.tool.utils.BeanUtil;
 import org.springblade.core.tool.utils.Func;
 import org.springblade.core.tool.utils.StringPool;
 import org.springblade.modules.property.entity.PropertyCompanyEntity;
@@ -81,6 +82,9 @@
 			if (dept.getParentId() != 0) {
 				parentId = dept.getParentId();
 			}
+			List<DeptVO> deptVOS = baseMapper.lazyList(tenantId, parentId, param);
+			deptVOS = deptVOS.stream().filter(item -> AuthUtil.getDeptId().contains(item.getId().toString())).collect(Collectors.toList());
+			return deptVOS;
 		}
 		// 判断点击搜索带有查询条件的情况
 		if (Func.isEmpty(param.get(PARENT_ID)) && param.size() > 1 && Func.toLong(parentId) == 0L) {
@@ -91,7 +95,21 @@
 
 	@Override
 	public List<DeptVO> tree(String tenantId) {
-		return ForestNodeMerger.merge(baseMapper.tree(tenantId));
+		Long parentId = null;
+		// 判断数据权限控制,非超管角色只可看到本级及以下数据
+//		if (!AuthUtil.isAdministrator()) {
+//			Long deptId = Func.firstLong(AuthUtil.getDeptId());
+//			Dept dept = SysCache.getDept(deptId);
+//			if (dept.getParentId() != 0) {
+//				parentId = dept.getParentId();
+//			}
+//			List<DeptVO> merge = ForestNodeMerger.merge(baseMapper.tree(tenantId, parentId));
+//			List<DeptVO> copy = BeanUtil.copy(merge, DeptVO.class);
+//			copy = copy.stream().filter(item -> AuthUtil.getDeptId().contains(item.getId().toString())).collect(Collectors.toList());
+//			return copy;
+//		}
+
+		return ForestNodeMerger.merge(baseMapper.tree(tenantId, parentId));
 	}
 
 	@Override
@@ -100,12 +118,23 @@
 			tenantId = StringPool.EMPTY;
 		}
 		// 判断数据权限控制,非超管角色只可看到本级及以下数据
+//		if (Func.toLong(parentId) == 0L && !AuthUtil.isAdministrator()) {
+//			Long deptId = Func.firstLong(AuthUtil.getDeptId());
+//			Dept dept = SysCache.getDept(deptId);
+//			if (dept.getParentId() != 0) {
+//				parentId = dept.getParentId();
+//			}
+//		}
 		if (Func.toLong(parentId) == 0L && !AuthUtil.isAdministrator()) {
 			Long deptId = Func.firstLong(AuthUtil.getDeptId());
 			Dept dept = SysCache.getDept(deptId);
 			if (dept.getParentId() != 0) {
 				parentId = dept.getParentId();
 			}
+			List<DeptVO> merge = ForestNodeMerger.merge(baseMapper.lazyTree(tenantId, parentId));
+			List<DeptVO> copy = BeanUtil.copy(merge, DeptVO.class);
+			copy = copy.stream().filter(item -> AuthUtil.getDeptId().contains(item.getId().toString())).collect(Collectors.toList());
+			return copy;
 		}
 		return ForestNodeMerger.merge(baseMapper.lazyTree(tenantId, parentId));
 	}
@@ -156,7 +185,7 @@
 			// 查询当前机构信息
 			DeptVO dept = baseMapper.getDeptById(id);
 			// 如果父机构为物业公司
-			if (dept.getParentName().equals("物业公司")){
+			if (dept.getParentName().equals("物业公司")) {
 				// 删除
 				propertyCompanyService.remove(Wrappers.<PropertyCompanyEntity>update().lambda().eq(PropertyCompanyEntity::getDeptId, id));
 			}
@@ -173,6 +202,7 @@
 
 	/**
 	 * 机构信息处理
+	 *
 	 * @param dept
 	 */
 	private void deptHandle(Dept dept) {
@@ -195,6 +225,7 @@
 
 	/**
 	 * 自定义新增或修改
+	 *
 	 * @param dept
 	 * @return
 	 */
@@ -205,7 +236,7 @@
 		deptHandle(dept);
 		// 判断类型,如果为物业公司(上级机构名称为物业公司),名称不能重复
 		QueryWrapper<Dept> queryWrapper = new QueryWrapper<>();
-		queryWrapper.eq("is_deleted",0).eq("id", dept.getParentId());
+		queryWrapper.eq("is_deleted", 0).eq("id", dept.getParentId());
 		Dept parentDept = getOne(queryWrapper);
 		// 如果父机构为物业公司
 		if (parentDept != null && parentDept.getDeptName().equals("物业公司")) {
@@ -218,11 +249,15 @@
 				dept.setId(one.getId());
 				flag = updateById(dept);
 			} else {
-				flag = save(dept);
+				if (dept.getId() > 0) {
+					flag = updateById(dept);
+				} else {
+					flag = save(dept);
+				}
 			}
 			//保存物业公司信息
 			savePropertyCompany(dept);
-		}else {
+		} else {
 			flag = saveOrUpdate(dept);
 		}
 		// 保存并返回
@@ -231,23 +266,24 @@
 
 	/**
 	 * 保存物业公司信息
+	 *
 	 * @param dept
 	 */
 	@Transactional(rollbackFor = Exception.class)
 	public void savePropertyCompany(Dept dept) {
 		// 查询物业公司是否存在
 		QueryWrapper<PropertyCompanyEntity> wrapper = new QueryWrapper<>();
-		wrapper.eq("is_deleted",0)
-			.eq("dept_id",dept.getId())
-			.eq("name",dept.getDeptName());
+		wrapper.eq("is_deleted", 0)
+			.eq("dept_id", dept.getId())
+			.eq("name", dept.getDeptName());
 		PropertyCompanyEntity propertyCompanyEntity = propertyCompanyService.getOne(wrapper);
-		if (null!=propertyCompanyEntity){
+		if (null != propertyCompanyEntity) {
 			// 修改
 			propertyCompanyEntity.setDeptId(dept.getId());
 			propertyCompanyEntity.setName(dept.getDeptName());
 			// 往物业公司表中插入一条数据
 			propertyCompanyService.updateById(propertyCompanyEntity);
-		}else {
+		} else {
 			// 新增
 			PropertyCompanyEntity companyEntity = new PropertyCompanyEntity();
 			companyEntity.setDeptId(dept.getId());
@@ -286,9 +322,9 @@
 		for (TreeStringNode treeStringNode : list) {
 			// 查询是否已创建
 			QueryWrapper<Dept> wrapper = new QueryWrapper<>();
-			wrapper.eq("is_deleted",0).eq("dept_name",treeStringNode.getName());
+			wrapper.eq("is_deleted", 0).eq("dept_name", treeStringNode.getName());
 			Dept one = getOne(wrapper);
-			if (null==one){
+			if (null == one) {
 				// 新增
 				Dept dept = new Dept();
 				dept.setParentId(1733066387113734145L);
diff --git a/src/main/java/org/springblade/modules/system/service/impl/RoleServiceImpl.java b/src/main/java/org/springblade/modules/system/service/impl/RoleServiceImpl.java
index dd62abc..8070d36 100644
--- a/src/main/java/org/springblade/modules/system/service/impl/RoleServiceImpl.java
+++ b/src/main/java/org/springblade/modules/system/service/impl/RoleServiceImpl.java
@@ -26,6 +26,7 @@
 import org.springblade.core.tool.constant.BladeConstant;
 import org.springblade.core.tool.constant.RoleConstant;
 import org.springblade.core.tool.node.ForestNodeMerger;
+import org.springblade.core.tool.utils.BeanUtil;
 import org.springblade.core.tool.utils.CollectionUtil;
 import org.springblade.core.tool.utils.Func;
 import org.springblade.modules.system.entity.Role;
@@ -72,13 +73,21 @@
 	@Override
 	public List<RoleVO> tree(String tenantId) {
 		String userRole = AuthUtil.getUserRole();
+		String roleId = AuthUtil.getUser().getRoleId();
 		String excludeRole = null;
 		if (!CollectionUtil.contains(Func.toStrArray(userRole), RoleConstant.ADMIN) && !CollectionUtil.contains(Func.toStrArray(userRole), RoleConstant.ADMINISTRATOR)) {
 			excludeRole = RoleConstant.ADMIN;
 		}
-		return ForestNodeMerger.merge(baseMapper.tree(tenantId, excludeRole));
+		List<RoleVO> merge = ForestNodeMerger.merge(baseMapper.tree(tenantId, excludeRole));
+		List<RoleVO> copy = BeanUtil.copy(merge, RoleVO.class);
+		if (!AuthUtil.isAdministrator()) {
+			List<RoleVO> collect = copy.stream().filter(item -> roleId.contains(item.getId().toString())).collect(Collectors.toList());
+			return collect;
+		}
+		return merge;
 	}
 
+
 	@Override
 	@Transactional(rollbackFor = Exception.class)
 	public boolean grant(@NotEmpty List<Long> roleIds, List<Long> menuIds, List<Long> dataScopeIds, List<Long> apiScopeIds) {
diff --git a/src/main/java/org/springblade/modules/system/vo/DeptVO.java b/src/main/java/org/springblade/modules/system/vo/DeptVO.java
index dd451d5..129d622 100644
--- a/src/main/java/org/springblade/modules/system/vo/DeptVO.java
+++ b/src/main/java/org/springblade/modules/system/vo/DeptVO.java
@@ -51,6 +51,9 @@
 	@JsonSerialize(using = ToStringSerializer.class)
 	private Long parentId;
 
+	@JsonSerialize(using = ToStringSerializer.class)
+	private String title;
+
 	/**
 	 * 子孙节点
 	 */
diff --git a/src/main/java/org/springblade/modules/system/vo/RoleVO.java b/src/main/java/org/springblade/modules/system/vo/RoleVO.java
index 7751d96..70b71c1 100644
--- a/src/main/java/org/springblade/modules/system/vo/RoleVO.java
+++ b/src/main/java/org/springblade/modules/system/vo/RoleVO.java
@@ -45,6 +45,9 @@
 	@JsonSerialize(using = ToStringSerializer.class)
 	private Long id;
 
+	@JsonSerialize(using = ToStringSerializer.class)
+	private String title;
+
 	/**
 	 * 父节点ID
 	 */

--
Gitblit v1.9.3