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("您没有权限查看该设备"); + } + } + } }