协议部分配置导入并下发逻辑添加

This commit is contained in:
wangxin
2018-12-21 17:02:23 +06:00
parent cf2c3732e1
commit 6bf9e5508b
3 changed files with 281 additions and 28 deletions

View File

@@ -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<BaseIpCfg> listPage = (List<BaseIpCfg>) list;
if (specificServiceCfg!=null&&regionDict.getFunctionId().equals(405)) {
this.saveAppIpCfg((List<BaseIpCfg>)listPage,specificServiceCfg);
this.saveAppIpCfg((List<BaseIpCfg>)listPage,specificServiceCfg,send);
}else {
this.saveIpBatch(regionDict,serviceDict,(List<BaseIpCfg>)listPage,send);
}
@@ -1780,7 +1781,7 @@ public abstract class BaseService {
* @throws Exception
*/
@Transactional(readOnly = false, rollbackFor = RuntimeException.class)
public void saveAppIpCfg(List<BaseIpCfg> cfgs,SpecificServiceCfg specificServiceCfg){
public void saveAppIpCfg(List<BaseIpCfg> 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<AppIpCfg> 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)<Constants.MAX_ALLOWED_PACKET) {
tempList.add(entity);
len+=tempLen;
}else {
appCfgDao.insertAppIpCfgBatch(tempList);
if(send) {
List<MaatCfg> configCompileList = new ArrayList();
List<GroupCfg> groupRelationList = new ArrayList();
List<IpCfg> ipRegionList = new ArrayList();
List<StringCfg> strRegionList = new ArrayList();
List<NumBoundaryCfg> numRegionList = new ArrayList();
List<DigestCfg> digestRegionList = new ArrayList();
List<IpCfg> 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<GroupReuseCfg> 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<MaatCfg> configCompileList = new ArrayList();
List<GroupCfg> groupRelationList = new ArrayList();
List<IpCfg> ipRegionList = new ArrayList();
List<StringCfg> strRegionList = new ArrayList();
List<NumBoundaryCfg> numRegionList = new ArrayList();
List<DigestCfg> digestRegionList = new ArrayList();
List<IpCfg> 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<GroupReuseCfg> 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<ComplexkeywordCfg> 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<MaatCfg> 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分组复用新增