From ace9b38f5a1011ab824cad2287cde50164dab59e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B0=91=E5=B9=B4=E6=A2=A6=E4=B8=8E=E7=A0=96?= <2847127106@qq.com> Date: Thu, 10 Oct 2024 14:30:03 +0800 Subject: [PATCH] =?UTF-8?q?feat():=20=E4=BC=98=E5=8C=96=E7=BC=93=E5=AD=98?= =?UTF-8?q?=E7=BB=93=E6=9E=84,=E6=96=B0=E5=A2=9E=E5=AE=9E=E6=97=B6?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E5=BC=80=E5=85=B3=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/caffeine/enums/CacheNameEnums.java | 3 +- .../common/caffeine}/utils/CacheUtils.java | 34 ++++++++++++++++++- .../controller/DataProcessingController.java | 13 +++++++ .../service/DataProcessingService.java | 14 ++++---- .../impl/DataProcessingServiceImpl.java | 24 ++++++++++--- .../strategy/abstractStrategyRouter.java | 7 +--- .../strategy/core/BasicStrategy.java | 4 +-- 7 files changed, 77 insertions(+), 22 deletions(-) rename {cloud-modules/cloud-modules-data-processing/src/main/java/com/muyu/data/processing => cloud-common/cloud-common-caffeine/src/main/java/com/muyu/common/caffeine}/utils/CacheUtils.java (72%) diff --git a/cloud-common/cloud-common-caffeine/src/main/java/com/muyu/common/caffeine/enums/CacheNameEnums.java b/cloud-common/cloud-common-caffeine/src/main/java/com/muyu/common/caffeine/enums/CacheNameEnums.java index 3d3116b..87a5bcc 100644 --- a/cloud-common/cloud-common-caffeine/src/main/java/com/muyu/common/caffeine/enums/CacheNameEnums.java +++ b/cloud-common/cloud-common-caffeine/src/main/java/com/muyu/common/caffeine/enums/CacheNameEnums.java @@ -21,7 +21,8 @@ public enum CacheNameEnums { FAULT("fault", "故障"), FENCE("fence", "围栏"), WARMING("warming", "预警"), - REALTIME("realTime", "实时信息"); + REALTIME("realTime", "实时信息"), + START("start", "状态表示"); private final String code; private final String info; diff --git a/cloud-modules/cloud-modules-data-processing/src/main/java/com/muyu/data/processing/utils/CacheUtils.java b/cloud-common/cloud-common-caffeine/src/main/java/com/muyu/common/caffeine/utils/CacheUtils.java similarity index 72% rename from cloud-modules/cloud-modules-data-processing/src/main/java/com/muyu/data/processing/utils/CacheUtils.java rename to cloud-common/cloud-common-caffeine/src/main/java/com/muyu/common/caffeine/utils/CacheUtils.java index a16af73..c44a5bf 100644 --- a/cloud-modules/cloud-modules-data-processing/src/main/java/com/muyu/data/processing/utils/CacheUtils.java +++ b/cloud-common/cloud-common-caffeine/src/main/java/com/muyu/common/caffeine/utils/CacheUtils.java @@ -1,6 +1,7 @@ -package com.muyu.data.processing.utils; +package com.muyu.common.caffeine.utils; import com.github.yulichang.toolkit.SpringContentUtils; +import com.muyu.common.caffeine.enums.CacheNameEnums; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.ObjectUtils; import org.springframework.cache.Cache; @@ -34,6 +35,24 @@ public class CacheUtils { return cache; } + /** + * 清除缓存 - 根据缓存分区名称 + * @param cacheName 缓存分区名称 + * @return 操作结果 + */ + public void delCache(String cacheName) { + getCache(cacheName).invalidate(); + log.info("缓存清除成功:分区-{}", cacheName); + } + + /** + * 清除缓存 - 根据键值 + * @param key + */ + public void delCacheValueAll(String key) { + CacheNameEnums.getCodes().forEach(cacheName -> delCacheValue(cacheName, key)); + } + /** * 设置缓存值 * @param cacheName 缓存分区名称 @@ -76,4 +95,17 @@ public class CacheUtils { public T getCacheValue(String cacheName, String key, Class type) { return getCache(cacheName).get(key, type); } + + /** + * 清除缓存 + * @param cacheName 缓存分区名称 + * @param key 键 + */ + public void delCacheValue(String cacheName, String key) { + getCache(cacheName).retrieve(key); + } + + + + } diff --git a/cloud-modules/cloud-modules-data-processing/src/main/java/com/muyu/data/processing/controller/DataProcessingController.java b/cloud-modules/cloud-modules-data-processing/src/main/java/com/muyu/data/processing/controller/DataProcessingController.java index 37c2735..29c97c4 100644 --- a/cloud-modules/cloud-modules-data-processing/src/main/java/com/muyu/data/processing/controller/DataProcessingController.java +++ b/cloud-modules/cloud-modules-data-processing/src/main/java/com/muyu/data/processing/controller/DataProcessingController.java @@ -1,10 +1,12 @@ package com.muyu.data.processing.controller; +import com.muyu.common.core.domain.Result; import com.muyu.common.rabbit.config.RabbitmqConfig; import com.muyu.data.processing.service.DataProcessingService; import javax.annotation.Resource; +import lombok.NonNull; import org.springframework.amqp.rabbit.core.RabbitTemplate; import org.springframework.web.bind.annotation.*; import lombok.extern.slf4j.Slf4j; @@ -33,4 +35,15 @@ public class DataProcessingController { rabbitTemplate.convertAndSend(RabbitmqConfig.EXCHANGE_TOPICS_INFORM, "inform.email", vin); log.info("发送消息成功:{}",vin); } + + /** + * 车辆实时数据订阅开关 + * @param vin 车辆vin码 + * @param status 开关状态 + * @return 返回结果 + */ + @GetMapping("/carRealTimeStatus") + public Result carRealTimeStatus(@RequestParam("vin") @NonNull String vin, @RequestParam("status") @NonNull Boolean status) { + return Result.success(service.carRealTimeStatus(vin, status)); + } } diff --git a/cloud-modules/cloud-modules-data-processing/src/main/java/com/muyu/data/processing/service/DataProcessingService.java b/cloud-modules/cloud-modules-data-processing/src/main/java/com/muyu/data/processing/service/DataProcessingService.java index 03cf4a0..e023445 100644 --- a/cloud-modules/cloud-modules-data-processing/src/main/java/com/muyu/data/processing/service/DataProcessingService.java +++ b/cloud-modules/cloud-modules-data-processing/src/main/java/com/muyu/data/processing/service/DataProcessingService.java @@ -1,12 +1,6 @@ package com.muyu.data.processing.service; -import com.muyu.data.processing.domain.BasicData; -import com.muyu.data.processing.domain.CarData; - -import java.util.HashMap; -import java.util.List; - /** * 数据处理业务层 * @@ -19,4 +13,12 @@ import java.util.List; public interface DataProcessingService{ + /** + * 启动或停止实时数据 + * + * @param vin 车辆vin码 + * @param status 开关状态 + * @return 返回结果 + */ + String carRealTimeStatus(String vin, Boolean status); } diff --git a/cloud-modules/cloud-modules-data-processing/src/main/java/com/muyu/data/processing/service/impl/DataProcessingServiceImpl.java b/cloud-modules/cloud-modules-data-processing/src/main/java/com/muyu/data/processing/service/impl/DataProcessingServiceImpl.java index 67abfcb..a2f26a4 100644 --- a/cloud-modules/cloud-modules-data-processing/src/main/java/com/muyu/data/processing/service/impl/DataProcessingServiceImpl.java +++ b/cloud-modules/cloud-modules-data-processing/src/main/java/com/muyu/data/processing/service/impl/DataProcessingServiceImpl.java @@ -3,9 +3,9 @@ package com.muyu.data.processing.service.impl; import javax.annotation.Resource; +import com.muyu.common.caffeine.enums.CacheNameEnums; +import com.muyu.common.caffeine.utils.CacheUtils; import org.apache.iotdb.session.pool.SessionPool; -import org.springframework.cache.Cache; -import org.springframework.cache.CacheManager; import org.springframework.stereotype.Service; import lombok.extern.slf4j.Slf4j; import com.muyu.data.processing.mapper.DataProcessingMapper; @@ -29,9 +29,23 @@ public class DataProcessingServiceImpl implements DataProcessingService { @Resource private SessionPool sessionPool; @Resource - private CacheManager cacheManager; - - + private CacheUtils cacheUtils; + /** + * 启动或停止实时数据 + * + * @param vin 车辆vin码 + * @param status 开关状态 + * @return 返回结果 + */ + @Override + public String carRealTimeStatus(String vin, Boolean status) { + if (status){ + cacheUtils.setCacheValue(CacheNameEnums.REALTIME.getCode(), vin, "Y"); + }else { + cacheUtils.delCacheValue(CacheNameEnums.REALTIME.getCode(), vin); + } + return "实时数据状态更改成功,当前状态: " + status; + } } diff --git a/cloud-modules/cloud-modules-data-processing/src/main/java/com/muyu/data/processing/strategy/abstractStrategyRouter.java b/cloud-modules/cloud-modules-data-processing/src/main/java/com/muyu/data/processing/strategy/abstractStrategyRouter.java index 0ce53d5..a4dd83b 100644 --- a/cloud-modules/cloud-modules-data-processing/src/main/java/com/muyu/data/processing/strategy/abstractStrategyRouter.java +++ b/cloud-modules/cloud-modules-data-processing/src/main/java/com/muyu/data/processing/strategy/abstractStrategyRouter.java @@ -1,13 +1,8 @@ package com.muyu.data.processing.strategy; -import com.github.yulichang.toolkit.SpringContentUtils; -import com.muyu.data.processing.utils.CacheUtils; -import jakarta.annotation.PostConstruct; +import com.muyu.common.caffeine.utils.CacheUtils; import lombok.extern.slf4j.Slf4j; -import org.springframework.cache.CacheManager; import org.springframework.stereotype.Component; - -import java.util.Objects; /** * 抽象策略路由 * @Author: 胡杨 diff --git a/cloud-modules/cloud-modules-data-processing/src/main/java/com/muyu/data/processing/strategy/core/BasicStrategy.java b/cloud-modules/cloud-modules-data-processing/src/main/java/com/muyu/data/processing/strategy/core/BasicStrategy.java index 14dc02e..8c3aa60 100644 --- a/cloud-modules/cloud-modules-data-processing/src/main/java/com/muyu/data/processing/strategy/core/BasicStrategy.java +++ b/cloud-modules/cloud-modules-data-processing/src/main/java/com/muyu/data/processing/strategy/core/BasicStrategy.java @@ -41,10 +41,8 @@ public class BasicStrategy extends abstractStrategyRouter { - // 通过VIN码获取所有事件的缓存信息 - Object cacheValue = cacheUtils.getCacheValue(code, basicDataMap.get("VIN").getKey()); // 如果缓存信息不为空,则说明车辆需要处理该事件 - if (ObjectUtils.isNotEmpty(cacheValue)){ + if (ObjectUtils.isNotEmpty(cacheUtils.hasKey(code, basicDataMap.get("VIN").getKey()))){ basicDataMap.put(code, null); } });