diff --git a/src/main/java/com/nis/web/service/BaseService.java b/src/main/java/com/nis/web/service/BaseService.java index d79be0754..968bd4d90 100644 --- a/src/main/java/com/nis/web/service/BaseService.java +++ b/src/main/java/com/nis/web/service/BaseService.java @@ -60,6 +60,7 @@ import com.nis.domain.configuration.ComplexkeywordCfg; import com.nis.domain.configuration.DdosIpCfg; import com.nis.domain.configuration.DnsIpCfg; import com.nis.domain.configuration.DnsResStrategy; +import com.nis.domain.configuration.FileDigestCfg; import com.nis.domain.configuration.PxyObjKeyring; import com.nis.domain.configuration.PxyObjTrustedCaCert; import com.nis.domain.configuration.PxyObjTrustedCaCrl; @@ -684,6 +685,148 @@ public abstract class BaseService { return map; } + /** + * 界面配置list转换为服务接口端的list,用于批量下发时,regionId,groupId已在该方法前被批量获取 + * + * @param + * @param + * @param dstList + * @param srcList + * @param cfgType,1为IP类型,2为字符串类型,3为增强字符串,4数值类型,5摘要类,6回调类[但字符串类域配置和增强字符串域配置在接口参数中同属于strRegionList] + * @param baseCfg,配置基本信息 + * @param groupRelationList + * 配置分组列表 + * @return + */ + public static Map cfgToMaatConvert(List dstList, List srcList, Integer cfgType,List groupRelationList) { + Map map = new HashMap(); + if (cfgType == 1) { + List numRegionList = new ArrayList(); + Integer groupId = 0; + Integer numGroupId = 0; + for (int i = 0; i < srcList.size(); i++) { + List regionIdList = Lists.newArrayList(); + T srcCfg = srcList.get(i); + BaseIpCfg baseIpCfg = new BaseIpCfg(); + BeanUtils.copyProperties(srcCfg, baseIpCfg); + regionIdList.add(baseIpCfg.getRegionId()); + IpCfg cfg = new IpCfg(); + BeanUtils.copyProperties(baseIpCfg, cfg); + //多条IP配置属于同一个分组 + if (groupId == 0) { + GroupCfg group = new GroupCfg(); + groupId = baseIpCfg.getGroupId(); + group.setGroupId(groupId); + group.setCompileId(baseIpCfg.getCompileId()); + group.setAuditTime(baseIpCfg.getAuditTime()); + group.setIsValid(baseIpCfg.getIsValid()); + groupRelationList.add(group); + } + cfg.setGroupId(groupId); + cfg.setAuditTime(baseIpCfg.getAuditTime()); + cfg.setIsValid(baseIpCfg.getIsValid()); + List cfgs = ipConvert(cfg, baseIpCfg); + if (cfgs.size() > 1) { + List ids = ConfigServiceUtil.getId(3, cfgs.size() - 1); + regionIdList.addAll(ids); + } + for (int j = i; j < cfgs.size() + i; j++) { + cfgs.get(j - i).setRegionId(regionIdList.get(j)); + } + dstList.addAll(cfgs); + + // 如果protocolId非空非零,需要构造数值型域配置,多条相同协议的IP只需要一条数值域配置(目前没有不同协议IP&情况) + if (baseIpCfg.getProtocolId() != null && baseIpCfg.getProtocolId() != 0) { + if (numGroupId == 0) { + GroupCfg group1 = new GroupCfg(); + group1.setGroupId(ConfigServiceUtil.getId(2, 1).get(0)); + group1.setCompileId(baseIpCfg.getCompileId()); + group1.setAuditTime(baseIpCfg.getAuditTime()); + group1.setIsValid(baseIpCfg.getIsValid()); + groupRelationList.add(group1); + NumBoundaryCfg numCfg = new NumBoundaryCfg(); + numCfg.initDefaultValue(); + numCfg.setLowBoundary(baseIpCfg.getProtocolId()); + numCfg.setUpBoundary(baseIpCfg.getProtocolId()); + numCfg.setRegionId(ConfigServiceUtil.getId(3, 1).get(0)); + numCfg.setAuditTime(baseIpCfg.getAuditTime()); + numCfg.setGroupId(group1.getGroupId()); + numCfg.setIsValid(baseIpCfg.getIsValid()); + numRegionList.add(numCfg); + map.put("numRegionList", numRegionList); + numGroupId++; + } + } + } + + } else if (cfgType == 2 || cfgType == 3) { + for (int i = 0; i < srcList.size(); i++) { + // 一条业务配置创建一个分组 + BaseCfg baseCfg = new BaseCfg(); + BeanUtils.copyProperties(srcList.get(i), baseCfg);//拷贝公共属性 + GroupCfg group = new GroupCfg(); + StringCfg cfg = new StringCfg(); + BeanUtils.copyProperties(srcList.get(i), cfg);//拷贝公共属性以及私有属性 + group.setGroupId(baseCfg.getGroupId()); + group.setCompileId(baseCfg.getCompileId()); + group.setAuditTime(baseCfg.getAuditTime()); + group.setIsValid(baseCfg.getIsValid()); + groupRelationList.add(group); + cfg.setGroupId(group.getGroupId()); + cfg.setRegionId(baseCfg.getRegionId()); + cfg.setAuditTime(baseCfg.getAuditTime()); + cfg.setIsValid(baseCfg.getIsValid()); + // 处理配置关键字转译 + cfg.setCfgKeywords(keywordsEscape(cfg.getCfgKeywords())); + // 增强字符串转换 + cfg.setDistrict(keywordsEscape(cfg.getDistrict())); + dstList.add(cfg); + } + } else if (cfgType == 4) { + for (int i = 0; i < srcList.size(); i++) { + BaseCfg baseCfg = new BaseCfg(); + BeanUtils.copyProperties(srcList.get(i), baseCfg);//拷贝公共属性 + // 一条业务配置创建一个分组 + com.nis.domain.maat.MaatCfg.NumBoundaryCfg cfg = new com.nis.domain.maat.MaatCfg.NumBoundaryCfg(); + BeanUtils.copyProperties(srcList.get(i), cfg); + GroupCfg group = new GroupCfg(); + group.setGroupId(baseCfg.getGroupId()); + group.setCompileId(baseCfg.getCompileId()); + group.setAuditTime(baseCfg.getAuditTime()); + group.setIsValid(baseCfg.getIsValid()); + groupRelationList.add(group); + cfg.setGroupId(group.getGroupId()); + cfg.setRegionId(baseCfg.getRegionId()); + cfg.setAuditTime(baseCfg.getAuditTime()); + cfg.setIsValid(baseCfg.getIsValid()); + dstList.add(cfg); + } + } else if (cfgType == 5) { + for (int i = 0; i < srcList.size(); i++) { + BaseCfg baseCfg = new BaseCfg(); + BeanUtils.copyProperties(srcList.get(i), baseCfg);//拷贝公共属性 + // 一条业务配置创建一个分组 + com.nis.domain.maat.MaatCfg.DigestCfg cfg = new com.nis.domain.maat.MaatCfg.DigestCfg(); + BeanUtils.copyProperties(srcList.get(i), cfg); + GroupCfg group = new GroupCfg(); + group.setGroupId(baseCfg.getGroupId()); + group.setCompileId(baseCfg.getCompileId()); + group.setAuditTime(baseCfg.getAuditTime()); + group.setIsValid(baseCfg.getIsValid()); + groupRelationList.add(group); + cfg.setGroupId(group.getGroupId()); + cfg.setRegionId(baseCfg.getRegionId()); + cfg.setAuditTime(baseCfg.getAuditTime()); + cfg.setIsValid(baseCfg.getIsValid()); + dstList.add(cfg); + } + } else { + dstList.addAll(srcList); + } + map.put("groupList", groupRelationList); + map.put("dstList", dstList); + return map; + } /** * 界面IP配置转换为MAAT类或者回调类IP配置 * diff --git a/src/main/java/com/nis/web/service/configuration/ConfigSynchronizationService.java b/src/main/java/com/nis/web/service/configuration/ConfigSynchronizationService.java index ea9719b43..fa5a1009c 100644 --- a/src/main/java/com/nis/web/service/configuration/ConfigSynchronizationService.java +++ b/src/main/java/com/nis/web/service/configuration/ConfigSynchronizationService.java @@ -19,6 +19,7 @@ import org.springframework.stereotype.Service; import antlr.StringUtils; +import com.google.common.collect.Lists; import com.nis.domain.FunctionServiceDict; import com.nis.domain.Page; import com.nis.domain.basics.AsnIpCfg; @@ -212,6 +213,9 @@ public class ConfigSynchronizationService extends BaseService{ } } } + //批量获取regionId,groupId(相同编译下的IP类配置多条ip只获取一个组号),分组复用的域配置不需要重新获取regionId,groupId + List regionIds = ConfigServiceUtil.getId(3, ipList.size()+strList.size()+complexStrList.size()+numList.size()+fileList.size()); + List groupIds = ConfigServiceUtil.getId(2, strList.size()+complexStrList.size()+numList.size()+fileList.size()); for(CfgIndexInfo cfg:list){ maatCfg = new MaatCfg(); maatCfg.initDefaultValue(); @@ -269,18 +273,33 @@ public class ConfigSynchronizationService extends BaseService{ userRegion = userRegion.substring(0, userRegion.length()-1); } } - for(IpPortCfg ip:ipList){ - if(ip.getCompileId().equals(cfg.getCompileId())){ - list1.add(ip); + if(ipList.size()>0){ + List ipGroupId = ConfigServiceUtil.getId(2,1);//多条IP只获取一个groupId + for(int index=0;index0){ ipList.removeAll(list1); if(entity.getServiceId().equals(37)||entity.getServiceId().equals(149)){//asn业务 + GroupCfg groupCfg=new GroupCfg(); + groupCfg.setCompileId(cfg.getCompileId()); + groupCfg.setGroupId(Integer.parseInt(cfg.getUserRegion4())); + groupCfg.setIsValid(cfg.getIsValid()); + groupCfg.setAuditTime(cfg.getAuditTime()); + groupRelationList.add(groupCfg); ipRegionList.addAll(groupReuseCfgAddRemoveConvert(list1,Constants.VALID_YES,null)); }else{ - Map map = cfgConvert(ipRegionList,list1,1,cfg,groupRelationList); + Map map = cfgToMaatConvert(ipRegionList,list1,1,groupRelationList); groupRelationList=map.get("groupList"); ipRegionList=map.get("dstList"); if(map.get("numRegionList")!=null){ @@ -331,25 +374,25 @@ public class ConfigSynchronizationService extends BaseService{ } if(list2.size()>0){ strList.removeAll(list2); - Map map = cfgConvert(strRegionList,list2,2,cfg,groupRelationList); + Map map = cfgToMaatConvert(strRegionList,list2,2,groupRelationList); groupRelationList=map.get("groupList"); strRegionList=map.get("dstList"); } if(list3.size()>0){ complexStrList.removeAll(list3); - Map map = cfgConvert(strRegionList,list3,3,cfg,groupRelationList); + Map map = cfgToMaatConvert(strRegionList,list3,3,groupRelationList); groupRelationList=map.get("groupList"); strRegionList=map.get("dstList"); } if(list4.size()>0){ numList.removeAll(list4); - Map map = cfgConvert(numRegionList,list4,4,cfg,groupRelationList); + Map map = cfgToMaatConvert(numRegionList,list4,4,groupRelationList); groupRelationList=map.get("groupList"); numRegionList=map.get("dstList"); } if(list5.size()>0){ fileList.removeAll(list5); - Map map = cfgConvert(digestRegionList,list5,5,cfg,groupRelationList); + Map map = cfgToMaatConvert(digestRegionList,list5,5,groupRelationList); groupRelationList=map.get("groupList"); digestRegionList=map.get("dstList"); } @@ -376,13 +419,13 @@ public class ConfigSynchronizationService extends BaseService{ } if(!StringUtil.isEmpty(configCompileList.size())){ maatBean.setConfigCompileList(configCompileList); - maatBean.setAuditTime(new Date()); maatBean.setCreatorName(UserUtils.getUser().getName()); maatBean.setVersion(Constants.MAAT_VERSION); maatBean.setOpAction(Constants.INSERT_ACTION); String json=gsonToJson(maatBean); +// logger.info(json); //调用服务接口配置全量更新 - JSONObject result = ConfigServiceUtil.configSync(json,1,entity.getServiceId(),null,(hasData?null:"FINISHED")); +// JSONObject result = ConfigServiceUtil.configSync(json,1,entity.getServiceId(),null,(hasData?null:"FINISHED")); } return hasData; } @@ -453,8 +496,13 @@ public class ConfigSynchronizationService extends BaseService{ List ipList = new ArrayList(); maatBean = new ToMaatBean(); configCompileList = new ArrayList(); - - for(DdosIpCfg cfg:list){ + //批量获取regionId,groupId + List regionIds = ConfigServiceUtil.getId(3, list.size()); + List groupIds = ConfigServiceUtil.getId(2, list.size()); + for(int i=0;i0){ ipList.removeAll(list1); - Map map = cfgConvert(ipRegionList,list1,1,cfg,groupRelationList); + Map map = cfgToMaatConvert(ipRegionList,list1,1,groupRelationList); groupRelationList=map.get("groupList"); ipRegionList=map.get("dstList"); if(map.get("numRegionList")!=null){