Browse Source

修改初始化配置,以防redis的删除将数据删掉

Yangzw 9 months ago
parent
commit
8f14e5b85c

+ 3 - 1
feifan-module-system/feifan-module-system-api/src/main/java/cn/newfeifan/mall/module/system/enums/ErrorCodeConstants.java

@@ -171,6 +171,8 @@ public interface ErrorCodeConstants {
     // ========== 站内信发送 1-002-028-000 ==========
     ErrorCode NOTIFY_SEND_TEMPLATE_PARAM_MISS = new ErrorCode(1_002_028_000, "模板参数({})缺失");
     ErrorCode WECHAT_MSG_TEMPLATE_NOT_EXISTS = new ErrorCode(1_002_028_001, "微信消息模板不存在");
-    ErrorCode CONFIG_NOT_EXISTS = new ErrorCode(1_002_028_002, "系统配置不存在");
+    ErrorCode WECHAT_MSG_TEMPLATE_REDIS_NOT_EXISTS = new ErrorCode(1_002_028_002, "我想消息模板缓存异常");
+    ErrorCode CONFIG_NOT_EXISTS = new ErrorCode(1_002_028_003, "系统配置不存在");
+    ErrorCode CONFIG_REDIS_NOT_EXISTS = new ErrorCode(1_002_028_004, "系统配置不存在");
 
 }

+ 3 - 5
feifan-module-system/feifan-module-system-biz/src/main/java/cn/newfeifan/mall/module/system/config/StartConfig.java

@@ -43,11 +43,9 @@ public class StartConfig {
     /**
      * 初始化微信模板配置
      */
-    private void initWechatMsgTemplate() {
+    public void initWechatMsgTemplate() {
         List<WechatMsgTemplateDO> wechatMsgTemplateDOS = wechatMsgTemplateService.selectList();
-        wechatMsgTemplateDOS.forEach(wechatMsgTemplateDO -> {
-            stringRedisTemplate.opsForValue().set(SYSTEM_WX_MESSAGE_TEMPLATE + wechatMsgTemplateDO.getId(), JsonUtils.toJsonString(wechatMsgTemplateDO));
-        });
+        wechatMsgTemplateDOS.forEach(wechatMsgTemplateDO -> stringRedisTemplate.opsForValue().set(SYSTEM_WX_MESSAGE_TEMPLATE + wechatMsgTemplateDO.getId(), JsonUtils.toJsonString(wechatMsgTemplateDO)));
 
         log.info("======初始化微信模板配置成功======");
     }
@@ -55,7 +53,7 @@ public class StartConfig {
     /**
      * 初始化系统配置
      */
-    private void initSystemConfig(){
+    public void initSystemConfig(){
         SystemConfigDO config = configService.getConfig();
         stringRedisTemplate.opsForValue().set(SYSTEM_CONFIG, JsonUtils.toJsonString(config));
 

+ 23 - 9
feifan-module-system/feifan-module-system-biz/src/main/java/cn/newfeifan/mall/module/system/service/config/SystemConfigServiceImpl.java

@@ -1,5 +1,6 @@
 package cn.newfeifan.mall.module.system.service.config;
 
+import cn.newfeifan.mall.module.system.config.StartConfig;
 import cn.newfeifan.mall.module.system.controller.admin.config.bo.SystemConfigBO;
 import com.alibaba.fastjson.JSONObject;
 import org.springframework.data.redis.core.StringRedisTemplate;
@@ -17,6 +18,7 @@ import cn.newfeifan.mall.module.system.dal.mysql.config.SystemConfigMapper;
 import static cn.newfeifan.mall.framework.common.exception.util.ServiceExceptionUtil.exception;
 import static cn.newfeifan.mall.module.system.constant.SystemConstants.SYSTEM_CONFIG;
 import static cn.newfeifan.mall.module.system.enums.ErrorCodeConstants.*;
+import static cn.newfeifan.mall.module.system.enums.ErrorCodeConstants.CONFIG_REDIS_NOT_EXISTS;
 
 /**
  * 系统配置 Service 实现类
@@ -31,6 +33,9 @@ public class SystemConfigServiceImpl implements SystemConfigService {
     private SystemConfigMapper systemConfigMapper;
     @Resource
     private StringRedisTemplate stringRedisTemplate;
+    @Resource
+    private StartConfig startConfig;
+
 
     @Override
     public Long createConfig(ConfigSaveReqVO createReqVO) {
@@ -77,16 +82,25 @@ public class SystemConfigServiceImpl implements SystemConfigService {
     @Override
     public SystemConfigDO getRedisConfig() {
         String s = stringRedisTemplate.opsForValue().get(SYSTEM_CONFIG);
-        if (s != null) {
-            SystemConfigBO systemConfigBO = JSONObject.parseObject(s, SystemConfigBO.class);
-            return SystemConfigDO.builder()
-                    .id(systemConfigBO.getId())
-                    .mallDomain(systemConfigBO.getMallDomain())
-                    .merchantDomain(systemConfigBO.getMerchantDomain())
-                    .platformDomain(systemConfigBO.getPlatformDomain())
-                    .build();
+
+        // 第一次判断是因为redis配置了自动删除
+        if (s == null) {
+            startConfig.initSystemConfig();
+            s = stringRedisTemplate.opsForValue().get(SYSTEM_CONFIG);
         }
-        return getConfig();
+
+        // 第二次判断如果还是为空,那就缓存到redis的程序写错了
+        if(s == null){
+            throw exception(CONFIG_REDIS_NOT_EXISTS);
+        }
+
+        SystemConfigBO systemConfigBO = JSONObject.parseObject(s, SystemConfigBO.class);
+        return SystemConfigDO.builder()
+                .id(systemConfigBO.getId())
+                .mallDomain(systemConfigBO.getMallDomain())
+                .merchantDomain(systemConfigBO.getMerchantDomain())
+                .platformDomain(systemConfigBO.getPlatformDomain())
+                .build();
     }
 
     @Override

+ 21 - 9
feifan-module-system/feifan-module-system-biz/src/main/java/cn/newfeifan/mall/module/system/service/wechatmsgtemplate/WechatMsgTemplateServiceImpl.java

@@ -1,5 +1,6 @@
 package cn.newfeifan.mall.module.system.service.wechatmsgtemplate;
 
+import cn.newfeifan.mall.module.system.config.StartConfig;
 import cn.newfeifan.mall.module.system.controller.admin.wechatmsgtemplate.bo.WechatMsgTemplateBO;
 import com.alibaba.fastjson.JSONObject;
 import org.springframework.data.redis.core.StringRedisTemplate;
@@ -34,6 +35,8 @@ public class WechatMsgTemplateServiceImpl implements WechatMsgTemplateService {
     @Resource
     private StringRedisTemplate stringRedisTemplate;
 
+    @Resource
+    private StartConfig startConfig;
     @Override
     public Long createWechatMsgTemplate(WechatMsgTemplateSaveReqVO createReqVO) {
         // 插入
@@ -79,19 +82,28 @@ public class WechatMsgTemplateServiceImpl implements WechatMsgTemplateService {
     @Override
     public WechatMsgTemplateDO getWechatSsgTemplate(Long wechatMsgId) {
         String s = stringRedisTemplate.opsForValue().get(SYSTEM_WX_MESSAGE_TEMPLATE + wechatMsgId);
-        if(s != null){
-            WechatMsgTemplateBO wechatMsgTemplateBO = JSONObject.parseObject(s, WechatMsgTemplateBO.class);
-            return WechatMsgTemplateDO.builder()
-                    .wechatMsgTemplateId(wechatMsgTemplateBO.getWechatMsgTemplateId())
-                    .messageTemplateParameters(wechatMsgTemplateBO.getMessageTemplateParameters())
-                    .remark(wechatMsgTemplateBO.getRemark())
-                    .id(wechatMsgTemplateBO.getId())
-                    .build();
+
+        // 第一次判断是因为redis配置了自动删除
+        if (s == null) {
+            startConfig.initWechatMsgTemplate();
+            s = stringRedisTemplate.opsForValue().get(SYSTEM_WX_MESSAGE_TEMPLATE + wechatMsgId);
         }
 
-        return wechatMsgTemplateMapper.selectById(wechatMsgId);
+        // 第二次判断如果还是为空,那就缓存到redis的程序写错了
+        if(s == null){
+            throw exception(WECHAT_MSG_TEMPLATE_REDIS_NOT_EXISTS);
+        }
+
+        WechatMsgTemplateBO wechatMsgTemplateBO = JSONObject.parseObject(s, WechatMsgTemplateBO.class);
+        return WechatMsgTemplateDO.builder()
+                .wechatMsgTemplateId(wechatMsgTemplateBO.getWechatMsgTemplateId())
+                .messageTemplateParameters(wechatMsgTemplateBO.getMessageTemplateParameters())
+                .remark(wechatMsgTemplateBO.getRemark())
+                .id(wechatMsgTemplateBO.getId())
+                .build();
     }
 
+
     @Override
     public List<WechatMsgTemplateDO> selectList() {
         return wechatMsgTemplateMapper.selectList();