diff --git a/src/main/java/com/nis/domain/configuration/BaseCfg.java b/src/main/java/com/nis/domain/configuration/BaseCfg.java index 155a044a1..13a654eee 100644 --- a/src/main/java/com/nis/domain/configuration/BaseCfg.java +++ b/src/main/java/com/nis/domain/configuration/BaseCfg.java @@ -10,6 +10,7 @@ package com.nis.domain.configuration; import java.util.Date; import java.util.List; +import java.util.Map; import com.fasterxml.jackson.annotation.JsonFormat; import com.google.gson.annotations.Expose; @@ -54,6 +55,23 @@ public class BaseCfg extends BaseEntity implements Cloneable{ protected String userRegion4; @ExcelField(title="userregion5",sort=7) protected String userRegion5; + + private Map compileGroupMap; + protected Integer compileIsIssued; + public Integer getCompileIsIssued() { + return compileIsIssued; + } + public void setCompileIsIssued(Integer compileIsIssued) { + this.compileIsIssued = compileIsIssued; + } + + public Map getCompileGroupMap() { + return compileGroupMap; + } + public void setCompileGroupMap(Map compileGroupMap) { + this.compileGroupMap = compileGroupMap; + } + /** * 编译id */ diff --git a/src/main/java/com/nis/web/controller/BaseController.java b/src/main/java/com/nis/web/controller/BaseController.java index 35ef7fff4..296e78e92 100644 --- a/src/main/java/com/nis/web/controller/BaseController.java +++ b/src/main/java/com/nis/web/controller/BaseController.java @@ -169,6 +169,7 @@ import com.nis.web.service.configuration.UserManageService; import com.nis.web.service.configuration.WebsiteCfgService; import com.nis.web.service.configuration.XmppCfgService; import com.nis.web.service.configuration.statistics.ConfigureStatisticsService; +import com.nis.web.service.specific.ConfigGroupInfoService; import com.nis.web.service.specific.SpecificServiceCfgService; import com.nis.web.service.specific.SpecificServiceHostCfgService; import com.nis.web.service.systemService.ServiceConfigInfoService; @@ -298,6 +299,8 @@ public class BaseController { protected IpReuseIpCfgService ipReuseIpCfgService; @Autowired protected IpAddrPoolCfgService ipAddrPoolCfgService;// 地址池管理service + @Autowired + protected ConfigGroupInfoService configGroupInfoService;// 分组复用 /** * 管理基础路径 */ @@ -2000,7 +2003,7 @@ public class BaseController { BeanUtils.copyProperties(entity, auditBatchCfg); BeanUtils.copyProperties(entity, searchTrustedCaCrlCfg); } - if(entity != null && (entity instanceof CfgIndexInfo)) { + if(entity != null && (entity instanceof DnsResStrategy)) { BeanUtils.copyProperties(entity, auditBatchCfg); BeanUtils.copyProperties(entity, searchDnsResStrategy); } @@ -2008,7 +2011,7 @@ public class BaseController { BeanUtils.copyProperties(entity, auditBatchCfg); BeanUtils.copyProperties(entity, searchDnsIpCfg); } - if(entity != null && (entity instanceof CfgIndexInfo)) { + if(entity != null && (entity instanceof IpPortCfg)) { BeanUtils.copyProperties(entity, auditBatchCfg); BeanUtils.copyProperties(entity, searchIpPortCfg); } @@ -2021,7 +2024,7 @@ public class BaseController { BeanUtils.copyProperties(entity, auditBatchCfg); BeanUtils.copyProperties(entity, searchDdosIpCfg); } - if(entity != null && (entity instanceof CfgIndexInfo)) { + if(entity != null && (entity instanceof AppIpCfg)) { BeanUtils.copyProperties(entity, auditBatchCfg); BeanUtils.copyProperties(entity, searchAppIpCfg); } @@ -2331,58 +2334,131 @@ public class BaseController { } } }else{ - boolean hasData = true; - while(hasData){ - List list = Lists.newArrayList(); - /* - 1026 app_domain_cfg - 1028 app_ip_cfg - 1029 app_ssl_cert_cfg - 1152 app_topic_domain_cfg - 1024 app_http_cfg - 1026 app_domain_cfg - */ - if(auditBatchCfg.getServiceId().equals(1026)) { - list=appCfgService.findAppDomainList(page, searchAppDomainCfg).getList(); - } - if(auditBatchCfg.getServiceId().equals(1028)) { - list=appCfgService.findAppIpList(page, searchAppIpCfg).getList(); - } - if(auditBatchCfg.getServiceId().equals(1029)) { - list=appCfgService.findAppSslList(page, searchAppSslCertCfg).getList(); - } - if(auditBatchCfg.getServiceId().equals(1152)) { - list=appCfgService.findAppTopicDomainList(page, searchAppTopicCfg).getList(); - } - if(auditBatchCfg.getServiceId().equals(1024)) { - list=appCfgService.findAppHttpList(page, searchAppHttpCfg).getList(); - } - if(!StringUtil.isEmpty(list)){ - if(auditBatchCfg.getIsValid().equals(1)) { - if(auditBatchCfg.getServiceId().equals(1028)){ - hasData=configSynchronizationService.auditAppIpData(userRegionList, - page,auditBatchCfg,list,hasData,true); - }else{ - hasData=configSynchronizationService.auditSingleMaatData(cfgType,userRegionList, - page,auditBatchCfg,list,hasData,true); - } - }else { - List newList=new ArrayList<>(); - if(!StringUtil.isEmpty(list)) { - for (Object obj : list) { - BaseCfg cfg=(BaseCfg)obj; - newList.add(cfg); + //批量下发时,未下发过的app需要下发正常配置;已下发过的app需要下发ip复用配置(为保证事物,分两种方式下发) + //1028 app_ip_cfg + if(auditBatchCfg.getServiceId().equals(1028)) { + if(true) { + boolean hasData = true; + while(hasData){ + /************预先获取已下发的groupid和compileid,且每批次重新获取,避免上一批次有新的compileId下发*************/ + Map isIssuedCompileIds=new HashMap<>(); + //分组复用组信息1:app ip,2:内容,3:区域 ,4 asn + ConfigGroupInfo groupInfo=new ConfigGroupInfo(); + groupInfo.setIsIssued(1); + groupInfo.setGroupType(1); + List groupInfos=configGroupInfoService.findAllList(groupInfo);//每一批次下发都取一次最新的group_info信息 + Map compileGroups=new HashMap<>(); + if(!StringUtil.isEmpty(groupInfos)) { + for (ConfigGroupInfo configGroupInfo : groupInfos) { + isIssuedCompileIds.put(configGroupInfo.getCompileId(), configGroupInfo.getGroupId()); } } - hasData=commonPolicyService.auditNtcMaatData(cfgList, page, auditBatchCfg,newList, hasData); + if(!StringUtil.isEmpty(isIssuedCompileIds)) { + auditBatchCfg.setCompileGroupMap(isIssuedCompileIds); + auditBatchCfg.setCompileIsIssued(1); + List list = Lists.newArrayList(); + searchAppIpCfg.setCompileGroupMap(isIssuedCompileIds); + list=appCfgService.findAppIpList(page, searchAppIpCfg).getList(); + if(!StringUtil.isEmpty(list)){ + //APP IP配置生效/失效 + hasData=configSynchronizationService.auditAppIpData(userRegionList, + page,auditBatchCfg,list,hasData,true); + if(hasData) { + page.setPageNo(1); + } + }else{ + hasData = false; + } + }else { + hasData = false; + } } - if(hasData) { - page.setPageNo(1); + } + if(auditBatchCfg.getIsValid().equals(1)) { + boolean hasData = true; + while(hasData){ + /************预先获取未下发的groupid和compileid,********************/ + //获取已下发的appcompileid + Map notIssuedCompileIds=new HashMap<>(); + //分组复用组信息1:app ip,2:内容,3:区域 ,4 asn + ConfigGroupInfo groupInfo=new ConfigGroupInfo(); + groupInfo.setIsIssued(0); + groupInfo.setGroupType(1); + List groupInfos=configGroupInfoService.findAllList(groupInfo);//每一批次下发都取一次最新的group_info信息 + Map compileGroups=new HashMap<>(); + if(!StringUtil.isEmpty(groupInfos)) { + for (ConfigGroupInfo configGroupInfo : groupInfos) { + notIssuedCompileIds.put(configGroupInfo.getCompileId(), configGroupInfo.getGroupId()); + } + } + if(!StringUtil.isEmpty(notIssuedCompileIds)) { + auditBatchCfg.setCompileGroupMap(notIssuedCompileIds); + searchAppIpCfg.setCompileGroupMap(notIssuedCompileIds); + auditBatchCfg.setCompileIsIssued(0); + List list = Lists.newArrayList(); + list=appCfgService.findAppIpList(page, searchAppIpCfg).getList(); + if(!StringUtil.isEmpty(list)){ + //APP IP配置生效/失效 + hasData=configSynchronizationService.auditAppIpData(userRegionList, + page,auditBatchCfg,list,hasData,true); + if(hasData) { + page.setPageNo(1); + } + }else{ + hasData = false; + } + }else { + hasData = false; + } + } + } + }else { + boolean hasData = true; + while(hasData){ + List list = Lists.newArrayList(); + /* + 1026 app_domain_cfg + 1028 app_ip_cfg + 1029 app_ssl_cert_cfg + 1152 app_topic_domain_cfg + 1024 app_http_cfg + 1026 app_domain_cfg + */ + if(auditBatchCfg.getServiceId().equals(1026)) { + list=appCfgService.findAppDomainList(page, searchAppDomainCfg).getList(); + } + if(auditBatchCfg.getServiceId().equals(1029)) { + list=appCfgService.findAppSslList(page, searchAppSslCertCfg).getList(); + } + if(auditBatchCfg.getServiceId().equals(1152)) { + list=appCfgService.findAppTopicDomainList(page, searchAppTopicCfg).getList(); + } + if(auditBatchCfg.getServiceId().equals(1024)) { + list=appCfgService.findAppHttpList(page, searchAppHttpCfg).getList(); + } + if(!StringUtil.isEmpty(list)){ + if(auditBatchCfg.getIsValid().equals(1)) { + hasData=configSynchronizationService.auditSingleMaatData(cfgType,userRegionList, + page,auditBatchCfg,list,hasData,true); + }else { + List newList=new ArrayList<>(); + if(!StringUtil.isEmpty(list)) { + for (Object obj : list) { + BaseCfg cfg=(BaseCfg)obj; + newList.add(cfg); + } + } + hasData=commonPolicyService.auditNtcMaatData(cfgList, page, auditBatchCfg,newList, hasData); + } + if(hasData) { + page.setPageNo(1); + } + }else{ + hasData = false; } - }else{ - hasData = false; } } + } } }else if("2".equals(serviceTypeXml)){ diff --git a/src/main/java/com/nis/web/controller/configuration/AppCfgController.java b/src/main/java/com/nis/web/controller/configuration/AppCfgController.java index ab75cb8e4..a0e5a266c 100644 --- a/src/main/java/com/nis/web/controller/configuration/AppCfgController.java +++ b/src/main/java/com/nis/web/controller/configuration/AppCfgController.java @@ -373,39 +373,66 @@ public class AppCfgController extends BaseController { */ @RequestMapping(value = {"auditAppIpCfg"}) @RequiresPermissions(value={"app:ip:confirm"}) - public String auditAppIpCfg(Integer isAudit,Integer isValid,String ids,Integer functionId, RedirectAttributes redirectAttributes) { - AppIpCfg entity = new AppIpCfg(); - String[] idArray = ids.split(","); - //同一编译IP的分组 - Map> dataMap=new HashMap<>(); - for(String id :idArray){ - entity = appCfgService.getAppIpCfg(Long.parseLong(id)); - entity.setIsAudit(isAudit); - entity.setIsValid(isValid); - entity.setAuditorId(UserUtils.getUser().getId()); - entity.setAuditTime(new Date()); - entity.setFunctionId(functionId); - entity.setTableName(AppIpCfg.getTablename()); - if(dataMap.containsKey(entity.getCompileId())) { - dataMap.get(entity.getCompileId()).add(entity); - }else { - List ipList=new ArrayList<>(); - ipList.add(entity); - dataMap.put(entity.getCompileId(), ipList); - } - } - for(List entitys:dataMap.values()) { - try { - appCfgService.auditAppIpCfg(entitys,isAudit); - } catch (Exception e) { - e.printStackTrace(); - logger.error("app协议IP配置下发失败",e); - if(e instanceof MaatConvertException) { - addMessage(redirectAttributes,"error","request_service_failed"); + public String auditAppIpCfg(Model model,@ModelAttribute("cfg")AppIpCfg cfg, + Integer isValid, + Integer isAudit, + String ids, + Integer functionId, + RedirectAttributes redirectAttributes, + HttpServletResponse response, + HttpServletRequest request) { + if(!StringUtil.isEmpty(ids)) { + AppIpCfg entity = new AppIpCfg(); + String[] idArray = ids.split(","); + //同一编译IP的分组 + Map> dataMap=new HashMap<>(); + for(String id :idArray){ + entity = appCfgService.getAppIpCfg(Long.parseLong(id)); + entity.setIsAudit(isAudit); + entity.setIsValid(isValid); + entity.setAuditorId(UserUtils.getUser().getId()); + entity.setAuditTime(new Date()); + entity.setFunctionId(functionId); + entity.setTableName(AppIpCfg.getTablename()); + if(dataMap.containsKey(entity.getCompileId())) { + dataMap.get(entity.getCompileId()).add(entity); }else { - addMessage(redirectAttributes,"error","audit_failed"); + List ipList=new ArrayList<>(); + ipList.add(entity); + dataMap.put(entity.getCompileId(), ipList); } } + for(List entitys:dataMap.values()) { + try { + appCfgService.auditAppIpCfg(entitys,isAudit); + } catch (Exception e) { + e.printStackTrace(); + logger.error("app协议IP配置下发失败",e); + if(e instanceof MaatConvertException) { + addMessage(redirectAttributes,"error","request_service_failed"); + }else { + addMessage(redirectAttributes,"error","audit_failed"); + } + } + } + }else { + Page searchPage=new Page(request,response,"r"); + Page auditPage=new Page(request,response,"r"); + BeanUtils.copyProperties(searchPage, auditPage); + + try { + auditAll(auditPage,isValid , cfg); + } catch (Exception e) { + logger.error("配置下发失败:",e); + if(e instanceof MaatConvertException) { + addMessage(redirectAttributes,"error", "request_service_failed"); + }else { + addMessage(redirectAttributes,"error", "audit_failed"); + } + + } + + return ipCfgList(model, cfg, request, response); } return "redirect:" + adminPath +"/app/ipCfgList?functionId="+functionId; diff --git a/src/main/java/com/nis/web/dao/configuration/AppCfgDao.xml b/src/main/java/com/nis/web/dao/configuration/AppCfgDao.xml index c20eff50c..5282b852b 100644 --- a/src/main/java/com/nis/web/dao/configuration/AppCfgDao.xml +++ b/src/main/java/com/nis/web/dao/configuration/AppCfgDao.xml @@ -930,6 +930,12 @@ AND r.COMPILE_ID=#{compileId,jdbcType=INTEGER} + + and r.COMPILE_ID in + + ${compileId} + + AND r.IS_AREA_EFFECTIVE=#{isAreaEffective,jdbcType=INTEGER} diff --git a/src/main/java/com/nis/web/dao/configuration/CommonPolicyDao.xml b/src/main/java/com/nis/web/dao/configuration/CommonPolicyDao.xml index 67d4f21c0..40c384538 100644 --- a/src/main/java/com/nis/web/dao/configuration/CommonPolicyDao.xml +++ b/src/main/java/com/nis/web/dao/configuration/CommonPolicyDao.xml @@ -734,29 +734,47 @@ - update ${tableName} set is_audit = #{entity.isAudit,jdbcType=INTEGER}, - auditor_id = #{entity.auditorId,jdbcType=INTEGER}, - audit_time = #{entity.auditTime,jdbcType=TIMESTAMP} - - ,is_valid = #{entity.isValid,jdbcType=INTEGER} - - - ,cancel_request_id = #{requestId,jdbcType=INTEGER} - - - - and asn_ip_group in - - #{compileId} - + + update ${tableName} set is_audit = #{entity.isAudit,jdbcType=INTEGER}, + auditor_id = #{entity.auditorId,jdbcType=INTEGER}, + audit_time = #{entity.auditTime,jdbcType=TIMESTAMP} + + ,is_valid = #{entity.isValid,jdbcType=INTEGER} - - and compile_id in - - #{compileId} - + + ,cancel_request_id = #{requestId,jdbcType=INTEGER} - - + + + and user_region1 in + + #{compileId} + + + + and asn_ip_group in + + #{compileId} + + + + and compile_id in + + #{compileId} + + + + + + + update ${tableName} set is_issued = #{entity.isAudit,jdbcType=INTEGER}, + update_time = #{entity.auditTime,jdbcType=TIMESTAMP} + + and compile_id in + + #{compileId} + + + \ No newline at end of file diff --git a/src/main/java/com/nis/web/dao/specific/ConfigGroupInfoDao.java b/src/main/java/com/nis/web/dao/specific/ConfigGroupInfoDao.java index 21b28e139..8199c7540 100644 --- a/src/main/java/com/nis/web/dao/specific/ConfigGroupInfoDao.java +++ b/src/main/java/com/nis/web/dao/specific/ConfigGroupInfoDao.java @@ -11,6 +11,7 @@ import com.nis.web.dao.MyBatisDao; @MyBatisDao public interface ConfigGroupInfoDao extends CrudDao{ List findAllList(int groupType); + List findAllListByGroupInfo(ConfigGroupInfo entity); void insertConfigGroupInfo(ConfigGroupInfo entity); int insertBatch(List list); void updateConfigGroupInfobyGroupId(ConfigGroupInfo entity); diff --git a/src/main/java/com/nis/web/dao/specific/ConfigGroupInfoDao.xml b/src/main/java/com/nis/web/dao/specific/ConfigGroupInfoDao.xml index 644cf2c1f..c3fd2c166 100644 --- a/src/main/java/com/nis/web/dao/specific/ConfigGroupInfoDao.xml +++ b/src/main/java/com/nis/web/dao/specific/ConfigGroupInfoDao.xml @@ -22,6 +22,25 @@ from config_group_info where group_type =#{groupType} + insert into config_group_info (id,group_id,group_name,is_issued,insert_time,group_type,compile_id,asn_id) 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 663d3e0a5..6a2a30329 100644 --- a/src/main/java/com/nis/web/service/configuration/ConfigSynchronizationService.java +++ b/src/main/java/com/nis/web/service/configuration/ConfigSynchronizationService.java @@ -40,6 +40,8 @@ import com.nis.domain.configuration.IpPortCfg; import com.nis.domain.configuration.PxyObjKeyring; import com.nis.domain.configuration.PxyObjTrustedCaCert; import com.nis.domain.configuration.PxyObjTrustedCaCrl; +import com.nis.domain.maat.GroupReuseAddBean; +import com.nis.domain.maat.GroupReuseCfg; import com.nis.domain.maat.MaatCfg; import com.nis.domain.maat.ToMaatBean; import com.nis.domain.maat.ToMaatResult; @@ -417,7 +419,6 @@ public class ConfigSynchronizationService extends BaseService{ maatCfg.setGroupNum(groupRelationList.size()); maatCfg.setAreaIpRegionList(areaIpRegionList); maatCfg.setIsValid(entity.getIsValid()); - maatCfg.setAuditTime(new Date()); if(!StringUtil.isEmpty(userRegion)){ maatCfg.setUserRegion(userRegion); } @@ -589,7 +590,6 @@ public class ConfigSynchronizationService extends BaseService{ maatCfg.setGroupNum(groupRelationList.size()); maatCfg.setAreaIpRegionList(areaIpRegionList); maatCfg.setIsValid(entity.getIsValid()); - maatCfg.setAuditTime(new Date()); if(!StringUtil.isEmpty(userRegion)){ maatCfg.setUserRegion(userRegion); } @@ -779,7 +779,6 @@ public class ConfigSynchronizationService extends BaseService{ maatCfg.setGroupNum(groupRelationList.size()); maatCfg.setAreaIpRegionList(areaIpRegionList); maatCfg.setIsValid(entity.getIsValid()); - maatCfg.setAuditTime(new Date()); if(!StringUtil.isEmpty(userRegion)){ maatCfg.setUserRegion(userRegion); } @@ -940,7 +939,6 @@ public class ConfigSynchronizationService extends BaseService{ maatCfg.setGroupNum(groupRelationList.size()); maatCfg.setAreaIpRegionList(areaIpRegionList); maatCfg.setIsValid(entity.getIsValid()); - maatCfg.setAuditTime(new Date()); if(!StringUtil.isEmpty(userRegion)){ maatCfg.setUserRegion(userRegion); } @@ -1034,6 +1032,16 @@ public class ConfigSynchronizationService extends BaseService{ } if(!StringUtil.isEmpty(list)){ if(entity.getServiceId().equals(1028)){ + ConfigGroupInfo groupInfo=new ConfigGroupInfo(); + groupInfo.setIsIssued(1);//全量下发只用获取已下发的group信息 + List groupInfos=configGroupInfoDao.findAllList(groupInfo);//每一批次下发都取一次最新的group_info信息 + Map compileGroups=new HashMap<>(); + if(!StringUtil.isEmpty(groupInfos)) { + for (ConfigGroupInfo configGroupInfo : groupInfos) { + compileGroups.put(configGroupInfo.getCompileId(), configGroupInfo.getGroupId()); + } + } + entity.setCompileGroupMap(compileGroups); hasData=auditAppIpData(userRegionList, page,entity,list,hasData,isUpdateCfg); }else{ @@ -1393,6 +1401,7 @@ public class ConfigSynchronizationService extends BaseService{ } /** * 处理app ip特征(分组复用)配置 + * 批量下发:【第一次下发为正常配置下发,非第一次下发为分组复用接口下发】 * @param serviceId * @param request * @param response @@ -1405,6 +1414,7 @@ public class ConfigSynchronizationService extends BaseService{ boolean isUpdateCfg) throws NoSuchFieldException, SecurityException, IllegalArgumentException, IllegalAccessException{ ToMaatBean maatBean; + GroupReuseAddBean reuseMaatBean; MaatCfg maatCfg; List configCompileList; List groupRelationList; @@ -1414,8 +1424,15 @@ public class ConfigSynchronizationService extends BaseService{ List digestRegionList; List areaIpRegionList; - maatBean = new ToMaatBean(); + maatBean = new ToMaatBean(); + reuseMaatBean = new GroupReuseAddBean(); configCompileList = new ArrayList(); + List regionIds= new ArrayList();//存储app ip域id + List compileIds= new ArrayList();//存储app compileId + Map compileGroups=new HashMap<>(); + compileGroups=entity.getCompileGroupMap(); + Integer isIssued=entity.getCompileIsIssued();//批量下发时使用,需要用来判断是否走分组复用接口 + //同一编译IP的分组 Map> dataMap=new HashMap<>(); for(int i=0;i entitys:dataMap.values()) { maatCfg = new MaatCfg(); + reuseMaatBean = new GroupReuseAddBean(); maatCfg.initDefaultValue(); groupRelationList = new ArrayList(); ipRegionList = new ArrayList(); @@ -1441,8 +1468,6 @@ public class ConfigSynchronizationService extends BaseService{ digestRegionList = new ArrayList(); areaIpRegionList = new ArrayList(); - SpecificServiceCfg specificServiceCfg=specificServiceCfgDao.getBySpecServiceId(entitys.get(0).getSpecServiceId()); - ConfigGroupInfo configGroupInfo=configGroupInfoDao.getConfigGroupInfoByGroupId(specificServiceCfg.getGroupId()); /*if(configGroupInfo==null) { Integer groupId = ConfigServiceUtil.getId(2, 1).get(0); specificServiceCfg.setGroupId(groupId); @@ -1457,34 +1482,68 @@ public class ConfigSynchronizationService extends BaseService{ specificServiceCfg.setOpTime(new Date()); specificServiceCfgDao.update(specificServiceCfg); }*/ - Integer groupId=configGroupInfo.getGroupId(); - GroupCfg groupCfg=new GroupCfg(); - groupCfg.setCompileId(entitys.get(0).getCompileId()); - groupCfg.setGroupId(groupId); - groupCfg.setIsValid(Constants.VALID_YES); - groupCfg.setAuditTime(StringUtil.isEmpty(entity.getAuditTime())?entitys.get(0).getAuditTime():entity.getAuditTime()); - groupRelationList.add(groupCfg); - BeanUtils.copyProperties(entitys.get(0), maatCfg); - ipRegionList.addAll(groupReuseCfgAddRemoveConvert(entitys,Constants.VALID_YES,groupId)); - maatCfg.setAction(entitys.get(0).getAction()); - maatCfg.setAuditTime(entitys.get(0).getAuditTime()); - maatCfg.setIpRegionList(ipRegionList); - maatCfg.setStrRegionList(strRegionList); - maatCfg.setNumRegionList(numRegionList); - maatCfg.setDigestRegionList(digestRegionList); - maatCfg.setGroupRelationList(groupRelationList); - maatCfg.setGroupNum(groupRelationList.size()); - maatCfg.setAreaIpRegionList(areaIpRegionList); - maatCfg.setIsValid(entitys.get(0).getIsValid()); - // 设置APP自定义域 - String userRegion = "APP_ID=" + entitys.get(0).getAppCode()/*+Constants.USER_REGION_SPLIT+"ASEV_ID="+businessType*/; - maatCfg.setUserRegion(userRegion); - configCompileList.add(maatCfg); - maatBean.setConfigCompileList(configCompileList); - maatBean.setAuditTime(entitys.get(0).getAuditTime()); - maatBean.setCreatorName(entitys.get(0).getCurrentUser().getName()); - maatBean.setVersion(Constants.MAAT_VERSION); - maatBean.setOpAction(Constants.INSERT_ACTION); + + if(isUpdateCfg && (isIssued.equals(1) || entity.getIsValid().equals(0))) { + List groupReuseList=new ArrayList<>(); + GroupReuseCfg groupReuseCfg=new GroupReuseCfg(); + /*groupReuseCfg.setUserRegion(userRegion);*/ + groupReuseCfg.setServiceId(entitys.get(0).getServiceId()); + ipRegionList.addAll(groupReuseCfgAddRemoveConvert(entitys,entity.getIsValid(),entitys.get(0).getGroupId())); + groupReuseCfg.setIpRegionList(ipRegionList); + groupReuseCfg.setStrRegionList(strRegionList); + groupReuseCfg.setNumRegionList(numRegionList); + groupReuseList.add(groupReuseCfg); + reuseMaatBean.setGroupReuseCfgList(groupReuseList); + reuseMaatBean.setAuditTime(StringUtil.isEmpty(entity.getAuditTime())?entitys.get(0).getAuditTime():entity.getAuditTime()); + reuseMaatBean.setCreatorName(entitys.get(0).getCurrentUser().getName()); + reuseMaatBean.setVersion(Constants.MAAT_VERSION); + if(entity.getIsValid().equals(0)) { + reuseMaatBean.setOpAction(Constants.UPDATE_ACTION); + }else { + reuseMaatBean.setOpAction(Constants.INSERT_ACTION); + } + }else { + GroupCfg groupCfg=new GroupCfg(); + groupCfg.setCompileId(entitys.get(0).getCompileId()); + groupCfg.setGroupId(entitys.get(0).getGroupId()); + groupCfg.setIsValid(Constants.VALID_YES); + groupCfg.setAuditTime(StringUtil.isEmpty(entity.getAuditTime())?entitys.get(0).getAuditTime():entity.getAuditTime()); + groupRelationList.add(groupCfg); + BeanUtils.copyProperties(entitys.get(0), maatCfg); + ipRegionList.addAll(groupReuseCfgAddRemoveConvert(entitys,Constants.VALID_YES,entitys.get(0).getGroupId())); + maatCfg.setAction(entitys.get(0).getAction()); + maatCfg.setAuditTime(entitys.get(0).getAuditTime()); + maatCfg.setIpRegionList(ipRegionList); + maatCfg.setStrRegionList(strRegionList); + maatCfg.setNumRegionList(numRegionList); + maatCfg.setDigestRegionList(digestRegionList); + maatCfg.setGroupRelationList(groupRelationList); + maatCfg.setGroupNum(groupRelationList.size()); + maatCfg.setAreaIpRegionList(areaIpRegionList); + maatCfg.setIsValid(entitys.get(0).getIsValid()); + // 设置APP自定义域 + String userRegion = "APP_ID=" + entitys.get(0).getAppCode()/*+Constants.USER_REGION_SPLIT+"ASEV_ID="+businessType*/; + maatCfg.setUserRegion(userRegion); + configCompileList.add(maatCfg); + maatBean.setConfigCompileList(configCompileList); + maatBean.setAuditTime(entitys.get(0).getAuditTime()); + maatBean.setCreatorName(entitys.get(0).getCurrentUser().getName()); + maatBean.setVersion(Constants.MAAT_VERSION); + maatBean.setOpAction(Constants.INSERT_ACTION); + } + + + } + if(isUpdateCfg) { + if(!StringUtil.isEmpty(regionIds)) { + commonPolicyDao.auditCfgBatch(entity.getTableName(), entity, regionIds, null); + } + if(isIssued.equals(0) && entity.getIsValid().equals(1)) {//group第一次下发需要修改状态为已下发 + if(!StringUtil.isEmpty(compileIds)) { + commonPolicyDao.auditCfgBatch("config_group_info", entity, compileIds, null); + } + + } } page.setList(list); if(page.isLastPage()){ @@ -1494,11 +1553,32 @@ public class ConfigSynchronizationService extends BaseService{ String json=gsonToJson(maatBean); //调用服务接口下发配置数据 if(isUpdateCfg) { - logger.info("配置批量下发:"+json); - //调用服务接口同步回调类配置 - ToMaatResult result = ConfigServiceUtil.postMaatCfg(json); - if(result!=null){ - logger.info("配置批量下发响应信息:"+result.getMsg()); + + if(isIssued.equals(1)) {//已下发过的compile或配置取消直接走ip复用接口 + json=gsonToJson(reuseMaatBean); + if(entity.getIsValid().equals(0)) { + logger.info("app ip批量失效:"+json); + //调用服务接口同步回调类配置 + ToMaatResult result = ConfigServiceUtil.put(json, 3); + if(result!=null){ + logger.info("app ip批量失效响应信息:"+result.getMsg()); + } + }else { + logger.info("app ip批量生效:"+json); + //调用服务接口同步回调类配置 + ToMaatResult result = ConfigServiceUtil.postGroupReuseSources(json); + if(result!=null){ + logger.info("app ip批量生效响应信息:"+result.getMsg()); + } + } + + }else {//未下发过的compile直接走正常maat配置接口 + logger.info("配置批量下发:"+json); + //调用服务接口同步回调类配置 + ToMaatResult result = ConfigServiceUtil.postMaatCfg(json); + if(result!=null){ + logger.info("配置批量下发响应信息:"+result.getMsg()); + } } }else { //调用服务接口配置全量更新 diff --git a/src/main/java/com/nis/web/service/specific/ConfigGroupInfoService.java b/src/main/java/com/nis/web/service/specific/ConfigGroupInfoService.java index f635f9ec1..575047151 100644 --- a/src/main/java/com/nis/web/service/specific/ConfigGroupInfoService.java +++ b/src/main/java/com/nis/web/service/specific/ConfigGroupInfoService.java @@ -33,4 +33,7 @@ public class ConfigGroupInfoService extends BaseService{ public Integer getIssuedConfigGroupInfoByGroupIds(String groupIds) { return configGroupInfoDao.getIssuedConfigGroupInfoByGroupIds(groupIds); } + public List findAllList(ConfigGroupInfo entity){ + return configGroupInfoDao.findAllListByGroupInfo(entity); + } }