Преглед изворни кода

feature: 基本参数缓存处理
1.修改和删除时清除缓存
2.查询时写缓存

luo.yibo@datuai.com пре 1 година
родитељ
комит
bc4fff2a2e

+ 1 - 1
ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/constant/CacheNames.java

@@ -87,7 +87,7 @@ public interface CacheNames {
     /**
      * 系统参数
      */
-    String PT_PARAMETER = "pt_parameter#30d";
+    String PT_PARAMETER = "pt_parameter";
 
     /**
      * 卡片类别

+ 4 - 0
ruoyi-common/ruoyi-common-message/src/main/java/org/dromara/common/message/kafka/producer/KafkaNormalProducer.java

@@ -7,6 +7,7 @@ import com.alibaba.fastjson2.JSON;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.kafka.clients.producer.ProducerRecord;
+import org.dromara.common.core.config.DefaultConfig;
 import org.dromara.common.core.enums.CloudMqEventEnum;
 import org.dromara.common.core.utils.SpringUtils;
 import org.dromara.common.message.kafka.domain.KafkaHeader;
@@ -24,6 +25,7 @@ import java.util.concurrent.CompletableFuture;
 @Component
 public class KafkaNormalProducer {
     private final KafkaTemplate<String, String> kafkaTemplate;
+    private final DefaultConfig defaultConfig;
 
     public void sendKafkaMessage(String topic, KafkaMessage<?> data) {
         String jsonMessage = JSON.toJSONString(data);
@@ -54,6 +56,8 @@ public class KafkaNormalProducer {
         header.setEventId(IdUtil.simpleUUID());
         if(ObjectUtil.isNotEmpty(JSONUtil.parseObj(data).get("tenantId"))) {
             header.setTenantId(JSONUtil.parseObj(data).get("tenantId").toString());
+        } else {
+            header.setTenantId(defaultConfig.getTenantId());
         }
         header.setEventType(eventType);
         header.setSender(sender);

+ 0 - 4
ruoyi-common/ruoyi-common-tenant/src/main/java/org/dromara/common/tenant/handle/TenantKeyPrefixHandler.java

@@ -36,8 +36,6 @@ public class TenantKeyPrefixHandler extends KeyPrefixHandler {
         String tenantId = TenantHelper.getTenantId();
         if (StringUtils.isBlank(tenantId)) {
             log.error("无法获取有效的租户id -> Null");
-            // todo 暂时设置租户id
-            tenantId = "20200813044411";
         }
         if (StringUtils.startsWith(name, tenantId + "")) {
             // 如果存在则直接返回
@@ -64,8 +62,6 @@ public class TenantKeyPrefixHandler extends KeyPrefixHandler {
         String tenantId = TenantHelper.getTenantId();
         if (StringUtils.isBlank(tenantId)) {
             log.error("无法获取有效的租户id -> Null");
-            // todo 暂时设置租户id
-            tenantId = "20200813044411";
         }
         if (StringUtils.startsWith(unmap, tenantId + "")) {
             // 如果存在则删除

+ 10 - 5
ruoyi-common/ruoyi-common-tenant/src/main/java/org/dromara/common/tenant/helper/TenantHelper.java

@@ -8,6 +8,7 @@ import com.baomidou.mybatisplus.core.plugins.InterceptorIgnoreHelper;
 import lombok.AccessLevel;
 import lombok.NoArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
+import org.dromara.common.core.config.DefaultConfig;
 import org.dromara.common.core.constant.GlobalConstants;
 import org.dromara.common.core.utils.SpringUtils;
 import org.dromara.common.core.utils.StringUtils;
@@ -24,6 +25,7 @@ import java.util.function.Supplier;
 @Slf4j
 @NoArgsConstructor(access = AccessLevel.PRIVATE)
 public class TenantHelper {
+    private static final DefaultConfig defaultConfig = SpringUtils.getBean(DefaultConfig.class);
 
     private static final String DYNAMIC_TENANT_KEY = GlobalConstants.GLOBAL_REDIS_KEY + "dynamicTenant";
 
@@ -94,7 +96,7 @@ public class TenantHelper {
         if (!isEnable()) {
             return;
         }
-        if (!isLogin() || !global) {
+        if (isLogin() || !global) {
             TEMP_DYNAMIC_TENANT.set(tenantId);
             return;
         }
@@ -111,7 +113,7 @@ public class TenantHelper {
         if (!isEnable()) {
             return null;
         }
-        if (!isLogin()) {
+        if (isLogin()) {
             return TEMP_DYNAMIC_TENANT.get();
         }
         // 如果线程内有值 优先返回
@@ -131,7 +133,7 @@ public class TenantHelper {
         if (!isEnable()) {
             return;
         }
-        if (!isLogin()) {
+        if (isLogin()) {
             TEMP_DYNAMIC_TENANT.remove();
             return;
         }
@@ -178,6 +180,9 @@ public class TenantHelper {
         String tenantId = TenantHelper.getDynamic();
         if (StringUtils.isBlank(tenantId)) {
             tenantId = LoginHelper.getTenantId();
+            if (StringUtils.isBlank(tenantId)) {
+                tenantId = defaultConfig.getTenantId();
+            }
         }
         return tenantId;
     }
@@ -185,9 +190,9 @@ public class TenantHelper {
     private static boolean isLogin() {
         try {
             StpUtil.checkLogin();
-            return true;
-        } catch (Exception e) {
             return false;
+        } catch (Exception e) {
+            return true;
         }
     }
 

+ 1 - 2
ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/basics/service/IPtParameterService.java

@@ -69,10 +69,9 @@ public interface IPtParameterService {
     /**
      * 根据键名查询参数配置信息
      *
-     * @param paramCode 参数code
+     * @param paramCode 参数键名
      * @return 参数键值
      */
-
     String selectParamByCode(String paramCode);
 
 }

+ 18 - 17
ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/basics/service/impl/PtParameterServiceImpl.java

@@ -1,28 +1,29 @@
 package org.dromara.backstage.basics.service.impl;
 
 import cn.hutool.core.util.ObjectUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import lombok.RequiredArgsConstructor;
+import org.dromara.backstage.basics.domain.PtParameter;
+import org.dromara.backstage.basics.domain.bo.PtParameterBo;
+import org.dromara.backstage.basics.domain.vo.PtParameterVo;
+import org.dromara.backstage.basics.mapper.PtParameterMapper;
+import org.dromara.backstage.basics.service.IPtParameterService;
 import org.dromara.common.core.constant.CacheNames;
 import org.dromara.common.core.exception.ServiceException;
 import org.dromara.common.core.utils.MapstructUtils;
 import org.dromara.common.core.utils.StringUtils;
-import org.dromara.common.mybatis.core.page.TableDataInfo;
 import org.dromara.common.mybatis.core.page.PageQuery;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import com.baomidou.mybatisplus.core.toolkit.Wrappers;
-import lombok.RequiredArgsConstructor;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
 import org.springframework.cache.annotation.CacheEvict;
 import org.springframework.cache.annotation.Cacheable;
 import org.springframework.stereotype.Service;
-import org.dromara.backstage.basics.domain.bo.PtParameterBo;
-import org.dromara.backstage.basics.domain.vo.PtParameterVo;
-import org.dromara.backstage.basics.domain.PtParameter;
-import org.dromara.backstage.basics.mapper.PtParameterMapper;
-import org.dromara.backstage.basics.service.IPtParameterService;
 
+import java.util.Collection;
 import java.util.List;
 import java.util.Map;
-import java.util.Collection;
+import java.util.Objects;
 
 /**
  * 系统参数Service业务层处理
@@ -88,11 +89,10 @@ public class PtParameterServiceImpl implements IPtParameterService {
      * @param bo 系统参数
      * @return 是否新增成功
      */
-//    @Cacheable(cacheNames = CacheNames.PT_PARAMETER, key = "#bo.paramCode")
     @Override
     public Boolean insertByBo(PtParameterBo bo) {
         PtParameter add = MapstructUtils.convert(bo, PtParameter.class);
-        validEntityBeforeSave(add);
+        validEntityBeforeSave(Objects.requireNonNull(add));
         boolean flag = baseMapper.insert(add) > 0;
         if (flag) {
             bo.setParamId(add.getParamId());
@@ -110,7 +110,9 @@ public class PtParameterServiceImpl implements IPtParameterService {
     @Override
     public Boolean updateByBo(PtParameterBo bo) {
         PtParameter update = MapstructUtils.convert(bo, PtParameter.class);
-        validEntityBeforeSave(update);
+        if (update != null) {
+            validEntityBeforeSave(update);
+        }
         return baseMapper.updateById(update) > 0;
     }
 
@@ -124,11 +126,9 @@ public class PtParameterServiceImpl implements IPtParameterService {
     @CacheEvict(cacheNames = CacheNames.PT_PARAMETER, allEntries = true)
     @Override
     public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
-        if(isValid){
-            //TODO 做一些业务上的校验,判断是否需要校验
-        }
         return baseMapper.deleteByIds(ids) > 0;
     }
+
     /**
      * 根据键名查询参数配置信息
      *
@@ -136,6 +136,7 @@ public class PtParameterServiceImpl implements IPtParameterService {
      * @return 参数键值
      */
     @Override
+    @Cacheable(cacheNames = CacheNames.PT_PARAMETER, key = "#paramCode")
     public String selectParamByCode(String paramCode) {
         PtParameter parameter = baseMapper.selectOne(new LambdaQueryWrapper<PtParameter>()
             .eq(PtParameter::getParamCode, paramCode));

+ 10 - 0
ruoyi-server/ruoyi-server-sync/src/main/java/org/dromara/server/sync/controller/SyncTest.java

@@ -1,12 +1,14 @@
 package org.dromara.server.sync.controller;
 
 import lombok.RequiredArgsConstructor;
+import org.dromara.backstage.api.RemotePtParameterService;
 import org.dromara.common.core.domain.R;
 import org.dromara.server.sync.service.SyncGraduateService;
 import org.dromara.server.sync.service.SyncHrService;
 import org.dromara.server.sync.service.SyncTrainService;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PathVariable;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
@@ -26,6 +28,7 @@ public class SyncTest {
     private final SyncTrainService syncTrainService;
     private final SyncGraduateService syncGraduateService;
     private final SyncHrService syncHrService;
+    private final RemotePtParameterService remotePtParameterService;
 
     @GetMapping("/sync/trainee")
     public R<Void> syncTrainee() {
@@ -56,4 +59,11 @@ public class SyncTest {
     public R<Void> syncTeacherDept() {
         return syncHrService.syncDept() ? R.ok() : R.fail();
     }
+
+    @GetMapping("/cache/{code}")
+    public R<String> cacheTest(@PathVariable("code") String code){
+        String pushData = remotePtParameterService.getPtParameterByKey(code);
+
+        return R.ok(pushData);
+    }
 }