appip全量下发逻辑:

1、全量下发
(1)、批量下发已下发过的app的app IP配置(走maat配置下发接口)

appip批量审核逻辑:
1、审核通过
(1)、批量下发已下发过的app的app IP配置(走ip复用接口)
		 批量修改app ip配置状态为已下发
(2)、批量下发未下发过的app的app ip配置(走maat下发接口)
		批量修改group_info为已下发
		批量修改app ip为已下发
2、取消审核通过
(1)、批量失效已下发过的app的app IP配置(走ip复用接口)
		 批量修改app ip配置状态为失效
(2)、未下发过的app不存在已下发的配置,无需处理取消。
This commit is contained in:
DuanDongmei
2018-12-07 10:07:53 +08:00
parent 1c3dc455e3
commit 95dbe2a123
9 changed files with 389 additions and 141 deletions

View File

@@ -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<ConfigGroupInfo> groupInfos=configGroupInfoDao.findAllList(groupInfo);//每一批次下发都取一次最新的group_info信息
Map<Integer, Integer> 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<MaatCfg> configCompileList;
List<GroupCfg> groupRelationList;
@@ -1414,8 +1424,15 @@ public class ConfigSynchronizationService extends BaseService{
List<DigestCfg> digestRegionList;
List<IpCfg> areaIpRegionList;
maatBean = new ToMaatBean();
maatBean = new ToMaatBean();
reuseMaatBean = new GroupReuseAddBean();
configCompileList = new ArrayList();
List<Integer> regionIds= new ArrayList();//存储app ip域id
List<Integer> compileIds= new ArrayList();//存储app compileId
Map<Integer, Integer> compileGroups=new HashMap<>();
compileGroups=entity.getCompileGroupMap();
Integer isIssued=entity.getCompileIsIssued();//批量下发时使用,需要用来判断是否走分组复用接口
//同一编译IP的分组
Map<Integer,List<AppIpCfg>> dataMap=new HashMap<>();
for(int i=0;i<list.size();i++){
@@ -1423,6 +1440,7 @@ public class ConfigSynchronizationService extends BaseService{
BeanUtils.copyProperties(list.get(i), cfg);
cfg.setIsValid(entity.getIsValid());
cfg.setAuditTime(StringUtil.isEmpty(entity.getAuditTime()) ? cfg.getAuditTime():entity.getAuditTime());
cfg.setGroupId(compileGroups.get(cfg.getCompileId()));
if(dataMap.containsKey(cfg.getCompileId())) {
dataMap.get(cfg.getCompileId()).add(cfg);
}else {
@@ -1430,9 +1448,18 @@ public class ConfigSynchronizationService extends BaseService{
ipList.add(cfg);
dataMap.put(cfg.getCompileId(), ipList);
}
if(isUpdateCfg) {
if(!compileIds.contains(cfg.getCompileId())) {
compileIds.add(cfg.getCompileId());
}
if(!StringUtil.isEmpty(cfg.getUserRegion1())) {
regionIds.add(Integer.parseInt(cfg.getUserRegion1()));
}
}
}
for(List<AppIpCfg> 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<GroupReuseCfg> 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 {
//调用服务接口配置全量更新