diff --git a/src/main/java/com/nis/domain/configuration/BaseStringCfg.java b/src/main/java/com/nis/domain/configuration/BaseStringCfg.java index a75f3405e..8e14a2720 100644 --- a/src/main/java/com/nis/domain/configuration/BaseStringCfg.java +++ b/src/main/java/com/nis/domain/configuration/BaseStringCfg.java @@ -44,6 +44,14 @@ public class BaseStringCfg extends BaseCfg { protected Integer behavCode;//仅用于copy属性使用 protected Integer specServiceId;//仅用于copy属性使用 protected String domain;//仅用于copy属性使用 + protected Integer dnsStrategyId;//仅用作复制属性使用 + + public Integer getDnsStrategyId() { + return dnsStrategyId; + } + public void setDnsStrategyId(Integer dnsStrategyId) { + this.dnsStrategyId = dnsStrategyId; + } public String getDomain() { return domain; } diff --git a/src/main/java/com/nis/web/controller/BaseController.java b/src/main/java/com/nis/web/controller/BaseController.java index 20259d0f9..de827a5e8 100644 --- a/src/main/java/com/nis/web/controller/BaseController.java +++ b/src/main/java/com/nis/web/controller/BaseController.java @@ -1758,8 +1758,14 @@ public class BaseController { while(!complexkeywordCfgs.isEmpty()) { complexkeywordCfgs.drainTo(_complexkeywordCfgs, Constants.MAAT_JSON_SEND_SIZE); List compileIds=Lists.newArrayList(); + List groupIds=Lists.newArrayList(); + List regionIds=Lists.newArrayList(); try { compileIds = ConfigServiceUtil.getId(1,_complexkeywordCfgs.size()); + if(isSend.equals("1")) { + groupIds = ConfigServiceUtil.getId(2,_complexkeywordCfgs.size()); + regionIds = ConfigServiceUtil.getId(3,_complexkeywordCfgs.size()); + } } catch (Exception e) { e.printStackTrace(); logger.info("获取编译ID出错"); @@ -1776,8 +1782,23 @@ public class BaseController { cfg.setCreatorId(UserUtils.getUser().getId()); cfg.setDoLog(2); cfg.setFunctionId(regionDict.getFunctionId()); - cfg.setIsAudit(0); - cfg.setIsValid(0); + if(isSend.equals("1")) { + cfg.setIsAudit(Constants.AUDIT_YES); + cfg.setIsValid(Constants.VALID_YES); + cfg.setAuditorId(UserUtils.getUser().getId()); + cfg.setAuditTime(date); + if(groupIds!=null&&groupIds.size()==_complexkeywordCfgs.size()) { + cfg.setGroupId(groupIds.get(ind)); + } + if(regionIds!=null&®ionIds.size()==_complexkeywordCfgs.size()) { + cfg.setRegionId(regionIds.get(ind)); + } + }else { + cfg.setIsAudit(Constants.AUDIT_NOT_YET); + cfg.setIsValid(Constants.VALID_NO); + } + //cfg.setIsAudit(0); + //cfg.setIsValid(0); cfg.setIsAreaEffective(0); cfg.setLable("0"); cfg.setRequestId(StringUtil.isEmpty(requestId) ? 0 : requestId); diff --git a/src/main/java/com/nis/web/service/BaseService.java b/src/main/java/com/nis/web/service/BaseService.java index 81d713678..93359ea12 100644 --- a/src/main/java/com/nis/web/service/BaseService.java +++ b/src/main/java/com/nis/web/service/BaseService.java @@ -80,6 +80,7 @@ import com.nis.domain.specific.SpecificServiceCfg; import com.nis.util.ConfigServiceUtil; import com.nis.util.Configurations; import com.nis.util.Constants; +import com.nis.util.DictUtils; import com.nis.util.IpUtil; import com.nis.util.Reflections; import com.nis.util.StringUtil; @@ -1613,7 +1614,7 @@ public abstract class BaseService { if("BaseIpCfg".equals(type)) { List listPage = (List) list; if (specificServiceCfg!=null&®ionDict.getFunctionId().equals(405)) { - this.saveAppIpCfg((List)listPage,specificServiceCfg); + this.saveAppIpCfg((List)listPage,specificServiceCfg,send); }else { this.saveIpBatch(regionDict,serviceDict,(List)listPage,send); } @@ -1780,7 +1781,7 @@ public abstract class BaseService { * @throws Exception */ @Transactional(readOnly = false, rollbackFor = RuntimeException.class) - public void saveAppIpCfg(List cfgs,SpecificServiceCfg specificServiceCfg){ + public void saveAppIpCfg(List cfgs,SpecificServiceCfg specificServiceCfg,boolean send){ logger.warn("Start to save IP"); ConfigGroupInfoDao configGroupInfoDao=SpringContextHolder.getBean(ConfigGroupInfoDao.class); SpecificServiceCfgDao specificServiceCfgDao=SpringContextHolder.getBean(SpecificServiceCfgDao.class); @@ -1805,25 +1806,182 @@ public abstract class BaseService { Integer compileId = configGroupInfo.getCompileId(); // Varibles maxPacket=asnIpCfgDao.getVaribles("max_allowed_packet"); List tempList=Lists.newArrayList(); + int len=0; + int index=0; for(BaseIpCfg cfg:cfgs) { AppIpCfg entity=new AppIpCfg(); BeanUtils.copyProperties(cfg, entity); entity.setCompileId(compileId); + cfg.setCompileId(compileId); + cfg.setGroupId(specificServiceCfg.getGroupId()); int tempLen=entity.toString().getBytes(Charset.forName("UTF-8")).length; if((len+tempLen) configCompileList = new ArrayList(); + List groupRelationList = new ArrayList(); + List ipRegionList = new ArrayList(); + List strRegionList = new ArrayList(); + List numRegionList = new ArrayList(); + List digestRegionList = new ArrayList(); + List areaIpRegionList = new ArrayList(); + if(configGroupInfo.getIsIssued()==0) {//未下发,下发region compile,group. + MaatCfg maatCfg = new MaatCfg(); + ToMaatBean maatBean = new ToMaatBean(); + maatCfg.initDefaultValue(); + //group + GroupCfg groupCfg=new GroupCfg(); + groupCfg.setCompileId(compileId); + groupCfg.setGroupId(configGroupInfo.getGroupId()); + groupCfg.setIsValid(Constants.VALID_YES); + groupCfg.setAuditTime(tempList.get(0).getAuditTime()); + groupRelationList.add(groupCfg); + BeanUtils.copyProperties(cfgs.get(0), maatCfg); + ipRegionList.addAll(groupReuseCfgAddRemoveConvert(tempList,Constants.VALID_YES,configGroupInfo.getGroupId())); + maatCfg.setAction(tempList.get(0).getAction()); + maatCfg.setAuditTime(tempList.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(tempList.get(0).getIsValid()); + // 设置APP自定义域 + String userRegion = "APP_ID=" + tempList.get(0).getAppCode()/*+Constants.USER_REGION_SPLIT+"ASEV_ID="+businessType*/; + maatCfg.setUserRegion(userRegion); + configCompileList.add(maatCfg); + maatBean.setConfigCompileList(configCompileList); + maatBean.setAuditTime(tempList.get(0).getAuditTime()); + maatBean.setCreatorName(tempList.get(0).getCurrentUser().getName()); + maatBean.setVersion(Constants.MAAT_VERSION); + maatBean.setOpAction(Constants.INSERT_ACTION); + // 调用服务接口下发配置数据 + String json = gsonToJson(maatBean); + logger.info("app协议IP配置下发配置参数:" + json); + // 调用服务接口下发配置 + ToMaatResult result = ConfigServiceUtil.postMaatCfg(json); + logger.info("app协议IP配置下发响应信息:" + result.getMsg()); + configGroupInfo.setIsIssued(1); + configGroupInfo.setUpdateTime(new Date()); + configGroupInfoDao.updateConfigGroupInfobyGroupId(configGroupInfo); + }else if(configGroupInfo.getIsIssued()==1) {//已经下发,分组复用下发 + GroupReuseAddBean maatBean = new GroupReuseAddBean(); + List groupReuseList=new ArrayList<>(); + GroupReuseCfg groupReuseCfg=new GroupReuseCfg(); + /*groupReuseCfg.setUserRegion(userRegion);*/ + groupReuseCfg.setServiceId(tempList.get(0).getServiceId()); + ipRegionList.addAll(groupReuseCfgAddRemoveConvert(tempList,Constants.VALID_YES,configGroupInfo.getGroupId())); + groupReuseCfg.setIpRegionList(ipRegionList); + groupReuseCfg.setStrRegionList(strRegionList); + groupReuseCfg.setNumRegionList(numRegionList); + groupReuseList.add(groupReuseCfg); + maatBean.setGroupReuseCfgList(groupReuseList); + maatBean.setAuditTime(tempList.get(0).getAuditTime()); + maatBean.setCreatorName(tempList.get(0).getCurrentUser().getName()); + maatBean.setVersion(Constants.MAAT_VERSION); + maatBean.setOpAction(Constants.INSERT_ACTION); + //调用服务接口下发配置数据 + String json=gsonToJson(maatBean); + logger.info("app协议IP域新增配置下发配置参数:"+json); + //调用服务接口下发配置 + ToMaatResult result = ConfigServiceUtil.postGroupReuseSources(json); + logger.info("app协议IP域新增配置响应信息:"+result.getMsg()); + }else { + throw new RuntimeException("Unknown configGroupInfo isIssued value"); + } + } tempList.clear(); tempList.add(entity); len=tempLen; } + index ++; } if(tempList.size()>0) { logger.warn("save ip size:"+tempList.size()); appCfgDao.insertAppIpCfgBatch(tempList); + if(send) { + if(send) { + List configCompileList = new ArrayList(); + List groupRelationList = new ArrayList(); + List ipRegionList = new ArrayList(); + List strRegionList = new ArrayList(); + List numRegionList = new ArrayList(); + List digestRegionList = new ArrayList(); + List areaIpRegionList = new ArrayList(); + if(configGroupInfo.getIsIssued()==0) {//未下发,下发region compile,group. + MaatCfg maatCfg = new MaatCfg(); + ToMaatBean maatBean = new ToMaatBean(); + maatCfg.initDefaultValue(); + //group + GroupCfg groupCfg=new GroupCfg(); + groupCfg.setCompileId(compileId); + groupCfg.setGroupId(configGroupInfo.getGroupId()); + groupCfg.setIsValid(Constants.VALID_YES); + groupCfg.setAuditTime(tempList.get(0).getAuditTime()); + groupRelationList.add(groupCfg); + BeanUtils.copyProperties(cfgs.get(0), maatCfg); + ipRegionList.addAll(groupReuseCfgAddRemoveConvert(tempList,Constants.VALID_YES,configGroupInfo.getGroupId())); + maatCfg.setAction(tempList.get(0).getAction()); + maatCfg.setAuditTime(tempList.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(tempList.get(0).getIsValid()); + // 设置APP自定义域 + String userRegion = "APP_ID=" + tempList.get(0).getAppCode()/*+Constants.USER_REGION_SPLIT+"ASEV_ID="+businessType*/; + maatCfg.setUserRegion(userRegion); + configCompileList.add(maatCfg); + maatBean.setConfigCompileList(configCompileList); + maatBean.setAuditTime(tempList.get(0).getAuditTime()); + maatBean.setCreatorName(tempList.get(0).getCurrentUser().getName()); + maatBean.setVersion(Constants.MAAT_VERSION); + maatBean.setOpAction(Constants.INSERT_ACTION); + // 调用服务接口下发配置数据 + String json = gsonToJson(maatBean); + logger.info("app协议IP配置下发配置参数:" + json); + // 调用服务接口下发配置 + ToMaatResult result = ConfigServiceUtil.postMaatCfg(json); + logger.info("app协议IP配置下发响应信息:" + result.getMsg()); + configGroupInfo.setIsIssued(1); + configGroupInfo.setUpdateTime(new Date()); + configGroupInfoDao.updateConfigGroupInfobyGroupId(configGroupInfo); + }else if(configGroupInfo.getIsIssued()==1) {//已经下发,分组复用下发 + GroupReuseAddBean maatBean = new GroupReuseAddBean(); + List groupReuseList=new ArrayList<>(); + GroupReuseCfg groupReuseCfg=new GroupReuseCfg(); + /*groupReuseCfg.setUserRegion(userRegion);*/ + groupReuseCfg.setServiceId(tempList.get(0).getServiceId()); + ipRegionList.addAll(groupReuseCfgAddRemoveConvert(tempList,Constants.VALID_YES,configGroupInfo.getGroupId())); + groupReuseCfg.setIpRegionList(ipRegionList); + groupReuseCfg.setStrRegionList(strRegionList); + groupReuseCfg.setNumRegionList(numRegionList); + groupReuseList.add(groupReuseCfg); + maatBean.setGroupReuseCfgList(groupReuseList); + maatBean.setAuditTime(tempList.get(0).getAuditTime()); + maatBean.setCreatorName(tempList.get(0).getCurrentUser().getName()); + maatBean.setVersion(Constants.MAAT_VERSION); + maatBean.setOpAction(Constants.INSERT_ACTION); + //调用服务接口下发配置数据 + String json=gsonToJson(maatBean); + logger.info("app协议IP域新增配置下发配置参数:"+json); + //调用服务接口下发配置 + ToMaatResult result = ConfigServiceUtil.postGroupReuseSources(json); + logger.info("app协议IP域新增配置响应信息:"+result.getMsg()); + }else { + throw new RuntimeException("Unknown configGroupInfo isIssued value"); + } + } + } tempList.clear(); } long end=System.currentTimeMillis(); @@ -1918,7 +2076,15 @@ public abstract class BaseService { _cfg.setUserRegion3(StringUtil.isEmpty(_cfg.getUserRegion3()) ? "":_cfg.getUserRegion3()); maatCfg.setUserRegion(Constants.INTERCEPT_IP_RATELIMIT_BANDWITH_USER_REGION_KEY+"="+_cfg.getUserRegion3()); } + }else if(regionDict.getFunctionId()==510) { + maatCfg.setUserRegion(Constants.P2P_IP_TYPE_USER_REGION_KEY+"="+_cfg.getUserRegion2()); + }else if(regionDict.getFunctionId()==7) { + if(!StringUtil.isEmpty(_cfg.getDnsStrategyId())){ +// maatCfg.setUserRegion(Constants.USER_REGION_SPLIT+entity.getDnsStrategyId()+Constants.USER_REGION_SPLIT); + maatCfg.setUserRegion(Constants.DNS_STRATEGY_USER_REGION_KEY+"="+_cfg.getDnsStrategyId()); + } } + configCompileList.add(maatCfg); }else { //根据具体情况判断 @@ -1936,7 +2102,7 @@ public abstract class BaseService { maatBean.setOpAction(Constants.INSERT_ACTION); // 调用服务接口下发配置数据 String json = BaseService.gsonToJson(maatBean); - if(configCompileList.size()>100) { + if(configCompileList.size()>10) { logger.info("IP 配置下发配置条数:" + configCompileList.size()); }else { logger.info("IP 配置下发配置参数:" + json); @@ -1999,8 +2165,17 @@ public abstract class BaseService { } if (send) { if(regionDict.getIsMaat().intValue()==1) { - configCompileList.add(convertMaatCfg(_cfg,2)); + MaatCfg maatCfg=convertMaatCfg(_cfg,2); //userregion处理 + if(regionDict.getFunctionId()==7) { + if(!StringUtil.isEmpty(_cfg.getDnsStrategyId())){ + // maatCfg.setUserRegion(Constants.USER_REGION_SPLIT+entity.getDnsStrategyId()+Constants.USER_REGION_SPLIT); + maatCfg.setUserRegion(Constants.DNS_STRATEGY_USER_REGION_KEY+"="+_cfg.getDnsStrategyId()); + } + }else if(regionDict.getDictId()==159) { + maatCfg.setUserRegion(Constants.P2P_HASH_TYPE_USER_REGION_KEY+"="+_cfg.getUserRegion1()); + } + configCompileList.add(maatCfg); } } @@ -2014,7 +2189,7 @@ public abstract class BaseService { maatBean.setOpAction(Constants.INSERT_ACTION); // 调用服务接口下发配置数据 String json = BaseService.gsonToJson(maatBean); - if(configCompileList.size()>100) { + if(configCompileList.size()>10) { logger.info("字符串配置下发配置条数:" + configCompileList.size()); }else { logger.info("字符串配置下发配置参数:" + json); @@ -2042,29 +2217,78 @@ public abstract class BaseService { */ @Transactional(readOnly=false,rollbackFor=RuntimeException.class) public void saveComplexkeywordCfgBatch(FunctionRegionDict regionDict, FunctionServiceDict serviceDict,List data, String tableName,boolean send) { - SqlSessionFactory sqlSessionFactory=SpringContextHolder.getBean(SqlSessionFactory.class); - SqlSession batchSqlSession = null; - try{ - batchSqlSession = sqlSessionFactory.openSession(ExecutorType.BATCH, false); - for(int index = 0; index < data.size();index++){ - ComplexkeywordCfg cfg = data.get(index); - cfg.setTableName(tableName); - if(regionDict.getDictId().intValue()==63) { - AppHttpCfg _cfg=new AppHttpCfg(); - BeanUtils.copyProperties(cfg, _cfg); - ((AppCfgDao) batchSqlSession.getMapper(AppCfgDao.class)).insertAppHttpCfgBatch(_cfg); - }else { - ((StringCfgDao) batchSqlSession.getMapper(StringCfgDao.class)).saveComplexkeywordCfgBatch(cfg); - } - - - } - batchSqlSession.commit(); - }finally { - if(batchSqlSession != null){ - batchSqlSession.close(); + if (regionDict != null) { + Integer regionType = regionDict.getRegionType(); + if (3 == regionType.intValue()) { + SqlSessionFactory sqlSessionFactory=SpringContextHolder.getBean(SqlSessionFactory.class); + List configCompileList = new ArrayList(); + SqlSession batchSqlSession = null; + try{ + batchSqlSession = sqlSessionFactory.openSession(ExecutorType.BATCH, false); + for(int index = 0; index < data.size();index++){ + ComplexkeywordCfg cfg = data.get(index); + cfg.setTableName(tableName); + if(regionDict.getDictId().intValue()==63) { + AppHttpCfg _cfg=new AppHttpCfg(); + BeanUtils.copyProperties(cfg, _cfg); + ((AppCfgDao) batchSqlSession.getMapper(AppCfgDao.class)).insertAppHttpCfgBatch(_cfg); + }else { + ((StringCfgDao) batchSqlSession.getMapper(StringCfgDao.class)).saveComplexkeywordCfgBatch(cfg); + } + if (send) { + if(regionDict.getIsMaat().intValue()==1) { + MaatCfg maatCfg=convertMaatCfg(cfg,3); + //userregion处理 + if(regionDict.getFunctionId()==7) { + if(!StringUtil.isEmpty(cfg.getDnsStrategyId())){ + // maatCfg.setUserRegion(Constants.USER_REGION_SPLIT+entity.getDnsStrategyId()+Constants.USER_REGION_SPLIT); + maatCfg.setUserRegion(Constants.DNS_STRATEGY_USER_REGION_KEY+"="+cfg.getDnsStrategyId()); + } + }else if(regionDict.getDictId()==10) { + String dictValue = DictUtils.getDictCode(Constants.HTTP_HEADER_DICT_MODULE, cfg.getDistrict()); + if(StringUtil.isEmpty(dictValue) || dictValue.equals("默认")){ + maatCfg.setUserRegion(Constants.HTTP_HEADER_USER_REGION_KEY+"="+cfg.getDistrict()); + } + }else if(regionDict.getDictId()==11) { + String dictValue = DictUtils.getDictCode(Constants.HTTP_HEADER_DICT_MODULE, cfg.getDistrict()); + if(StringUtil.isEmpty(dictValue) || dictValue.equals("默认")){ + maatCfg.setUserRegion(Constants.HTTP_HEADER_USER_REGION_KEY+"="+cfg.getDistrict()); + } + } + configCompileList.add(maatCfg); + } + } + + } + if (send && configCompileList.size() > 0) { + ToMaatBean maatBean = new ToMaatBean(); + maatBean.setConfigCompileList(configCompileList); + maatBean.setAuditTime(new Date()); + maatBean.setCreatorName(UserUtils.getUser().getName()); + maatBean.setVersion(Constants.MAAT_VERSION); + maatBean.setOpAction(Constants.INSERT_ACTION); + // 调用服务接口下发配置数据 + String json = BaseService.gsonToJson(maatBean); + if(configCompileList.size()>10) { + logger.info("增强字符串配置下发配置条数:" + configCompileList.size()); + }else { + logger.info("增强字符串配置下发配置参数:" + json); + } + // 调用服务接口下发配置 + ToMaatResult result = ConfigServiceUtil.postMaatCfg(json); + logger.info("增强字符串配置下发响应信息:" + result.getMsg()); + + } + batchSqlSession.commit(); + }finally { + if(batchSqlSession != null){ + batchSqlSession.close(); + } + } } + } + } /** * asn ip分组复用新增