diff --git a/src/main/java/com/nis/domain/basics/AsnGroupInfo.java b/src/main/java/com/nis/domain/basics/AsnGroupInfo.java new file mode 100644 index 000000000..991714bb4 --- /dev/null +++ b/src/main/java/com/nis/domain/basics/AsnGroupInfo.java @@ -0,0 +1,135 @@ +package com.nis.domain.basics; + +import java.io.Serializable; +import java.util.Date; + +import com.nis.domain.configuration.BaseCfg; +import com.nis.util.excel.ExcelField; + +/** + * @ClassName: AsnGroupInfo.java + * @Description: ASN分组 + * @version V1.0 + */ +public class AsnGroupInfo extends BaseCfg implements Serializable{ + /** + * + */ + private static final long serialVersionUID = 7931466570918016654L; + private Integer groupId; + private Integer orgGroupId; + @ExcelField(title="cfg_id",sort=301) + private Integer compileId; + @ExcelField(title="organization",sort=302) + private String organization; + @ExcelField(title="organization",sort=303) + private String country; + @ExcelField(title="organization",sort=304) + private String detail; + private Integer isValid; + @ExcelField(title="ASN",sort=305) + private Long asnId; + + public Integer getOrgGroupId() { + return orgGroupId; + } + + public void setOrgGroupId(Integer orgGroupId) { + this.orgGroupId = orgGroupId; + } + + public Integer getCompileId() { + return compileId; + } + + public void setCompileId(Integer compileId) { + this.compileId = compileId; + } + + public Integer getGroupId() { + return groupId; + } + + public void setGroupId(Integer groupId) { + this.groupId = groupId; + } + + public String getOrganization() { + return organization; + } + + public void setOrganization(String organization) { + this.organization = organization; + } + + public String getCountry() { + return country; + } + + public void setCountry(String country) { + this.country = country; + } + + public String getDetail() { + return detail; + } + + public void setDetail(String detail) { + this.detail = detail; + } + + public Integer getIsValid() { + return isValid; + } + + public void setIsValid(Integer isValid) { + this.isValid = isValid; + } + + public Date getCreateTime() { + return createTime; + } + + public void setCreateTime(Date createTime) { + this.createTime = createTime; + } + + public Long getCreatorId() { + return creatorId; + } + + public void setCreatorId(Long creatorId) { + this.creatorId = creatorId; + } + + public Date getEditTime() { + return editTime; + } + + public void setEditTime(Date editTime) { + this.editTime = editTime; + } + + public Long getEditorId() { + return editorId; + } + + public void setEditorId(Long editorId) { + this.editorId = editorId; + } + + public Long getAsnId() { + return asnId; + } + + public void setAsnId(Long asnId) { + this.asnId = asnId; + } + + @Override + public String toString() { + // TODO Auto-generated method stub + return super.toString(); + } + +} diff --git a/src/main/java/com/nis/domain/basics/AsnIpCfg.java b/src/main/java/com/nis/domain/basics/AsnIpCfg.java index 7d5703ac7..447e71c34 100644 --- a/src/main/java/com/nis/domain/basics/AsnIpCfg.java +++ b/src/main/java/com/nis/domain/basics/AsnIpCfg.java @@ -28,7 +28,7 @@ public class AsnIpCfg extends BaseCfg { private Integer portPattern; private String srcPort; private String destPort; - @ExcelField(title="group",sort=2) + //@ExcelField(title="group",sort=2) private String asnIpGroupName;//asn组名 private Integer asnIpGroup;//asn组号 /** @@ -48,9 +48,39 @@ public class AsnIpCfg extends BaseCfg { @ExcelField(title="is_issued",dictType="VALID_IDENTIFIER",sort=90) private String isIssued; + @ExcelField(title="organization",sort=91) + private String organization; + @ExcelField(title="country",sort=92) + private String country; + @ExcelField(title="detail",sort=93) + private String detail; + private String userregion1; - + public String getUserregion1() { + return userregion1; + } + public void setUserregion1(String userregion1) { + this.userregion1 = userregion1; + } + public String getOrganization() { + return organization; + } + public void setOrganization(String organization) { + this.organization = organization; + } + public String getCountry() { + return country; + } + public void setCountry(String country) { + this.country = country; + } + public String getDetail() { + return detail; + } + public void setDetail(String detail) { + this.detail = detail; + } public String getIsIssued() { return isIssued; } diff --git a/src/main/java/com/nis/domain/configuration/BaseIpCfg.java b/src/main/java/com/nis/domain/configuration/BaseIpCfg.java index 864c34c6a..520b91f31 100644 --- a/src/main/java/com/nis/domain/configuration/BaseIpCfg.java +++ b/src/main/java/com/nis/domain/configuration/BaseIpCfg.java @@ -72,7 +72,28 @@ public class BaseIpCfg extends BaseCfg { protected String antiddosProtocol;//仅用于copy属性使用 protected Long bpsThreadshold;//仅用于copy属性使用 protected Long ppsThreadshold;//仅用于copy属性使用 + protected String organization; //仅用于copy属性使用 + protected String country; //仅用于copy属性使用 + protected String detail; //仅用于copy属性使用 + public String getOrganization() { + return organization; + } + public void setOrganization(String organization) { + this.organization = organization; + } + public String getCountry() { + return country; + } + public void setCountry(String country) { + this.country = country; + } + public String getDetail() { + return detail; + } + public void setDetail(String detail) { + this.detail = detail; + } public String getAntiddosProtocol() { return antiddosProtocol; } diff --git a/src/main/java/com/nis/domain/configuration/CfgIndexInfo.java b/src/main/java/com/nis/domain/configuration/CfgIndexInfo.java index 9a1d31108..a5cacb998 100644 --- a/src/main/java/com/nis/domain/configuration/CfgIndexInfo.java +++ b/src/main/java/com/nis/domain/configuration/CfgIndexInfo.java @@ -11,8 +11,7 @@ package com.nis.domain.configuration; import java.util.List; import java.util.Map; -import org.apache.ibatis.cache.CacheKey; - +import com.nis.domain.basics.AsnGroupInfo; import com.nis.domain.basics.AsnIpCfg; import com.nis.domain.basics.IpReuseIpCfg; import com.nis.util.excel.ExcelField; @@ -81,6 +80,10 @@ public class CfgIndexInfo extends BaseCfg { private String searchKeywords;// 列表关键字查询字段 private Map userRegion; + private String organization; + private String country; + private String detail; + private List asnGroups; /*private CachePolicyUserRegion cachePolicyUserRegion;//缓存策略用户自定义域参数 @@ -92,6 +95,30 @@ public class CfgIndexInfo extends BaseCfg { }*/ + public List getAsnGroups() { + return asnGroups; + } + public void setAsnGroups(List asnGroups) { + this.asnGroups = asnGroups; + } + public String getOrganization() { + return organization; + } + public void setOrganization(String organization) { + this.organization = organization; + } + public String getCountry() { + return country; + } + public void setCountry(String country) { + this.country = country; + } + public String getDetail() { + return detail; + } + public void setDetail(String detail) { + this.detail = detail; + } public Integer getSourceCompileId() { return sourceCompileId; } diff --git a/src/main/java/com/nis/domain/configuration/template/AsnIpTemplate.java b/src/main/java/com/nis/domain/configuration/template/AsnIpTemplate.java index 396a07f93..50f53e26f 100644 --- a/src/main/java/com/nis/domain/configuration/template/AsnIpTemplate.java +++ b/src/main/java/com/nis/domain/configuration/template/AsnIpTemplate.java @@ -16,8 +16,11 @@ public class AsnIpTemplate extends BasicTemplate{ private String cfgDesc; private String userRegion1; private String destIpAddress; + private String organization; + private String country; + private String detail; - @ExcelField(title="config_describe",align=2,sort=1) +// @ExcelField(title="config_describe",align=2,sort=1) public String getCfgDesc() { return cfgDesc; } @@ -39,4 +42,26 @@ public class AsnIpTemplate extends BasicTemplate{ public void setDestIpAddress(String destIpAddress) { this.destIpAddress = destIpAddress; } + @ExcelField(title="organization",align=2,sort=1) + public String getOrganization() { + return organization; + } + public void setOrganization(String organization) { + this.organization = organization; + } + @ExcelField(title="country",align=2,sort=14) + public String getCountry() { + return country; + } + public void setCountry(String country) { + this.country = country; + } + @ExcelField(title="detail",align=2,sort=13) + public String getDetail() { + return detail; + } + public void setDetail(String detail) { + this.detail = detail; + } + } diff --git a/src/main/java/com/nis/util/AsnCacheUtils.java b/src/main/java/com/nis/util/AsnCacheUtils.java index bb4b8b547..858949a91 100644 --- a/src/main/java/com/nis/util/AsnCacheUtils.java +++ b/src/main/java/com/nis/util/AsnCacheUtils.java @@ -8,8 +8,8 @@ import org.apache.log4j.Logger; import org.apache.shiro.cache.Cache; import com.beust.jcommander.internal.Lists; -import com.nis.domain.specific.ConfigGroupInfo; -import com.nis.web.dao.specific.ConfigGroupInfoDao; +import com.nis.domain.basics.AsnGroupInfo; +import com.nis.web.dao.basics.AsnGroupInfoDao; import com.nis.web.service.SpringContextHolder; import jersey.repackaged.com.google.common.collect.Maps; @@ -26,40 +26,40 @@ public class AsnCacheUtils{ */ private static final String ASN_NO_CACHE = "asnNoCache"; private static final int cache_rage = 1000; - private final static ConfigGroupInfoDao configGroupInfoDao = SpringContextHolder.getBean(ConfigGroupInfoDao.class); + private final static AsnGroupInfoDao configGroupInfoDao = SpringContextHolder.getBean(AsnGroupInfoDao.class); /** * 获取缓存 * @param cacheName * @param key * @return */ - public static ConfigGroupInfo get(Long key) { + public static AsnGroupInfo get(Long key) { Cache cache = getCache(ASN_NO_CACHE); Object element = cache.get(key/cache_rage); // Element element = getCache(ASN_NO_CACHE).get(key/cache_rage); if(element!=null) { - Map map=(Map)element; + Map map=(Map)element; if(map.containsKey(key)) { return map.get(key); } } return null; } - public static Map getMap(Object key) { + public static Map getMap(Object key) { Object element = getCache(ASN_NO_CACHE).get(key); - return (Map)element; + return (Map)element; } public static void clearCache() { logger.warn("clear cache!"); getCache(ASN_NO_CACHE).clear(); } - public static List getAllAsnGroup(){ - List configGroupInfos=Lists.newArrayList(); + public static List getAllAsnGroup(){ + List configGroupInfos=Lists.newArrayList(); Cache cache=getCache(ASN_NO_CACHE); for(Object val : cache.values()) { if(val!=null) { - Map map=(Map)val; + Map map=(Map)val; configGroupInfos.addAll(map.values()); } } @@ -77,31 +77,32 @@ public class AsnCacheUtils{ logger.warn("AsnCacheUtils init start..."); Cache cache=getCache(ASN_NO_CACHE); if(force) { - List list=configGroupInfoDao.findAllList(4); - Map> groupMap=Maps.newHashMap(); - for(ConfigGroupInfo configGroupInfo:list) { + cache.clear(); + List list=configGroupInfoDao.findAsnGroupInfos(); + Map> groupMap=Maps.newHashMap(); + for(AsnGroupInfo configGroupInfo:list) { if(groupMap.containsKey(configGroupInfo.getAsnId()/cache_rage)) { groupMap.get(configGroupInfo.getAsnId()/cache_rage) .put(configGroupInfo.getAsnId(), configGroupInfo); }else { - Map m=Maps.newHashMap(); + Map m=Maps.newHashMap(); m.put(configGroupInfo.getAsnId(), configGroupInfo); groupMap.put(configGroupInfo.getAsnId()/cache_rage, m); } } - for(Entry> e:groupMap.entrySet()) { + for(Entry> e:groupMap.entrySet()) { cache.put(e.getKey(),e.getValue()); } }else { //查询总量 - Long count=configGroupInfoDao.getCountByType(4); + Long count=configGroupInfoDao.getCount(); boolean loadDatabase=false; if(cache.keys().size()==0) { loadDatabase=true; }else { long c=0l; for(Object key:cache.keys()) { - Map map = getMap(key); + Map map = getMap(key); if(map != null) { c+=getMap(key).size(); } @@ -111,19 +112,19 @@ public class AsnCacheUtils{ } } if(loadDatabase) { - List list=configGroupInfoDao.findAllList(4); - Map> groupMap=Maps.newHashMap(); - for(ConfigGroupInfo configGroupInfo:list) { + List list=configGroupInfoDao.findAsnGroupInfos(); + Map> groupMap=Maps.newHashMap(); + for(AsnGroupInfo configGroupInfo:list) { if(groupMap.containsKey(configGroupInfo.getAsnId()/cache_rage)) { groupMap.get(configGroupInfo.getAsnId()/cache_rage) .put(configGroupInfo.getAsnId(), configGroupInfo); }else { - Map m=Maps.newHashMap(); + Map m=Maps.newHashMap(); m.put(configGroupInfo.getAsnId(), configGroupInfo); groupMap.put(configGroupInfo.getAsnId()/cache_rage, m); } } - for(Entry> e:groupMap.entrySet()) { + for(Entry> e:groupMap.entrySet()) { cache.put(e.getKey(), e.getValue()); } } @@ -137,15 +138,15 @@ public class AsnCacheUtils{ * @param key * @return */ - public static void put(Long key, ConfigGroupInfo value) { + public static void put(Long key, AsnGroupInfo value) { Long _key=key/cache_rage; Object element = getCache(ASN_NO_CACHE).get(_key); if(element==null) { - Map map=Maps.newHashMap(); + Map map=Maps.newHashMap(); map.put(key, value); getCache(ASN_NO_CACHE).put(_key,map); }else { - Map map=(Map)element; + Map map=(Map)element; map.put(key, value); getCache(ASN_NO_CACHE).put(_key,map); } @@ -162,7 +163,7 @@ public class AsnCacheUtils{ Long _key=key/cache_rage; Object element = getCache(ASN_NO_CACHE).get(_key); if(element!=null) { - Map map=(Map)element; + Map map=(Map)element; if(map.containsKey(key)) { map.remove(key); } diff --git a/src/main/java/com/nis/util/Constants.java b/src/main/java/com/nis/util/Constants.java index c8a5836d5..05b1177dd 100644 --- a/src/main/java/com/nis/util/Constants.java +++ b/src/main/java/com/nis/util/Constants.java @@ -12,6 +12,7 @@ public final class Constants { * 导入条数限制 */ public static final int IMPORT_LIMIT=Configurations.getIntProperty("import_limit",10000); + public static final Object IMPORT_LOCK=new Object(); public static final String GROUP_REUSE_SOURCES=Configurations.getStringProperty("groupReuseSources","groupReuseSources"); public static Integer APP_SPEC_SERVICE_CODE_MIN_VAL=Configurations.getIntProperty("app_spec_service_code_min_val", 300001); public static Integer APP_SPEC_SERVICE_CODE_MAX_VAL=Configurations.getIntProperty("app_spec_service_code_max_val", 268435455); diff --git a/src/main/java/com/nis/util/excel/ExcelCsv.java b/src/main/java/com/nis/util/excel/ExcelCsv.java index 6ddc09f38..0024e5036 100644 --- a/src/main/java/com/nis/util/excel/ExcelCsv.java +++ b/src/main/java/com/nis/util/excel/ExcelCsv.java @@ -416,6 +416,9 @@ public class ExcelCsv { // 写入文件头部 for (String title : titles) { StringBuffer sb = new StringBuffer(); + if(isDate(title)){ + title=title + "\t"; + } String rowStr = sb.append("\"").append(title).append("\",").toString(); csvWriter.write(rowStr); } @@ -437,9 +440,9 @@ public class ExcelCsv { tag = tag.replace("\"", ""); } // \t解决数字0开头字符串,0显示不出来的问题,比如邮编 - if(tag.startsWith("0") && !tag.contains(".")){ + /*if(tag.startsWith("0") && !tag.contains(".")){ tag = tag + "\t"; - } + }*/ if(isDate(tag)){ tag=tag + "\t"; } @@ -509,18 +512,70 @@ public class ExcelCsv { public static boolean isDate(String strDate) { Pattern pattern = Pattern .compile("^((\\d{2}(([02468][048])|([13579][26]))[\\-\\/\\s]?((((0?[13578])|(1[02]))[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])|(3[01])))|(((0?[469])|(11))[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])|(30)))|(0?2[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])))))|(\\d{2}(([02468][1235679])|([13579][01345789]))[\\-\\/\\s]?((((0?[13578])|(1[02]))[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])|(3[01])))|(((0?[469])|(11))[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])|(30)))|(0?2[\\-\\/\\s]?((0?[1-9])|(1[0-9])|(2[0-8]))))))(\\s(((0?[0-9])|([1-2][0-3]))\\:([0-5]?[0-9])((\\s)|(\\:([0-5]?[0-9])))))?$"); - if(strDate.trim().length()>= 10){ - String date=strDate.trim().substring(0, 10); - Matcher m = pattern.matcher(date); - if (m.matches()) { - return true; - } else { - return false; - } + boolean flag=false; + if(strDate.trim().length()>=10){ + strDate=strDate.trim().substring(0, 10); + Matcher m = pattern.matcher(strDate); + if (m.matches()) { + return true; + } else { + return false; + } }else{ - return false; + if(strDate.trim().length()==7){ + pattern = Pattern.compile("^\\d{4}-\\d{2}$"); + Matcher m = pattern.matcher(strDate); + if (m.matches()) { + return true; + } else { + return false; + } + }else{ + return false; + } } } + + public static void ajaxCSVFile(HttpServletResponse response,ListtitleList,List>dataMap,String fileName, + String titleTime,Properties msgProp) { + try { + // 写入临时文件 + File tempFile = File.createTempFile("vehicle", ".csv"); + cs = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(tempFile), "utf-8"), 1024); + cs.write(new String(bom, charset)); + //写入时间范围 + if(!StringUtils.isEmpty(titleTime)){ + cs.write(titleTime); + cs.newLine(); + } + // 写入文件头部 + writeHead(titleList, cs); + // 写入文件内容 + for (List row: dataMap) { + writeRow(row, cs); + } + cs.flush(); + OutputStream out = response.getOutputStream(); + byte[] b = new byte[10240]; + File fileLoad = new File(tempFile.getCanonicalPath()); + response.reset(); + response.setContentType("application/octet-stream; charset=utf-8"); + response.setHeader("Content-Disposition", "attachment; filename="+fileName); + long fileLength = fileLoad.length(); + String length1 = String.valueOf(fileLength); + response.setHeader("Content_Length", length1); + FileInputStream in = new FileInputStream(fileLoad); + int n; + while ((n = in.read(b)) != -1) { + out.write(b, 0, n); // 每次写入out1024字节 + } + in.close(); + out.close(); + deleteFile(tempFile); + } catch (Exception e) { + e.printStackTrace(); + } + } } \ No newline at end of file diff --git a/src/main/java/com/nis/util/excel/thread/CheckIpFormatThread.java b/src/main/java/com/nis/util/excel/thread/CheckIpFormatThread.java index 5d849ba57..b7b0e55db 100644 --- a/src/main/java/com/nis/util/excel/thread/CheckIpFormatThread.java +++ b/src/main/java/com/nis/util/excel/thread/CheckIpFormatThread.java @@ -18,13 +18,13 @@ import com.beust.jcommander.internal.Lists; import com.nis.domain.FunctionRegionDict; import com.nis.domain.FunctionServiceDict; import com.nis.domain.SysDataDictionaryItem; +import com.nis.domain.basics.AsnGroupInfo; import com.nis.domain.basics.PolicyGroupInfo; import com.nis.domain.configuration.BaseIpCfg; import com.nis.domain.configuration.DnsResStrategy; import com.nis.domain.configuration.IpPortCfg; import com.nis.domain.configuration.template.IpRateLimitTemplate; -import com.nis.domain.specific.ConfigGroupInfo; -import com.nis.util.AsnCacheUtils; +//import com.nis.util.AsnCacheUtils; import com.nis.util.Constants; import com.nis.util.DictUtils; @@ -36,7 +36,8 @@ public class CheckIpFormatThread implements Callable{ // private DnsResStrategyService dnsResStrategyService; private FunctionServiceDict serviceDict; private FunctionRegionDict regionDict; - private List> asnNoMaps; + private List> asnNoMaps; + private Map asnGroupInfos; // private DnsResStrategyDao dnsResStrategyDao; public CheckIpFormatThread(FunctionServiceDict serviceDict,FunctionRegionDict regionDict,Properties prop,BlockingQueue srcQueue,BlockingQueue destQueue) { this.serviceDict=serviceDict; @@ -68,7 +69,7 @@ public class CheckIpFormatThread implements Callable{ } return msg.toString(); } - public List checkIpCfg(StringBuffer msg,List> asnNos, List list) + public List checkIpCfg(StringBuffer msg,List> asnNos, List list) throws ServiceException { logger.warn("start to validate ip..."); long start=System.currentTimeMillis(); @@ -104,7 +105,7 @@ public class CheckIpFormatThread implements Callable{ IpPortCfg baseIpCfg = new IpPortCfg(); BeanUtils.copyProperties(list.get(i), baseIpCfg); // 配置描述长度限制 - if(baseIpCfg.getCfgDesc().length() > 128) { + if(baseIpCfg.getCfgDesc()!=null&&baseIpCfg.getCfgDesc().length() > 128) { errInfo.append(prop.getProperty("config_describe")+prop.getProperty("length_error")+" "+String.format(prop.getProperty("max_length")+":128") + ";"); } @@ -231,6 +232,18 @@ public class CheckIpFormatThread implements Callable{ errInfo.append( String.format(prop.getProperty("can_not_null"), prop.getProperty("asn_no")) + ";"); + }else if(StringUtils.isBlank(baseIpCfg.getOrganization())){ + errInfo.append( + String.format(prop.getProperty("can_not_null"), prop.getProperty("organization","Organization")) + + ";"); + }else if(StringUtils.isBlank(baseIpCfg.getCountry())){ + errInfo.append( + String.format(prop.getProperty("can_not_null"), prop.getProperty("country","Country")) + + ";"); + }else if(StringUtils.isBlank(baseIpCfg.getDetail())){ + errInfo.append( + String.format(prop.getProperty("can_not_null"), prop.getProperty("detail","Detail")) + + ";"); }else { try { Long asnNo=Long.parseLong(userRegion1); @@ -240,13 +253,32 @@ public class CheckIpFormatThread implements Callable{ + ";"); }else { // ConfigGroupInfo configGroupInfo=asnIpCfgService.getConfigGroupInfoByAsnNo(asnNo); - ConfigGroupInfo configGroupInfo=AsnCacheUtils.get(asnNo); if(asnNos!=null) { + AsnGroupInfo configGroupInfo=asnGroupInfos==null?null:asnGroupInfos.get(asnNo);//从缓存中取 //缓存中没有 if(configGroupInfo==null) { - asnNos.get(0).put(asnNo,-1); + synchronized (Constants.IMPORT_LOCK) { + AsnGroupInfo groupInfo=new AsnGroupInfo(); + groupInfo.setOrganization(baseIpCfg.getOrganization().trim()); + groupInfo.setCountry(baseIpCfg.getCountry().trim()); + groupInfo.setDetail(baseIpCfg.getDetail().trim()); + groupInfo.setIsValid(0); + groupInfo.setAsnId(asnNo); + asnNos.get(0).put(asnNo,groupInfo); + } }else { - asnNos.get(1).put(asnNo,configGroupInfo.getGroupId()); + if(!configGroupInfo.getOrganization().equals(baseIpCfg.getOrganization().trim())) { + errInfo.append(prop.getProperty("organization","Organization")+" "+prop.getProperty("mismatch","Mismatch")); + } + if(!configGroupInfo.getCountry().equals(baseIpCfg.getCountry().trim())) { + errInfo.append(prop.getProperty("country","Country")+" "+prop.getProperty("mismatch","Mismatch")); + } + if(!configGroupInfo.getDetail().equals(baseIpCfg.getDetail().trim())) { + errInfo.append(prop.getProperty("detail","Detail")+" "+prop.getProperty("mismatch","Mismatch")); + } + if(StringUtils.isBlank(errInfo.toString())) { + asnNos.get(1).put(asnNo,configGroupInfo); + } } } } @@ -259,6 +291,28 @@ public class CheckIpFormatThread implements Callable{ + ";"); } } + String organization=baseIpCfg.getOrganization(); + if(StringUtils.isBlank(organization)) { + errInfo.append( + String.format(prop.getProperty("can_not_null"), prop.getProperty("organization","Organization")) + + ";"); + }else { + baseIpCfg.setCfgDesc(organization); + + } + String country=baseIpCfg.getCountry(); + if(StringUtils.isBlank(country)) { + errInfo.append( + String.format(prop.getProperty("can_not_null"), prop.getProperty("country")) + + ";"); + } + String detail=baseIpCfg.getDetail(); + if(StringUtils.isBlank(detail)) { + errInfo.append( + String.format(prop.getProperty("can_not_null"), prop.getProperty("detail")) + + ";"); + } + } if (regionDict.getFunctionId().equals(301)) { String antiddosProtocol=baseIpCfg.getAntiddosProtocol(); @@ -641,7 +695,6 @@ public class CheckIpFormatThread implements Callable{ baseIpCfg.setSrcPort("0"); baseIpCfg.setPortPattern(1); } - baseIpCfg.setDestPort(baseIpCfg.getSrcPort().trim()); } else { if (baseIpCfg.getSrcPort().indexOf("/") > -1) { baseIpCfg.setPortPattern(2); @@ -649,9 +702,8 @@ public class CheckIpFormatThread implements Callable{ baseIpCfg.setPortPattern(1); } baseIpCfg.setSrcPort(baseIpCfg.getSrcPort().trim()); - baseIpCfg.setDestPort(baseIpCfg.getDestPort().trim()); - } + baseIpCfg.setDestPort(baseIpCfg.getDestPort().trim()); } // TODO 判断源端口和目的端口格式 // TODO 判断源和目的端口的值 @@ -1140,11 +1192,17 @@ public class CheckIpFormatThread implements Callable{ return matchType; } - public List> getAsnNoMaps() { + public List> getAsnNoMaps() { return asnNoMaps; } - public void setAsnNoMaps(List> asnNoMaps) { + public void setAsnNoMaps(List> asnNoMaps) { this.asnNoMaps = asnNoMaps; } + public Map getAsnGroupInfos() { + return asnGroupInfos; + } + public void setAsnGroupInfos(Map asnGroupInfos) { + this.asnGroupInfos = asnGroupInfos; + } } diff --git a/src/main/java/com/nis/util/excel/thread/DeleteAsnIpTread.java b/src/main/java/com/nis/util/excel/thread/DeleteAsnIpTread.java index cb8fcdae3..95b12913d 100644 --- a/src/main/java/com/nis/util/excel/thread/DeleteAsnIpTread.java +++ b/src/main/java/com/nis/util/excel/thread/DeleteAsnIpTread.java @@ -1,7 +1,6 @@ package com.nis.util.excel.thread; import java.util.List; -import java.util.concurrent.ArrayBlockingQueue; import java.util.concurrent.BlockingQueue; import java.util.concurrent.Callable; import java.util.concurrent.LinkedBlockingQueue; @@ -12,10 +11,12 @@ import org.springframework.transaction.TransactionStatus; import org.springframework.transaction.support.DefaultTransactionDefinition; import com.beust.jcommander.internal.Lists; +import com.nis.domain.basics.AsnGroupInfo; import com.nis.domain.basics.AsnIpCfg; import com.nis.domain.specific.ConfigGroupInfo; import com.nis.util.AsnCacheUtils; import com.nis.util.Constants; +import com.nis.web.dao.basics.AsnGroupInfoDao; import com.nis.web.dao.basics.AsnIpCfgDao; import com.nis.web.dao.specific.ConfigGroupInfoDao; import com.nis.web.service.SpringContextHolder; @@ -23,10 +24,12 @@ import com.nis.web.service.basics.AsnIpCfgService; public class DeleteAsnIpTread implements Callable { private BlockingQueue asnNos; + private AsnGroupInfoDao asnGroupInfoDao; private ConfigGroupInfoDao configGroupInfoDao; private AsnIpCfgDao asnIpCfgDao; public DeleteAsnIpTread(BlockingQueue asnNos) { this.asnNos=asnNos; + this.asnGroupInfoDao=SpringContextHolder.getBean(AsnGroupInfoDao.class); this.configGroupInfoDao=SpringContextHolder.getBean(ConfigGroupInfoDao.class); this.asnIpCfgDao=SpringContextHolder.getBean(AsnIpCfgDao.class); } @@ -37,20 +40,29 @@ public class DeleteAsnIpTread implements Callable { List asnIds=Lists.newArrayList(); DataSourceTransactionManager transactionManager=(DataSourceTransactionManager)SpringContextHolder.getBean("transactionManager"); LinkedBlockingQueue toDelAndSendAsnIpCfgs=new LinkedBlockingQueue(); + List configGroupInfos=configGroupInfoDao.findAllList(4); while(!asnNos.isEmpty()) { asnNos.drainTo(asnNoList,5); for(Long asnNo:asnNoList) { - ConfigGroupInfo configGroupInfo=AsnCacheUtils.get(asnNo); + AsnGroupInfo configGroupInfo=AsnCacheUtils.get(asnNo); if(configGroupInfo==null) { - configGroupInfo=configGroupInfoDao.getInfoByAsnNo(asnNo); + configGroupInfo=new AsnGroupInfo(); + configGroupInfo.setAsnId(asnNo); + configGroupInfo=asnGroupInfoDao.getInfoByAsnNo(configGroupInfo); } - if(configGroupInfo.getIsIssued()==1) {//已下发 - List _toDelAsnIpCfgs=asnIpCfgDao.getByAsnNo(configGroupInfo.getAsnId()); - toDelAndSendAsnIpCfgs.addAll(_toDelAsnIpCfgs); - }else { - asnIds.add(asnNo); + for(ConfigGroupInfo cinfo:configGroupInfos) { + if(cinfo.getGroupId().intValue()==configGroupInfo.getGroupId().intValue()) { + if(cinfo.getIsIssued()==1) {//已下发 + List _toDelAsnIpCfgs=asnIpCfgDao.getByAsnNo(configGroupInfo.getAsnId()); + toDelAndSendAsnIpCfgs.addAll(_toDelAsnIpCfgs); + }else { + asnIds.add(asnNo); + } + break; + } } + } if(asnIds.size()>0) { this.deleteByAsnNo(asnIds); @@ -102,7 +114,7 @@ public class DeleteAsnIpTread implements Callable { } int result=0; do { - result=asnIpCfgDao.deleteByAsnGroup(asnNoStr.toString().substring(0,asnNoStr.toString().length()-1)); + result=asnIpCfgDao.deleteByAsnId(asnNoStr.toString().substring(0,asnNoStr.toString().length()-1)); }while(result>0); //剔除 asnNoList.subList(0, pointsDataLimit).clear(); @@ -115,7 +127,7 @@ public class DeleteAsnIpTread implements Callable { } int result=0; do { - result=asnIpCfgDao.deleteByAsnGroup(asnNoStr.toString().substring(0,asnNoStr.toString().length()-1)); + result=asnIpCfgDao.deleteByAsnId(asnNoStr.toString().substring(0,asnNoStr.toString().length()-1)); }while(result>0); asnNoList.clear(); } @@ -127,7 +139,7 @@ public class DeleteAsnIpTread implements Callable { } int result=0; do { - result=asnIpCfgDao.deleteByAsnGroup(asnNoStr.toString().substring(0,asnNoStr.toString().length()-1)); + result=asnIpCfgDao.deleteByAsnId(asnNoStr.toString().substring(0,asnNoStr.toString().length()-1)); }while(result>0); asnNoList.clear(); } diff --git a/src/main/java/com/nis/util/excel/thread/SaveAsnIpThread.java b/src/main/java/com/nis/util/excel/thread/SaveAsnIpThread.java index 3ee0d719d..1ba4ffb38 100644 --- a/src/main/java/com/nis/util/excel/thread/SaveAsnIpThread.java +++ b/src/main/java/com/nis/util/excel/thread/SaveAsnIpThread.java @@ -18,17 +18,16 @@ import org.springframework.transaction.support.DefaultTransactionDefinition; import com.beust.jcommander.internal.Lists; import com.nis.domain.FunctionRegionDict; import com.nis.domain.FunctionServiceDict; +import com.nis.domain.basics.AsnGroupInfo; import com.nis.domain.basics.AsnIpCfg; -import com.nis.domain.basics.Varibles; import com.nis.domain.configuration.BaseIpCfg; -import com.nis.domain.specific.ConfigGroupInfo; import com.nis.exceptions.MaatConvertException; import com.nis.util.AsnCacheUtils; import com.nis.util.ConfigServiceUtil; import com.nis.util.Constants; import com.nis.util.StringUtil; +import com.nis.web.dao.basics.AsnGroupInfoDao; import com.nis.web.dao.basics.AsnIpCfgDao; -import com.nis.web.dao.specific.ConfigGroupInfoDao; import com.nis.web.security.UserUtils; import com.nis.web.service.SpringContextHolder; import com.nis.web.service.basics.AsnIpCfgService; @@ -42,7 +41,7 @@ public class SaveAsnIpThread implements Callable{ private List> asnNoMaps; private Integer requestId; private AsnIpCfgDao asnIpCfgDao; - private ConfigGroupInfoDao configGroupInfoDao; + private AsnGroupInfoDao configGroupInfoDao; // private AsnIpCfgService asnIpCfgService; public SaveAsnIpThread(FunctionServiceDict serviceDict,FunctionRegionDict regionDict,Integer requestId,BlockingQueue ipPortCfgs) { this.serviceDict=serviceDict; @@ -50,7 +49,7 @@ public class SaveAsnIpThread implements Callable{ this.ipPortCfgs=ipPortCfgs; this.requestId=requestId; this.asnIpCfgDao=SpringContextHolder.getBean(AsnIpCfgDao.class); - this.configGroupInfoDao=SpringContextHolder.getBean(ConfigGroupInfoDao.class); + this.configGroupInfoDao=SpringContextHolder.getBean(AsnGroupInfoDao.class); } @Override public Throwable call() { @@ -113,9 +112,11 @@ public class SaveAsnIpThread implements Callable{ _cfg.setAsnIpGroup(asnNoMaps.get(1).get(Long.parseLong(_cfg.getUserRegion1()))); }else { // ConfigGroupInfo info=asnIpCfgService.getConfigGroupInfoByAsnNo(Long.parseLong(_cfg.getUserRegion1())); - ConfigGroupInfo info=AsnCacheUtils.get(Long.parseLong(_cfg.getUserRegion1())); + AsnGroupInfo info=AsnCacheUtils.get(Long.parseLong(_cfg.getUserRegion1())); if(info==null) { - info=configGroupInfoDao.getInfoByAsnNo(Long.parseLong(_cfg.getUserRegion1())); + info=new AsnGroupInfo(); + info.setAsnId(Long.parseLong(_cfg.getUserRegion1())); + info=configGroupInfoDao.getInfoByAsnNo(info); } _cfg.setAsnIpGroup(info.getGroupId()); } diff --git a/src/main/java/com/nis/web/controller/basics/AsnGroupController.java b/src/main/java/com/nis/web/controller/basics/AsnGroupController.java new file mode 100644 index 000000000..2f90cd108 --- /dev/null +++ b/src/main/java/com/nis/web/controller/basics/AsnGroupController.java @@ -0,0 +1,157 @@ +package com.nis.web.controller.basics; + +import java.util.Properties; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import org.apache.commons.lang.StringUtils; +import org.springframework.stereotype.Controller; +import org.springframework.ui.Model; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.servlet.mvc.support.RedirectAttributes; + +import com.nis.domain.Page; +import com.nis.domain.basics.AsnGroupInfo; +import com.nis.util.StringUtil; +import com.nis.web.controller.BaseController; +/** + * 协议分组 + * @author dell + * + */ +@Controller +@RequestMapping(value = "${adminPath}/basics/asnGroup") +public class AsnGroupController extends BaseController { + + //@RequiresPermissions(value={"basics:asnGroup:view"},logical=Logical.OR) + @RequestMapping(value = {"/asnGroupList", ""}) + public String asnGroupList(AsnGroupInfo cfg,HttpServletRequest request + , HttpServletResponse response, Model model + ,RedirectAttributes redirectAttributes) { + if(cfg == null)cfg=new AsnGroupInfo(); + Page pageCondition = new Page(request, response,"r"); + + Page page = asnGroupInfoService.findAsnGroupInfoList(pageCondition,cfg); + model.addAttribute("cfg", cfg); + model.addAttribute("page", page); + return "/basics/asnGroupList"; + } + + + /** + * 进入添加或修改页面 + * @param serviceDictInfo + * @param model + * @return + */ + //@RequiresPermissions(value={"basics:classification:add","basics:attribute:add","basics:label:add","basics:classification:edit","basics:attribute:edit","basics:label:edit","basics:classification:view","basics:attribute:view","basics:label:view"},logical=Logical.OR) + @RequestMapping(value={"/asnGroupForm"}) + public String form(String ids,Model model,String doAction,RedirectAttributes redirectAttributes) { + AsnGroupInfo asnGroup=new AsnGroupInfo(); + if(!StringUtil.isEmpty(ids)){ + asnGroup=asnGroupInfoService.getById(Integer.parseInt(ids)); + } + model.addAttribute("_cfg", asnGroup); + return "/basics/asnGroupForm"; + } + /** + * 新增或修改 + * @return + */ + //@RequiresPermissions(value={"basics:classification:add","basics:attribute:add","basics:label:add","basics:classification:edit","basics:attribute:edit","basics:label:edit"},logical=Logical.OR) + @RequestMapping(value = "saveOrUpdate") + public String saveOrUpdate(AsnGroupInfo cfg,Model model, + RedirectAttributes redirectAttributes,String itType) { + + try { + AsnGroupInfo asnGroup=asnGroupInfoService.getGroupIdByNameAndASNId(cfg.getOrganization().trim(), cfg.getCountry().trim(), cfg.getAsnId()); + if(asnGroup!=null) { + Properties props=this.getMsgProp(); + addMessage(redirectAttributes,"error","ASN "+props.getProperty("repeat", "Repeat")); + } + asnGroupInfoService.saveOrUpdate(cfg); + addMessage(redirectAttributes,"success","save_success"); + } catch (Exception e) { + logger.error("新增失败",e); + addMessage(redirectAttributes,"error","save_failed"); + } + + return "redirect:" + adminPath + "/basics/asnGroup/asnGroupList"; + + + } + + + /** + * 删除 + * @return + */ + //@RequiresPermissions(value={"basics:classification:del","basics:attribute:del","basics:label:del"},logical=Logical.OR) + @RequestMapping(value={"delete"}) + public String delete(RedirectAttributes redirectAttributes,String ids,String asnIds) { + try { + asnGroupInfoService.delete(ids,asnIds); + addMessage(redirectAttributes,"success","delete_success"); + } catch (Exception e) { + logger.error("删除失败",e); + addMessage(redirectAttributes,"error","delete_failed"); + } + return "redirect:" + adminPath + "/basics/asnGroup/asnGroupList"; + } + @RequestMapping(value="ajaxGetAuditedIP",method=RequestMethod.POST) + @ResponseBody + public boolean ajaxGetAuditedIP(Model model,@RequestParam(required=true,value="asnIds")String asnIds){ + if(StringUtils.isNotBlank(asnIds)) { + return asnGroupInfoService.checkIps(asnIds); + } + return false; + } + @RequestMapping(value="asnGroupName",method=RequestMethod.POST) + @ResponseBody + public Integer asnGroupName(Model model,@RequestParam(required=true,value="id")Long id,@RequestParam(required=true,value="organization")String organization,@RequestParam(required=true,value="country")String country, + @RequestParam(required=true,value="detail")String detail,@RequestParam(required=true,value="asnId")Long asnId){ + if(StringUtils.isNotBlank(organization)) { + AsnGroupInfo info= asnGroupInfoService.getGroupIdByNameAndASNId(organization,country,asnId); + if(info==null) { + return 0; + }else if(id!=null&&info.getId().longValue()==id.longValue()){ + return 0; + }else if(id!=null&&info.getId().longValue()!=id.longValue()){ + return 1; + } + } + return 0; + } +// @RequestMapping(value="asnGroupName1",method=RequestMethod.POST) +// @ResponseBody +// public String asnGroupName1(Model model,@RequestParam(required=true,value="id")Long id,@RequestParam(required=true,value="organization")String organization,@RequestParam(required=true,value="country")String country, +// @RequestParam(required=true,value="detail")String detail,@RequestParam(required=true,value="asnId")Long asnId){ +// if(StringUtils.isNotBlank(organization)) { +// AsnGroupInfo info= asnGroupInfoService.getGroupIdByNameAndASNId(organization,country,asnId); +// if(info==null) { +// return ""; +// }else if(info.get) { +// +// } +// } +// return 0; +// } + /** + * 校验asn号是否已存在 + */ + @ResponseBody + @RequestMapping(value = {"/checkAsnNo"}) + public boolean checkIp(AsnGroupInfo cfg, HttpServletRequest request, HttpServletResponse response){ + + AsnGroupInfo policyGroup = asnGroupInfoService.getInfoByAsnNo(cfg); + if(policyGroup == null){ + return true; + } + + return false; + } +} diff --git a/src/main/java/com/nis/web/controller/basics/AsnIpController.java b/src/main/java/com/nis/web/controller/basics/AsnIpController.java index 9f2aa1202..a307b78c0 100644 --- a/src/main/java/com/nis/web/controller/basics/AsnIpController.java +++ b/src/main/java/com/nis/web/controller/basics/AsnIpController.java @@ -1,14 +1,17 @@ - package com.nis.web.controller.basics; +package com.nis.web.controller.basics; import java.util.ArrayList; +import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; + import org.apache.commons.lang.StringUtils; import org.apache.shiro.authz.annotation.RequiresPermissions; +import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.ModelAttribute; @@ -17,26 +20,33 @@ import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.servlet.mvc.support.RedirectAttributes; + +import com.google.common.collect.Maps; import com.nis.domain.FunctionRegionDict; import com.nis.domain.FunctionServiceDict; import com.nis.domain.Page; +import com.nis.domain.basics.AsnGroupInfo; import com.nis.domain.basics.AsnIpCfg; -import com.nis.domain.basics.PolicyGroupInfo; import com.nis.domain.configuration.CfgIndexInfo; +import com.nis.domain.configuration.IpPortCfg; + import com.nis.domain.specific.ConfigGroupInfo; import com.nis.exceptions.MaatConvertException; -import com.nis.util.AsnCacheUtils; +//import com.nis.util.AsnCacheUtils; import com.nis.util.Constants; import com.nis.util.DictUtils; import com.nis.util.StringUtil; import com.nis.web.controller.BaseController; +import com.nis.web.security.UserUtils; + +import jersey.repackaged.com.google.common.collect.Lists; @Controller @RequestMapping(value = "${adminPath}/basics/asn") public class AsnIpController extends BaseController{ @RequestMapping(value = {"/list"}) public String list(Model model,HttpServletRequest request ,HttpServletResponse response,@ModelAttribute("cfg")AsnIpCfg entity - ,RedirectAttributes redirectAttributes){ + ){ Page page = asnIpCfgService.findPage(new Page(request, response,"r"), entity); model.addAttribute("page", page); // initPageCondition(model); @@ -44,12 +54,6 @@ public class AsnIpController extends BaseController{ model.addAttribute("regionList", regionList); List serviceList = DictUtils.getFunctionServiceDictList(entity.getFunctionId()); model.addAttribute("serviceList", serviceList); - -// List policyGroups=policyGroupInfoService.findPolicyGroupInfosByType(4); -// model.addAttribute("policyGroups", policyGroups); -// AsnCacheUtils.init(false); -// List policyGroups=AsnCacheUtils.getAllAsnGroup(); -// model.addAttribute("policyGroups", policyGroups); return "/basics/asnIpCfgList"; } @RequestMapping(value = {"/addForm"}) @@ -57,8 +61,8 @@ public class AsnIpController extends BaseController{ ,HttpServletResponse response,@ModelAttribute("cfg")CfgIndexInfo cfg ,RedirectAttributes redirectAttributes){ initFormCondition(model,cfg); - List policyGroups=policyGroupInfoService.findPolicyGroupInfosByType(4); - model.addAttribute("policyGroups", policyGroups); + List groupInfos=configGroupInfoService.findAllList(4); + model.addAttribute("policyGroups", groupInfos); model.addAttribute("_cfg", cfg); return "/basics/asnIpCfgFormAdd"; } @@ -68,8 +72,8 @@ public class AsnIpController extends BaseController{ ,RedirectAttributes redirectAttributes){ cfg = asnIpCfgService.get(Long.parseLong(ids)); initUpdateFormCondition(model, cfg); - List policyGroups=policyGroupInfoService.findPolicyGroupInfosByType(4); - model.addAttribute("policyGroups", policyGroups); + List groupInfos=configGroupInfoService.findAllList(4); + model.addAttribute("policyGroups", groupInfos); model.addAttribute("_cfg", cfg); return "/basics/asnIpCfgFormUpdate"; } @@ -106,13 +110,64 @@ public class AsnIpController extends BaseController{ return "redirect:" + adminPath +"/basics/asn/list?functionId="+cfg.getFunctionId(); } + @RequestMapping(value = {"/audit"}) + @RequiresPermissions(value={"asn:ip:confirm"}) + public String audit(Model model,@ModelAttribute("cfg")AsnIpCfg cfg + ,Integer isAudit + ,Integer isValid + ,String ids + ,Integer functionId + , HttpServletRequest request + ,HttpServletResponse response + ,RedirectAttributes redirectAttributes) { + //选中配置审核 + if(!StringUtil.isEmpty(ids)) { + List asnIps=asnIpCfgService.getByIds(ids); + Map> asnIpMap=Maps.newHashMap(); + for(AsnIpCfg asnIpCfg:asnIps) { + asnIpCfg.setIsAudit(isAudit); + asnIpCfg.setIsValid(isValid); + asnIpCfg.setAuditorId(UserUtils.getUser().getId()); + asnIpCfg.setAuditTime(new Date()); + asnIpCfg.setFunctionId(functionId); + if(asnIpMap.containsKey(Long.parseLong(asnIpCfg.getUserRegion1()))) { + asnIpMap.get(Long.parseLong(asnIpCfg.getUserRegion1())).add(asnIpCfg); + }else { + List _asnIps=Lists.newArrayList(); + _asnIps.add(asnIpCfg); + asnIpMap.put(Long.parseLong(asnIpCfg.getUserRegion1()), _asnIps); + } + } + asnIpCfgService.auditIpBatch(asnIpMap,isValid); + }/*else { + //条件下所有配置审核 + Page searchPage=new Page(request,response,"a"); + Page auditPage=new Page(request,response,"a"); + BeanUtils.copyProperties(searchPage, auditPage); + try { + auditAll(auditPage,isValid , cfg); + addMessage(redirectAttributes,"success", "audit_success"); + } catch (Exception e) { + logger.error("配置下发失败:",e); + if(e instanceof MaatConvertException) { + addMessage(redirectAttributes,"error", "request_service_failed"); + }else { + addMessage(redirectAttributes,"error", "audit_failed"); + } + + } + + return list(model, request, response, cfg); + }*/ + return "redirect:" + adminPath +"/basics/asn/list?functionId="+cfg.getFunctionId(); + } @RequestMapping(value = {"/delete"}) @RequiresPermissions(value={"asn:ip:config"}) public String delete(Integer isValid ,String ids,Integer functionId ,RedirectAttributes redirectAttributes){ try{ - asnIpCfgService.delete(isValid,ids); + asnIpCfgService.delete(ids); addMessage(redirectAttributes,"success","delete_success"); }catch(Exception e){ logger.error("Delete failed",e); @@ -134,35 +189,13 @@ public class AsnIpController extends BaseController{ logger.error("Delete failed",e); } } - /** - * ajax设置Name - * @param model - * @param ids - * @return - */ - @RequestMapping(value="ajaxGroupName",method=RequestMethod.POST) + @RequestMapping(value="ajaxGetGroups",method=RequestMethod.POST) @ResponseBody - public Map ajaxGroupName(Model model,String ids){ - AsnCacheUtils.init(false); - Map groupMap=new HashMap<>(); - for(String id:ids.split(",")) { - ConfigGroupInfo info=AsnCacheUtils.get(Long.parseLong(id)); - if(info!=null) { - groupMap.put(id, info.getGroupName()); - }else { - info=asnIpCfgService.getConfigGroupInfoByAsnNo(Long.parseLong(id)); - groupMap.put(id, info.getGroupName()); - } + public List ajaxGetGroups(Model model,@RequestParam(required=true,value="org")String org){ + if(StringUtils.isNotBlank(org)) { + return asnGroupInfoService.getByOrg(org); } - return groupMap; - } - @RequestMapping(value="ajaxServiceIdState",method=RequestMethod.POST) - @ResponseBody - public boolean ajaxServiceIdState(Model model,@RequestParam(required=true,value="serviceGroupIds")String serviceGroupIds){ - if(StringUtils.isNotBlank(serviceGroupIds)) { - return policyGroupInfoService.checkIsIssued(serviceGroupIds); - } - return false; + return new ArrayList(); } @RequestMapping(value="ajaxIsLast",method=RequestMethod.POST) @ResponseBody diff --git a/src/main/java/com/nis/web/controller/configuration/maintenance/DnsIpCfgController.java b/src/main/java/com/nis/web/controller/configuration/maintenance/DnsIpCfgController.java index 05da5f890..f28836828 100644 --- a/src/main/java/com/nis/web/controller/configuration/maintenance/DnsIpCfgController.java +++ b/src/main/java/com/nis/web/controller/configuration/maintenance/DnsIpCfgController.java @@ -11,7 +11,6 @@ import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.commons.beanutils.BeanUtils; -import org.apache.cxf.common.util.StringUtils; import org.apache.shiro.authz.annotation.RequiresPermissions; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; @@ -22,22 +21,11 @@ import org.springframework.web.servlet.mvc.support.RedirectAttributes; import com.nis.domain.Page; import com.nis.domain.basics.PolicyGroupInfo; -import com.nis.domain.basics.ServiceDictInfo; -import com.nis.domain.configuration.BaseIpCfg; -import com.nis.domain.configuration.CfgIndexInfo; import com.nis.domain.configuration.DnsIpCfg; -import com.nis.domain.configuration.DnsResStrategy; -import com.nis.domain.configuration.IpPortCfg; -import com.nis.domain.configuration.DnsIpCfg; -import com.nis.domain.configuration.RequestInfo; import com.nis.exceptions.MaatConvertException; -import com.nis.util.AsnCacheUtils; -import com.nis.util.CacheUtils; import com.nis.util.Constants; import com.nis.util.StringUtil; import com.nis.web.controller.BaseController; -import com.nis.web.security.UserUtils; -import com.nis.web.service.configuration.DnsIpCfgService; @Controller @RequestMapping("${adminPath}/cfg/dnsIp") diff --git a/src/main/java/com/nis/web/controller/configuration/ntc/IpController.java b/src/main/java/com/nis/web/controller/configuration/ntc/IpController.java index 801831700..f22410e1d 100644 --- a/src/main/java/com/nis/web/controller/configuration/ntc/IpController.java +++ b/src/main/java/com/nis/web/controller/configuration/ntc/IpController.java @@ -25,7 +25,7 @@ import org.springframework.web.servlet.mvc.support.RedirectAttributes; import com.nis.domain.FunctionRegionDict; import com.nis.domain.FunctionServiceDict; import com.nis.domain.Page; -import com.nis.domain.SysDataDictionaryItem; +import com.nis.domain.basics.AsnGroupInfo; import com.nis.domain.configuration.CfgIndexInfo; import com.nis.domain.configuration.IpPortCfg; import com.nis.domain.configuration.NtcSubscribeIdCfg; @@ -38,7 +38,6 @@ import com.nis.domain.configuration.template.DnsComplexStringTemplate; import com.nis.domain.configuration.template.DnsFakeIpTemplate; import com.nis.domain.configuration.template.DnsIpTemplate; import com.nis.domain.configuration.template.DnsResStrategyTemplate; -import com.nis.domain.configuration.template.IpAllTemplate; import com.nis.domain.configuration.template.DomainInterceptMonitTemplate; import com.nis.domain.configuration.template.DomainInterceptRateLimitTemplate; import com.nis.domain.configuration.template.DomainInterceptTemplate; @@ -51,6 +50,7 @@ import com.nis.domain.configuration.template.HttpsRejectTemplate; import com.nis.domain.configuration.template.HttpsReplaceComplexTemplate; import com.nis.domain.configuration.template.HttpsReplaceIpTemplate; import com.nis.domain.configuration.template.HttpsReplaceTemplate; +import com.nis.domain.configuration.template.IpAllTemplate; import com.nis.domain.configuration.template.IpPayloadTemplate; import com.nis.domain.configuration.template.IpRateLimitTemplate; import com.nis.domain.configuration.template.IpWhitelistTemplate; @@ -60,7 +60,6 @@ import com.nis.domain.configuration.template.SnatTemplate; import com.nis.domain.configuration.template.StringAllTemplate; import com.nis.domain.specific.ConfigGroupInfo; import com.nis.exceptions.MaatConvertException; -import com.nis.index.Configurations; import com.nis.util.Constants; import com.nis.util.DictUtils; import com.nis.util.StringUtil; @@ -525,13 +524,13 @@ public class IpController extends BaseController{ titleList.add("asn_policy"); classMap.put(entity.getMenuNameCode(), CfgIndexInfo.class); classMap.put("NTC_IP", IpPortCfg.class); - classMap.put("asn_policy", ConfigGroupInfo.class); + classMap.put("asn_policy", AsnGroupInfo.class); String cfgIndexInfoNoExport=",policy_name,group_name,userregion1,userregion3,userregion4,userregion5,&userregion2:ratelimit-"; String ipPortInfoNoExport=",do_log,action,config_describe,valid_identifier,is_audit,creator,creator" + ",config_time,editor,edit_time,auditor,audit_time" +",letter,whether_area_block,classification,attribute,label" +",userregion1,userregion2,userregion3,userregion4,userregion5,ir_type,group_name,"; - String asnGroupInfoNoExport=""; + String asnGroupInfoNoExport=ipPortInfoNoExport+"block_type,"; // 时间过滤 if (entity.getSearch_create_time_start() == null && entity.getSearch_create_time_end() == null) { cfgIndexInfoNoExport = ",config_time" + cfgIndexInfoNoExport; @@ -549,15 +548,12 @@ public class IpController extends BaseController{ noExportMap.put("NTC_IP", ipPortInfoNoExport); noExportMap.put("asn_policy", asnGroupInfoNoExport); List ipList=new ArrayList(); - List groupInfoList=new ArrayList(); + List groupInfoList=new ArrayList(); for (CfgIndexInfo cfg : ipLists) { CfgIndexInfo cfgIndexInfo=ipCfgService.exportIpInfo(cfg); ipList.addAll(cfgIndexInfo.getIpPortList()); - if(!StringUtil.isEmpty(cfgIndexInfo.getAsnIpGroupName())){ - ConfigGroupInfo group=new ConfigGroupInfo(); - group.setCompileId(cfgIndexInfo.getCompileId()); - group.setGroupName(cfgIndexInfo.getAsnIpGroupName()); - groupInfoList.add(group); + if(!StringUtil.isEmpty(cfgIndexInfo.getUserRegion4())){ + groupInfoList.addAll(cfgIndexInfo.getAsnGroups()); } } dataMap.put(entity.getMenuNameCode(), ipLists); diff --git a/src/main/java/com/nis/web/controller/dashboard/DashboardController.java b/src/main/java/com/nis/web/controller/dashboard/DashboardController.java index a85f0886a..df57ed452 100644 --- a/src/main/java/com/nis/web/controller/dashboard/DashboardController.java +++ b/src/main/java/com/nis/web/controller/dashboard/DashboardController.java @@ -267,8 +267,8 @@ public class DashboardController extends BaseController{ if(o1==o2&&o1==null){ return 0; } - Long ob1 = o1.getC2sByteLen()+o1.getS2cByteLen(); - Long ob2 = o2.getC2sByteLen()+o2.getS2cByteLen(); + Long ob1 = o1.getLinkNum(); + Long ob2 = o2.getLinkNum(); return -(ob1).compareTo(ob2); } }); diff --git a/src/main/java/com/nis/web/controller/report/ExportController.java b/src/main/java/com/nis/web/controller/report/ExportController.java index d494c8973..1ea68e5a6 100644 --- a/src/main/java/com/nis/web/controller/report/ExportController.java +++ b/src/main/java/com/nis/web/controller/report/ExportController.java @@ -34,6 +34,27 @@ public class ExportController extends BaseController { } _ajaxExport(request,response,titleCode, titleTime, heard, list); } + + + @RequestMapping(value = "ajaxCsv") + public void ajaxCsv(String exports,HttpServletRequest request,HttpServletResponse response) throws Exception{ + JSONObject jsonObject = JSONObject.fromObject(StringEscapeUtils.unescapeHtml(exports)); + Map map=JSONObject.fromObject(jsonObject); + List> list=(List>) map.get("book"); + List heard=(List) map.get("heard"); + String titleTime=String.valueOf(map.get("titleTime")); + String titleCode=String.valueOf(map.get("titleCode")); + if(!StringUtil.isEmpty(titleTime)){ + if(titleTime.contains("\"")){ + titleTime = titleTime.replaceAll("\"", "").trim(); + } + if(titleTime.startsWith("[")){ + titleTime = titleTime.substring(1, titleTime.length()-1); + } + } + _ajaxCsv(request,response,titleCode, titleTime, heard, list); + } + } diff --git a/src/main/java/com/nis/web/controller/sys/DictController.java b/src/main/java/com/nis/web/controller/sys/DictController.java index 745215a7b..3a7764dbc 100644 --- a/src/main/java/com/nis/web/controller/sys/DictController.java +++ b/src/main/java/com/nis/web/controller/sys/DictController.java @@ -6,7 +6,6 @@ import javax.servlet.http.HttpServletResponse; import org.apache.shiro.authz.annotation.RequiresPermissions; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; -import org.springframework.web.bind.annotation.ModelAttribute; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.ResponseBody; @@ -14,7 +13,6 @@ import org.springframework.web.servlet.mvc.support.RedirectAttributes; import com.nis.domain.Page; import com.nis.domain.SysDataDictionaryName; -import com.nis.util.AsnCacheUtils; import com.nis.util.CacheUtils; import com.nis.util.Constants; import com.nis.util.StringUtil; @@ -105,12 +103,12 @@ public class DictController extends BaseController { @ResponseBody @RequestMapping(value = {"refreshCache"}) public String refreshCache(String cacheName){ - if(cacheName.equals(AsnCacheUtils.getCacheName())) { - AsnCacheUtils.clearCache(); - }else { +// if(cacheName.equals(AsnCacheUtils.getCacheName())) { +// AsnCacheUtils.clearCache(); +// }else { //删除字典缓存 CacheUtils.remove(cacheName); - } + /*}*/ return "success"; } diff --git a/src/main/java/com/nis/web/dao/basics/AsnGroupInfoDao.java b/src/main/java/com/nis/web/dao/basics/AsnGroupInfoDao.java new file mode 100644 index 000000000..3150d2cf4 --- /dev/null +++ b/src/main/java/com/nis/web/dao/basics/AsnGroupInfoDao.java @@ -0,0 +1,32 @@ +package com.nis.web.dao.basics; + +import java.util.List; + +import org.apache.ibatis.annotations.Param; + +import com.nis.domain.basics.AsnGroupInfo; +import com.nis.domain.basics.AsnIpCfg; +import com.nis.web.dao.CrudDao; +import com.nis.web.dao.MyBatisDao; + +@MyBatisDao +public interface AsnGroupInfoDao extends CrudDao { + List findAsnGroupInfoList(AsnGroupInfo policyGroupInfo); + AsnGroupInfo getById(int id); + AsnGroupInfo getByGroupId(int groupId); + AsnGroupInfo getInfoByAsnNo(AsnGroupInfo policyGroupInfo); + Integer getGroupIdByOrganization(String organization); + AsnGroupInfo getGroupInfo(AsnGroupInfo policyGroupInfo); + AsnGroupInfo getGroupInfoByName(AsnGroupInfo policyGroupInfo); + int updateValid(AsnGroupInfo policyGroupInfo); + Integer getGroupIdByName(@Param("organization")String organization,@Param("country")String country); + AsnGroupInfo getGroupIdByNameAndASNId(@Param("organization")String organization,@Param("country")String country,@Param("asnId")Long asnId); + List getConfigGroupInfoByGroupId(Integer groupId); + List getConfigGroupInfoByName(@Param("organization")String organization); + List getValidConfigGroupInfoByName(@Param("organization")String organization); + int getCountGroupInfoByName(@Param("organization")String organization); + void insertBatch(List policyGroupInfos); + List findAsnGroupInfos(); + Long getCount(); + void audit(AsnIpCfg t); +} \ No newline at end of file diff --git a/src/main/java/com/nis/web/dao/basics/AsnGroupInfoDao.xml b/src/main/java/com/nis/web/dao/basics/AsnGroupInfoDao.xml new file mode 100644 index 000000000..24163767b --- /dev/null +++ b/src/main/java/com/nis/web/dao/basics/AsnGroupInfoDao.xml @@ -0,0 +1,258 @@ + + + + + + + + + + + + + + + + + + + + r.id,r.group_id,r.compile_id,r.organization,r.country,r.detail,r.is_valid,r.create_time,r.edit_time, + r.creator_id,r.editor_id,r.asn_id,r.org_group_id + + + + + + + + + + insert into asn_group_info(group_id,compile_id,organization,country,detail,is_valid,creator_id,create_time,editor_id,edit_time,asn_id,org_group_id + )values ( + #{groupId,jdbcType=INTEGER}, + #{compileId,jdbcType=INTEGER}, + #{organization,jdbcType=VARCHAR}, + #{country,jdbcType=VARCHAR}, + #{detail,jdbcType=VARCHAR}, + #{isValid,jdbcType=INTEGER}, + #{creatorId,jdbcType=INTEGER}, + #{createTime,jdbcType=TIMESTAMP}, + #{editorId,jdbcType=INTEGER}, + #{editTime,jdbcType=TIMESTAMP}, + #{asnId,jdbcType=INTEGER}, + #{orgGroupId,jdbcType=INTEGER} + ) + + + + update asn_group_info + + + + organization = #{organization,jdbcType=VARCHAR}, + + + country = #{country,jdbcType=VARCHAR}, + + + detail = #{detail,jdbcType=VARCHAR}, + + + asn_id = #{asnId,jdbcType=INTEGER}, + + + is_valid = #{isValid,jdbcType=INTEGER}, + + + group_id = #{groupId,jdbcType=INTEGER}, + + + org_group_id = #{orgGroupId,jdbcType=INTEGER}, + + + compile_id = #{compileId,jdbcType=INTEGER}, + + + editor_id = #{editorId,jdbcType=INTEGER}, + + + edit_time = #{editTime,jdbcType=TIMESTAMP}, + + + + + + + and id = #{id,jdbcType=INTEGER} + + + + + + update asn_group_info + + + is_valid = #{isValid,jdbcType=INTEGER}, + + + + + + and group_id = #{groupId,jdbcType=INTEGER} + + + and id = #{id,jdbcType=INTEGER} + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/java/com/nis/web/dao/basics/AsnIpCfgDao.java b/src/main/java/com/nis/web/dao/basics/AsnIpCfgDao.java index ea319f613..6fd733202 100644 --- a/src/main/java/com/nis/web/dao/basics/AsnIpCfgDao.java +++ b/src/main/java/com/nis/web/dao/basics/AsnIpCfgDao.java @@ -17,14 +17,16 @@ public interface AsnIpCfgDao extends CrudDao{ public void updateIssued(AsnIpCfg cfg); public List getByIds(@Param("ids")String ids); public List hasGroupIds(@Param("ids")String ids); + public List hasASNIds(@Param("ids")String ids); public List findAllList(AsnIpCfg cfg); // public List findPolicyGroupInfosByType(@Param("groupId")Integer groupId); public List findOtherIps(@Param("groupId")Integer groupId,@Param("cfgId")Integer cfgId); public List countValidIPs(@Param("groups")String groups,@Param("ids")String ids); public List getByAsnNo(@Param("asnId")long asnNo); - public int deleteByAsnGroup(@Param("asnId")String asnNo); + public int deleteByAsnId(@Param("asnId")String asnNo); public int insertBatch(List list); public Varibles getVaribles(@Param("name")String name); public void ajaxDeleteAsnIp(@Param("ids")String ids); + public int hasValidAsnIp(@Param("asnId")Long asnNo); } diff --git a/src/main/java/com/nis/web/dao/basics/AsnIpCfgDao.xml b/src/main/java/com/nis/web/dao/basics/AsnIpCfgDao.xml index a410a0451..e1ab4042e 100644 --- a/src/main/java/com/nis/web/dao/basics/AsnIpCfgDao.xml +++ b/src/main/java/com/nis/web/dao/basics/AsnIpCfgDao.xml @@ -41,11 +41,12 @@ + + + + - - - - + r.cfg_id,r.cfg_desc,r.ip_type,r.src_ip_address,r.ip_pattern,r.port_pattern,r.src_port ,r.protocol,r.protocol_id,r.direction,r.cfg_type,r.action,r.dest_port,r.dest_ip_address @@ -53,14 +54,14 @@ ,r.edit_time,r.auditor_id,r.audit_time,r.service_id,r.request_id, r.region_id,r.is_area_effective,r.classify,r.attribute,r.lable ,r.area_effective_ids,r.function_id,r.cfg_region_code,r.asn_ip_group,r.user_region1 - ,r.user_region2,r.user_region3,r.user_region4,r.user_region5 + ,r.user_region2,r.user_region3,r.user_region4,r.user_region5,r.organization,r.country,r.detail,r.compile_id select 1 from asn_ip_cfg where is_valid !=-1 and asn_ip_group in(${ids}) limit 1 + - INSERT INTO asn_ip_cfg (CFG_DESC,ACTION,IS_VALID,IS_AUDIT,CREATOR_ID,CREATE_TIME,EDITOR_ID,EDIT_TIME,AUDITOR_ID, - AUDIT_TIME,SERVICE_ID,REQUEST_ID,region_id,IS_AREA_EFFECTIVE,CLASSIFY,ATTRIBUTE,LABLE, + AUDIT_TIME,SERVICE_ID,REQUEST_ID,region_id,compile_id,IS_AREA_EFFECTIVE,CLASSIFY,ATTRIBUTE,LABLE, AREA_EFFECTIVE_IDS,function_id,ip_type,src_ip_address,ip_pattern,port_pattern,src_port, protocol,protocol_id,direction,dest_port,dest_ip_address,cfg_type,cfg_region_code, - asn_ip_group,user_region1,user_region2,user_region3,user_region4,user_region5) + asn_ip_group,user_region1,user_region2,user_region3,user_region4,user_region5,organization,country,detail) VALUES (#{asnIp.cfgDesc,jdbcType=VARCHAR}, #{asnIp.action,jdbcType=INTEGER}, #{asnIp.isValid,jdbcType=INTEGER}, - 0, + #{asnIp.isAudit,jdbcType=INTEGER}, #{asnIp.creatorId,jdbcType=INTEGER}, #{asnIp.createTime,jdbcType=TIMESTAMP}, #{asnIp.editorId,jdbcType=INTEGER}, @@ -446,6 +472,7 @@ #{asnIp.serviceId,jdbcType=INTEGER}, #{asnIp.requestId,jdbcType=INTEGER}, #{asnIp.regionId,jdbcType=INTEGER}, + #{asnIp.compileId,jdbcType=INTEGER}, #{asnIp.isAreaEffective,jdbcType=INTEGER}, #{asnIp.classify,jdbcType=VARCHAR}, #{asnIp.attribute,jdbcType=VARCHAR}, @@ -469,17 +496,20 @@ #{asnIp.userRegion2,jdbcType=VARCHAR}, #{asnIp.userRegion3,jdbcType=VARCHAR}, #{asnIp.userRegion4,jdbcType=VARCHAR}, - #{asnIp.userRegion5,jdbcType=VARCHAR}) + #{asnIp.userRegion5,jdbcType=VARCHAR}), + #{asnIp.organization,jdbcType=VARCHAR}), + #{asnIp.country,jdbcType=VARCHAR}), + #{asnIp.detail,jdbcType=VARCHAR}) - - - + diff --git a/src/main/java/com/nis/web/dao/configuration/AsnPolicyCfgDao.xml b/src/main/java/com/nis/web/dao/configuration/AsnPolicyCfgDao.xml index 0c91f1df8..4fc8da5cd 100644 --- a/src/main/java/com/nis/web/dao/configuration/AsnPolicyCfgDao.xml +++ b/src/main/java/com/nis/web/dao/configuration/AsnPolicyCfgDao.xml @@ -275,8 +275,7 @@ update cfg_index_info set is_valid=#{isValid} where cfg_id in (${ids}) \ No newline at end of file diff --git a/src/main/java/com/nis/web/dao/specific/ConfigGroupInfoDao.java b/src/main/java/com/nis/web/dao/specific/ConfigGroupInfoDao.java index 8199c7540..f52b8a9d3 100644 --- a/src/main/java/com/nis/web/dao/specific/ConfigGroupInfoDao.java +++ b/src/main/java/com/nis/web/dao/specific/ConfigGroupInfoDao.java @@ -20,4 +20,7 @@ public interface ConfigGroupInfoDao extends CrudDao{ ConfigGroupInfo getInfoByAsnNo(@Param("asnId")Long asnNo); Integer getIssuedConfigGroupInfoByGroupIds(@Param("groupIds")String groupIds); Long getCountByType(@Param("groupType")Integer groupType); + //获取asn组织的groupId + ConfigGroupInfo getAsnGroupByName(@Param("groupName")String groupName); + int delAsnGroup(@Param("groupName")String groupName); } diff --git a/src/main/java/com/nis/web/service/BaseService.java b/src/main/java/com/nis/web/service/BaseService.java index f4902b221..f655fb657 100644 --- a/src/main/java/com/nis/web/service/BaseService.java +++ b/src/main/java/com/nis/web/service/BaseService.java @@ -11,6 +11,7 @@ import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.Map.Entry; import org.apache.commons.lang3.StringEscapeUtils; import org.apache.ibatis.session.ExecutorType; @@ -41,6 +42,7 @@ import com.nis.domain.FunctionRegionDict; import com.nis.domain.FunctionServiceDict; import com.nis.domain.SysRole; import com.nis.domain.SysUser; +import com.nis.domain.basics.AsnGroupInfo; import com.nis.domain.basics.AsnIpCfg; import com.nis.domain.callback.InlineIp; import com.nis.domain.callback.NtcDnsResStrategy; @@ -79,6 +81,7 @@ import com.nis.domain.maat.ToMaatBean; import com.nis.domain.maat.ToMaatResult; import com.nis.domain.specific.ConfigGroupInfo; import com.nis.domain.specific.SpecificServiceCfg; +//import com.nis.util.AsnCacheUtils; import com.nis.util.ConfigServiceUtil; import com.nis.util.Configurations; import com.nis.util.Constants; @@ -87,6 +90,7 @@ import com.nis.util.IpUtil; import com.nis.util.Reflections; import com.nis.util.StringUtil; import com.nis.util.StringUtils; +import com.nis.web.dao.basics.AsnGroupInfoDao; import com.nis.web.dao.basics.AsnIpCfgDao; import com.nis.web.dao.configuration.AppCfgDao; import com.nis.web.dao.configuration.AppMultiFeatureCfgDao; @@ -1600,6 +1604,7 @@ public abstract class BaseService { List list,List cfgIndexInfos, List appPolicyCfgs, List appFeatureCfgs, + List> asnNoMaps, boolean send){ if(list!=null&&list.size()>0) { String type=null; @@ -1635,10 +1640,10 @@ public abstract class BaseService { } }else if("AsnIpCfg".equals(type)) { List listPage = (List) list; - this.saveAsnIpBatch(listPage); - }else if("AppComplexFeature".equals(type)) { + this.saveAsnIpBatch(listPage,asnNoMaps,send); + }else if("AppComplexFeature".equals(type)) {// APP Payload List listPage = (List) list; - this.saveAppComplexFeatureBatch(listPage); + this.saveAppComplexFeatureBatch(regionDict,serviceDict,listPage,send); }else if("BaseStringCfg".equals(type)) { List> listPage = (List>) list; // 调用对应配置的service @@ -1767,19 +1772,107 @@ public abstract class BaseService { } } @Transactional(readOnly=false,rollbackFor=RuntimeException.class) - public void saveAsnIpBatch(List cfgs){ + public void saveAsnIpBatch(List cfgs,List> asnNoMaps,boolean send){ logger.warn("Start to save IP,size:"+cfgs.size()); long start=System.currentTimeMillis(); SqlSessionFactory sqlSessionFactory=SpringContextHolder.getBean(SqlSessionFactory.class); SqlSession batchSqlSession = null; //需要通过新增域接口新增的ip集合 List toAddRegionAsnIpCfgs=Lists.newArrayList(); + Map> toSendFirstAsnIpCfgs=Maps.newHashMap(); + +// AsnCacheUtils.init(true); try{ batchSqlSession = sqlSessionFactory.openSession(ExecutorType.BATCH, false); for(AsnIpCfg cfg:cfgs) { ((AsnIpCfgDao) batchSqlSession.getMapper(AsnIpCfgDao.class)).insert(cfg); - if(Constants.VALID_YES==cfg.getIsValid().intValue()) { - toAddRegionAsnIpCfgs.add(cfg); + if(send) { + AsnGroupInfo group=asnNoMaps.get(0).get(Long.parseLong(cfg.getUserRegion1())); + if(group==null) { + group=asnNoMaps.get(1).get(Long.parseLong(cfg.getUserRegion1())); + } + //AsnGroupInfo group=AsnCacheUtils.get(Long.parseLong(cfg.getUserRegion1())); + if(group!=null&&group.getIsValid().intValue()==1) { + toAddRegionAsnIpCfgs.add(cfg); + }else if(group!=null) { + if(toSendFirstAsnIpCfgs.containsKey(group.getAsnId())) { + toSendFirstAsnIpCfgs.get(group.getAsnId()).add(cfg); + }else { + toSendFirstAsnIpCfgs.put(group.getAsnId(), Lists.newArrayList()); + toSendFirstAsnIpCfgs.get(group.getAsnId()).add(cfg); + } + + + } + } + + } + if(send) { + if(toAddRegionAsnIpCfgs.size()>0) { + asnIPRegionSendToMaat(toAddRegionAsnIpCfgs,Constants.VALID_YES); + } + if(toSendFirstAsnIpCfgs.size()>0) { + List configCompileList = new ArrayList(); + ToMaatBean maatBean = new ToMaatBean(); + + for(Entry> info:toSendFirstAsnIpCfgs.entrySet()) { + AsnGroupInfo group=asnNoMaps.get(0).get(info.getKey()); + if(group==null) { + group=asnNoMaps.get(1).get(info.getKey()); + } + //AsnGroupInfo group=AsnCacheUtils.get(info.getKey()); + List groupRelationList = new ArrayList(); + List ipRegionList = new ArrayList(); + List strRegionList = new ArrayList(); + List numRegionList = new ArrayList(); + List digestRegionList = new ArrayList(); + List areaIpRegionList = new ArrayList(); + MaatCfg maatCfg = new MaatCfg(); + maatCfg.initDefaultValue(); + //group + GroupCfg groupCfg=new GroupCfg(); + groupCfg.setCompileId(group.getCompileId()); + groupCfg.setGroupId(group.getGroupId()); + groupCfg.setIsValid(Constants.VALID_YES); + groupCfg.setAuditTime(info.getValue().get(0).getAuditTime()); + groupRelationList.add(groupCfg); + BeanUtils.copyProperties(info.getValue().get(0), maatCfg); + ipRegionList.addAll(groupReuseCfgAddRemoveConvert(info.getValue(),Constants.VALID_YES,group.getGroupId())); + maatCfg.setCompileId(group.getCompileId()); + maatCfg.setAction(info.getValue().get(0).getAction()); + maatCfg.setAuditTime(info.getValue().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(info.getValue().get(0).getIsValid()); + // 设置自定义域 + String userRegion = "ASN_ID=" + info.getKey(); + maatCfg.setUserRegion(userRegion); + configCompileList.add(maatCfg); + + group.setIsValid(1); + ((AsnGroupInfoDao) batchSqlSession.getMapper(AsnGroupInfoDao.class)).updateValid(group); + } + maatBean.setConfigCompileList(configCompileList); + maatBean.setAuditTime(cfgs.get(0).getAuditTime()); + maatBean.setCreatorName(cfgs.get(0).getCurrentUser().getName()); + maatBean.setVersion(Constants.MAAT_VERSION); + maatBean.setOpAction(Constants.INSERT_ACTION); + // 调用服务接口下发配置数据 + String json = gsonToJson(maatBean); + if(configCompileList.size()<=100) { + logger.info("asn IP配置下发配置参数:" + json); + }else { + logger.info("asn IP配置下发配置数量:" + configCompileList.size()); + } + + // 调用服务接口下发配置 + ToMaatResult result = ConfigServiceUtil.postMaatCfg(json); + logger.info("asn IP配置下发响应信息:" + result.getMsg()); } } batchSqlSession.commit(); @@ -1790,9 +1883,6 @@ public abstract class BaseService { } long end=System.currentTimeMillis(); logger.warn("Save IP finish,cost:"+(end-start)); - if(toAddRegionAsnIpCfgs.size()>0) { - asnIPRegionSendToMaat(toAddRegionAsnIpCfgs,Constants.VALID_YES); - } cfgs.clear(); toAddRegionAsnIpCfgs.clear(); cfgs=null; @@ -1823,27 +1913,68 @@ public abstract class BaseService { /** * APP Payload导入配置时数据批量入库 + * @param serviceDict + * @param regionDict * @param data + * @param send */ @Transactional(readOnly=false,rollbackFor=RuntimeException.class) - public void saveAppComplexFeatureBatch(List data) { - SqlSessionFactory sqlSessionFactory=SpringContextHolder.getBean(SqlSessionFactory.class); - SqlSession batchSqlSession = null; - try{ - batchSqlSession = sqlSessionFactory.openSession(ExecutorType.BATCH, false); - for(int index = 0; index < data.size();index++){ - AppComplexFeatureCfg cfg = data.get(index); - ((AppMultiFeatureCfgDao) batchSqlSession.getMapper(AppMultiFeatureCfgDao.class)).insertAppComplexFeatureCfgBatch(cfg); - } - batchSqlSession.commit(); - }finally { - if(batchSqlSession != null){ - batchSqlSession.close(); - } + public void saveAppComplexFeatureBatch(FunctionRegionDict regionDict, FunctionServiceDict serviceDict, List data, boolean send) { + 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++){ + AppComplexFeatureCfg cfg = data.get(index); + ((AppMultiFeatureCfgDao) batchSqlSession.getMapper(AppMultiFeatureCfgDao.class)).insertAppComplexFeatureCfgBatch(cfg); + if (send) { + if(regionDict.getIsMaat().intValue()==1) { + MaatCfg maatCfg=convertMaatCfg(cfg,3); + //userRegion处理 + if(regionDict.getFunctionId()==563) { + maatCfg.setUserRegion(Constants.APP_ID_REGION+"="+cfg.getAppCode()); + } + 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("APP Feature增强字符串配置下发配置条数:" + configCompileList.size()); + }else { + logger.info("APP Feature增强字符串配置下发配置参数:" + json); + } + // 调用服务接口下发配置 + ToMaatResult result = ConfigServiceUtil.postMaatCfg(json); + logger.info("APP Feature增强字符串配置下发响应信息:" + result.getMsg()); + + } + batchSqlSession.commit(); + + }finally { + if(batchSqlSession != null){ + batchSqlSession.close(); + } + + } + } } - + } - + /** * 同一个app下的ip批量保存 * @param cfgs @@ -2211,6 +2342,8 @@ public abstract class BaseService { userRegion = Constants.REPLACE_ZONE_KEY+"="+_cfg.getUserRegion1()+";"+Constants.REPLACE_SUBSTITUTE_KEY+"="+substitute; } maatCfg.setUserRegion(userRegion); + }else if(regionDict.getFunctionId()==563 || regionDict.getFunctionId()==565 || regionDict.getFunctionId()==566) {// APP Payload、HTTP、SSL Admin + maatCfg.setUserRegion(Constants.APP_ID_REGION+"="+_cfg.getAppCode()); } configCompileList.add(maatCfg); @@ -2417,6 +2550,8 @@ public abstract class BaseService { userRegion = Constants.REPLACE_ZONE_KEY+"="+cfg.getUserRegion1()+";"+Constants.REPLACE_SUBSTITUTE_KEY+"="+substitute; } maatCfg.setUserRegion(userRegion); + }else if(regionDict.getFunctionId()==564 || regionDict.getFunctionId()==565 || regionDict.getFunctionId()==566) {// APP HTTP、DNS、SSL Admin + maatCfg.setUserRegion(Constants.APP_ID_REGION+"="+cfg.getAppCode()); } configCompileList.add(maatCfg); } diff --git a/src/main/java/com/nis/web/service/basics/AsnGroupInfoService.java b/src/main/java/com/nis/web/service/basics/AsnGroupInfoService.java new file mode 100644 index 000000000..85f1f502a --- /dev/null +++ b/src/main/java/com/nis/web/service/basics/AsnGroupInfoService.java @@ -0,0 +1,169 @@ +package com.nis.web.service.basics; + +import java.util.Date; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import com.nis.domain.Page; +import com.nis.domain.basics.AsnGroupInfo; +import com.nis.domain.specific.ConfigGroupInfo; +import com.nis.exceptions.MaatConvertException; +import com.nis.util.ConfigServiceUtil; +import com.nis.util.StringUtil; +import com.nis.web.dao.basics.AsnGroupInfoDao; +import com.nis.web.dao.basics.AsnIpCfgDao; +import com.nis.web.dao.specific.ConfigGroupInfoDao; +import com.nis.web.security.UserUtils; +import com.nis.web.service.BaseService; + +import jersey.repackaged.com.google.common.collect.Maps; + +@Service +public class AsnGroupInfoService extends BaseService{ + + @Autowired + private AsnGroupInfoDao asnGroupInfoDao; + @Autowired + private ConfigGroupInfoDao configGroupInfoDao; + @Autowired + private AsnIpCfgDao asnIpCfgDao; + + /** + * @param page + * @param entity + * @return + */ + public Page findAsnGroupInfoList(Page page, AsnGroupInfo entity) { + entity.getSqlMap().put("dsf", configScopeFilter(entity.getCurrentUser(),"r")); + entity.setPage(page); + List list=asnGroupInfoDao.findAsnGroupInfoList(entity); + page.setList(list); + return page; + } + + public AsnGroupInfo getById(int id) { + AsnGroupInfo AsnGroupInfo=asnGroupInfoDao.getById(id); + return AsnGroupInfo; + } + public List getByOrg(String org) { + List AsnGroupInfos=asnGroupInfoDao.getConfigGroupInfoByName(org); + return AsnGroupInfos; + } + + @Transactional(readOnly=false,rollbackFor=RuntimeException.class) + public void saveOrUpdate(AsnGroupInfo entity) throws MaatConvertException{ + //asn类型从综合服务获取groupId + String org=entity.getOrganization().trim(); + String country=entity.getCountry().trim(); + int groupId=0; + //获取组织 + ConfigGroupInfo configGroupInfo=configGroupInfoDao.getAsnGroupByName(org); + + if(configGroupInfo==null) { + List groupIds= ConfigServiceUtil.getId(2,2); + if(groupIds.size()>0) { + groupId=groupIds.get(0).intValue(); + }else { + throw new MaatConvertException("Get asn group id failed"); + } + configGroupInfo=new ConfigGroupInfo(); + configGroupInfo.setGroupName(org); + configGroupInfo.setIsIssued(0); + configGroupInfo.setGroupType(4); + configGroupInfo.setGroupId(groupIds.get(1)); + configGroupInfo.setInsertTime(new Date()); + configGroupInfoDao.insertConfigGroupInfo(configGroupInfo); + }else { + List groupIds= ConfigServiceUtil.getId(2,1); + if(groupIds.size()>0) { + groupId=groupIds.get(0).intValue(); + }else { + throw new MaatConvertException("Get asn group id failed"); + } + + } + //新增 + if(entity.getGroupId()==null){ + Date createTime=new Date(); + entity.setCreatorId(UserUtils.getUser().getId()); + entity.setCreateTime(createTime); + entity.setGroupId(groupId); + entity.setIsValid(0); + List compileIds= ConfigServiceUtil.getId(1,1); + if(compileIds.size()>0) { + entity.setCompileId(compileIds.get(0)); + }else { + throw new MaatConvertException("Get asn group id failed"); + } + asnGroupInfoDao.insert(entity); + //修改 + }else{ + Date editTime=new Date(); + entity.setEditorId(UserUtils.getUser().getId()); + entity.setEditTime(editTime); + entity.setGroupId(groupId); + asnGroupInfoDao.update(entity); + } + } + @Transactional(readOnly=false,rollbackFor=RuntimeException.class) + public void delete(String ids,String asnIds){ + + if(!StringUtil.isEmpty(ids)){ + for (String id : ids.split(",")) { + if(!StringUtil.isEmpty(id)){ + AsnGroupInfo entity=asnGroupInfoDao.getById(Integer.parseInt(id)); + entity.setIsValid(-1); + entity.setId(Long.parseLong(id)); + asnGroupInfoDao.updateValid(entity); + if(asnGroupInfoDao.getCountGroupInfoByName(entity.getOrganization())==0) { + configGroupInfoDao.delAsnGroup(entity.getOrganization()); + } + } + } + + int result=0; + do { + result=asnIpCfgDao.deleteByAsnId(asnIds); + }while(result>0); + } + + } + public boolean checkIps(String groupIds) { + for(String groupId:groupIds.split(",")) { + Integer.parseInt(groupId); + } + List hasIpList=asnIpCfgDao.hasASNIds(groupIds); + if(hasIpList!=null&&hasIpList.size()>0) { + return true; + } + return false; + } + + public AsnGroupInfo getInfoByAsnNo(AsnGroupInfo AsnGroupInfo){ + return asnGroupInfoDao.getInfoByAsnNo(AsnGroupInfo); + } + + public Integer getGroupIdByOrganization(String groupName){ + return asnGroupInfoDao.getGroupIdByOrganization(groupName); + } + + public AsnGroupInfo getGroupInfo(AsnGroupInfo AsnGroupInfo){ + return asnGroupInfoDao.getGroupInfo(AsnGroupInfo); + } + + public AsnGroupInfo getGroupIdByNameAndASNId(String organization,String country,Long asnId) { + return asnGroupInfoDao.getGroupIdByNameAndASNId(organization,country,asnId); + } + public Map getGroupList() { + Map map=Maps.newConcurrentMap(); + for(AsnGroupInfo info:asnGroupInfoDao.findAsnGroupInfos()) { + map.put(info.getAsnId(), info); + } + return map; + } +} diff --git a/src/main/java/com/nis/web/service/basics/AsnIpCfgService.java b/src/main/java/com/nis/web/service/basics/AsnIpCfgService.java index f472a960c..117f5263d 100644 --- a/src/main/java/com/nis/web/service/basics/AsnIpCfgService.java +++ b/src/main/java/com/nis/web/service/basics/AsnIpCfgService.java @@ -1,16 +1,16 @@ package com.nis.web.service.basics; -import java.nio.charset.Charset; import java.util.ArrayList; import java.util.Date; -import java.util.HashMap; +import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Map.Entry; -import java.util.concurrent.ArrayBlockingQueue; -import java.util.concurrent.BlockingQueue; +import java.util.Set; -import org.apache.commons.lang3.StringUtils; +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; @@ -18,27 +18,29 @@ import org.springframework.transaction.annotation.Transactional; import com.beust.jcommander.internal.Lists; import com.nis.domain.Page; +import com.nis.domain.basics.AsnGroupInfo; import com.nis.domain.basics.AsnIpCfg; -import com.nis.domain.basics.PolicyGroupInfo; -import com.nis.domain.basics.Varibles; +import com.nis.domain.configuration.BaseIpCfg; import com.nis.domain.configuration.CfgIndexInfo; -import com.nis.domain.maat.GroupReuseAddBean; -import com.nis.domain.maat.GroupReuseCfg; +import com.nis.domain.maat.MaatCfg; +import com.nis.domain.maat.MaatCfg.DigestCfg; +import com.nis.domain.maat.MaatCfg.GroupCfg; import com.nis.domain.maat.MaatCfg.IpCfg; import com.nis.domain.maat.MaatCfg.NumBoundaryCfg; import com.nis.domain.maat.MaatCfg.StringCfg; +import com.nis.domain.maat.ToMaatBean; import com.nis.domain.maat.ToMaatResult; import com.nis.domain.specific.ConfigGroupInfo; -import com.nis.exceptions.MaatConvertException; -import com.nis.util.AsnCacheUtils; import com.nis.util.ConfigServiceUtil; import com.nis.util.Constants; import com.nis.web.dao.CrudDao; +import com.nis.web.dao.basics.AsnGroupInfoDao; import com.nis.web.dao.basics.AsnIpCfgDao; -import com.nis.web.dao.basics.PolicyGroupInfoDao; +import com.nis.web.dao.configuration.IpCfgDao; import com.nis.web.dao.specific.ConfigGroupInfoDao; import com.nis.web.security.UserUtils; import com.nis.web.service.CrudService; +import com.nis.web.service.SpringContextHolder; @Service public class AsnIpCfgService extends CrudService, AsnIpCfg> { @Autowired @@ -48,7 +50,7 @@ public class AsnIpCfgService extends CrudService, AsnIpCfg> { @Autowired private ConfigGroupInfoDao configGroupInfoDao; @Autowired - private PolicyGroupInfoDao policyGroupInfoDao; + private AsnGroupInfoDao asnGroupInfoDao; /** * @param page * @param entity @@ -66,41 +68,32 @@ public class AsnIpCfgService extends CrudService, AsnIpCfg> { List list=asnIpCfgDao.findByPage(ids); return list; } + public boolean hasValidAsnIp(Long asnId) { + return asnIpCfgDao.hasValidAsnIp(asnId)>0; + } public AsnIpCfg get(Long id ) { return asnIpCfgDao.get(id); } -// public void save(List entitys){ -// this.saveBatch(entitys, AsnIpCfgDao.class); -// } @Transactional(readOnly=false,rollbackFor=RuntimeException.class) public void save(List entitys) { logger.warn("Start to save IP,size:"+entitys.size()); long start=System.currentTimeMillis(); - int len=0; - List tempList=Lists.newArrayList(); -// Varibles maxPacket=asnIpCfgDao.getVaribles("max_allowed_packet"); - for(AsnIpCfg asnIpCfg:entitys) { - int tempLen=asnIpCfg.toString().getBytes(Charset.forName("UTF-8")).length; - if((len+tempLen)0) { -// logger.warn("save ip size:"+tempList.size()); - asnIpCfgDao.insertBatch(tempList); - tempList.clear(); - } -// entitys.clear(); + SqlSessionFactory sqlSessionFactory=SpringContextHolder.getBean(SqlSessionFactory.class); + SqlSession batchSqlSession = null; + try{ + batchSqlSession = sqlSessionFactory.openSession(ExecutorType.BATCH, false); + for(AsnIpCfg asnIpCfg:entitys) { + ((AsnIpCfgDao) batchSqlSession.getMapper(AsnIpCfgDao.class)).insert(asnIpCfg); + } + batchSqlSession.commit(); + }finally { + if(batchSqlSession != null){ + batchSqlSession.close(); + } + } long end=System.currentTimeMillis(); logger.warn("Save IP finish,cost:"+(end-start)); } @@ -109,122 +102,133 @@ public class AsnIpCfgService extends CrudService, AsnIpCfg> { Date editTime=new Date(); entity.setEditTime(editTime); entity.setEditorId(entity.getCurrentUser().getId()); - if(entity.getAsnIpGroup()==null) { - throw new RuntimeException("asn group name not found!"); - } - ConfigGroupInfo groupInfo=configGroupInfoDao.getConfigGroupInfoByGroupId(entity.getAsnIpGroup()); - if(groupInfo.getIsIssued()==0) {//未下发,可修改 - asnIpCfgDao.update(entity); - }else { - throw new RuntimeException("asn group is issued, cannot update asn ip!"); - } - + String org=entity.getOrganization().trim(); + String country=entity.getCountry().trim(); + String detail=entity.getDetail().trim(); + entity.setOrganization(org); + entity.setCountry(country); + entity.setDetail(detail); + asnIpCfgDao.update(entity); } @Transactional(readOnly=false,rollbackFor=RuntimeException.class) - public void processGroup(Map asnNoMap){ + public void processGroup(Map asnNoMap){ logger.warn("Start to save group"); long start=System.currentTimeMillis(); - List policyGroupInfos=Lists.newArrayList(); - List configGroupInfoS=Lists.newArrayList(); Date createTime=new Date(); - int len=0,len1=0; -// Varibles maxPacket=asnIpCfgDao.getVaribles("max_allowed_packet"); - for(Entry e:asnNoMap.entrySet()) { - PolicyGroupInfo info=new PolicyGroupInfo(); - info.setAsnNo(e.getKey()); - info.setDescription("Create by import excel"); - info.setGroupName("Import"+e.getKey()); - info.setGroupType(4); - info.setServiceGroupId(asnNoMap.get(e.getKey())); - info.setIsValid(1); - info.setCreatorId(UserUtils.getUser().getId()); - info.setCreateTime(createTime); - int tempLen=info.toString().getBytes(Charset.forName("UTF-8")).length; - if((len+tempLen)0) { - policyGroupInfoDao.insertBatch(policyGroupInfos); - policyGroupInfos.clear(); - } - if(configGroupInfoS.size()>0) { - configGroupInfoDao.insertBatch(configGroupInfoS); - configGroupInfoS.clear(); - } + int index=0; + SqlSessionFactory sqlSessionFactory=SpringContextHolder.getBean(SqlSessionFactory.class); + SqlSession batchSqlSession = null; + Set groupSet=new HashSet<>(); + try{ + batchSqlSession = sqlSessionFactory.openSession(ExecutorType.BATCH, false); + if(!asnNoMap.isEmpty()) { + List compileIds=ConfigServiceUtil.getId(1, asnNoMap.size()); + List groupIds=ConfigServiceUtil.getId(2, asnNoMap.size()); + for(Entry e:asnNoMap.entrySet()) { + AsnGroupInfo info=e.getValue(); + info.setAsnId(e.getKey()); + info.setIsValid(0); + info.setCreatorId(UserUtils.getUser().getId()); + info.setCreateTime(createTime); + info.setGroupId(groupIds.get(index)); + info.setCompileId(compileIds.get(index)); + if(!groupSet.contains(info.getOrganization())) { + groupSet.add(info.getOrganization()); + } + ((AsnGroupInfoDao) batchSqlSession.getMapper(AsnGroupInfoDao.class)).insert(info); + if(index%Constants.IMPORT_LIMIT==0) { + batchSqlSession.commit(); + } + index++; + } + batchSqlSession.commit(); + } + }finally { + if(batchSqlSession != null){ + batchSqlSession.close(); + } + } + batchSaveConfigGroupInfo(groupSet); //刷新缓存 - AsnCacheUtils.init(true); + //AsnCacheUtils.init(true); long end=System.currentTimeMillis(); logger.warn("Save group finish,cost:"+(end-start)); } - public void deleteIps(Map asnNoMap){ - List toDelAndSendAsnIpCfgs=Lists.newArrayList(); - List asnIds=Lists.newArrayList(asnNoMap.size()); - for(Entry e:asnNoMap.entrySet()) { - ConfigGroupInfo configGroupInfo=AsnCacheUtils.get(e.getKey()); - if(configGroupInfo==null) { - configGroupInfo=this.getConfigGroupInfoByAsnNo(e.getKey()); - } - if(configGroupInfo.getIsIssued()==1) {//已下发 - List _toDelAsnIpCfgs=this.getByAsnNo(configGroupInfo.getAsnId()); - toDelAndSendAsnIpCfgs.addAll(_toDelAsnIpCfgs); - }else { - asnIds.add(e.getKey()); - } - } - if(asnIds.size()>0) { - this.deleteByAsnNo(asnIds); - } - if(toDelAndSendAsnIpCfgs.size()>0) { - int pointsDataLimit = Constants.MAAT_JSON_SEND_SIZE;//限制条数 - Integer size = toDelAndSendAsnIpCfgs.size(); - //判断是否有必要分批 - if(pointsDataLimit listPage = toDelAndSendAsnIpCfgs.subList(0, pointsDataLimit); - delAndSend(listPage); - //剔除 - toDelAndSendAsnIpCfgs.subList(0, pointsDataLimit).clear(); + public void batchSaveConfigGroupInfo(Set groupSet) { + SqlSessionFactory sqlSessionFactory=SpringContextHolder.getBean(SqlSessionFactory.class); + SqlSession batchSqlSession = null; + try{ + batchSqlSession = sqlSessionFactory.openSession(ExecutorType.BATCH, false); + if(groupSet.size()>0) { + int index=0; + List groupIds=ConfigServiceUtil.getId(2, groupSet.size()); + for(String org:groupSet) { + ConfigGroupInfo configGroupInfo=new ConfigGroupInfo(); + configGroupInfo.setGroupName(org); + configGroupInfo.setIsIssued(0); + configGroupInfo.setGroupType(4); + configGroupInfo.setInsertTime(new Date()); + configGroupInfo.setGroupId(groupIds.get(index)); + ((ConfigGroupInfoDao) batchSqlSession.getMapper(ConfigGroupInfoDao.class)).insertConfigGroupInfo(configGroupInfo); + if(index%Constants.IMPORT_LIMIT==0) { + batchSqlSession.commit(); + } + index++; } - //最后剩下的 - if(!toDelAndSendAsnIpCfgs.isEmpty()){ - delAndSend(toDelAndSendAsnIpCfgs); - - } - }else { - delAndSend(toDelAndSendAsnIpCfgs); + batchSqlSession.commit(); } - } + + }finally { + if(batchSqlSession != null){ + batchSqlSession.close(); + } + } + + } - /** - * 根据Id 批量删除 - * @param entities - */ - public void deleteByIdsBatch(List entities) { +// public void deleteIps(Map asnNoMap){ +// List toDelAndSendAsnIpCfgs=Lists.newArrayList(); +// List asnIds=Lists.newArrayList(asnNoMap.size()); +// for(Entry e:asnNoMap.entrySet()) { +// AsnGroupInfo asnGroupInfo=e.getValue(); +// if(asnGroupInfo==null) { +// asnGroupInfo=this.getAsnGroupInfoByAsnNo(e.getKey()); +// } +// if(asnGroupInfo.getIsValid()==1) {//已下发 +// List _toDelAsnIpCfgs=this.getByAsnNo(asnGroupInfo.getAsnId()); +// toDelAndSendAsnIpCfgs.addAll(_toDelAsnIpCfgs); +// }else { +// asnIds.add(e.getKey()); +// } +// } +// if(asnIds.size()>0) { +// this.deleteByAsnNo(asnIds); +// } +// if(toDelAndSendAsnIpCfgs.size()>0) { +// int pointsDataLimit = Constants.MAAT_JSON_SEND_SIZE;//限制条数 +// Integer size = toDelAndSendAsnIpCfgs.size(); +// //判断是否有必要分批 +// if(pointsDataLimit listPage = toDelAndSendAsnIpCfgs.subList(0, pointsDataLimit); +// delAndSend(listPage); +// //剔除 +// toDelAndSendAsnIpCfgs.subList(0, pointsDataLimit).clear(); +// } +// //最后剩下的 +// if(!toDelAndSendAsnIpCfgs.isEmpty()){ +// delAndSend(toDelAndSendAsnIpCfgs); +// +// } +// }else { +// delAndSend(toDelAndSendAsnIpCfgs); +// } +// } +// } + @Transactional(readOnly=false,rollbackFor=RuntimeException.class) + public void delAndSend(List entities) { StringBuilder sb=new StringBuilder(); for(AsnIpCfg ip:entities) { sb.append(ip.getCfgId()); @@ -232,134 +236,87 @@ public class AsnIpCfgService extends CrudService, AsnIpCfg> { } sb.deleteCharAt(sb.toString().lastIndexOf(",")); asnIpCfgDao.delete(sb.toString()); - } - @Transactional(readOnly=false,rollbackFor=RuntimeException.class) - public void delAndSend(List entities) { - deleteByIdsBatch(entities); asnIPRegionSendToMaat(entities,Constants.VALID_NO); } - /** - * 分割IP region分次下发 - * 由于在Controller中分割,此方法不需要调用,直接使用asnIPRegionSendToMaat方法即可 - * @param asnIpCfgs - * @param valid - */ - @Deprecated - public void splitAndSend(List asnIpCfgs,Integer valid){ - if(asnIpCfgs!=null&&asnIpCfgs.size()>0) { -// List asnIpCfgs=Lists.newArrayList(list.size()); -// asnIpCfgs.addAll(list); - int pointsDataLimit = Constants.MAAT_JSON_SEND_SIZE;//限制条数 - Integer size = asnIpCfgs.size(); - //判断是否有必要分批 - if(pointsDataLimit listPage = asnIpCfgs.subList(0, pointsDataLimit); - asnIPRegionSendToMaat(listPage,valid); - //剔除 - asnIpCfgs.subList(0, pointsDataLimit).clear(); - } - //最后剩下的 - if(!asnIpCfgs.isEmpty()){ - asnIPRegionSendToMaat(asnIpCfgs,valid); - } - }else { - asnIPRegionSendToMaat(asnIpCfgs,valid); - } - - } - } - /** - * 批量保存asn PolicyGroupInfo - * @param entities - * @return - * @throws MaatConvertException - */ - @Transactional(readOnly=false,rollbackFor=RuntimeException.class) - public Map saveAsnGroupBatch(List entities) throws MaatConvertException{ - Map configGroupInfoMap=new HashMap<>(entities.size()); - List groupIds= ConfigServiceUtil.getId(2,entities.size()); - if(groupIds.size()!=entities.size()) { - throw new MaatConvertException("Get asn group id failed"); - } - int ind=0; - for(PolicyGroupInfo entity:entities) { - entity.setIsValid(1); - ConfigGroupInfo group=new ConfigGroupInfo(); - //新增 - Date createTime=new Date(); - entity.setCreatorId(UserUtils.getUser().getId()); - entity.setCreateTime(createTime); - //asn类型从综合服务获取groupId - if(4!=entity.getGroupType().intValue()) { - throw new RuntimeException("ConfigGroupInfo is not asn type 4!"); - } - entity.setServiceGroupId(groupIds.get(ind).intValue()); - //新增协议分组 - group.setGroupId(groupIds.get(ind).intValue()); - group.setGroupName(entity.getGroupName()); - group.setIsIssued(0); - group.setGroupType(entity.getGroupType()); - group.setAsnId(entity.getAsnNo()); - configGroupInfoDao.insertConfigGroupInfo(group); - if(group.getGroupType().intValue()==4) { - AsnCacheUtils.put(entity.getAsnNo(), group); - } - policyGroupInfoDao.insert(entity); - configGroupInfoMap.put(group.getAsnId(), group); - ind++; - } - return configGroupInfoMap; - } @Transactional(readOnly=false,rollbackFor=RuntimeException.class) public void saveAsnIpCfg(CfgIndexInfo entity) { Date createTime=new Date(); - ConfigGroupInfo groupInfo=configGroupInfoDao.getConfigGroupInfoByGroupId(entity.getAsnIpGroup().intValue()); - if(groupInfo==null) { - throw new RuntimeException("ConfigGroupInfo is null!"); + //组织去除首尾空格 + entity.setOrganization(entity.getOrganization().trim()); + entity.setCountry(entity.getCountry().trim()); + entity.setDetail(entity.getDetail().trim()); + ConfigGroupInfo configGroupInfo=configGroupInfoDao.getAsnGroupByName(entity.getOrganization()); + AsnGroupInfo asnGroupInfo=asnGroupInfoDao.getGroupIdByNameAndASNId(entity.getOrganization(), entity.getCountry(), Long.parseLong(entity.getUserRegion1())); + Integer orgGroup=0; + Integer compileId=0; + Integer asnIdGroup=0; + if(configGroupInfo==null) { + configGroupInfo=new ConfigGroupInfo(); + configGroupInfo.setGroupName(entity.getOrganization()); + configGroupInfo.setGroupType(4); + configGroupInfo.setInsertTime(new Date()); + configGroupInfo.setIsIssued(0); + if(asnGroupInfo==null) { + List groupIdList=ConfigServiceUtil.getId(2, 2); + orgGroup=groupIdList.get(0); + + asnIdGroup=groupIdList.get(1); + }else { + List groupIdList=ConfigServiceUtil.getId(2, 1); + orgGroup=groupIdList.get(0); + configGroupInfo.setGroupId(orgGroup); + asnIdGroup=asnGroupInfo.getGroupId(); + } + configGroupInfo.setGroupId(orgGroup); + configGroupInfoDao.insertConfigGroupInfo(configGroupInfo); + }else { + orgGroup=configGroupInfo.getGroupId(); + if(asnGroupInfo==null) { + List groupIdList=ConfigServiceUtil.getId(2, 1); + asnIdGroup=groupIdList.get(0); + }else { + asnIdGroup=asnGroupInfo.getGroupId(); + } } + if(asnGroupInfo==null) { + asnGroupInfo=new AsnGroupInfo(); + asnGroupInfo.setOrganization(entity.getOrganization()); + asnGroupInfo.setCountry(entity.getCountry()); + asnGroupInfo.setDetail(entity.getDetail()); + asnGroupInfo.setIsValid(0); + asnGroupInfo.setCreateTime(new Date()); + asnGroupInfo.setCreatorId(entity.getCurrentUser().getId()); + asnGroupInfo.setAsnId(Long.parseLong(entity.getUserRegion1())); + asnGroupInfo.setGroupId(asnIdGroup); + List compileIds=ConfigServiceUtil.getId(1, 1); + asnGroupInfo.setCompileId(compileIds.get(0)); + asnGroupInfoDao.insert(asnGroupInfo); + } + entity.setAsnIpGroup(asnIdGroup); + entity.setCompileId(asnGroupInfo.getCompileId()); List idList=ConfigServiceUtil.getId(3, entity.getAsnIpCfgs().size()); int index=0; - if(groupInfo.getIsIssued()==1) {//如果已经下发,则需要下到综合服务中 - if(entity.getAsnIpCfgs()!=null) { - for(AsnIpCfg cfg:entity.getAsnIpCfgs()) { - if(StringUtils.isNotBlank(entity.getCfgDesc())) { - BeanUtils.copyProperties(entity, cfg, new String[]{"cfgId"}); - }else { - BeanUtils.copyProperties(entity, cfg, new String[]{"cfgId","cfgDesc"}); - } - - cfg.setCreateTime(createTime); - cfg.setCreatorId(entity.getCurrentUser().getId()); - cfg.setAsnIpGroup(entity.getAsnIpGroup()); - cfg.setIsValid(Constants.VALID_YES); - cfg.setRegionId(idList.get(index)); - index++; - } + if(entity.getAsnIpCfgs()!=null) { + for(AsnIpCfg cfg:entity.getAsnIpCfgs()) { + BeanUtils.copyProperties(entity, cfg, new String[]{"cfgId"}); + cfg.setRequestId(0); + cfg.setClassify("0"); + cfg.setAttribute("0"); + cfg.setLable("0"); + cfg.setCreateTime(createTime); + cfg.setCreatorId(entity.getCurrentUser().getId()); + cfg.setAsnIpGroup(entity.getAsnIpGroup().intValue()); + cfg.setIsValid(Constants.VALID_NO); + cfg.setIsAudit(Constants.AUDIT_NOT_YET); + cfg.setRegionId(idList.get(index)); + index++; } - this.save(entity.getAsnIpCfgs()); - asnIPRegionSendToMaat(entity.getAsnIpCfgs(),Constants.VALID_YES); -// splitAndSend(entity.getAsnIpCfgs(),Constants.VALID_YES); - }else { - if(entity.getAsnIpCfgs()!=null) { - for(AsnIpCfg cfg:entity.getAsnIpCfgs()) { - BeanUtils.copyProperties(entity, cfg, new String[]{"cfgId"}); - cfg.setCreateTime(createTime); - cfg.setCreatorId(entity.getCurrentUser().getId()); - cfg.setAsnIpGroup(entity.getAsnIpGroup().intValue()); - cfg.setIsValid(Constants.VALID_NO); - cfg.setRegionId(idList.get(index)); - index++; - } - } - this.save(entity.getAsnIpCfgs()); } + this.save(entity.getAsnIpCfgs()); } @Transactional(readOnly=false,rollbackFor=RuntimeException.class) - public void delete(Integer isValid,String ids) { + public void delete(String ids) { /*for(String id:ids.split(",")) { Long.parseLong(id); }*/ @@ -368,13 +325,13 @@ public class AsnIpCfgService extends CrudService, AsnIpCfg> { for(AsnIpCfg asnIpCfg:asnIpCfgList) { if(asnIpCfg.getIsValid()==Constants.VALID_YES) {//代表下发过了 - asnIpCfg.setIsValid(isValid); + asnIpCfg.setIsValid(Constants.VALID_DEL); issuedList.add(asnIpCfg); - Integer groupId=asnIpCfg.getAsnIpGroup(); - List result=asnIpCfgDao.findOtherIps(groupId, asnIpCfg.getCfgId().intValue()); - if(result==null||result.size()==0) { - throw new RuntimeException("Cant not delete ip from asn group, there is only one ip left in the group!"); - } + // groupId=asnIpCfg.getAsnIpGroup(); + //List result=asnIpCfgDao.findOtherIps(groupId, asnIpCfg.getCfgId().intValue()); + //if(result==null||result.size()==0) { + // throw new RuntimeException("Cant not delete ip from asn group, there is only one ip left in the group!"); + //} } } asnIpCfgDao.delete(ids); @@ -385,10 +342,7 @@ public class AsnIpCfgService extends CrudService, AsnIpCfg> { } } -// public List findPolicyGroupInfosByType(Integer groupId) { -// // TODO Auto-generated method stub -// return asnIpCfgDao.findPolicyGroupInfosByType(groupId); -// } + /** * 选中组中是否含有只剩一个未删除IP的组 * @param serviceGroupIds @@ -410,9 +364,10 @@ public class AsnIpCfgService extends CrudService, AsnIpCfg> { } return false; } - public ConfigGroupInfo getConfigGroupInfoByAsnNo(Long asnNo) { - ConfigGroupInfo configGroupInfo=configGroupInfoDao.getInfoByAsnNo(asnNo); - AsnCacheUtils.put(asnNo, configGroupInfo); + public AsnGroupInfo getAsnGroupInfoByAsnNo(Long asnNo) { + AsnGroupInfo configGroupInfo=new AsnGroupInfo(); + configGroupInfo.setAsnId(asnNo); + configGroupInfo=asnGroupInfoDao.getInfoByAsnNo(configGroupInfo); return configGroupInfo; } public List getByAsnNo(Long asnNo) { @@ -421,12 +376,12 @@ public class AsnIpCfgService extends CrudService, AsnIpCfg> { } return asnIpCfgDao.getByAsnNo(asnNo.longValue()); } -// public void deleteByAsnGroup(Long asnNo) { -// if(asnNo==null) { -// throw new RuntimeException("asnNo is null!"); -// } -// asnIpCfgDao.deleteByAsnGroup(asnNo.longValue()); -// } + public List getByIds(String ids) { + if(ids==null) { + throw new RuntimeException("ids is null!"); + } + return asnIpCfgDao.getByIds(ids); + } @Transactional(readOnly=false,rollbackFor=RuntimeException.class) public void deleteByAsnNo(List asnNoList) { int pointsDataLimit = 1000;//限制条数 @@ -442,7 +397,7 @@ public class AsnIpCfgService extends CrudService, AsnIpCfg> { } int result=0; do { - result=asnIpCfgDao.deleteByAsnGroup(asnNoStr.toString().substring(0,asnNoStr.toString().length()-1)); + result=asnIpCfgDao.deleteByAsnId(asnNoStr.toString().substring(0,asnNoStr.toString().length()-1)); }while(result>0); //剔除 asnNoList.subList(0, pointsDataLimit).clear(); @@ -455,7 +410,7 @@ public class AsnIpCfgService extends CrudService, AsnIpCfg> { } int result=0; do { - result=asnIpCfgDao.deleteByAsnGroup(asnNoStr.toString().substring(0,asnNoStr.toString().length()-1)); + result=asnIpCfgDao.deleteByAsnId(asnNoStr.toString().substring(0,asnNoStr.toString().length()-1)); }while(result>0); asnNoList.clear(); } @@ -467,7 +422,7 @@ public class AsnIpCfgService extends CrudService, AsnIpCfg> { } int result=0; do { - result=asnIpCfgDao.deleteByAsnGroup(asnNoStr.toString().substring(0,asnNoStr.toString().length()-1)); + result=asnIpCfgDao.deleteByAsnId(asnNoStr.toString().substring(0,asnNoStr.toString().length()-1)); }while(result>0); asnNoList.clear(); } @@ -475,4 +430,131 @@ public class AsnIpCfgService extends CrudService, AsnIpCfg> { public void ajaxDeleteAsnIp(String ids) { asnIpCfgDao.ajaxDeleteAsnIp(ids); } + /** + * + * auditIpBatch(非IP类配置用,审核区域IP) + * (这里描述这个方法适用条件 – 可选) + * @param data + *void + * @exception + * @since 1.0.0 + */ + @Transactional(readOnly=false,rollbackFor=RuntimeException.class) + public void auditIpBatch(Map> data,Integer isValid) { + SqlSessionFactory sqlSessionFactory=SpringContextHolder.getBean(SqlSessionFactory.class); + final SqlSession batchSqlSession = sqlSessionFactory.openSession(ExecutorType.BATCH, false); + try{ + for(Entry> enrty:data.entrySet()) { + //data.entrySet().stream().forEach( enrty->{ + Long asn=enrty.getKey();//ans group 的group id + List asnIpCfgs=enrty.getValue(); + for(int index = 0; index < asnIpCfgs.size();index++){ + AsnIpCfg t = asnIpCfgs.get(index); + BaseIpCfg ipCfg=new BaseIpCfg(); + BeanUtils.copyProperties(t, ipCfg); + ipCfg.setTableName(AsnIpCfg.getTablename()); + ((IpCfgDao) batchSqlSession.getMapper(IpCfgDao.class)).audit(ipCfg); + } + batchSqlSession.commit(); + AsnGroupInfo asnGroupInfo=new AsnGroupInfo(); + asnGroupInfo.setAsnId(asn); + asnGroupInfo=asnGroupInfoDao.getInfoByAsnNo(asnGroupInfo); + Integer groupId=asnGroupInfo.getGroupId(); + MaatCfg maatCfg = new MaatCfg(); + 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(isValid==Constants.VALID_YES) {//审核通过 + if(asnGroupInfo.getIsValid()==0) {//ans组未下发过,下发编译配置 + asnGroupInfo.setIsValid(1); + asnGroupInfo.setEditorId(UserUtils.getUser().getId()); + asnGroupInfo.setEditTime(new Date()); + asnGroupInfoDao.updateValid(asnGroupInfo); + maatCfg.initDefaultValue(); + ToMaatBean maatBean = new ToMaatBean(); + //group + GroupCfg groupCfg=new GroupCfg(); + groupCfg.setCompileId(asnGroupInfo.getCompileId()); + groupCfg.setGroupId(groupId); + groupCfg.setIsValid(Constants.VALID_YES); + groupCfg.setAuditTime(asnIpCfgs.get(0).getAuditTime()); + groupRelationList.add(groupCfg); + BeanUtils.copyProperties(asnIpCfgs.get(0), maatCfg); + ipRegionList.addAll(groupReuseCfgAddRemoveConvert(asnIpCfgs,Constants.VALID_YES,groupId)); + maatCfg.setCompileId(asnGroupInfo.getCompileId()); + maatCfg.setAction(asnIpCfgs.get(0).getAction()); + maatCfg.setAuditTime(asnIpCfgs.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(isValid); + // 设置ASN自定义域 + String userRegion = "ASN_ID=" + asnIpCfgs.get(0).getUserRegion1(); + maatCfg.setUserRegion(userRegion); + configCompileList.add(maatCfg); + maatBean.setConfigCompileList(configCompileList); + maatBean.setAuditTime(asnIpCfgs.get(0).getAuditTime()); + maatBean.setCreatorName(asnIpCfgs.get(0).getCurrentUser().getName()); + maatBean.setVersion(Constants.MAAT_VERSION); + maatBean.setOpAction(Constants.INSERT_ACTION); + // 调用服务接口下发配置数据 + String json = gsonToJson(maatBean); + logger.info("ASN IP配置下发配置参数:" + json); + // 调用服务接口下发配置 + ToMaatResult result = ConfigServiceUtil.postMaatCfg(json); + logger.info("ASN IP配置下发响应信息:" + result.getMsg()); + }else if(asnGroupInfo.getIsValid()==1){//已经下发过,走分组复用 + asnIPRegionSendToMaat(asnIpCfgs,isValid); + }else { + throw new RuntimeException("asnGroupInfo isValid value is "+asnGroupInfo.getIsValid()); + } + }else if(isValid==Constants.VALID_NO) {//取消审核通过 + //已经下发过的,调用分组复用配置删除接口 +// GroupReuseAddBean maatBean = new GroupReuseAddBean(); +// List groupReuseList=new ArrayList<>(); +// GroupReuseCfg groupReuseCfg=new GroupReuseCfg(); +// ipRegionList.addAll(groupReuseCfgAddRemoveConvert(asnIpCfgs,Constants.VALID_NO,groupId)); +// groupReuseCfg.setIpRegionList(ipRegionList); +// groupReuseCfg.setStrRegionList(strRegionList); +// groupReuseCfg.setNumRegionList(numRegionList); +// groupReuseList.add(groupReuseCfg); +// maatBean.setGroupReuseCfgList(groupReuseList); +// maatBean.setAuditTime(asnIpCfgs.get(0).getAuditTime()); +// maatBean.setCreatorName(asnIpCfgs.get(0).getCurrentUser().getName()); +// maatBean.setVersion(Constants.MAAT_VERSION); +// maatBean.setOpAction(Constants.UPDATE_ACTION); +// //调用服务接口下发配置数据 +// String json=gsonToJson(maatBean); +// logger.info("ASN IP域删除配置下发配置参数:"+json); +// //调用服务接口下发配置 +// ToMaatResult result = ConfigServiceUtil.put(json,3); +// logger.info("ASN IP域删除配置响应信息:"+result.getMsg()); + asnIPRegionSendToMaat(asnIpCfgs,isValid); + //如果一个asn组下没有IP了,修改有效状态 + //if(hasValidAsnIp(asn)) { + // asnGroupInfo.setIsValid(0); + // asnGroupInfo.setEditorId(UserUtils.getUser().getId()); + // asnGroupInfo.setEditTime(new Date()); + // asnGroupInfoDao.updateValid(asnGroupInfo); + //} + }else { + throw new RuntimeException("isValid value is "+isValid); + } + //}); + } + }finally { + if(batchSqlSession != null){ + batchSqlSession.close(); + } + } + } } diff --git a/src/main/java/com/nis/web/service/basics/PolicyGroupInfoService.java b/src/main/java/com/nis/web/service/basics/PolicyGroupInfoService.java index 579e48ab8..4ccf12ee6 100644 --- a/src/main/java/com/nis/web/service/basics/PolicyGroupInfoService.java +++ b/src/main/java/com/nis/web/service/basics/PolicyGroupInfoService.java @@ -11,13 +11,11 @@ import com.nis.domain.Page; import com.nis.domain.basics.PolicyGroupInfo; import com.nis.domain.specific.ConfigGroupInfo; import com.nis.exceptions.MaatConvertException; -import com.nis.util.AsnCacheUtils; import com.nis.util.ConfigServiceUtil; import com.nis.util.StringUtil; import com.nis.web.dao.basics.AsnIpCfgDao; import com.nis.web.dao.basics.PolicyGroupInfoDao; import com.nis.web.dao.specific.ConfigGroupInfoDao; -import com.nis.web.dao.specific.SpecificServiceCfgDao; import com.nis.web.security.UserUtils; import com.nis.web.service.BaseService; @@ -105,9 +103,9 @@ public class PolicyGroupInfoService extends BaseService{ group.setGroupType(entity.getGroupType()); group.setAsnId(entity.getAsnNo()); configGroupInfoDao.insertConfigGroupInfo(group); - if(group.getGroupType().intValue()==4) { - AsnCacheUtils.put(entity.getAsnNo(), group); - } +// if(group.getGroupType().intValue()==4) { +// AsnCacheUtils.put(entity.getAsnNo(), group); +// } } } diff --git a/src/main/java/com/nis/web/service/configuration/IpCfgService.java b/src/main/java/com/nis/web/service/configuration/IpCfgService.java index fee3a0c03..c7c02edb0 100644 --- a/src/main/java/com/nis/web/service/configuration/IpCfgService.java +++ b/src/main/java/com/nis/web/service/configuration/IpCfgService.java @@ -7,9 +7,6 @@ import java.util.Map; import java.util.Properties; import org.apache.commons.lang3.StringUtils; -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.context.i18n.LocaleContextHolder; @@ -18,7 +15,7 @@ import org.springframework.transaction.annotation.Transactional; import com.nis.domain.FunctionRegionDict; import com.nis.domain.Page; -import com.nis.domain.basics.AsnIpCfg; +import com.nis.domain.basics.AsnGroupInfo; import com.nis.domain.callback.InlineIp; import com.nis.domain.configuration.AreaIpCfg; import com.nis.domain.configuration.BaseIpCfg; @@ -33,14 +30,13 @@ import com.nis.domain.maat.MaatCfg.NumBoundaryCfg; import com.nis.domain.maat.MaatCfg.StringCfg; import com.nis.domain.maat.ToMaatBean; import com.nis.domain.maat.ToMaatResult; -import com.nis.domain.specific.ConfigGroupInfo; import com.nis.exceptions.MaatConvertException; -import com.nis.util.AsnCacheUtils; import com.nis.util.ConfigServiceUtil; import com.nis.util.Configurations; import com.nis.util.Constants; import com.nis.util.DictUtils; import com.nis.util.StringUtil; +import com.nis.web.dao.basics.AsnGroupInfoDao; import com.nis.web.dao.basics.AsnIpCfgDao; import com.nis.web.dao.configuration.AreaIpCfgDao; import com.nis.web.dao.configuration.IpCfgDao; @@ -48,7 +44,6 @@ import com.nis.web.dao.configuration.StringCfgDao; import com.nis.web.dao.specific.ConfigGroupInfoDao; import com.nis.web.security.UserUtils; import com.nis.web.service.CrudService; -import com.nis.web.service.SpringContextHolder; /** * IP相关配置事务类 @@ -65,6 +60,8 @@ public class IpCfgService extends CrudService { protected AreaIpCfgDao areaIpCfgDao; @Autowired //protected SpecificServiceCfgDao specificServiceCfgDao; + protected AsnGroupInfoDao asnGroupInfoDao; + @Autowired protected ConfigGroupInfoDao configGroupInfoDao; @Autowired protected AsnIpCfgDao asnIpCfgDao; @@ -647,105 +644,136 @@ public class IpCfgService extends CrudService { entity.setIsAudit(isAudit); ipCfgDao.auditCfg(entity); ToMaatBean maatBean = new ToMaatBean(); - MaatCfg maatCfg = new MaatCfg(); + 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(isAudit==Constants.AUDIT_YES) { - ConfigGroupInfo group=configGroupInfoDao.getConfigGroupInfoByGroupId(Integer.parseInt(entity.getUserRegion4())); - if(group.getIsIssued()==1) {//复用,只下编译跟分组 - maatCfg.initDefaultValue(); - BeanUtils.copyProperties(entity, maatCfg); - maatCfg.setAction(entity.getAction()); - maatCfg.setAuditTime(entity.getAuditTime()); - maatCfg.setIpRegionList(ipRegionList); - maatCfg.setStrRegionList(strRegionList); - maatCfg.setNumRegionList(numRegionList); - maatCfg.setDigestRegionList(digestRegionList); - maatCfg.setGroupRelationList(groupRelationList); - maatCfg.setAreaIpRegionList(areaIpRegionList); - maatCfg.setIsValid(entity.getIsValid()); - //group - GroupCfg groupCfg=new GroupCfg(); - groupCfg.setCompileId(entity.getCompileId()); - groupCfg.setGroupId(Integer.parseInt(entity.getUserRegion4())); - groupCfg.setIsValid(Constants.VALID_YES); - groupCfg.setAuditTime(entity.getAuditTime()); - groupRelationList.add(groupCfg); - maatCfg.setGroupNum(groupRelationList.size()); - configCompileList.add(maatCfg); - maatBean.setConfigCompileList(configCompileList); - maatBean.setAuditTime(entity.getAuditTime()); - maatBean.setCreatorName(entity.getCurrentUser().getName()); - maatBean.setVersion(Constants.MAAT_VERSION); - maatBean.setOpAction(Constants.INSERT_ACTION); - if(group.getAsnId()!=null) { - maatCfg.setUserRegion("ASN_ID="+group.getAsnId()); - } - //调用服务接口下发配置数据 - String json=gsonToJson(maatBean); - logger.info("ipaddr asn组复用配置下发配置参数:"+json); - //调用服务接口下发配置 - ToMaatResult result = ConfigServiceUtil.postMaatCfg(json); - logger.info("ipaddr asn组复用配置下发响应信息:"+result.getMsg()); - }else {//首次下发 - maatCfg.initDefaultValue(); - BeanUtils.copyProperties(entity, maatCfg); - maatCfg.setAction(entity.getAction()); - maatCfg.setAuditTime(entity.getAuditTime()); - maatCfg.setStrRegionList(strRegionList); - maatCfg.setNumRegionList(numRegionList); - maatCfg.setDigestRegionList(digestRegionList); - maatCfg.setGroupRelationList(groupRelationList); - maatCfg.setAreaIpRegionList(areaIpRegionList); - maatCfg.setIsValid(entity.getIsValid()); - if(group.getAsnId()!=null) { - maatCfg.setUserRegion("ASN_ID="+group.getAsnId()); - } - //group - GroupCfg groupCfg=new GroupCfg(); - groupCfg.setCompileId(entity.getCompileId()); - groupCfg.setGroupId(Integer.parseInt(entity.getUserRegion4())); - groupCfg.setIsValid(Constants.VALID_YES); - groupCfg.setAuditTime(entity.getAuditTime()); - groupRelationList.add(groupCfg); - maatCfg.setGroupNum(groupRelationList.size()); - //region - //查询asn group id下所有的 ip - AsnIpCfg asnIpCfg=new AsnIpCfg(); - asnIpCfg.setAsnIpGroup(Integer.parseInt(entity.getUserRegion4())); - List allAsnIpCfgs=asnIpCfgDao.findAllList(asnIpCfg); - ipRegionList.addAll(groupReuseCfgAddRemoveConvert(allAsnIpCfgs,Constants.VALID_YES,null)); - maatCfg.setIpRegionList(ipRegionList); - configCompileList.add(maatCfg); - maatBean.setConfigCompileList(configCompileList); - maatBean.setAuditTime(entity.getAuditTime()); - maatBean.setCreatorName(entity.getCurrentUser().getName()); - maatBean.setVersion(Constants.MAAT_VERSION); - maatBean.setOpAction(Constants.INSERT_ACTION); - - //调用服务接口下发配置数据 - String json=gsonToJson(maatBean); - logger.info("ipaddr asn配置下发配置参数:"+json); - //调用服务接口下发配置 - ToMaatResult result = ConfigServiceUtil.postMaatCfg(json); - logger.info("ipaddr asn配置下发响应信息:"+result.getMsg()); - ConfigGroupInfo info=new ConfigGroupInfo(); - BeanUtils.copyProperties(group, info); - info.setIsIssued(1); - //info.setGroupId(Integer.parseInt(entity.getUserRegion4())); - configGroupInfoDao.updateConfigGroupInfobyGroupId(info); - AsnCacheUtils.put(info.getAsnId(), info); - AsnIpCfg cfg=new AsnIpCfg(); - cfg.setIsValid(Constants.VALID_YES); - cfg.setAsnIpGroup(Integer.parseInt(entity.getUserRegion4())); - asnIpCfgDao.updateIssued(cfg); + AsnGroupInfo asnGroupInfo=new AsnGroupInfo(); + asnGroupInfo.setOrganization(entity.getUserRegion4()); + asnGroupInfo.setIsValid(1); + List groups=asnGroupInfoDao.findAsnGroupInfoList(asnGroupInfo); + if(groups!=null&&groups.size()>0) { +// if(configGroupInfo.getIsIssued()==1) {//复用,只下编译跟分组 +// for(AsnGroupInfo group:groups) { +// MaatCfg maatCfg = new MaatCfg(); +// List groupRelationList = new ArrayList<>(); +// List ipRegionList = new ArrayList<>(); +// List strRegionList = new ArrayList<>(); +// List numRegionList = new ArrayList<>(); +// List digestRegionList = new ArrayList<>(); +// List areaIpRegionList = new ArrayList<>(); +// maatCfg.initDefaultValue(); +// BeanUtils.copyProperties(entity, maatCfg); +// maatCfg.setAction(entity.getAction()); +// maatCfg.setAuditTime(entity.getAuditTime()); +// maatCfg.setIpRegionList(ipRegionList); +// maatCfg.setStrRegionList(strRegionList); +// maatCfg.setNumRegionList(numRegionList); +// maatCfg.setDigestRegionList(digestRegionList); +// maatCfg.setGroupRelationList(groupRelationList); +// maatCfg.setAreaIpRegionList(areaIpRegionList); +// maatCfg.setIsValid(entity.getIsValid()); +// //group +// GroupCfg groupCfg=new GroupCfg(); +// groupCfg.setCompileId(entity.getCompileId()); +// groupCfg.setGroupId(Integer.parseInt(entity.getUserRegion4())); +// groupCfg.setIsValid(Constants.VALID_YES); +// groupCfg.setAuditTime(entity.getAuditTime()); +// groupRelationList.add(groupCfg); +// maatCfg.setGroupNum(groupRelationList.size()); +// if(group.getAsnId()!=null) { +// maatCfg.setUserRegion("ASN_ID="+group.getAsnId()); +// } +// configCompileList.add(maatCfg); +// } +// +// +// maatBean.setConfigCompileList(configCompileList); +// maatBean.setAuditTime(entity.getAuditTime()); +// maatBean.setCreatorName(entity.getCurrentUser().getName()); +// maatBean.setVersion(Constants.MAAT_VERSION); +// maatBean.setOpAction(Constants.INSERT_ACTION); +// +// //调用服务接口下发配置数据 +// String json=gsonToJson(maatBean); +// logger.info("ipaddr asn组复用配置下发配置参数:"+json); +// //调用服务接口下发配置 +// ToMaatResult result = ConfigServiceUtil.postMaatCfg(json); +// logger.info("ipaddr asn组复用配置下发响应信息:"+result.getMsg()); +// }else {//首次下发 + MaatCfg maatCfg = new MaatCfg(); + List groupRelationList = new ArrayList<>(); + List ipRegionList = new ArrayList<>(); + List strRegionList = new ArrayList<>(); + List numRegionList = new ArrayList<>(); + List digestRegionList = new ArrayList<>(); + List areaIpRegionList = new ArrayList<>(); + maatCfg.initDefaultValue(); + BeanUtils.copyProperties(entity, maatCfg); + maatCfg.setAction(entity.getAction()); + maatCfg.setAuditTime(entity.getAuditTime()); + + maatCfg.setNumRegionList(numRegionList); + maatCfg.setDigestRegionList(digestRegionList); + maatCfg.setGroupRelationList(groupRelationList); + maatCfg.setAreaIpRegionList(areaIpRegionList); + maatCfg.setIsValid(entity.getIsValid()); + //group + List groupIds=ConfigServiceUtil.getId(2, 1); + GroupCfg groupCfg=new GroupCfg(); + groupCfg.setCompileId(entity.getCompileId()); + //groupCfg.setGroupId(Integer.parseInt(entity.getUserRegion4())); + groupCfg.setGroupId(groupIds.get(0)); + groupCfg.setIsValid(Constants.VALID_YES); + groupCfg.setAuditTime(entity.getAuditTime()); + groupRelationList.add(groupCfg); + maatCfg.setGroupNum(groupRelationList.size()); + maatCfg.setIpRegionList(ipRegionList); + List regions=ConfigServiceUtil.getId(3, groups.size()); + int index=0; + List functionRegionDicts=DictUtils.getFunctionRegionDictList(entity.getFunctionId()); + String cfgType=null; + for(FunctionRegionDict dict:functionRegionDicts) { + if("asn".equals(dict.getConfigServiceType())) { + cfgType=dict.getCfgType(); + } + } + for(AsnGroupInfo group:groups) { + StringCfg cfg=new StringCfg(); + cfg.setRegionId(index); + cfg.setCfgKeywords("AS"+group.getAsnId()); + cfg.setExprType(0); + cfg.setIsHexbin(0); + cfg.setMatchMethod(3); + //需要根据文档 + cfg.setCfgType(StringUtils.isBlank(cfgType)?"NTC_ASN_NUMBER":cfgType); + cfg.setGroupId(groupIds.get(0)); + cfg.setAuditTime(entity.getAuditTime()); + cfg.setIsValid(entity.getIsValid()); + cfg.setRegionId(regions.get(index)); + //cfg.setGroupId(Integer.parseInt(entity.getUserRegion4())); + strRegionList.add(cfg); + index++; + } + maatCfg.setStrRegionList(strRegionList); + configCompileList.add(maatCfg); + maatBean.setConfigCompileList(configCompileList); + maatBean.setAuditTime(entity.getAuditTime()); + maatBean.setCreatorName(entity.getCurrentUser().getName()); + maatBean.setVersion(Constants.MAAT_VERSION); + maatBean.setOpAction(Constants.INSERT_ACTION); + + //调用服务接口下发配置数据 + String json=gsonToJson(maatBean); + logger.info("ipaddr asn配置下发配置参数:"+json); + //调用服务接口下发配置 + ToMaatResult result = ConfigServiceUtil.postMaatCfg(json); + logger.info("ipaddr asn配置下发响应信息:"+result.getMsg()); +// } } + }else if(isAudit==Constants.AUDIT_NOT_YES) {//取消审核通过 + MaatCfg maatCfg = new MaatCfg(); maatCfg.setCompileId(entity.getCompileId()); maatCfg.setServiceId(entity.getServiceId()); maatCfg.setIsValid(0);//无效 @@ -834,8 +862,8 @@ public class IpCfgService extends CrudService { entity.setIpPortList(ipPortList); entity.setNtcSubscribeIdCfgList(subscribeIdList); if(StringUtils.isNotBlank(entity.getUserRegion4())) { - ConfigGroupInfo info=configGroupInfoDao.getConfigGroupInfoByGroupId(Integer.parseInt(entity.getUserRegion4().trim())); - entity.setAsnIpGroupName(info.getGroupName()); + List infos=asnGroupInfoDao.getValidConfigGroupInfoByName((entity.getUserRegion4().trim())); + entity.setAsnGroups(infos); } return entity; } @@ -843,8 +871,8 @@ public class IpCfgService extends CrudService { List ipPortList = ipCfgDao.getIpPortList(entity); entity.setIpPortList(ipPortList); if(StringUtils.isNotBlank(entity.getUserRegion4())) { - ConfigGroupInfo info=configGroupInfoDao.getConfigGroupInfoByGroupId(Integer.parseInt(entity.getUserRegion4().trim())); - entity.setAsnIpGroupName(info.getGroupName()); + List infos=asnGroupInfoDao.getValidConfigGroupInfoByName(entity.getUserRegion4().trim()); + entity.setAsnGroups(infos); } return entity; } diff --git a/src/main/java/com/nis/web/service/specific/SpecificServiceCfgService.java b/src/main/java/com/nis/web/service/specific/SpecificServiceCfgService.java index 06c4b4f66..04db8b94a 100644 --- a/src/main/java/com/nis/web/service/specific/SpecificServiceCfgService.java +++ b/src/main/java/com/nis/web/service/specific/SpecificServiceCfgService.java @@ -11,7 +11,6 @@ import com.beust.jcommander.internal.Lists; import com.nis.domain.Page; import com.nis.domain.specific.ConfigGroupInfo; import com.nis.domain.specific.SpecificServiceCfg; -import com.nis.util.AsnCacheUtils; import com.nis.util.ConfigServiceUtil; import com.nis.util.Constants; import com.nis.web.dao.specific.ConfigGroupInfoDao; diff --git a/src/main/resources/messages/message_en.properties b/src/main/resources/messages/message_en.properties index ae0399ed6..13af75260 100644 --- a/src/main/resources/messages/message_en.properties +++ b/src/main/resources/messages/message_en.properties @@ -1446,4 +1446,9 @@ hex_minlength_16=Please enter a hexadecimal string of length 16 need_input=Attributes need to be filled in max_input=Fill in at most four no_need_input=Attributes no need to be filled in -close_link=Close Link \ No newline at end of file +close_link=Close Link +asn_group=ASN Group +can_not_edit_issued_ans_group=Can not edit valid ASN group +can_not_delete_asn_group_with_audited_ip=Can not delete ASN group with approved IP +organization=Organization +mismatch=Mismatch \ No newline at end of file diff --git a/src/main/resources/messages/message_ru.properties b/src/main/resources/messages/message_ru.properties index be04d9d20..fac54d252 100644 --- a/src/main/resources/messages/message_ru.properties +++ b/src/main/resources/messages/message_ru.properties @@ -1450,4 +1450,9 @@ hex_minlength_16=Please enter a hexadecimal string of length 16 need_input=Attributes need to be filled in max_input=Fill in at most four no_need_input=Attributes no need to be filled in -close_link=Close Link \ No newline at end of file +close_link=Close Link +asn_group=ASN Group +can_not_edit_issued_ans_group=Can not edit valid ASN group +can_not_delete_asn_group_with_audited_ip=Can not delete ASN group with approved IP +organization=Organization +mismatch=Mismatch \ No newline at end of file diff --git a/src/main/resources/messages/message_zh_CN.properties b/src/main/resources/messages/message_zh_CN.properties index 383029823..047278f7c 100644 --- a/src/main/resources/messages/message_zh_CN.properties +++ b/src/main/resources/messages/message_zh_CN.properties @@ -1446,4 +1446,9 @@ hex_minlength_16=\u8bf7\u8f93\u5165\u957f\u5ea6\u4e3a16\u7684\u5341\u516d\u8fdb\ need_input=\u9700\u8981\u586b\u5199\u5c5e\u6027 max_input=\u6700\u591a\u586b\u5199\u56db\u4e2a no_need_input=\u65e0\u9700\u586b\u5199\u5c5e\u6027 -close_link=\u5173\u95ed\u8fde\u63a5 \ No newline at end of file +close_link=\u5173\u95ed\u8fde\u63a5 +asn_group=ASN\u7ec4 +can_not_edit_issued_ans_group=\u4e0d\u80fd\u4fee\u6539\u6709\u6548\u7684ASN\u7ec4 +can_not_delete_asn_group_with_audited_ip=\u4e0d\u80fd\u5220\u9664\u5305\u542b\u5ba1\u6838\u901a\u8fc7ip\u7684ASN\u7ec4 +organization=\u7ec4\u7ec7 +mismatch=\u4e0d\u5339\u914d \ No newline at end of file diff --git a/src/main/resources/sql/20190103/asn_group_info.sql b/src/main/resources/sql/20190103/asn_group_info.sql new file mode 100644 index 000000000..ea4ecfce8 --- /dev/null +++ b/src/main/resources/sql/20190103/asn_group_info.sql @@ -0,0 +1,41 @@ +/* + Navicat Premium Data Transfer + + Source Server : 204 + Source Server Type : MySQL + Source Server Version : 100214 + Source Host : 192.168.10.204:3306 + Source Schema : gwall_dev + + Target Server Type : MySQL + Target Server Version : 100214 + File Encoding : 65001 + + Date: 03/01/2019 08:29:09 +*/ + +SET NAMES utf8mb4; +SET FOREIGN_KEY_CHECKS = 0; + +-- ---------------------------- +-- Table structure for asn_group_info +-- ---------------------------- +DROP TABLE IF EXISTS `asn_group_info`; +CREATE TABLE `asn_group_info` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `group_id` int(11) NOT NULL, + `organization` varchar(1024) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL, + `country` varchar(512) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL, + `detail` varchar(1024) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL, + `create_time` datetime(0) NOT NULL, + `creator_id` int(11) NOT NULL, + `edit_time` datetime(0) NULL DEFAULT NULL, + `editor_id` int(11) NULL DEFAULT NULL, + `is_valid` int(2) NOT NULL COMMENT '-1删除 1有效0无效', + `asn_id` bigint(20) NOT NULL COMMENT 'asn号', + `org_group_id` int(11) UNSIGNED NULL DEFAULT NULL, + `compile_id` int(11) NOT NULL COMMENT 'asn 号的编译ID', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic; + +SET FOREIGN_KEY_CHECKS = 1; diff --git a/src/main/resources/sql/20190103/update_asn.sql b/src/main/resources/sql/20190103/update_asn.sql new file mode 100644 index 000000000..d78bafa04 --- /dev/null +++ b/src/main/resources/sql/20190103/update_asn.sql @@ -0,0 +1,16 @@ +#ASN IP region菜单移动位置到Policy Object菜单下 +UPDATE sys_menu SET parent_id =717,parent_ids='0,1,86,717,' WHERE id=1039; +INSERT INTO sys_menu VALUES(1202,750,'0,1,150,750,','asn_ip_configuration','ASN IP配置','480','/basics/asn/list','','fa fa-industry',1,'asn:ip:confirm',1,'2019-01-02 16:32:38',1,'2019-01-02 16:32:38','',1,NULL,0,0,600); +INSERT INTO sys_menu VALUES(1203,865,'0,1,151,865,','asn_ip_configuration','ASN IP配置','480','/basics/asn/list','','fa fa-industry',1,'asn:ip:audit',1,'2019-01-02 16:32:38',1,'2019-01-02 16:32:38','',1,NULL,0,0,600); +#asn_ip_cfg增加四列 +ALTER TABLE asn_ip_cfg ADD COLUMN organization varchar(1024) NULL COMMENT '组织'; +ALTER TABLE asn_ip_cfg ADD COLUMN country varchar(512) NULL COMMENT '国家'; +ALTER TABLE asn_ip_cfg ADD COLUMN detail varchar(1024) NULL COMMENT '详情'; +alter table asn_ip_cfg add column `compile_id` int(11) not null default 0; +#修改tablename +UPDATE function_region_dict SET config_region_value='ASN_IP_REGION' WHERE dict_id=194; +UPDATE function_region_dict SET config_region_value='NTC_ASN_NUMBER' WHERE dict_id=229; +#增加业务号 +INSERT INTO function_service_dict VALUES(162,600,0,1,'monit',400,'asn_ip_region','asn_ip',1,1,'2019-01-02 18:12:46',NULL,NULL,1,1,1); +#asn 组菜单,如果已经存在,则不用修改 +INSERT INTO sys_menu VALUES(1201,109,'0,1,109,','asn_group','ASN组','410','/basics/asnGroup/asnGroupList','','',1,'',1,'2019-01-02 16:21:38',1,'2019-01-02 16:24:41','',1,NULL,0,0,NULL); \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/include/excel/importModal.jsp b/src/main/webapp/WEB-INF/include/excel/importModal.jsp index 2b5297212..3a4d947a3 100644 --- a/src/main/webapp/WEB-INF/include/excel/importModal.jsp +++ b/src/main/webapp/WEB-INF/include/excel/importModal.jsp @@ -195,7 +195,6 @@
-
@@ -208,7 +207,6 @@

-
-
+ <%--
+ + + + + <%-- --%> +
+
+
+
+
+
+
+
+ +
+ + <%-- --%> +
+
+
+
+ +
+
+
diff --git a/src/main/webapp/WEB-INF/views/basics/asnIpCfgFormUpdate.jsp b/src/main/webapp/WEB-INF/views/basics/asnIpCfgFormUpdate.jsp index ae9f1ad65..968b5013f 100644 --- a/src/main/webapp/WEB-INF/views/basics/asnIpCfgFormUpdate.jsp +++ b/src/main/webapp/WEB-INF/views/basics/asnIpCfgFormUpdate.jsp @@ -14,15 +14,62 @@ $(function(){ $(element).parents(".form-group").find("div[for='"+element.attr("name")+"']").append(error); }, submitHandler: function(form){ + $("[name='country']").val($("[name='userRegion1'] option:selected").attr("country")); + $("[name='detail']").val($("[name='userRegion1'] option:selected").attr("detail")); + $("[name='asnIpGroup']").val($("[name='userRegion1'] option:selected").attr("asnIpGroup")); loading('onloading...'); form.submit(); }, errorContainer: "#messageBox", }); - $("#asnId").val($("select[name='asnIpGroup'] option:selected").attr("asnId")); + /* $("#asnId").val($("select[name='asnIpGroup'] option:selected").attr("asnId")); $("select[name='asnIpGroup']").on("change",function(){ var asnId=$(this).find("option[value='"+$(this).val()+"']").attr("asnId"); $("#asnId").val(asnId); + }); */ + var organization=$("[name='organization']").val(); + if(organization){ + $.ajax({ + type:'post', + url:'${ctx}/basics/asn/ajaxGetGroups', + data:{"org":organization}, + async:false, + success:function(data,textStatus){//处理返回结果 + if(data){ + var html=''; + for(var i in data){ + html+="" + } + $("[name='userRegion1']").empty().append(html); + $("[name='userRegion1']").selectpicker("refresh"); + + } + } + }); }); }); @@ -54,6 +101,7 @@ $(function(){ + @@ -83,19 +131,19 @@ $(function(){
- -
- -
- -
-
-
-
+
+ +
+ + <%-- --%> +
+
+
+ +
+
+
+ +
+ + <%-- --%> +
+
+
+
+
+ +
+
+
+ +
<%-- <%@include file="/WEB-INF/include/form/complexIpInfo.jsp" %> --%>
diff --git a/src/main/webapp/WEB-INF/views/basics/asnIpCfgList.jsp b/src/main/webapp/WEB-INF/views/basics/asnIpCfgList.jsp index 98fbbb783..35addb20b 100644 --- a/src/main/webapp/WEB-INF/views/basics/asnIpCfgList.jsp +++ b/src/main/webapp/WEB-INF/views/basics/asnIpCfgList.jsp @@ -10,6 +10,12 @@ $("#intype").val("${cfg.cfgDesc}"); }else if("${cfg.destIpAddress}"){ $("#intype").val("${cfg.destIpAddress}"); + }else if("${cfg.organization}"){ + $("#intype").val("${cfg.organization}"); + }else if("${cfg.country}"){ + $("#intype").val("${cfg.country}"); + }else if("${cfg.detail}"){ + $("#intype").val("${cfg.detail}"); }else{ $("#intype").attr("placeholder"," "+$("#seltype").find("option:selected").text()); } @@ -108,7 +114,7 @@
--%> - <%--
+
@@ -117,7 +123,7 @@ -
--%> +
@@ -128,7 +134,10 @@ <%-- --%> - + + + +
@@ -166,7 +175,7 @@ - <%-- +
-
--%> +
href="javascript:;"> @@ -225,7 +234,7 @@ - <%--
+
" onclick="WdatePicker({dateFmt:'yyyy-MM-dd HH:mm:ss',isShowClear:true});"/>
-
--%> +
@@ -256,10 +265,14 @@ + <%-- --%> - - + <%-- --%> + + + + <%-- --%> @@ -270,24 +283,28 @@ --%> - - <%-- --%> + + <%-- --%> - <%-- - --%> + + <%-- --%> - + + ${cfg.compileId } ${cfg.cfgDesc } - ${cfg.asnIpGroup } + <%-- ${cfg.asnIpGroup } --%> + ${cfg.organization } + ${cfg.country } + ${cfg.detail } ${cfg.userRegion1} @@ -377,21 +394,30 @@ - <%-- + + - --%> + <%-- + + + + + + + --%> + <%--
--%> ${cfg.creatorName } ${cfg.editorName } - <%-- ${cfg.auditorName } - --%> + ${cfg.auditorName } +
diff --git a/src/main/webapp/WEB-INF/views/basics/policyGroupForm.jsp b/src/main/webapp/WEB-INF/views/basics/policyGroupForm.jsp index 7abc1c023..a205db40a 100644 --- a/src/main/webapp/WEB-INF/views/basics/policyGroupForm.jsp +++ b/src/main/webapp/WEB-INF/views/basics/policyGroupForm.jsp @@ -61,9 +61,9 @@ $(function(){ - + <%-- - + --%> @@ -127,7 +127,7 @@ $(function(){ diff --git a/src/main/webapp/WEB-INF/views/basics/policyGroupList.jsp b/src/main/webapp/WEB-INF/views/basics/policyGroupList.jsp index b7ac63c7a..10ea63231 100644 --- a/src/main/webapp/WEB-INF/views/basics/policyGroupList.jsp +++ b/src/main/webapp/WEB-INF/views/basics/policyGroupList.jsp @@ -36,12 +36,12 @@ var checkboxes=$("tbody tr td input.i-checks:checkbox"); var ids=""; var str=""; - var serviceGroupIds=[]; + /* var serviceGroupIds=[]; */ checkboxes.each(function(){ if(true == $(this).is(':checked')){ - if($(this).attr("groupType")==4){ + /* if($(this).attr("groupType")==4){ serviceGroupIds.push($(this).attr("serviceGroupId")); - } + } */ str+=$(this).attr("id")+","; } }); @@ -50,7 +50,7 @@ } var canDel=true; - var tip=''; + /* var tip=''; if(serviceGroupIds.length>0){ $.ajax({ type:'post', @@ -63,29 +63,15 @@ } } }); - /* if(canDel){ // 不能删除包含ASN IP的 ASN组 - $.ajax({ - type:'post', - url:'${ctx}/basics/policyGroup/ajaxHasAsnIPs', - data:{"serviceGroupIds":serviceGroupIds.join(',')}, - async:false, - success:function(data,textStatus){//处理返回结果 - if(data){ - canDel=false; - tip=''; - } - } - }); - } */ - } + } */ if(canDel){ var added = ""; - if(serviceGroupIds.length != 0){ + /* if(serviceGroupIds.length != 0){ added = ""; - } + } */ top.$.jBox.confirm(""+added,"",function(v,h,f){ if(v=="ok"){ - if(serviceGroupIds.length != 0){ + /* if(serviceGroupIds.length != 0){ $.ajax({ type:'post', url:'${ctx}/basics/asn/ajaxDeleteAsnIp', @@ -97,9 +83,9 @@ } } }); - }else{ + }else{ */ window.location = url+"&ids="+ids; - } + /* } */ } },{buttonsFocus:1}); @@ -125,7 +111,7 @@

- <%-- + @@ -136,8 +122,8 @@ - --%> - + + <%-- --%>

@@ -179,9 +165,9 @@ - + <%-- - + --%>
diff --git a/src/main/webapp/WEB-INF/views/cfg/ipaddr/asnForm.jsp b/src/main/webapp/WEB-INF/views/cfg/ipaddr/asnForm.jsp index d6537941c..7472e627f 100644 --- a/src/main/webapp/WEB-INF/views/cfg/ipaddr/asnForm.jsp +++ b/src/main/webapp/WEB-INF/views/cfg/ipaddr/asnForm.jsp @@ -15,13 +15,13 @@
- + <%-- --%>
diff --git a/src/main/webapp/WEB-INF/views/cfg/ipaddr/ipSubList.jsp b/src/main/webapp/WEB-INF/views/cfg/ipaddr/ipSubList.jsp index 0740788c7..534fcdc91 100644 --- a/src/main/webapp/WEB-INF/views/cfg/ipaddr/ipSubList.jsp +++ b/src/main/webapp/WEB-INF/views/cfg/ipaddr/ipSubList.jsp @@ -219,28 +219,50 @@ -
-
-
-
- - + +
+
+
+
+ + +
+
+
+
+
+
+ + +
+
+
+
+
+
+ + +
+
+
+
+
+
+ + +
-
-
-
- - -
-
-
-
+ \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/views/dashboard/ntcTotalReportDetailList.jsp b/src/main/webapp/WEB-INF/views/dashboard/ntcTotalReportDetailList.jsp index b9282bb93..57abbd3bf 100644 --- a/src/main/webapp/WEB-INF/views/dashboard/ntcTotalReportDetailList.jsp +++ b/src/main/webapp/WEB-INF/views/dashboard/ntcTotalReportDetailList.jsp @@ -33,11 +33,9 @@
- -
+ +
@@ -45,13 +43,9 @@
- - -
+ +
@@ -152,6 +146,7 @@ } } }, + colors:['#e5e3cd','#f1e5cd','#f3ebdf','#f3f7f1','#F6DDD0','#FAF0D5','#F1CFC7','#F8DCE8','#CEEBF1','#CED3F8'], title : { text : null }, diff --git a/src/main/webapp/WEB-INF/views/dashboard/trafficActionTransList.jsp b/src/main/webapp/WEB-INF/views/dashboard/trafficActionTransList.jsp index d60e57312..0fb40306f 100644 --- a/src/main/webapp/WEB-INF/views/dashboard/trafficActionTransList.jsp +++ b/src/main/webapp/WEB-INF/views/dashboard/trafficActionTransList.jsp @@ -27,10 +27,8 @@
- - +
@@ -38,10 +36,8 @@
- - +
@@ -70,6 +66,7 @@