From 0fa9356dd9ed77db33f3205190d6668a42449929 Mon Sep 17 00:00:00 2001 From: zzc <1278921369@qq.com> Date: Sat, 24 Aug 2024 20:55:41 +0800 Subject: [PATCH] =?UTF-8?q?=E5=88=97=E8=A1=A8=E5=A2=9E=E5=8A=A0=E6=9D=83?= =?UTF-8?q?=E9=99=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../web/controller/app/EqHomeController.java | 23 +++++++++++++++- .../service/impl/EqEquipmentServiceImpl.java | 27 ++++++++++++++++--- 2 files changed, 45 insertions(+), 5 deletions(-) diff --git a/ruoyi-admin/src/main/java/org/dromara/web/controller/app/EqHomeController.java b/ruoyi-admin/src/main/java/org/dromara/web/controller/app/EqHomeController.java index d33f2ea84..8b657ddd7 100644 --- a/ruoyi-admin/src/main/java/org/dromara/web/controller/app/EqHomeController.java +++ b/ruoyi-admin/src/main/java/org/dromara/web/controller/app/EqHomeController.java @@ -22,6 +22,7 @@ import org.dromara.web.domain.bo.*; import org.dromara.web.domain.vo.*; import org.dromara.web.service.*; import org.dromara.web.domain.bo.EqAppHomeBo; +import org.springframework.util.CollectionUtils; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; @@ -325,7 +326,9 @@ public class EqHomeController extends BaseController { @PostMapping("/list") public TableDataInfo list(EqAppHomeBo bo, PageQuery pageQuery){ //当前用户为家庭主体 切换用户后需要传输用户id - if (bo.getUserId() == null) bo.setUserId(LoginHelper.getUserId()); + Long currentUserId = LoginHelper.getUserId(); + if (bo.getUserId() == null) bo.setUserId(currentUserId); + checkUserId(bo.getUserId(), currentUserId); // 下面返回的状态 会在设备状态变化时更新设备状态 状态更新由iot触发 EqEquipmentBo eqEquipmentBo = new EqEquipmentBo(); eqEquipmentBo.setUserId(bo.getUserId()); @@ -333,6 +336,24 @@ public class EqHomeController extends BaseController { return eqEquipmentService.queryPageList(eqEquipmentBo, pageQuery); //在设备表中增加了分布id } + /** + * 检查要查询的userId 是否为分享给当前用户的userId + * 如果不是 则抛出异常 + * @param userId + * @param currentUserId + */ + private void checkUserId(Long userId, Long currentUserId) { + if (!currentUserId.equals(userId)){ + EqShareBo eqShareBo = new EqShareBo(); + eqShareBo.setShareUserId(userId); + eqShareBo.setSharedUserId(currentUserId); + List eqShareVos = shareService.queryList(eqShareBo); + if (CollectionUtils.isEmpty(eqShareVos)){ + throw new RuntimeException("您没有权限查看该设备"); + } + } + } + /** * 设备重排 diff --git a/ruoyi-admin/src/main/java/org/dromara/web/service/impl/EqEquipmentServiceImpl.java b/ruoyi-admin/src/main/java/org/dromara/web/service/impl/EqEquipmentServiceImpl.java index 27ec046b0..439368bf9 100644 --- a/ruoyi-admin/src/main/java/org/dromara/web/service/impl/EqEquipmentServiceImpl.java +++ b/ruoyi-admin/src/main/java/org/dromara/web/service/impl/EqEquipmentServiceImpl.java @@ -17,16 +17,15 @@ import org.dromara.web.device.*; import org.dromara.web.device.iot.*; import org.dromara.web.domain.EqArea; import org.dromara.web.domain.bo.*; -import org.dromara.web.domain.vo.EqEquipmentDetailVo; -import org.dromara.web.domain.vo.EqEquipmentStatisticsVo; -import org.dromara.web.domain.vo.EqUserEquipmentVo; +import org.dromara.web.domain.vo.*; import org.dromara.web.mapper.EqAreaMapper; +import org.dromara.web.service.IEqShareService; import org.dromara.web.service.IotService; import org.springframework.stereotype.Service; -import org.dromara.web.domain.vo.EqEquipmentVo; import org.dromara.web.domain.EqEquipment; import org.dromara.web.mapper.EqEquipmentMapper; import org.dromara.web.service.IEqEquipmentService; +import org.springframework.util.CollectionUtils; import java.util.*; @@ -41,6 +40,7 @@ import java.util.*; public class EqEquipmentServiceImpl implements IEqEquipmentService { private final EqEquipmentMapper baseMapper; + private final IEqShareService shareService; private final EqAreaMapper areaMapper; @@ -346,4 +346,23 @@ public class EqEquipmentServiceImpl implements IEqEquipmentService { } + + + /** + * 检查要查询的userId 是否为分享给当前用户的userId + * 如果不是 则抛出异常 zzc 目前操作不进行对设备控制设置的权限控制 后续如有需要再添加该方法进行验证 + * @param userId + * @param currentUserId + */ + private void checkUserId(Long userId, Long currentUserId) { + if (!currentUserId.equals(userId)){ + EqShareBo eqShareBo = new EqShareBo(); + eqShareBo.setShareUserId(userId); + eqShareBo.setSharedUserId(currentUserId); + List eqShareVos = shareService.queryList(eqShareBo); + if (CollectionUtils.isEmpty(eqShareVos)){ + throw new RuntimeException("您没有权限查看该设备"); + } + } + } }