diff --git a/src/main/java/com/nis/web/controller/configuration/maintenance/IpAddrPoolController.java b/src/main/java/com/nis/web/controller/configuration/maintenance/IpAddrPoolController.java index c58c6d596..8cf253d85 100644 --- a/src/main/java/com/nis/web/controller/configuration/maintenance/IpAddrPoolController.java +++ b/src/main/java/com/nis/web/controller/configuration/maintenance/IpAddrPoolController.java @@ -1,5 +1,7 @@ package com.nis.web.controller.configuration.maintenance; +import java.util.ArrayList; +import java.util.Arrays; import java.util.Date; import java.util.HashMap; import java.util.List; @@ -25,6 +27,7 @@ import com.nis.exceptions.MaatConvertException; import com.nis.util.ConfigServiceUtil; import com.nis.util.Constants; import com.nis.util.StringUtil; +import com.nis.util.StringUtils; import com.nis.web.controller.BaseController; import com.nis.web.service.configuration.IpAddrPoolCfgService; @@ -166,7 +169,7 @@ public class IpAddrPoolController extends BaseController{ } /** - * 校验所有地址池配置IP不可重复 + * 校验所有地址池配置IP+MASK组合不可重复 * @param cfg * @param request * @param response @@ -174,10 +177,28 @@ public class IpAddrPoolController extends BaseController{ */ @ResponseBody @RequestMapping(value = {"/checkAddrPoolIp"}) - public boolean checkAddrPoolIp(String ips, HttpServletRequest request, HttpServletResponse response){ - for (String ip : ips.split(",")) { - Long cfgId = ipAddrPoolCfgService.checkAddrPoolIp(ip); - if(cfgId != null){ + public boolean checkAddrPoolIp(String ip, String oldIp, HttpServletRequest request, HttpServletResponse response){ + List oldIplist = new ArrayList<>(); + if(StringUtils.isNotBlank(oldIp)){ + oldIplist.add(oldIp); + if(oldIp.contains("/32")){ + oldIplist.add(oldIp.substring(0, oldIp.indexOf("/"))); + }else if(!oldIp.contains("/")){ + oldIplist.add(oldIp+"/32"); + } + } + + List searchlist = new ArrayList<>(); + searchlist.add(ip); + if(ip.contains("/32")){ + searchlist.add(ip.substring(0, ip.indexOf("/"))); + }else if(!ip.contains("/")){ + searchlist.add(ip+"/32"); + } + + for (String searchIp : searchlist) { + IpReuseIpCfg cfg = ipAddrPoolCfgService.checkAddrPoolIp(searchIp); + if((cfg != null) && (!oldIplist.contains(cfg.getSrcIpAddress()))){ return false; } } diff --git a/src/main/java/com/nis/web/dao/configuration/IpAddrPoolCfgDao.java b/src/main/java/com/nis/web/dao/configuration/IpAddrPoolCfgDao.java index 39cda87a3..a31492f26 100644 --- a/src/main/java/com/nis/web/dao/configuration/IpAddrPoolCfgDao.java +++ b/src/main/java/com/nis/web/dao/configuration/IpAddrPoolCfgDao.java @@ -35,7 +35,7 @@ public interface IpAddrPoolCfgDao extends CrudDao{ Long getAddrPoolIdByName(String addrPoolName); - Long checkAddrPoolIp(@Param("srcIpAddress")String ip); + IpReuseIpCfg checkAddrPoolIp(@Param("srcIpAddress")String ip); diff --git a/src/main/java/com/nis/web/dao/configuration/IpAddrPoolCfgDao.xml b/src/main/java/com/nis/web/dao/configuration/IpAddrPoolCfgDao.xml index 2b59b1426..def400aae 100644 --- a/src/main/java/com/nis/web/dao/configuration/IpAddrPoolCfgDao.xml +++ b/src/main/java/com/nis/web/dao/configuration/IpAddrPoolCfgDao.xml @@ -478,12 +478,15 @@ r.addr_pool_name = #{addrPoolName} AND r.is_valid != -1 - SELECT - r.cfg_id + r.cfg_id,r.src_ip_address FROM ip_reuse_ip_cfg r WHERE - r.src_ip_address = #{srcIpAddress} AND r.is_valid != -1 AND r.is_audit != 3 + r.src_ip_address = #{srcIpAddress} AND + r.is_valid != -1 AND + r.is_audit != 3 AND + r.user_region1 IS NOT NULL \ No newline at end of file diff --git a/src/main/java/com/nis/web/service/configuration/IpAddrPoolCfgService.java b/src/main/java/com/nis/web/service/configuration/IpAddrPoolCfgService.java index 8ede5c520..eadb57e4c 100644 --- a/src/main/java/com/nis/web/service/configuration/IpAddrPoolCfgService.java +++ b/src/main/java/com/nis/web/service/configuration/IpAddrPoolCfgService.java @@ -288,7 +288,7 @@ public class IpAddrPoolCfgService extends BaseService{ return ipAddrPoolCfgDao.findAddrPoolCfg(); } - public Long checkAddrPoolIp(String ip) { + public IpReuseIpCfg checkAddrPoolIp(String ip) { return ipAddrPoolCfgDao.checkAddrPoolIp(ip); } diff --git a/src/main/webapp/WEB-INF/views/cfg/maintenance/ipMultiplexPool/snatform2.jsp b/src/main/webapp/WEB-INF/views/cfg/maintenance/ipMultiplexPool/snatform2.jsp index 32966a426..055463f3d 100644 --- a/src/main/webapp/WEB-INF/views/cfg/maintenance/ipMultiplexPool/snatform2.jsp +++ b/src/main/webapp/WEB-INF/views/cfg/maintenance/ipMultiplexPool/snatform2.jsp @@ -246,7 +246,7 @@ var resetIndex = function(){
- +
@@ -393,7 +393,7 @@ var resetIndex = function(){
- +
diff --git a/src/main/webapp/static/global/plugins/jquery-validation/1.11.0/jquery.validate.method.js b/src/main/webapp/static/global/plugins/jquery-validation/1.11.0/jquery.validate.method.js index 1275eba91..5a835fc61 100644 --- a/src/main/webapp/static/global/plugins/jquery-validation/1.11.0/jquery.validate.method.js +++ b/src/main/webapp/static/global/plugins/jquery-validation/1.11.0/jquery.validate.method.js @@ -976,7 +976,7 @@ jQuery.validator.addMethod("areaUnique",function(value,element) { return flag; }); -// 地址池IP+MASK不可重复校验 +// 地址池IP+MASK组合不可重复校验 jQuery.validator.addMethod("ipMaskSole",function(value,element) { var flag = true; var ipArray = []; @@ -995,21 +995,15 @@ jQuery.validator.addMethod("ipMaskSole",function(value,element) { flag = false; } - var cfgId = $(element).attr("cfgId"); - if((flag == true) && (!cfgId)){ - ipArray = []; - ipArray.push(value2); - $(".ipMaskSole").each(function(){ - ipArray.push($(this).val()); - }); - + var oldIp = $(element).attr("oldIp"); + if(flag == true){ var ctx = $(element).attr("ctx"); var url = ctx+"/maintenance/ipMultiplexPoolCfg/checkAddrPoolIp"; $.ajax({ type:'post', async:false, url: url, - data:{"ips":ipArray.join(',')}, + data:{"ip":value2,"oldIp":oldIp}, success:function(data){ flag = data; }