diff --git a/src/main/java/com/nis/util/excel/CheckComplexStringFormatThread.java b/src/main/java/com/nis/util/excel/thread/CheckComplexStringFormatThread.java similarity index 97% rename from src/main/java/com/nis/util/excel/CheckComplexStringFormatThread.java rename to src/main/java/com/nis/util/excel/thread/CheckComplexStringFormatThread.java index cad6c61ce..aa3be95cb 100644 --- a/src/main/java/com/nis/util/excel/CheckComplexStringFormatThread.java +++ b/src/main/java/com/nis/util/excel/thread/CheckComplexStringFormatThread.java @@ -1,4 +1,4 @@ -package com.nis.util.excel; +package com.nis.util.excel.thread; import java.util.ArrayList; import java.util.List; diff --git a/src/main/java/com/nis/util/excel/CheckDnsResStrategyFormatThread.java b/src/main/java/com/nis/util/excel/thread/CheckDnsResStrategyFormatThread.java similarity index 96% rename from src/main/java/com/nis/util/excel/CheckDnsResStrategyFormatThread.java rename to src/main/java/com/nis/util/excel/thread/CheckDnsResStrategyFormatThread.java index fed0b6439..d56b7ea10 100644 --- a/src/main/java/com/nis/util/excel/CheckDnsResStrategyFormatThread.java +++ b/src/main/java/com/nis/util/excel/thread/CheckDnsResStrategyFormatThread.java @@ -1,4 +1,4 @@ -package com.nis.util.excel; +package com.nis.util.excel.thread; import java.util.ArrayList; import java.util.List; diff --git a/src/main/java/com/nis/util/excel/CheckIpFormatThread.java b/src/main/java/com/nis/util/excel/thread/CheckIpFormatThread.java similarity index 97% rename from src/main/java/com/nis/util/excel/CheckIpFormatThread.java rename to src/main/java/com/nis/util/excel/thread/CheckIpFormatThread.java index 7772ccaf2..6cfa4627b 100644 --- a/src/main/java/com/nis/util/excel/CheckIpFormatThread.java +++ b/src/main/java/com/nis/util/excel/thread/CheckIpFormatThread.java @@ -1,4 +1,4 @@ -package com.nis.util.excel; +package com.nis.util.excel.thread; import java.util.ArrayList; import java.util.List; @@ -278,6 +278,8 @@ public class CheckIpFormatThread implements Callable{ String.format(prop.getProperty("can_not_null"), prop.getProperty("pps_threadshold")) + ";"); } + }else { + baseIpCfg.setAntiddosProtocol(""); } } if (regionDict.getRegionType().equals(1)) { diff --git a/src/main/java/com/nis/util/excel/CheckStringFormatThread.java b/src/main/java/com/nis/util/excel/thread/CheckStringFormatThread.java similarity index 97% rename from src/main/java/com/nis/util/excel/CheckStringFormatThread.java rename to src/main/java/com/nis/util/excel/thread/CheckStringFormatThread.java index eb160cd93..61c22ba27 100644 --- a/src/main/java/com/nis/util/excel/CheckStringFormatThread.java +++ b/src/main/java/com/nis/util/excel/thread/CheckStringFormatThread.java @@ -1,4 +1,4 @@ -package com.nis.util.excel; +package com.nis.util.excel.thread; import java.util.ArrayList; import java.util.List; diff --git a/src/main/java/com/nis/web/controller/BaseController.java b/src/main/java/com/nis/web/controller/BaseController.java index b48b8f313..4f57523db 100644 --- a/src/main/java/com/nis/web/controller/BaseController.java +++ b/src/main/java/com/nis/web/controller/BaseController.java @@ -85,12 +85,12 @@ import com.nis.util.DateUtils; import com.nis.util.DictUtils; import com.nis.util.JsonMapper; import com.nis.util.StringUtil; -import com.nis.util.excel.CheckComplexStringFormatThread; -import com.nis.util.excel.CheckDnsResStrategyFormatThread; -import com.nis.util.excel.CheckIpFormatThread; -import com.nis.util.excel.CheckStringFormatThread; import com.nis.util.excel.ExportExcel; import com.nis.util.excel.ImportBigExcel; +import com.nis.util.excel.thread.CheckComplexStringFormatThread; +import com.nis.util.excel.thread.CheckDnsResStrategyFormatThread; +import com.nis.util.excel.thread.CheckIpFormatThread; +import com.nis.util.excel.thread.CheckStringFormatThread; import com.nis.web.dao.configuration.IpCfgDao; import com.nis.web.dao.configuration.WebsiteCfgDao; import com.nis.web.security.UserUtils; @@ -1183,42 +1183,33 @@ public class BaseController { BlockingQueue list = ei.getDataList(IpRateLimitTemplate.class ); ipPortCfgs=this.checkIpCfgMulity(serviceDict, regionDict, null, list); -// ipPortCfgs = this.checkIpCfg(serviceDict, regionDict,null, list); } else { BlockingQueue list = ei.getDataList(IpAllTemplate.class ); -// ipPortCfgs = this.checkIpCfg(serviceDict, regionDict,null, list); ipPortCfgs=this.checkIpCfgMulity(serviceDict, regionDict, null, list); } } else if (regionDict.getFunctionId().equals(7)&&serviceDict!=null&&serviceDict.getAction().intValue()==16) { BlockingQueue list = ei.getDataList(DnsIpTemplate.class ); -// ipPortCfgs = this.checkIpCfg(serviceDict, regionDict,null, list); ipPortCfgs=this.checkIpCfgMulity(serviceDict, regionDict, null, list); }else if(regionDict.getFunctionId().equals(401)) { BlockingQueue list = ei.getDataList(DnsIpTemplate.class ); -// ipPortCfgs = this.checkIpCfg(serviceDict, regionDict,null, list); ipPortCfgs=this.checkIpCfgMulity(serviceDict, regionDict, null, list); }else if (regionDict.getFunctionId().equals(212)) { BlockingQueue list = ei.getDataList(IpPayloadTemplate.class ); -// ipPortCfgs = this.checkIpCfg(serviceDict, regionDict,null, list); ipPortCfgs=this.checkIpCfgMulity(serviceDict, regionDict, null, list); } else if (regionDict.getFunctionId().equals(510) && "p2p_ip".equals(regionDict.getConfigServiceType())) { // P2p IP BlockingQueue list = ei.getDataList(P2pIpTemplate.class ); -// ipPortCfgs = this.checkIpCfg(serviceDict, regionDict,null, list); ipPortCfgs=this.checkIpCfgMulity(serviceDict, regionDict, null, list); } else if (regionDict.getFunctionId().equals(600)) {// ASN IP //加载asn缓存 AsnCacheUtils.init(); BlockingQueue list = ei.getDataList(AsnIpTemplate.class ); -// ipPortCfgs = this.checkIpCfg(serviceDict, regionDict,asnNoMaps, list); ipPortCfgs=this.checkIpCfgMulity(serviceDict, regionDict, asnNoMaps, list); } else if (regionDict.getFunctionId().equals(301)) {// DDOS IP BlockingQueue list = ei.getDataList(DdosIpTemplate.class ); -// ipPortCfgs = this.checkIpCfg(serviceDict, regionDict,null, list); ipPortCfgs=this.checkIpCfgMulity(serviceDict, regionDict, null, list); } else { BlockingQueue list = ei.getDataList(IpAllTemplate.class ); -// ipPortCfgs = this.checkIpCfg(serviceDict, regionDict,null, list); ipPortCfgs=this.checkIpCfgMulity(serviceDict, regionDict, null, list); } } else if (regionDict.getRegionType().equals(2)) {// 字符串类 @@ -1226,16 +1217,13 @@ public class BaseController { && "p2p_hash".equals(regionDict.getConfigServiceType())) { // P2p hash BlockingQueue list = ei.getDataList(P2pHashStringTemplate.class ); -// stringCfgs = this.checkStringCfg(serviceDict, regionDict, list); stringCfgs=this.checkStringCfgMulity(serviceDict, regionDict, list); }else if (regionDict.getFunctionId().equals(403)) { BlockingQueue list = ei.getDataList(AppDomainTemplate.class ); -// stringCfgs = this.checkStringCfg(serviceDict, regionDict, list); stringCfgs=this.checkStringCfgMulity(serviceDict, regionDict, list); } else { BlockingQueue list = ei.getDataList(StringAllTemplate.class ); -// stringCfgs = this.checkStringCfg(serviceDict, regionDict, list); stringCfgs=this.checkStringCfgMulity(serviceDict, regionDict, list); } @@ -1243,12 +1231,10 @@ public class BaseController { if (regionDict.getFunctionId().equals(7)&&serviceDict!=null&&serviceDict.getAction().intValue()==16) { BlockingQueue list = ei.getDataList(DnsComplexStringTemplate.class ); -// complexkeywordCfgs = this.checkComplexStringCfg(serviceDict, regionDict, list); complexkeywordCfgs = this.checkComplexStringCfgMulity(serviceDict, regionDict, list); } else { BlockingQueue list = ei.getDataList(ComplexStringAllTemplate.class ); -// complexkeywordCfgs = this.checkComplexStringCfg(serviceDict, regionDict, list); complexkeywordCfgs = this.checkComplexStringCfgMulity(serviceDict, regionDict, list); } @@ -1256,7 +1242,6 @@ public class BaseController { if (regionDict.getFunctionId().equals(400)) { BlockingQueue list = ei.getDataList(DnsResStrategyTemplate.class ); -// dnsResStrategies = this.checkDnsResStrategyCfg(serviceDict, regionDict, list); dnsResStrategies=this.checkDnsResStrategyCfgMulity(serviceDict, regionDict, list); } } diff --git a/src/main/java/com/nis/web/service/configuration/DdosCfgService.java b/src/main/java/com/nis/web/service/configuration/DdosCfgService.java index 24397efcd..4d7d745c4 100644 --- a/src/main/java/com/nis/web/service/configuration/DdosCfgService.java +++ b/src/main/java/com/nis/web/service/configuration/DdosCfgService.java @@ -7,15 +7,20 @@ import java.util.HashMap; import java.util.List; import java.util.Map; +import org.apache.ibatis.session.ExecutorType; +import org.apache.ibatis.session.SqlSession; +import org.apache.ibatis.session.SqlSessionFactory; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import com.beust.jcommander.internal.Lists; import com.google.gson.Gson; import com.nis.domain.Page; import com.nis.domain.callback.InlineIp; import com.nis.domain.configuration.BaseIpCfg; +import com.nis.domain.configuration.CfgIndexInfo; import com.nis.domain.configuration.DdosIpCfg; import com.nis.domain.configuration.IpPortCfg; import com.nis.domain.maat.MaatCfg; @@ -31,8 +36,10 @@ import com.nis.util.ConfigServiceUtil; import com.nis.util.Constants; import com.nis.util.StringUtil; import com.nis.web.dao.configuration.DdosCfgDao; +import com.nis.web.dao.configuration.IpCfgDao; import com.nis.web.security.UserUtils; import com.nis.web.service.BaseService; +import com.nis.web.service.SpringContextHolder; @@ -58,11 +65,28 @@ public class DdosCfgService extends BaseService{ public DdosIpCfg getDdosIpCfg(Long cfgId) { return ddosCfgDao.getDdosIpCfg(cfgId); } + @Transactional(readOnly=false,rollbackFor=RuntimeException.class) public void saveDdosIpCfg(List ipPortCfgs) { + List ddosIpCfgS=Lists.newArrayList(ipPortCfgs.size()); for(BaseIpCfg cfg:ipPortCfgs) { DdosIpCfg ddosIpCfg=new DdosIpCfg(); BeanUtils.copyProperties(cfg, ddosIpCfg); - saveOrUpdate(ddosIpCfg); + ddosIpCfgS.add(ddosIpCfg); + } + SqlSessionFactory sqlSessionFactory=SpringContextHolder.getBean(SqlSessionFactory.class); + SqlSession batchSqlSession = null; + try{ + batchSqlSession = sqlSessionFactory.openSession(ExecutorType.BATCH, false); + for(int index = 0; index < ddosIpCfgS.size();index++){ + DdosIpCfg ddosIpCfg = ddosIpCfgS.get(index); + //如果insert加入了select last_insert_id,会拖慢6~7倍以上的效率 + ((DdosCfgDao) batchSqlSession.getMapper(DdosCfgDao.class)).insert(ddosIpCfg); + } + batchSqlSession.commit(); + }finally { + if(batchSqlSession != null){ + batchSqlSession.close(); + } } } @Transactional(readOnly=false,rollbackFor=RuntimeException.class)