From dab0440128e24d1a3edcf65b1ac34348c4ac0aea Mon Sep 17 00:00:00 2001 From: chenyouting <514333061@qq.com> Date: Sat, 11 Oct 2025 16:07:14 +0800 Subject: [PATCH 1/5] =?UTF-8?q?=E7=BB=91=E5=AE=9Abug=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../web/service/device/DeviceBizService.java | 3 +-- .../common/redis/utils/RedisUtils.java | 20 +++++++++++++++++++ 2 files changed, 21 insertions(+), 2 deletions(-) diff --git a/fys-admin/src/main/java/com/fuyuanshen/web/service/device/DeviceBizService.java b/fys-admin/src/main/java/com/fuyuanshen/web/service/device/DeviceBizService.java index d77a9bdb5..da3c6a506 100644 --- a/fys-admin/src/main/java/com/fuyuanshen/web/service/device/DeviceBizService.java +++ b/fys-admin/src/main/java/com/fuyuanshen/web/service/device/DeviceBizService.java @@ -189,7 +189,6 @@ public class DeviceBizService { if (appDeviceBindRecord != null) { UpdateWrapper deviceUpdateWrapper = new UpdateWrapper<>(); deviceUpdateWrapper.eq("device_id", device.getId()) - .set("binding_status", BindingStatusEnum.BOUND.getCode()) .set("binding_user_id", userId) .set("communication_mode", 0) .set("update_time", new Date()) @@ -384,7 +383,7 @@ public class DeviceBizService { String deviceImei = device.getDeviceImei(); String a = GLOBAL_REDIS_KEY+ DEVICE_KEY_PREFIX+ deviceImei + DEVICE_LOCATION_KEY_PREFIX + ":history"; - Collection list = RedisUtils.zRangeByScore(a, startTime, endTime); + Collection list = RedisUtils.zRangeByScoreDesc(a, startTime, endTime); if (CollectionUtil.isEmpty(list)) { return null; } diff --git a/fys-common/fys-common-redis/src/main/java/com/fuyuanshen/common/redis/utils/RedisUtils.java b/fys-common/fys-common-redis/src/main/java/com/fuyuanshen/common/redis/utils/RedisUtils.java index 6357d1673..04c15ae26 100644 --- a/fys-common/fys-common-redis/src/main/java/com/fuyuanshen/common/redis/utils/RedisUtils.java +++ b/fys-common/fys-common-redis/src/main/java/com/fuyuanshen/common/redis/utils/RedisUtils.java @@ -394,6 +394,26 @@ public class RedisUtils { return null; } } + /** + * 根据时间范围查询Sorted Set中的元素并降序排列 + * + * @param key 键 + * @param startTime 开始时间戳 + * @param endTime 结束时间戳 + * @return 指定时间范围内的元素集合(降序) + */ + public static Collection zRangeByScoreDesc(String key, Long startTime, Long endTime) { + try { + RScoredSortedSet sortedSet = CLIENT.getScoredSortedSet(key); + // 使用 valueRangeReversed 方法获取降序排列的结果 + return sortedSet.valueRangeReversed(startTime, true, endTime, true); + } catch (Exception e) { + // 记录错误日志(如果项目中有日志工具的话) + // log.error("根据时间范围查询Sorted Set中的元素失败: key={}, startTime={}, endTime={}, error={}", + // key, startTime, endTime, e.getMessage(), e); + return null; + } + } /** From 3246127893247bdd27d93349c4ee42b27c651e5c Mon Sep 17 00:00:00 2001 From: chenyouting <514333061@qq.com> Date: Sat, 11 Oct 2025 16:16:06 +0800 Subject: [PATCH 2/5] =?UTF-8?q?=E8=AE=BE=E5=A4=87=E8=A7=A3=E7=BB=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../web/service/device/DeviceBizService.java | 41 ++++++++++++------- 1 file changed, 26 insertions(+), 15 deletions(-) diff --git a/fys-admin/src/main/java/com/fuyuanshen/web/service/device/DeviceBizService.java b/fys-admin/src/main/java/com/fuyuanshen/web/service/device/DeviceBizService.java index da3c6a506..d2927eeaf 100644 --- a/fys-admin/src/main/java/com/fuyuanshen/web/service/device/DeviceBizService.java +++ b/fys-admin/src/main/java/com/fuyuanshen/web/service/device/DeviceBizService.java @@ -282,6 +282,25 @@ public class DeviceBizService { .set("binding_time", null); deviceMapper.update(null, deviceUpdateWrapper); } + QueryWrapper brqWrapper = new QueryWrapper<>(); + brqWrapper.eq("device_id", device.getId()); + brqWrapper.eq("binding_user_id", userId); + List appDeviceBindRecordList = appDeviceBindRecordMapper.selectList(brqWrapper); + if (CollectionUtil.isNotEmpty(appDeviceBindRecordList)) { + appDeviceBindRecordList.forEach(appDeviceBindRecord -> + appDeviceBindRecordMapper.deleteById(appDeviceBindRecord.getId())); + } + AppUserVo appUserVo = appUserMapper.selectVoById(userId); + if(appUserVo != null){ + QueryWrapper appDeviceShareQueryWrapper = new QueryWrapper<>(); + appDeviceShareQueryWrapper.eq("device_id", device.getId()); + appDeviceShareQueryWrapper.eq("phonenumber", appUserVo.getPhonenumber()); + List appDeviceShareList = appDeviceShareMapper.selectList(appDeviceShareQueryWrapper); + if (CollectionUtil.isNotEmpty(appDeviceShareList)) { + appDeviceShareList.forEach(appDeviceShare -> + appDeviceShareMapper.deleteById(appDeviceShare.getId())); + } + } }else{ QueryWrapper bindRecordQueryWrapper = new QueryWrapper<>(); bindRecordQueryWrapper.eq("device_id", device.getId()); @@ -295,25 +314,17 @@ public class DeviceBizService { .set("binding_status", BindingStatusEnum.UNBOUND.getCode()) .set("binding_time", null); deviceMapper.update(null, deviceUpdateWrapper); - } - QueryWrapper brqWrapper = new QueryWrapper<>(); - brqWrapper.eq("device_id", device.getId()); - if(userId != null){ - brqWrapper.eq("binding_user_id", userId); - } + QueryWrapper brqWrapper = new QueryWrapper<>(); + brqWrapper.eq("device_id", device.getId()); + List appDeviceBindRecordList = appDeviceBindRecordMapper.selectList(brqWrapper); + if (CollectionUtil.isNotEmpty(appDeviceBindRecordList)) { + appDeviceBindRecordList.forEach(appDeviceBindRecord -> + appDeviceBindRecordMapper.deleteById(appDeviceBindRecord.getId())); + } - List appDeviceBindRecordList = appDeviceBindRecordMapper.selectList(brqWrapper); - if (CollectionUtil.isNotEmpty(appDeviceBindRecordList)) { - appDeviceBindRecordList.forEach(appDeviceBindRecord -> - appDeviceBindRecordMapper.deleteById(appDeviceBindRecord.getId())); - } - - AppUserVo appUserVo = appUserMapper.selectVoById(userId); - if(appUserVo != null){ QueryWrapper appDeviceShareQueryWrapper = new QueryWrapper<>(); appDeviceShareQueryWrapper.eq("device_id", device.getId()); - appDeviceShareQueryWrapper.eq("phonenumber", appUserVo.getPhonenumber()); List appDeviceShareList = appDeviceShareMapper.selectList(appDeviceShareQueryWrapper); if (CollectionUtil.isNotEmpty(appDeviceShareList)) { appDeviceShareList.forEach(appDeviceShare -> From 156fdbb53bb3fc6482f08ffdd512aa265aa79cf3 Mon Sep 17 00:00:00 2001 From: chenyouting <514333061@qq.com> Date: Sat, 11 Oct 2025 16:33:57 +0800 Subject: [PATCH 3/5] =?UTF-8?q?=E5=8E=86=E5=8F=B2=E8=BD=A8=E8=BF=B9mac?= =?UTF-8?q?=E5=9C=B0=E5=9D=80=E6=94=AF=E6=8C=81=E6=A8=A1=E7=B3=8A=E6=9F=A5?= =?UTF-8?q?=E8=AF=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/resources/mapper/equipment/DeviceMapper.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fys-modules/fys-equipment/src/main/resources/mapper/equipment/DeviceMapper.xml b/fys-modules/fys-equipment/src/main/resources/mapper/equipment/DeviceMapper.xml index d4edd5ac4..d97ad266f 100644 --- a/fys-modules/fys-equipment/src/main/resources/mapper/equipment/DeviceMapper.xml +++ b/fys-modules/fys-equipment/src/main/resources/mapper/equipment/DeviceMapper.xml @@ -311,7 +311,7 @@ AND a.device_name like concat('%',#{bo.deviceName},'%') - AND a.device_mac = #{bo.deviceMac} + AND a.device_mac like concat('%',#{bo.deviceMac},'%') and a.device_imei like concat('%',#{bo.deviceImei}, '%') From 09cbdf267b5757957913a8bac69dae4f966da451 Mon Sep 17 00:00:00 2001 From: chenyouting <514333061@qq.com> Date: Sun, 12 Oct 2025 13:37:18 +0800 Subject: [PATCH 4/5] =?UTF-8?q?=E8=AE=BE=E5=A4=87=E7=BB=91=E5=AE=9A?= =?UTF-8?q?=E6=8F=90=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/fuyuanshen/web/service/device/DeviceBizService.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fys-admin/src/main/java/com/fuyuanshen/web/service/device/DeviceBizService.java b/fys-admin/src/main/java/com/fuyuanshen/web/service/device/DeviceBizService.java index d2927eeaf..0aba6f848 100644 --- a/fys-admin/src/main/java/com/fuyuanshen/web/service/device/DeviceBizService.java +++ b/fys-admin/src/main/java/com/fuyuanshen/web/service/device/DeviceBizService.java @@ -179,7 +179,7 @@ public class DeviceBizService { } Device device = devices.get(0); if (device.getBindingStatus() != null && device.getBindingStatus() == BindingStatusEnum.BOUND.getCode()) { - throw new RuntimeException("设备已绑定"); + throw new RuntimeException("设备已经被绑定!"); } QueryWrapper bindRecordQueryWrapper = new QueryWrapper<>(); From 1d50981a848c38df08412daa27d99e20a83dff78 Mon Sep 17 00:00:00 2001 From: chenyouting <514333061@qq.com> Date: Mon, 13 Oct 2025 14:14:51 +0800 Subject: [PATCH 5/5] =?UTF-8?q?=E5=9C=A8=E7=BA=BF=E7=8A=B6=E6=80=81?= =?UTF-8?q?=E4=BB=BB=E5=8A=A12?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/fuyuanshen/global/queue/OnlineStatusTask.java | 1 + 1 file changed, 1 insertion(+) diff --git a/fys-admin/src/main/java/com/fuyuanshen/global/queue/OnlineStatusTask.java b/fys-admin/src/main/java/com/fuyuanshen/global/queue/OnlineStatusTask.java index d552b17cf..96930c5ad 100644 --- a/fys-admin/src/main/java/com/fuyuanshen/global/queue/OnlineStatusTask.java +++ b/fys-admin/src/main/java/com/fuyuanshen/global/queue/OnlineStatusTask.java @@ -25,6 +25,7 @@ public class OnlineStatusTask { @Scheduled(cron = "0 */3 * * * ?") public void cronTask() { QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("online_status", 1); List devices = deviceMapper.selectList(queryWrapper); devices.forEach(item -> { String onlineStatusKey = GLOBAL_REDIS_KEY + DEVICE_KEY_PREFIX + item.getDeviceImei() + DeviceRedisKeyConstants.DEVICE_ONLINE_STATUS_KEY_PREFIX;