主题网站增加配置导入.

This commit is contained in:
zhangwenqing
2019-01-09 09:18:49 +08:00
parent 90927860f5
commit e793cad976
14 changed files with 577 additions and 12 deletions

View File

@@ -105,6 +105,7 @@ import com.nis.domain.configuration.template.IpRateLimitTemplate;
import com.nis.domain.configuration.template.P2pHashStringTemplate;
import com.nis.domain.configuration.template.P2pIpTemplate;
import com.nis.domain.configuration.template.StringAllTemplate;
import com.nis.domain.configuration.template.TopicWebsiteTemplate;
import com.nis.domain.log.BaseLogEntity;
import com.nis.domain.log.SearchReport;
import com.nis.domain.maat.MaatCfg;
@@ -135,6 +136,7 @@ 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.util.excel.thread.CheckTopicWebsiteFormatThread;
import com.nis.web.security.UserUtils;
import com.nis.web.service.ArchiveServcie;
import com.nis.web.service.AreaService;
@@ -1143,6 +1145,48 @@ public class BaseController {
return queue;
}
/**
* 多线程验证
* @param serviceDict
* @param regionDict
* @param list
* @return
* @throws InterruptedException
* @throws ExecutionException
* @throws ServiceException
*/
public BlockingQueue<AppTopicDomainCfg> checkTopicWebsiteCfgMulity(StringBuffer _msg,FunctionServiceDict serviceDict, FunctionRegionDict regionDict, BlockingQueue<? extends Object> list) throws InterruptedException, ExecutionException, ServiceException{
logger.warn("start checkTopicWebsiteCfgMulity ,size "+list.size());
long start=System.currentTimeMillis();
BlockingQueue<AppTopicDomainCfg> queue=new ArrayBlockingQueue<>(list.size());
ExecutorService service=Executors.newFixedThreadPool(Constants.MULITY_THREAD_SIZE);
List<Future<String>> futures=new ArrayList<>();
for(int i=0;i<Constants.MULITY_THREAD_SIZE;i++) {
CheckTopicWebsiteFormatThread t=new CheckTopicWebsiteFormatThread(serviceDict,regionDict, this.getMsgProp(), list, queue);
futures.add(service.submit(t));
}
service.shutdown();
while(!service.isTerminated()) {
try {
Thread.sleep(10);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
for(Future<String> future:futures) {
String msg = future.get();
if(StringUtils.isNotBlank(msg)) {
//throw new ServiceException(msg);
_msg.append(msg);
}
}
long end=System.currentTimeMillis();
logger.warn("checkTopicWebsiteCfgMulity finish,cost:"+(end-start)+",size:"+queue.size());
return queue;
}
/**
*
* setReportSearchTime(报表查询设置开始时间与结束时间) (这里描述这个方法适用条件 可选)
@@ -1280,6 +1324,7 @@ public class BaseController {
BlockingQueue<ComplexkeywordCfg> complexkeywordCfgs =null;
BlockingQueue<DnsResStrategy> dnsResStrategies=null;
BlockingQueue<AppComplexFeatureCfg> appComplexFeatureCfgs=null;
BlockingQueue<AppTopicDomainCfg> appTopicDomainCfgs=null;// 主题网站
List<CfgIndexInfo> cfgIndexInfos = new ArrayList<CfgIndexInfo>();
List<AppPolicyCfg> appPolicyCfgs = new ArrayList<AppPolicyCfg>();
List<AppFeatureIndex> appFeatureIndexs= new ArrayList<AppFeatureIndex>();
@@ -1402,6 +1447,9 @@ public class BaseController {
}else if(regionDict.getFunctionId().equals(209)){// HTTP(s)替换
BlockingQueue<HttpsReplaceTemplate> list = ei.getDataList(HttpsReplaceTemplate.class);
stringCfgs=this.checkStringCfgMulity(errTip,serviceDict, regionDict, list);
}else if(regionDict.getFunctionId().equals(560)){// 主题网站
BlockingQueue<TopicWebsiteTemplate> list = ei.getDataList(TopicWebsiteTemplate.class);
appTopicDomainCfgs=this.checkTopicWebsiteCfgMulity(errTip,serviceDict, regionDict, list);
}else {
BlockingQueue<StringAllTemplate> list = ei.getDataList(StringAllTemplate.class );
stringCfgs=this.checkStringCfgMulity(errTip,serviceDict, regionDict, list);
@@ -1720,6 +1768,7 @@ public class BaseController {
// }
// }
// }
if(!regionDict.getFunctionId().equals(560)) {
List<BaseStringCfg> _stringCfgs=Lists.newArrayList(Constants.MAAT_JSON_SEND_SIZE);
while(!stringCfgs.isEmpty()) {
stringCfgs.drainTo(_stringCfgs, Constants.MAAT_JSON_SEND_SIZE);
@@ -1802,10 +1851,6 @@ public class BaseController {
} else {
if(!regionDict.getFunctionId().equals(403)) {
CfgIndexInfo cfgIndexInfo = new CfgIndexInfo();
// 因域名阻断 -限速 -丢包率
if(serviceDict.getFunctionId().equals(201) && serviceDict.getAction().equals(64)){
cfg.setUserRegion1("0");
}
BeanUtils.copyProperties(cfg, cfgIndexInfo, new String[] {"cfgId"});
cfgIndexInfos.add(cfgIndexInfo);
}
@@ -1818,6 +1863,65 @@ public class BaseController {
appPolicyCfgs.clear();
_stringCfgs.clear();
}
}else {
// 主题网站
List<AppTopicDomainCfg> _topicDomainCfgs=Lists.newArrayList(Constants.MAAT_JSON_SEND_SIZE);
while(!appTopicDomainCfgs.isEmpty()) {
appTopicDomainCfgs.drainTo(_topicDomainCfgs, Constants.MAAT_JSON_SEND_SIZE);
List<Integer> compileIds=Lists.newArrayList();
List<Integer> groupIds=Lists.newArrayList();
List<Integer> regionIds=Lists.newArrayList();
try {
compileIds = ConfigServiceUtil.getId(1,_topicDomainCfgs.size());
if(isSend.equals("1")) {
groupIds = ConfigServiceUtil.getId(2,_topicDomainCfgs.size());
regionIds = ConfigServiceUtil.getId(3,_topicDomainCfgs.size());
}
} catch (Exception e) {
e.printStackTrace();
logger.info("获取编译ID出错");
throw new MaatConvertException("<spring:message code=\"request_service_failed\"/>:"+e.getMessage());
}
int ind=0;
for (AppTopicDomainCfg cfg : _topicDomainCfgs) {
cfg.setAction(serviceDict.getAction());
cfg.setCfgRegionCode(regionDict.getConfigRegionCode());
cfg.setCfgType(regionDict.getConfigRegionValue());
cfg.setCreateTime(date);
cfg.setCreatorId(UserUtils.getUser().getId());
cfg.setDoLog(2);
cfg.setFunctionId(regionDict.getFunctionId());
/*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()==_topicDomainCfgs.size()) {
cfg.setGroupId(groupIds.get(ind));
}
if(regionIds!=null&&regionIds.size()==_topicDomainCfgs.size()) {
cfg.setRegionId(regionIds.get(ind));
}
}else {*/
cfg.setIsAudit(Constants.AUDIT_NOT_YET);
cfg.setIsValid(Constants.VALID_NO);
//}
cfg.setIsAreaEffective(0);
cfg.setLable("0");
cfg.setRequestId(StringUtil.isEmpty(requestId) ? 0 : requestId);
cfg.setAttribute(attribute);
cfg.setClassify(classify);
cfg.setServiceId(serviceDict.getServiceId());
if(compileIds!=null&&compileIds.size()==_topicDomainCfgs.size()) {
cfg.setCompileId(compileIds.get(ind));
}
ind++;
}
ipCfgService.saveAndSend(regionDict, serviceDict, specificServiceCfg, _topicDomainCfgs, cfgIndexInfos, appPolicyCfgs,appFeatureIndexs,asnNoMaps,isSend.equals("1"));
cfgIndexInfos.clear();
_topicDomainCfgs.clear();
}
}
} else if (regionDict.getRegionType().equals(3)) {
if(!regionDict.getFunctionId().equals(563)) {
List<ComplexkeywordCfg> _complexkeywordCfgs=Lists.newArrayList(Constants.MAAT_JSON_SEND_SIZE);
@@ -2178,6 +2282,8 @@ public class BaseController {
ei.loadInitParams(HttpsRedirectTemplate.class, this.getMsgProp(), regionDict, serviceDict);
}else if(regionDict.getFunctionId().equals(209)){// HTTP(s)替换
ei.loadInitParams(HttpsReplaceTemplate.class, this.getMsgProp(), regionDict, serviceDict);
}else if(regionDict.getFunctionId().equals(560)){// 主题网站
ei.loadInitParams(TopicWebsiteTemplate.class, this.getMsgProp(), regionDict, serviceDict);
}else {
ei.loadInitParams(StringAllTemplate.class, msgProp, regionDict, serviceDict);
}