From 7f2505257b8fbb0e31eacf65a2aa680a0c3d0c89 Mon Sep 17 00:00:00 2001 From: yangwei <867012372@qq.com> Date: Mon, 23 Jun 2025 17:34:08 +0800 Subject: [PATCH] =?UTF-8?q?[feat]=E8=AE=BE=E5=A4=87=E7=BB=84=E6=A8=A1?= =?UTF-8?q?=E5=9D=97=E5=A2=9E=E5=8A=A0redis=E7=BC=93=E5=AD=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/DeviceProServiceImpl.java | 59 ++++++++++++++++++- 1 file changed, 58 insertions(+), 1 deletion(-) diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/manage/service/impl/DeviceProServiceImpl.java b/dk-modules/sample/src/main/java/org/dromara/sample/manage/service/impl/DeviceProServiceImpl.java index fcec254..3daed16 100644 --- a/dk-modules/sample/src/main/java/org/dromara/sample/manage/service/impl/DeviceProServiceImpl.java +++ b/dk-modules/sample/src/main/java/org/dromara/sample/manage/service/impl/DeviceProServiceImpl.java @@ -2,6 +2,7 @@ package org.dromara.sample.manage.service.impl; import cn.hutool.core.collection.ListUtil; import cn.hutool.core.lang.Dict; +import cn.hutool.core.stream.StreamUtil; import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; @@ -142,6 +143,9 @@ public class DeviceProServiceImpl implements IDeviceProService { deviceProUserMapper.insert(different); } + //更新设备组redis缓存 + Boolean flag = updateDeviceProCache(); + return true; } catch (ServiceException e) { log.error(e.getMessage(),e); @@ -149,6 +153,53 @@ public class DeviceProServiceImpl implements IDeviceProService { } } + private Boolean updateDeviceProCache() { + + try { + // -------------------------------------- redis缓存 --------------------------------------------------- + //更新redis缓存 + //1、如何存储redis 人员 项目组id device_pro:userId -> List proIdList + // device_pro: + //查询所有的用户-设备组信息 + List proUserList = deviceProUserMapper.selectList(new LambdaQueryWrapper<>()); + + //分组 + Map> proUserMap = proUserList.stream() + .collect(Collectors.groupingBy( + DeviceProUserEntity::getUserId, // 按 userId 分组 + Collectors.mapping(DeviceProUserEntity::getDeviceProId, Collectors.toList()) // 收集每个 userId 对应的 DeviceProId 列表 + )); + + + //更新redis设备组信息 + proUserMap.keySet().forEach(userId -> { + //获取最新的用户设备组信息 + List currentProId = proUserMap.get(userId); + + List cacheList = RedisUtils.getCacheList("device_pro:" + userId); + + log.info("设备组缓存:{}",cacheList); + + //删除这个用户的设备组信息 + if (RedisUtils.hasKey("device_pro:" + userId)){ + RedisUtils.deleteObject("device_pro:" + userId); + + } + + //更新设备组信息 + RedisUtils.setCacheList("device_pro:" + userId, currentProId); + + }); + // -------------------------------------- redis缓存 --------------------------------------------------- + + return true; + } catch (Exception e) { + log.error(e.getMessage(),e); + return false; + } + + } + /** * 绑定设备的项目组 * @param dict @@ -265,7 +316,13 @@ public class DeviceProServiceImpl implements IDeviceProService { LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); wrapper.eq(DeviceProUserEntity::getDeviceProId,proId); wrapper.eq(DeviceProUserEntity::getId,proUserId); - return deviceProUserMapper.delete(wrapper) > 0; + + int flag = deviceProUserMapper.delete(wrapper); + + //更新缓存 + updateDeviceProCache(); + + return flag > 0; } @Override