diff --git a/src/main/java/com/nis/restful/RestBusinessCode.java b/src/main/java/com/nis/restful/RestBusinessCode.java index db5e70c..e2c0843 100644 --- a/src/main/java/com/nis/restful/RestBusinessCode.java +++ b/src/main/java/com/nis/restful/RestBusinessCode.java @@ -111,10 +111,6 @@ public enum RestBusinessCode { * 配置的userRegion不能为空 */ UserRegionIsNull(4001012, "配置userRegion属性不能为空"), - /** - * 配置的userRegion不能为空 - */ - UserRegionIsNull(4001012, "配置userRegion属性不能为空"), /** * 配置的isValid不能为空 */ @@ -433,7 +429,7 @@ public enum RestBusinessCode { /** * 分组复用配置中域不能全为空 */ - ReuseRegionIsNull(4002501, "分组复用配置中域不能全为空"), + ReuseRegionIsNull(4002502, "分组复用配置中域不能全为空"), //回调类 /** * 回调类service配置不正确 diff --git a/src/main/java/com/nis/util/GroupReuseVal.java b/src/main/java/com/nis/util/GroupReuseVal.java index 817a460..8a8ceec 100644 --- a/src/main/java/com/nis/util/GroupReuseVal.java +++ b/src/main/java/com/nis/util/GroupReuseVal.java @@ -153,7 +153,7 @@ public class GroupReuseVal { } } } - if (hasRegionFlag) { + if (!hasRegionFlag) { // 所有的域类型都不包括,可能是配置文件配错了 throw new ServiceRuntimeException("service为" + service + "的" + RestBusinessCode.ReuseRegionIsNull.getErrorReason(), 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 3efe584..8726c6f 100644 --- a/src/main/java/com/nis/web/service/restful/ConfigJedisServiceimpl.java +++ b/src/main/java/com/nis/web/service/restful/ConfigJedisServiceimpl.java @@ -51,7 +51,7 @@ public class ConfigJedisServiceimpl implements ConfigRedisService { maatVersionStr = "0"; } if (maatVersionStr != null) { - Long maatVersion = Long.valueOf(maatVersionStr) + 1; + Long maatVersion = Long.valueOf(maatVersionStr) + 1l; for (Map map : listMap) { String serviceStr = map.get("service"); int service = Integer.parseInt(serviceStr); @@ -312,7 +312,7 @@ public class ConfigJedisServiceimpl implements ConfigRedisService { maatVersionStr = "0"; } if (maatVersionStr != null) { - Long maatVersion = Long.valueOf(maatVersionStr) + 1; + Long maatVersion = Long.valueOf(maatVersionStr) + 1l; for (MaatConfig maatConfig : list) { int service = maatConfig.getService(); MaatXmlConfig maatXmlConfig = ReadMaatXmlUtil.getMaatConfigByService(service); @@ -484,7 +484,7 @@ public class ConfigJedisServiceimpl implements ConfigRedisService { maatVersionStr = "0"; } if (maatVersionStr != null) { - Long maatVersion = Long.valueOf(maatVersionStr) + 1; + Long maatVersion = Long.valueOf(maatVersionStr) + 1l; List maatConfigList = configMap.get(redisDBIndex); if (maatConfigList != null && maatConfigList.size() > 0) { for (MaatConfig maatConfig : maatConfigList) { @@ -749,7 +749,7 @@ public class ConfigJedisServiceimpl implements ConfigRedisService { RestBusinessCode.GetMaatVersionFailure.getValue()); } if (maatVersionStr != null) { - Long maatVersion = Long.valueOf(maatVersionStr) + 1; + Long maatVersion = Long.valueOf(maatVersionStr) + 1l; for (Integer service : serviceConfigMap.keySet()) { List compileIdList = serviceConfigMap.get(service); if (compileIdList != null && compileIdList.size() > 0) { @@ -935,7 +935,7 @@ public class ConfigJedisServiceimpl implements ConfigRedisService { if (serviceConfigMap != null && serviceConfigMap.size() > 0) { String maatVersionStr = JedisUtils.get("MAAT_VERSION", redisDBIndex); if (maatVersionStr != null) { - Long maatVersion = Long.valueOf(maatVersionStr) + 1; + Long maatVersion = Long.valueOf(maatVersionStr) + 1l; for (Integer service : serviceConfigMap.keySet()) { MaatXmlConfig maatXmlConfig = ReadMaatXmlUtil.getMaatConfigByService(service); List list = serviceConfigMap.get(service); @@ -1020,7 +1020,7 @@ public class ConfigJedisServiceimpl implements ConfigRedisService { return false; } - private String getRealInfo(String compileStrVal) { + private String getRegionInfo(String compileStrVal) { if (compileStrVal != null && compileStrVal.contains("-")) { String[] split = compileStrVal.split("-"); return split[0];// 去除后面的redisdb信息 @@ -1028,6 +1028,14 @@ public class ConfigJedisServiceimpl implements ConfigRedisService { return null; } + private String getRegionDBInfo(String compileStrVal) { + if (compileStrVal != null && compileStrVal.contains("-")) { + String[] split = compileStrVal.split("-"); + return split[1]; + } + return null; + } + /** * 删除maat类配置 * @param id 配置id @@ -1048,7 +1056,7 @@ public class ConfigJedisServiceimpl implements ConfigRedisService { String compileStr = "COMPILEGROUP:" + id; // 获取当前编译配置与分组配置的关联关系 String compileStrVal = JedisUtils.get(compileStr, idRelaRedisDBIndex);// 根据编译id获取该编译下的分组关系 - String groupCompileStrs = getRealInfo(compileStrVal); + String groupCompileStrs = getRegionInfo(compileStrVal); // if (compileStrVal != null && compileStrVal.contains("-")) { // String[] split = compileStrVal.split("-"); // groupCompileStrs = split[0];// 去除后面的redisdb信息 @@ -1056,7 +1064,7 @@ public class ConfigJedisServiceimpl implements ConfigRedisService { if (groupCompileStrs != null && !groupCompileStrs.trim().equals("")) { String[] split = groupCompileStrs.split(";"); for (String groupId : split) { - String compileGroupStr = getRealInfo(JedisUtils.get(groupId, idRelaRedisDBIndex)); + String compileGroupStr = getRegionInfo(JedisUtils.get(groupId, idRelaRedisDBIndex)); if (compileGroupStr != null && !compileGroupStr.trim().equals("")) { String[] compileGroupArr = compileGroupStr.split(";");// 获取组对应的编译id @@ -1067,7 +1075,8 @@ public class ConfigJedisServiceimpl implements ConfigRedisService { for (String compileId : compileGroupArr) { if (compileId.equals(compileStr)) {// String groupRegionKey = groupId.replace("GROUPCOMPILE", "GROUPREGION");// groupregion里面value是region的信息,key是group的信息,所以可以直接将GROUPCOMPILE替换为GROUPREGION - String regionStr = getRealInfo(JedisUtils.get(groupRegionKey, idRelaRedisDBIndex)); + String regionStr = getRegionInfo( + JedisUtils.get(groupRegionKey, idRelaRedisDBIndex)); if (regionStr != null && !regionStr.trim().equals("")) { String[] regionKeyArr = regionStr.split(";"); if (regionKeyArr != null && regionKeyArr.length > 0) { @@ -1209,6 +1218,7 @@ public class ConfigJedisServiceimpl implements ConfigRedisService { */ private void removeRegionConfig(MaatXmlConfig maatXmlConfig, String[] regionArr, Double maatVersion, int service, Transaction transaction, int redisDBIndex) { + transaction.select(redisDBIndex); if (maatXmlConfig != null && regionArr != null && regionArr.length > 0) { List expressionList = maatXmlConfig.getExpressionList(); String maatKey = null; @@ -1354,7 +1364,7 @@ public class ConfigJedisServiceimpl implements ConfigRedisService { // String compileStr = redisDBIndex + ":COMPILEGROUP:" + compileId; String compileStr = "COMPILEGROUP:" + compileId; String compileStrVal = JedisUtils.get(compileStr, idRelaRedisDBIndex);// 根据编译id获取该编译下的分组关系 - String groupCompileStr = getRealInfo(compileStrVal); + String groupCompileStr = getRegionInfo(compileStrVal); // if (compileStrVal != null && compileStrVal.contains("-")) { // String[] split = compileStrVal.split("-"); // groupCompileStr = split[0];// 去除后面的redisdb信息 @@ -1362,7 +1372,7 @@ public class ConfigJedisServiceimpl implements ConfigRedisService { if (groupCompileStr != null && !groupCompileStr.equals("")) { String[] groupCompileStrSplit = groupCompileStr.split(";");// 得到分组关系 for (String groupCompile : groupCompileStrSplit) {// 遍历所有分组关系 - String compileGroupStr = getRealInfo( + String compileGroupStr = getRegionInfo( JedisUtils.get(groupCompile.toUpperCase(), idRelaRedisDBIndex));// 获取当前分组关系对应的编译信息 if (compileGroupStr != null && !compileGroupStr.equals("")) { String[] compileGroupStrSplit = compileGroupStr.split(";"); @@ -1459,7 +1469,7 @@ public class ConfigJedisServiceimpl implements ConfigRedisService { maatVersionStr = "0"; } if (maatVersionStr != null) { - Long maatVersion = Long.valueOf(maatVersionStr) + 1; + Long maatVersion = Long.valueOf(maatVersionStr) + 1l; for (MaatConfig maatConfig : list) { Integer service = maatConfig.getService(); if (ServiceAndRDBIndexReal.serviceIsReuse(service)) { @@ -1536,15 +1546,12 @@ public class ConfigJedisServiceimpl implements ConfigRedisService { } } transaction.select(idRelaRedisDBIndex);// 选择关联关系库 - if (JedisUtils.exists(groupIdStr.toUpperCase(), - idRelaRedisDBIndex)) { - transaction.append(groupIdStr,";"+sb.substring(0, sb.length() - 1)); - }else { + if (JedisUtils.exists(groupIdStr.toUpperCase(), idRelaRedisDBIndex)) { + transaction.append(groupIdStr, ";" + sb.substring(0, sb.length() - 1)); + } else { transaction.set(groupIdStr, sb.substring(0, sb.length() - 1));// 保存分组id和域id的关系(每个域配置,只会属于一个组) } - - - + } } @@ -1624,29 +1631,39 @@ public class ConfigJedisServiceimpl implements ConfigRedisService { } @Override - public boolean delGroupReuseConfig(Map> configMap) { + public boolean delGroupReuseConfig(Map>> reuseMap) { Jedis resource = JedisUtils.getResource(0); Transaction transaction = resource.multi(); try { - Set keySet = configMap.keySet();// 所有的redisdb - int idRelaRedisDBIndex = Configurations.getIntProperty("idRelaRedisDBIndex", 15); - for (Integer service : keySet) { - List list = configMap.get(service); - if (list != null && list.size() > 0) { - for (MaatConfig maatConfig : list) { - if (ServiceAndRDBIndexReal.serviceIsReuse(service)) { - MaatXmlConfig maatXmlConfig = ReadMaatXmlUtil.getMaatConfigByService(service); - removeRegion(maatConfig, maatXmlConfig, service, transaction,idRelaRedisDBIndex); - } else { - throw new ServiceRuntimeException( - "service=" + service + "不是分组复用的配置,不可单独删除域配置,请检查service是否正确", - RestBusinessCode.ServiceNotAllowAddReion.getValue()); + if (reuseMap != null && reuseMap.size() > 0) { + int idRelaRedisDBIndex = Configurations.getIntProperty("idRelaRedisDBIndex", 15); + Set keySet = reuseMap.keySet();// 获取所有service集合 + for (Integer service : keySet) { + if (ServiceAndRDBIndexReal.serviceIsReuse(service)) { + Map> groupAndRegionMap = reuseMap.get(service); + if (groupAndRegionMap != null && groupAndRegionMap.size() > 0) { + for (Long groupId : groupAndRegionMap.keySet()) { + List regionList = groupAndRegionMap.get(groupId); + if (regionList != null && regionList.size() > 0) { + MaatXmlConfig maatXmlConfig = ReadMaatXmlUtil.getMaatConfigByService(service); + removeRegion(regionList, groupId, maatXmlConfig, service, transaction, + idRelaRedisDBIndex); + } + } } + } else { + throw new ServiceRuntimeException("service=" + service + "不是分组复用的配置,不可单独删除域配置,请检查service是否正确", + RestBusinessCode.ServiceNotAllowAddReion.getValue()); } } + transaction.exec(); + return true; + } else { + throw new ServiceRuntimeException("单独删除分组复用配置的域配置时,参数为空,请检查", + RestBusinessCode.ConfigSourceIsNull.getValue()); + } - transaction.exec(); - return true; + } catch (JedisConnectionException e) { String error = "连接redis异常,保存maat类配置失败" + e.getMessage(); logger.error(error); @@ -1662,129 +1679,85 @@ public class ConfigJedisServiceimpl implements ConfigRedisService { } } - private void removeRegion(MaatConfig maatConfig, MaatXmlConfig maatXmlConfig, int service, Transaction transaction, - Integer idRelaRedisDBIndex) { -// String maatVersionStr = JedisUtils.get("MAAT_VERSION", redisDBIndex); -// if (maatVersionStr == null) { -// maatVersionStr = "0"; -// } -// if (maatVersionStr != null) { -// Long maatVersion = Long.valueOf(maatVersionStr) + 1; -// List> ipRegionMapList = maatConfig.getIpRegionMapList(); -// if (ipRegionMapList != null && ipRegionMapList.size() > 0) { -// for (Map map : ipRegionMapList) { -// String groupId = "GROUPREGION" + getGroupId(maatXmlConfig, map, 12, service);// 12代表是ip类域配置 -// removeReion(groupId, maatXmlConfig, service, redisDBIndex, idRelaRedisDBIndex, maatVersion, -// transaction); -// } -// } -// List> numRegionMapList = maatConfig.getNumRegionMapList(); -// if (numRegionMapList != null && numRegionMapList.size() > 0) { -// for (Map map : numRegionMapList) { -// String groupId = "GROUPREGION" + getGroupId(maatXmlConfig, map, 13, service);// 13代表是数值类配置 -// removeReion(groupId, maatXmlConfig, service, redisDBIndex, idRelaRedisDBIndex, maatVersion, -// transaction); -// -// } -// } -// List> strRegionMapList = maatConfig.getStrRegionMapList(); -// if (strRegionMapList != null && strRegionMapList.size() > 0) { -// for (Map map : strRegionMapList) { -// String groupId = "GROUPREGION" + getGroupId(maatXmlConfig, map, 14, service);// 14代表是字符串类域配置 -// removeReion(groupId, maatXmlConfig, service, redisDBIndex, idRelaRedisDBIndex, maatVersion, -// transaction); -// } -// } -// List> strStrRegionMapList = maatConfig.getStrStrRegionMapList(); -// if (strStrRegionMapList != null && strStrRegionMapList.size() > 0) { -// for (Map map : strStrRegionMapList) { -// String groupId = "GROUPREGION" + getGroupId(maatXmlConfig, map, 15, service);// 15代表是增强字符串类域配置 -// removeReion(groupId, maatXmlConfig, service, redisDBIndex, idRelaRedisDBIndex, maatVersion, -// transaction); -// } -// } -// List> fileDigestRegionMapList = maatConfig.getFileDigestRegionMapList(); -// if (fileDigestRegionMapList != null && fileDigestRegionMapList.size() > 0) { -// for (Map map : fileDigestRegionMapList) { -// String groupId = "GROUPREGION" + getGroupId(maatXmlConfig, map, 16, service);// 16代表是文件摘要类域配置 -// removeReion(groupId, maatXmlConfig, service, redisDBIndex, idRelaRedisDBIndex, maatVersion, -// transaction); -// } -// } -// List> fileLikeRegionMapList = maatConfig.getFileLikeRegionMapList(); -// if (fileLikeRegionMapList != null && fileLikeRegionMapList.size() > 0) { -// for (Map map : fileLikeRegionMapList) { -// String groupId = "GROUPREGION" + getGroupId(maatXmlConfig, map, 17, service);// 17代表是文本相似性域配置 -// removeReion(groupId, maatXmlConfig, service, redisDBIndex, idRelaRedisDBIndex, maatVersion, -// transaction); -// } -// } -// List> ipclientList = maatConfig.getIpClientRangeMapList(); -// if (ipclientList != null && ipclientList.size() > 0) { -// for (Map map : ipclientList) { -// String groupId = "GROUPREGION" + getGroupId(maatXmlConfig, map, 18, service);// 18代表是区域ip域配置 -// removeReion(groupId, maatXmlConfig, service, redisDBIndex, idRelaRedisDBIndex, maatVersion, -// transaction); -// } -// } -// } - - } - - private void removeReion(String groupId, MaatXmlConfig maatXmlConfig, int service, int redisDBIndex, - int idRelaRedisDBIndex, Long maatVersion, Transaction transaction) { - String groupRegionKey = groupId.replace("GROUPCOMPILE", "GROUPREGION");// groupregion里面value是region的信息,key是group的信息,所以可以直接将GROUPCOMPILE替换为GROUPREGION - String regionStr = getRealInfo(JedisUtils.get(groupRegionKey, idRelaRedisDBIndex)); - if (regionStr != null && !regionStr.trim().equals("")) { - String[] regionKeyArr = regionStr.split(";"); - if (regionKeyArr != null && regionKeyArr.length > 0) { - // 根据分组与域关联关系找到对应域配置然后删除(重命名) - removeRegionConfig(maatXmlConfig, regionKeyArr, maatVersion.doubleValue(), service, transaction, - redisDBIndex); - } - } else { - throw new ServiceRuntimeException( - "从" + idRelaRedisDBIndex + "号redis库中无法获取MAAT配置分组与域的关联关系,key为" + groupRegionKey, - RestBusinessCode.KeyNotExistsInRedis.getValue()); - } - } - - /** - * 根据域配置map获取groupId - * @param maatXmlConfig - * @param map - * @param type - * @param maatVersion - * @param service - * @param transaction - * @param redisDBIndex - * @param compileId - * @return - */ - private String getGroupId(MaatXmlConfig maatXmlConfig, Map map, int type, int service) { - if (maatXmlConfig != null && map != null && map.size() > 0) { - List expressionList = maatXmlConfig.getExpressionList(); - for (MaatXmlExpr maatXmlExpr : expressionList) { - if (type == maatXmlExpr.getType().intValue()) { - String[] valSplit = maatXmlExpr.getValueExpression().split(";"); - for (String valStr : valSplit) { - if (valStr.equals("group_id")) { - return map.get(valStr); + private void removeRegion(List regionStrList, long groupId, MaatXmlConfig maatXmlConfig, int service, + Transaction transaction, Integer idRelaRedisDBIndex) { + String groupRegionKey = "GROUPREGION:" + groupId;// groupregion里面value是region的信息,key是group的信息,所以可以直接将GROUPCOMPILE替换为GROUPREGION + String groupRegionVal = JedisUtils.get(groupRegionKey, idRelaRedisDBIndex); + if (groupRegionVal != null && !groupRegionVal.trim().equals("")) { + String[] regionKeyAndDBStrArr = groupRegionVal.split(";"); + // 记录所有需要删除的域配置信息key是相同的redisdb,value是需要删除的region集合 + Map> delRegionMap = new HashMap>(); + // 记录需要保留的域信息,//key是regionKey,value是redisdb + Map> regionMap = new HashMap>(); + for (String delRegionStr : regionStrList) { + for (String regionKeyAndDBStr : regionKeyAndDBStrArr) { + String regionStr = getRegionInfo(regionKeyAndDBStr).replace("EFFECTIVE_RULE:", ""); + String regionDb = getRegionDBInfo(regionKeyAndDBStr); + if (delRegionStr.toUpperCase().equals(regionStr)) { + if (delRegionMap.containsKey(regionDb)) { + delRegionMap.get(regionDb).add("EFFECTIVE_RULE:" + regionStr); + } else { + ArrayList arrayList = new ArrayList(); + arrayList.add("EFFECTIVE_RULE:" + regionStr); + delRegionMap.put(regionDb, arrayList); + } + } else { + if (regionMap.containsKey(regionStr)) { + regionMap.get(regionStr).add(regionDb); + } else { + ArrayList arrayList = new ArrayList(); + arrayList.add(regionDb); + regionMap.put(regionStr, arrayList); } } } } - throw new ServiceRuntimeException("删除分组复用域配置时,service=" + service + ",未发现对应的分组id,请检查配置参数是否正确", - RestBusinessCode.ConfigSourceIsNull.getValue()); - } else { - if (maatXmlConfig == null) { - throw new ServiceRuntimeException( - "无法从applicationConfig-maatRedis.xml配置文件中,获取service为" + service + "对应的规则,请检查业务类型是否正确", - RestBusinessCode.NotFoundRedisRule.getValue()); - } else { - throw new ServiceRuntimeException("向redis库中添加配置时,未发现对应的配置信息,请检查配置参数是否正确", - RestBusinessCode.ConfigSourceIsNull.getValue()); + Set keySet = delRegionMap.keySet(); + for (String redisDbArr : keySet) { + String[] split = redisDbArr.split(","); + for (String redisDb : split) { + if (redisDb != null && !redisDb.trim().equals("")) { + // 关联关系中存在需要删除的region信息,开始删除域配置 + // 根据分组与域关联关系找到对应域配置然后删除(重命名) + int redisDBIndex = Integer.parseInt(redisDb); + String maatVersionStr = JedisUtils.get("MAAT_VERSION", redisDBIndex); + if (maatVersionStr == null) { + maatVersionStr = "0"; + } + if (maatVersionStr != null) { + Long maatVersion = Long.valueOf(maatVersionStr) + 1l; + removeRegionConfig(maatXmlConfig, + delRegionMap.get(redisDbArr) + .toArray(new String[delRegionMap.get(redisDbArr).size()]), + maatVersion.doubleValue(), service, transaction, redisDBIndex); + transaction.incrBy("MAAT_VERSION", 1l); + logger.info("向{}号redis数据库更新了MAAT_VERSION,更新后版本是{}", redisDBIndex, + Integer.valueOf(maatVersionStr) + 1); + } + } + } } + String groupIdStr = "GROUPREGION:" + groupId; + transaction.select(idRelaRedisDBIndex); + if (regionMap.size() == 0) {// 当前分组下面没有域配置了,将关联关系删除 + transaction.del(groupIdStr); + } else { + // 更新关联关系 + StringBuffer sb = new StringBuffer(); + for (String redisKey : regionMap.keySet()) { + sb.append("EFFECTIVE_RULE:"); + sb.append(redisKey); + sb.append("-"); + sb.append(regionMap.get(redisKey).toString().replace("[", "").replace("]", "")); + sb.append(";"); + } + String realStr = sb.substring(0, sb.length() - 1); + + transaction.set(groupIdStr, realStr.toUpperCase()); + } + } else { + throw new ServiceRuntimeException("无法从" + idRelaRedisDBIndex + "号redis库中获取groupId=" + groupId + ",service=" + + service + "的域配置关系,请检查数据是否正确" + groupRegionKey, RestBusinessCode.KeyNotExistsInRedis.getValue()); } } 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 5ee0e50..b8dcbf8 100644 --- a/src/main/java/com/nis/web/service/restful/ConfigRedisService.java +++ b/src/main/java/com/nis/web/service/restful/ConfigRedisService.java @@ -60,9 +60,9 @@ public interface ConfigRedisService { /** * 删除分组复用的域配置 - * @param maatMap key是service + * @param reuseMap 第一个key是service,第二个key是groupId,value是tableName,regionId * @return */ - public boolean delGroupReuseConfig(Map> configMap); + public boolean delGroupReuseConfig(Map>> reuseMap); } diff --git a/src/main/java/com/nis/web/service/restful/ConfigSourcesService.java b/src/main/java/com/nis/web/service/restful/ConfigSourcesService.java index 5da933e..216d558 100644 --- a/src/main/java/com/nis/web/service/restful/ConfigSourcesService.java +++ b/src/main/java/com/nis/web/service/restful/ConfigSourcesService.java @@ -963,10 +963,10 @@ public class ConfigSourcesService extends BaseService { } logger.info("调用接口删除Redis中分组复用的域配置接口"); // 所有的都删除成功返回true -// if (!configRedisService.delGroupReuseConfig(reuseMap)) { -// throw new ServiceRuntimeException("删除分组利用域配置时出现异常,具体原因不详,请联系管理员", -// RestBusinessCode.service_runtime_error.getValue()); -// } + if (!configRedisService.delGroupReuseConfig(reuseMap)) { + throw new ServiceRuntimeException("删除分组利用域配置时出现异常,具体原因不详,请联系管理员", + RestBusinessCode.service_runtime_error.getValue()); + } } /**