From d01e5c72372e36add3279175a5a8b646504afaca Mon Sep 17 00:00:00 2001 From: yangwei <867012372@qq.com> Date: Thu, 24 Apr 2025 16:13:51 +0800 Subject: [PATCH] =?UTF-8?q?[feat]=201=E3=80=81=E4=BF=AE=E6=94=B9=E8=AE=BE?= =?UTF-8?q?=E5=A4=87=E6=9D=83=E9=99=90=E5=AD=98=E5=82=A8redis=E9=80=BB?= =?UTF-8?q?=E8=BE=91=E2=91=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/DeviceProServiceImpl.java | 45 +++++++++++-------- 1 file changed, 26 insertions(+), 19 deletions(-) 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 bbfbbc1..5cc1736 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 @@ -88,6 +88,8 @@ public class DeviceProServiceImpl implements IDeviceProService { @Autowired private IDeviceProUserMapper deviceProUserMapper; + private final ObjectMapper objectMapper = new ObjectMapper(); + @Override public PaginationData listDeviceProEntityMap(Page page, DeviceProDTO deviceProDTO) { Page pagination = deviceProMapper.listDeviceProEntityMap(page, deviceProDTO); @@ -148,13 +150,13 @@ public class DeviceProServiceImpl implements IDeviceProService { difference.forEach(proUserEntity -> { //删除人员项目组信息 List projects = RedisUtils.getCacheList(String.format(Constants.PRO_GROUP, proUserEntity.getUserId())); - List projectList = projects.stream() - .filter(DeviceProEntity.class::isInstance) - .map(DeviceProEntity.class::cast) + List projectList = projects.stream() + .filter(Map.class::isInstance) + .map(Map.class::cast) .toList(); //删除人员中所拥有的当前的项目组,然后构建新的存入redis - List deviceProEntities = projectList.stream().filter(p -> !p.getId().equals(proId)).toList(); + List deviceProEntities = projectList.stream().filter(p -> !Integer.valueOf(p.get("id") + "").equals(proId)).toList(); //删除 RedisUtils.deleteObject(String.format(Constants.PRO_GROUP, proUserEntity.getUserId())); //重新插入 @@ -163,19 +165,21 @@ public class DeviceProServiceImpl implements IDeviceProService { //删除人员所拥有的设备信息 List cacheList = RedisUtils.getCacheList(String.format(Constants.PRO_DEVICE, proUserEntity.getUserId())); - List deviceList = cacheList.stream() - .filter(DeviceEntity.class::isInstance) - .map(DeviceEntity.class::cast) + List deviceList = cacheList.stream() + .filter(Map.class::isInstance) + .map(Map.class::cast) .toList(); //过滤除了这个删除的项目组之外的设备 - deviceList = deviceList.stream().filter(p-> !p.getProId().equals(proId)).toList(); + deviceList = deviceList.stream().filter(p-> !Integer.valueOf(p.get("proId") + "").equals(proId)).toList(); //删除 RedisUtils.deleteObject(String.format(Constants.PRO_DEVICE, proUserEntity.getUserId())); - RedisUtils.setCacheList(String.format(String.format(Constants.PRO_DEVICE, proUserEntity.getUserId())),deviceList); + RedisUtils.setCacheList(String.format(Constants.PRO_DEVICE, proUserEntity.getUserId()),deviceList); }); + //--------------------------------------------缓存相关操作---------------------------------------------------------------- + //先清除原来的项目组成员 deviceProUserMapper.delete(new LambdaQueryWrapper().eq(DeviceProUserEntity::getDeviceProId, proId)); @@ -186,13 +190,14 @@ public class DeviceProServiceImpl implements IDeviceProService { //更新缓存记录 userEntity.forEach(proUserEntity -> { List projects = RedisUtils.getCacheList(String.format(Constants.PRO_GROUP, proUserEntity.getUserId())); - List projectList = projects.stream() - .filter(DeviceProEntity.class::isInstance) - .map(DeviceProEntity.class::cast) + List projectList = projects.stream() + .filter(Map.class::isInstance) + .map(Map.class::cast) .toList(); - if (!projectList.stream().anyMatch(p-> p.getId().equals(proUserEntity.getDeviceProId()))){ - RedisUtils.addCacheList(String.format(String.format(Constants.PRO_GROUP, proUserEntity.getUserId())), deviceProEntity); + if (!projectList.stream().anyMatch(p-> Integer.valueOf(p.get("id") + "").equals(proUserEntity.getDeviceProId()))){ + Map proMap = objectMapper.convertValue(deviceProEntity, Map.class); + RedisUtils.addCacheList(String.format(String.format(Constants.PRO_GROUP, proUserEntity.getUserId())), proMap); } }); } @@ -230,13 +235,15 @@ public class DeviceProServiceImpl implements IDeviceProService { List proUserEntityList = deviceProUserMapper.selectList(new LambdaQueryWrapper().eq(DeviceProUserEntity::getDeviceProId, proId)); proUserEntityList.forEach(deviceProUserEntity -> { List devices = RedisUtils.getCacheList(String.format(Constants.PRO_DEVICE, deviceProUserEntity.getUserId())); - List deviceList = devices.stream() - .filter(DeviceEntity.class::isInstance) - .map(DeviceEntity.class::cast) + List deviceList = devices.stream() + .filter(Map.class::isInstance) + .map(Map.class::cast) .toList(); - if (!deviceList.stream().anyMatch(p-> p.getId().equals(deviceEntity.getId()))){ - RedisUtils.addCacheList(String.format(String.format(Constants.PRO_DEVICE, deviceProUserEntity.getUserId())), deviceEntity); + if (!deviceList.stream().anyMatch(p-> Integer.valueOf(p.get("id") + "").equals(deviceEntity.getId()))){ + Map deviceMap = objectMapper.convertValue(deviceEntity, Map.class); + + RedisUtils.addCacheList(String.format(String.format(Constants.PRO_DEVICE, deviceProUserEntity.getUserId())), deviceMap); } }); }