xucaiqin %!s(int64=2) %!d(string=hai) anos
pai
achega
934bb93fdf

+ 31 - 6
iot-framework/iot-starter-redis/src/main/java/com/middle/platform/redis/service/CacheService.java

@@ -1,10 +1,11 @@
 package com.middle.platform.redis.service;
 
-import com.middle.platform.redis.constant.CacheConstant;
 import jakarta.annotation.Resource;
 import org.springframework.data.redis.core.RedisTemplate;
 import org.springframework.stereotype.Component;
 
+import java.util.Map;
+
 /**
  * 产品相关缓存
  *
@@ -17,17 +18,41 @@ public class CacheService {
     private RedisTemplate<String, Object> redisTemplate;
 
     /**
-     * CacheConstant.TOPIC_CACHE 保存
+     * 赋值
      *
      * @param key
      * @param val
      */
-    public void setTopic(String key, String val) {
-        redisTemplate.opsForValue().set(String.format(CacheConstant.TOPIC_CACHE, key), val);
+    public void setKey(String key, Object val) {
+        redisTemplate.opsForValue().set(key, val);
+    }
+
+    /**
+     * 批量赋值
+     *
+     * @param map
+     */
+    public void multiSetKey(Map<String, Object> map) {
+        redisTemplate.opsForValue().multiSet(map);
     }
-    public void delTopic(String key){
-        redisTemplate.delete(String.format(CacheConstant.TOPIC_CACHE, key));
+
+    /**
+     * 删除
+     *
+     * @param key
+     */
+    public void delKey(String key) {
+        redisTemplate.delete(key);
     }
 
+    /**
+     * 获取
+     *
+     * @param key
+     * @return
+     */
+    public Object getKey(String key) {
+        return redisTemplate.opsForValue().get(key);
+    }
 
 }

+ 6 - 6
iot-module/iot-module-data/iot-module-data-biz/src/main/java/com/middle/platform/data/biz/service/DataService.java

@@ -8,9 +8,9 @@ import com.middle.platform.data.biz.pojo.ProductPara;
 import com.middle.platform.data.biz.utils.TsUtil;
 import com.middle.platform.manage.api.pojo.ProductVo;
 import com.middle.platform.redis.constant.CacheConstant;
+import com.middle.platform.redis.service.CacheService;
 import jakarta.annotation.Resource;
 import lombok.extern.slf4j.Slf4j;
-import org.springframework.data.redis.core.RedisTemplate;
 import org.springframework.stereotype.Component;
 
 import java.util.*;
@@ -25,7 +25,7 @@ public class DataService {
     @Resource
     private TaosMapper taosMapper;
     @Resource
-    private RedisTemplate<String, Object> redisTemplate;
+    private CacheService cacheService;
 
     /**
      * 源数据处理
@@ -34,10 +34,10 @@ public class DataService {
      * @param payload
      */
     public void rawData(String msgId, ProductVo productVo, Object payload) {
-        Object o = redisTemplate.opsForValue().get(String.format(CacheConstant.TD_ORG_CACHE, productVo.getCode(), productVo.getGuid()));
+        Object o = cacheService.getKey(String.format(CacheConstant.TD_ORG_CACHE, productVo.getCode(), productVo.getGuid()));
         if (Objects.isNull(o)) {
             taosMapper.createOriginalTable(productVo.getGuid(), productVo.getCode());
-            redisTemplate.opsForValue().set(String.format(CacheConstant.TD_ORG_CACHE, productVo.getCode(), productVo.getGuid()), true);
+            cacheService.setKey(String.format(CacheConstant.TD_ORG_CACHE, productVo.getCode(), productVo.getGuid()), true);
         }
         OriginalPara originalPara = new OriginalPara();
         originalPara.setCode(productVo.getCode());
@@ -58,10 +58,10 @@ public class DataService {
      */
     public void analyzeData(String msgId, ProductVo productVo, Object modData) {
         log.info("解析后的数据:{}", modData);
-        Object o = redisTemplate.opsForValue().get(String.format(CacheConstant.TD_CACHE, productVo.getCode(), productVo.getGuid()));
+        Object o = cacheService.getKey(String.format(CacheConstant.TD_CACHE, productVo.getCode(), productVo.getGuid()));
         if (Objects.isNull(o)) {
             taosMapper.createDeviceTable(productVo.getGuid(), productVo.getCode());
-            redisTemplate.opsForValue().set(String.format(CacheConstant.TD_CACHE, productVo.getCode(), productVo.getGuid()), true);
+            cacheService.setKey(String.format(CacheConstant.TD_CACHE, productVo.getCode(), productVo.getGuid()), true);
         }
         if (modData instanceof JSONObject jsonObject) {
             List<ProductPara> list = new ArrayList<>();

+ 4 - 4
iot-module/iot-module-data/iot-module-data-biz/src/main/java/com/middle/platform/data/biz/service/mqtt/MqttTopicInit.java

@@ -4,9 +4,9 @@ import com.middle.platform.data.biz.service.mqtt.impl.DynamicTopic;
 import com.middle.platform.manage.api.feign.ProductApi;
 import com.middle.platform.manage.api.pojo.TopicVo;
 import com.middle.platform.redis.constant.CacheConstant;
+import com.middle.platform.redis.service.CacheService;
 import jakarta.annotation.Resource;
 import lombok.extern.slf4j.Slf4j;
-import org.springframework.data.redis.core.RedisTemplate;
 import org.springframework.stereotype.Component;
 import org.springframework.util.CollectionUtils;
 
@@ -22,15 +22,15 @@ public class MqttTopicInit {
     @Resource
     private DynamicTopic dynamicTopic;
     @Resource
-    private RedisTemplate<String, Object> redisTemplate;
+    private CacheService cacheService;
 
     public void init() {
         List<TopicVo> topicVos = productApi.productTopic();
 
         if (!CollectionUtils.isEmpty(topicVos)) {
             log.info("初始化订阅:{}", topicVos);
-            Map<String, String> map = topicVos.stream().collect(Collectors.toMap(a -> String.format(CacheConstant.TOPIC_CACHE, a.getUrl()), b -> b.getFunc() + String.valueOf(b.getPermission()), (a, b) -> a));
-            redisTemplate.opsForValue().multiSet(map);
+            Map<String, Object> map = topicVos.stream().collect(Collectors.toMap(a -> String.format(CacheConstant.TOPIC_CACHE, a.getUrl()), b -> b.getFunc() + String.valueOf(b.getPermission()), (a, b) -> a));
+            cacheService.multiSetKey(map);
             dynamicTopic.addTopic(topicVos.stream().map(TopicVo::getUrl).collect(Collectors.toList()));
         }
     }

+ 3 - 3
iot-module/iot-module-data/iot-module-data-biz/src/main/java/com/middle/platform/data/biz/service/mqtt/StrategyAnalyze.java

@@ -1,9 +1,9 @@
 package com.middle.platform.data.biz.service.mqtt;
 
 import com.middle.platform.redis.constant.CacheConstant;
+import com.middle.platform.redis.service.CacheService;
 import jakarta.annotation.Resource;
 import org.apache.commons.lang3.StringUtils;
-import org.springframework.data.redis.core.RedisTemplate;
 import org.springframework.stereotype.Component;
 
 /**
@@ -15,7 +15,7 @@ import org.springframework.stereotype.Component;
 @Component
 public class StrategyAnalyze {
     @Resource
-    private RedisTemplate<String, Object> redisTemplate;
+    private CacheService cacheService;
 
     /**
      * 设备上报数据,通过topic获取对应的策略类.
@@ -26,7 +26,7 @@ public class StrategyAnalyze {
      */
     public String getByTopic(String topic) {
         //1.topic查找对应的功能权限
-        String func = (String) redisTemplate.opsForValue().get(String.format(CacheConstant.TOPIC_CACHE, topic));
+        String func = (String) cacheService.getKey(String.format(CacheConstant.TOPIC_CACHE, topic));
         if (StringUtils.isNotBlank(func)) {
             //2.功能权限到策略类
             return FuncPerEnum.strategy(func);

+ 5 - 7
iot-module/iot-module-manage/iot-module-manage-biz/src/main/java/com/middle/platform/manage/biz/service/IotCloudService.java

@@ -3,16 +3,15 @@ package com.middle.platform.manage.biz.service;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.middle.platform.common.constant.Global;
 import com.middle.platform.common.exception.BusinessException;
+import com.middle.platform.manage.api.pojo.IotCloudVo;
 import com.middle.platform.manage.biz.domain.req.IotCloudPara;
 import com.middle.platform.manage.biz.domain.req.IotCloudTest;
-import com.middle.platform.manage.api.pojo.IotCloudVo;
 import com.middle.platform.manage.biz.entity.IotCloud;
 import com.middle.platform.manage.biz.mapper.IotCloudMapper;
 import com.middle.platform.redis.constant.CacheConstant;
-import jakarta.annotation.Resource;
+import com.middle.platform.redis.service.CacheService;
 import lombok.RequiredArgsConstructor;
 import org.apache.commons.lang3.StringUtils;
-import org.springframework.data.redis.core.RedisTemplate;
 import org.springframework.stereotype.Service;
 
 import java.util.Objects;
@@ -26,8 +25,7 @@ import java.util.Optional;
 @RequiredArgsConstructor
 public class IotCloudService {
     private final IotCloudMapper iotCloudMapper;
-    @Resource
-    private RedisTemplate<String, Object> redisTemplate;
+    private final CacheService cacheService;
 
     /**
      * 新增或修改云函数
@@ -109,12 +107,12 @@ public class IotCloudService {
      * @return
      */
     public IotCloudVo cacheCloud(Long productId) {
-        IotCloudVo cloud = (IotCloudVo) redisTemplate.opsForValue().get(String.format(CacheConstant.CLOUD_CACHE, productId));
+        IotCloudVo cloud = (IotCloudVo) cacheService.getKey(String.format(CacheConstant.CLOUD_CACHE, productId));
         if (Objects.nonNull(cloud)) {
             return cloud;
         }
         IotCloudVo iotCloudVo = iotCloudMapper.selectCloud(productId);
-        Optional.ofNullable(iotCloudVo).ifPresent(iotCloud -> redisTemplate.opsForValue().set(String.format(CacheConstant.CLOUD_CACHE, productId), iotCloud));
+        Optional.ofNullable(iotCloudVo).ifPresent(iotCloud -> cacheService.setKey(String.format(CacheConstant.CLOUD_CACHE, productId), iotCloud));
         return iotCloudVo;
     }
 }

+ 4 - 4
iot-module/iot-module-manage/iot-module-manage-biz/src/main/java/com/middle/platform/manage/biz/service/IotModService.java

@@ -6,10 +6,10 @@ import com.middle.platform.manage.biz.domain.req.IotModPara;
 import com.middle.platform.manage.biz.entity.IotMod;
 import com.middle.platform.manage.biz.mapper.IotModMapper;
 import com.middle.platform.redis.constant.CacheConstant;
+import com.middle.platform.redis.service.CacheService;
 import jakarta.annotation.Resource;
 import lombok.RequiredArgsConstructor;
 import org.apache.commons.lang3.StringUtils;
-import org.springframework.data.redis.core.RedisTemplate;
 import org.springframework.stereotype.Service;
 
 import java.util.Objects;
@@ -24,7 +24,7 @@ import java.util.Optional;
 public class IotModService {
     private final IotModMapper iotModMapper;
     @Resource
-    private RedisTemplate<String, Object> redisTemplate;
+    private CacheService cacheService;
 
     /**
      * 保存物模型数据
@@ -78,12 +78,12 @@ public class IotModService {
      * @return
      */
     public String cacheMod(Long productId) {
-        String tslJson = (String) redisTemplate.opsForValue().get(String.format(CacheConstant.MOD_CACHE, productId));
+        String tslJson = (String) cacheService.getKey(String.format(CacheConstant.MOD_CACHE, productId));
         if (StringUtils.isNotBlank(tslJson)) {
             return tslJson;
         }
         IotMod query = query(productId);
-        Optional.ofNullable(query).ifPresent(m -> redisTemplate.opsForValue().set(String.format(CacheConstant.MOD_CACHE, productId), m.getTslJson()));
+        Optional.ofNullable(query).ifPresent(m -> cacheService.setKey(String.format(CacheConstant.MOD_CACHE, productId), m.getTslJson()));
         return Objects.nonNull(query) ? query.getTslJson() : null;
     }
 }

+ 4 - 4
iot-module/iot-module-manage/iot-module-manage-biz/src/main/java/com/middle/platform/manage/biz/service/IotProductService.java

@@ -17,6 +17,7 @@ import com.middle.platform.manage.biz.entity.IotProduct;
 import com.middle.platform.manage.biz.mapper.IotDeviceMapper;
 import com.middle.platform.manage.biz.mapper.IotProductMapper;
 import com.middle.platform.redis.constant.CacheConstant;
+import com.middle.platform.redis.service.CacheService;
 import com.middle.platform.system.api.enums.DictType;
 import com.middle.platform.system.api.feign.DictApi;
 import com.middle.platform.system.api.feign.UserApi;
@@ -48,8 +49,7 @@ public class IotProductService {
 
     private final UserApi userApi;
     private final DictApi dictApi;
-    @Resource
-    private RedisTemplate<String, Object> redisTemplate;
+    private final CacheService cacheService;
 
     /**
      * 分页查询产品数据
@@ -173,12 +173,12 @@ public class IotProductService {
      * @return
      */
     public ProductVo cacheProduct(String productKey, String deviceSn) {
-        ProductVo productVo = (ProductVo) redisTemplate.opsForValue().get(String.format(CacheConstant.PRODUCT_CACHE, productKey, deviceSn));
+        ProductVo productVo = (ProductVo) cacheService.getKey(String.format(CacheConstant.PRODUCT_CACHE, productKey, deviceSn));
         if (Objects.nonNull(productVo)) {
             return productVo;
         }
         ProductVo productVoC = iotProductMapper.selectProduct(productKey, deviceSn);
-        Optional.ofNullable(productVoC).ifPresent(product -> redisTemplate.opsForValue().set(String.format(CacheConstant.PRODUCT_CACHE, productKey, deviceSn), product));
+        Optional.ofNullable(productVoC).ifPresent(product -> cacheService.setKey(String.format(CacheConstant.PRODUCT_CACHE, productKey, deviceSn), product));
         return productVoC;
     }
 

+ 3 - 2
iot-module/iot-module-manage/iot-module-manage-biz/src/main/java/com/middle/platform/manage/biz/service/IotUrlService.java

@@ -14,6 +14,7 @@ import com.middle.platform.manage.biz.domain.req.IotUrlPara;
 import com.middle.platform.manage.biz.entity.IotProduct;
 import com.middle.platform.manage.biz.entity.IotUrl;
 import com.middle.platform.manage.biz.mapper.IotUrlMapper;
+import com.middle.platform.redis.constant.CacheConstant;
 import com.middle.platform.redis.service.CacheService;
 import jakarta.annotation.Resource;
 import lombok.RequiredArgsConstructor;
@@ -69,7 +70,7 @@ public class IotUrlService {
             //订阅topic
             dynamicTopicApi.saveTopic(new TopicDto(url, 0));
             //写入 CacheConstant.TOPIC_CACHE缓存
-            cacheService.setTopic(url, func);
+            cacheService.setKey(String.format(CacheConstant.TOPIC_CACHE, url), func);
         });
     }
 
@@ -82,7 +83,7 @@ public class IotUrlService {
         ThreadTask.addJob(() -> {
             dynamicTopicApi.removeTopic(new TopicDto(url, 0));
             //删除原topic
-            cacheService.delTopic(url);
+            cacheService.delKey(String.format(CacheConstant.TOPIC_CACHE, url));
         });
 
     }

+ 6 - 6
iot-module/iot-module-system/iot-module-system-biz/src/main/java/com/middle/platform/system/biz/api/DictApiImpl.java

@@ -2,6 +2,7 @@ package com.middle.platform.system.biz.api;
 
 import com.middle.platform.common.utils.Result;
 import com.middle.platform.redis.constant.CacheConstant;
+import com.middle.platform.redis.service.CacheService;
 import com.middle.platform.system.api.feign.DictApi;
 import com.middle.platform.system.api.pojo.DictCache;
 import com.middle.platform.system.api.pojo.DictDto;
@@ -28,8 +29,7 @@ import java.util.Optional;
 @RequiredArgsConstructor
 public class DictApiImpl implements DictApi {
     private final SysDictItemService sysDictItemService;
-    @Resource
-    private RedisTemplate<String, Object> redisTemplate;
+    private final CacheService cacheService;
 
     @Override
     public Result<DictDto> getDictData(String dictType, String value) {
@@ -58,10 +58,10 @@ public class DictApiImpl implements DictApi {
 
     @Override
     public DictCache query(String dictType, String value) {
-        DictCache dictCache = (DictCache) redisTemplate.opsForValue().get(String.format(CacheConstant.DICT_ITEM_CACHE, dictType, value));
+        DictCache dictCache = (DictCache) cacheService.getKey(String.format(CacheConstant.DICT_ITEM_CACHE, dictType, value));
         if (Objects.isNull(dictCache)) {
             DictCache query = sysDictItemService.query(dictType, value);
-            Optional.ofNullable(query).ifPresent(dict -> redisTemplate.opsForValue().set(String.format(CacheConstant.DICT_ITEM_CACHE, dictType, value), dict));
+            Optional.ofNullable(query).ifPresent(dict -> cacheService.setKey(String.format(CacheConstant.DICT_ITEM_CACHE, dictType, value), dict));
             return query;
         }
         return dictCache;
@@ -69,12 +69,12 @@ public class DictApiImpl implements DictApi {
 
     @Override
     public List<DictCache> queryList(String dictType) {
-        List<DictCache> dictCache = (List<DictCache>) redisTemplate.opsForValue().get(String.format(CacheConstant.DICT_CACHE, dictType));
+        List<DictCache> dictCache = (List<DictCache>) cacheService.getKey(String.format(CacheConstant.DICT_CACHE, dictType));
         if (CollectionUtils.isEmpty(dictCache)) {
             List<DictCache> query = sysDictItemService.query(dictType);
             Optional.ofNullable(query).ifPresent(user -> {
                 if (!CollectionUtils.isEmpty(user)) {
-                    redisTemplate.opsForValue().set(String.format(CacheConstant.DICT_CACHE, dictType), query);
+                    cacheService.setKey(String.format(CacheConstant.DICT_CACHE, dictType), query);
                 }
             });
             return query;