diff --git a/src/main/java/com/nis/web/controller/restful/ConfigSourcesController.java b/src/main/java/com/nis/web/controller/restful/ConfigSourcesController.java index b05892c..be5d4ec 100644 --- a/src/main/java/com/nis/web/controller/restful/ConfigSourcesController.java +++ b/src/main/java/com/nis/web/controller/restful/ConfigSourcesController.java @@ -126,7 +126,7 @@ public class ConfigSourcesController extends BaseRestController { map.put(service, arrayList); Map>> idMap = new HashMap>>(); idMap.put(redisDB, map); - configRedisService.delUnMaatConfig(idMap); + configRedisService.delUnMaatConfig(idMap,true); // configRedisService.saveMaatConfig(listMap, service); // new ConfigRedisServiceimpl().GETMaatConfig(listMap); return "ok"; diff --git a/src/main/java/com/nis/web/service/restful/ConfigJedisServiceimpl.java b/src/main/java/com/nis/web/service/restful/ConfigJedisServiceimpl.java index 6cab217..61e5f08 100644 --- a/src/main/java/com/nis/web/service/restful/ConfigJedisServiceimpl.java +++ b/src/main/java/com/nis/web/service/restful/ConfigJedisServiceimpl.java @@ -166,12 +166,12 @@ public class ConfigJedisServiceimpl implements ConfigRedisService { transaction.discard(); } } catch (JedisConnectionException e) { - //transaction.discard(); - logger.error("后台错误:连接redis异常,保存非maat类配置失败,{}",e.getMessage()); + // transaction.discard(); + logger.error("后台错误:连接redis异常,保存非maat类配置失败,{}", e.getMessage()); throw new RuntimeException("后台错误:连接redis异常,保存非maat类配置失败", e); } catch (Exception e) { transaction.discard(); - logger.error("后台错误:保存非maat类配置发生了异常,{}",e.getMessage()); + logger.error("后台错误:保存非maat类配置发生了异常,{}", e.getMessage()); throw new RuntimeException("后台错误:保存非maat类配置发生了异常", e); } finally { // 释放连接到连接池 @@ -510,7 +510,7 @@ public class ConfigJedisServiceimpl implements ConfigRedisService { transaction.exec(); } } catch (JedisConnectionException e) { - //transaction.discard(); + // transaction.discard(); throw new RuntimeException("后台错误:连接redis异常,保存maat类配置失败", e); } catch (Exception e) { transaction.discard(); @@ -744,7 +744,7 @@ public class ConfigJedisServiceimpl implements ConfigRedisService { } @Override - public boolean delUnMaatConfig(Map>> idMap) { + public boolean delUnMaatConfig(Map>> idMap, boolean isInvalid) { if (idMap != null && idMap.size() > 0) { int count = 0; Jedis resource = JedisUtils.getResource(0); @@ -777,7 +777,14 @@ public class ConfigJedisServiceimpl implements ConfigRedisService { for (String keyStr : keySplit) { if (!StringUtils.isEmpty(keyStr) && keyStr.toUpperCase().equals("EFFECTIVE_RULE")) { - keyStr = "OBSOLETE_RULE"; + + if(isInvalid) { + keyStr = "OBSOLETE_RULE"; + }else { + keyStr = "EFFECTIVE_RULE"; + } + + keyBF.append(keyStr.trim()); } else if (!StringUtils.isEmpty(keyStr) && keyStr.trim().startsWith("[")) { @@ -801,15 +808,22 @@ public class ConfigJedisServiceimpl implements ConfigRedisService { keyBF.append(keyStr.trim()); } } + String oldKey = null; maatKey = keyBF.toString(); - String oldKey = maatKey.replace("OBSOLETE_RULE", "EFFECTIVE_RULE"); + if (isInvalid) { + oldKey = maatKey.replace("OBSOLETE_RULE", "EFFECTIVE_RULE"); + } else { + oldKey = maatKey.replace("EFFECTIVE_RULE", "OBSOLETE_RULE"); + } + + if (JedisUtils.exists(oldKey.toString().toUpperCase(), redisDBIndex)) { transaction.rename(oldKey.toString().toUpperCase(), - keyBF.toString().toUpperCase()); + maatKey.toString().toUpperCase()); logger.info("向{}号redis数据库修改了一条配置,修改前key是{},修改后key是{}", redisDBIndex, oldKey.toString().toUpperCase(), - keyBF.toString().toUpperCase()); + maatKey.toString().toUpperCase()); break; } else { throw new RuntimeException("后台错误:" + redisDBIndex @@ -821,10 +835,17 @@ public class ConfigJedisServiceimpl implements ConfigRedisService { if (maatXmlExpr.getKeyExpression().toUpperCase() .equals("MAAT_UPDATE_STATUS")) { if (maatKey != null) { - String zset = maatKey.replace("OBSOLETE_RULE:", "DEL,"); - transaction.zadd("MAAT_UPDATE_STATUS", maatVersion, zset); - logger.info("向{}号redis数据库更新了MAAT_UPDATE_STATUS,内容是{},SCORES是{}", - redisDBIndex, zset.toUpperCase(), maatVersion); + if (isInvalid) { + String zset = maatKey.replace("OBSOLETE_RULE:", "DEL,"); + transaction.zadd("MAAT_UPDATE_STATUS", maatVersion, zset); + logger.info("向{}号redis数据库更新了MAAT_UPDATE_STATUS,内容是{},SCORES是{}", + redisDBIndex, zset.toUpperCase(), maatVersion); + }else { + String zset = maatKey.replace("EFFECTIVE_RULE:", "ADD,"); + transaction.zadd("MAAT_UPDATE_STATUS", maatVersion, zset); + logger.info("向{}号redis数据库更新了MAAT_UPDATE_STATUS,内容是{},SCORES是{}", + redisDBIndex, zset.toUpperCase(), maatVersion); + } } } else if (maatXmlExpr.getKeyExpression().toUpperCase() .equals("MAAT_RULE_TIMER")) { @@ -887,7 +908,7 @@ public class ConfigJedisServiceimpl implements ConfigRedisService { transaction.discard(); } } catch (JedisConnectionException e) { - //transaction.discard(); + // transaction.discard(); throw new RuntimeException("后台错误:连接redis异常,删除非maat类配置失败", e); } catch (Exception e) { transaction.discard(); @@ -946,7 +967,7 @@ public class ConfigJedisServiceimpl implements ConfigRedisService { } } catch (JedisConnectionException e) { - //transaction.discard(); + // transaction.discard(); throw new RuntimeException("后台错误:连接redis异常,删除maat类配置失败", e); } catch (Exception e) { transaction.discard(); diff --git a/src/main/java/com/nis/web/service/restful/ConfigRedisService.java b/src/main/java/com/nis/web/service/restful/ConfigRedisService.java index d7e1858..0534e82 100644 --- a/src/main/java/com/nis/web/service/restful/ConfigRedisService.java +++ b/src/main/java/com/nis/web/service/restful/ConfigRedisService.java @@ -44,9 +44,10 @@ public interface ConfigRedisService { /** * 删除非maat类配置,第一个key是redisDBIndex,第二个key是业务类型,value是配置id集合 * @param idMap + * @param isInvalid 是否将配置置为无效 * @return 成功返回true,失败返回false或抛出异常 */ - public boolean delUnMaatConfig(Map>> idMap); + public boolean delUnMaatConfig(Map>> idMap,boolean isInvalid); /** * 删除maat类配置,第一个key是redisDBIndex,第二个key是业务类型,value是配置id集合