调整删除asn ip验证,只有下发过的asn ip需要ajax后台判断。调整ajax判断sql

This commit is contained in:
wangxin
2018-09-28 11:49:53 +08:00
parent 520a336037
commit ab50f58560
5 changed files with 296 additions and 290 deletions

View File

@@ -120,9 +120,9 @@ public class AsnIpController extends BaseController{
} }
@RequestMapping(value="ajaxIsLast",method=RequestMethod.POST) @RequestMapping(value="ajaxIsLast",method=RequestMethod.POST)
@ResponseBody @ResponseBody
public boolean ajaxIsLast(Model model,@RequestParam(required=true,value="serviceGroupIds")String serviceGroupIds){ public boolean ajaxIsLast(Model model,@RequestParam(required=true,value="serviceGroupIds")String serviceGroupIds,@RequestParam(required=true,value="ids")String ids){
if(StringUtils.isNotBlank(serviceGroupIds)) { if(StringUtils.isNotBlank(serviceGroupIds)&&StringUtils.isNotBlank(ids)) {
return asnIpCfgService.hasLastIp(serviceGroupIds); return asnIpCfgService.hasLastIp(serviceGroupIds,ids);
} }
return false; return false;
} }

View File

@@ -18,5 +18,5 @@ public interface AsnIpCfgDao extends CrudDao<AsnIpCfg>{
public List<AsnIpCfg> findAllList(AsnIpCfg cfg); public List<AsnIpCfg> findAllList(AsnIpCfg cfg);
public List<ConfigGroupInfo> findPolicyGroupInfosByType(@Param("groupId")Integer groupId); public List<ConfigGroupInfo> findPolicyGroupInfosByType(@Param("groupId")Integer groupId);
public List<Integer> findOtherIps(@Param("groupId")Integer groupId,@Param("cfgId")Integer cfgId); public List<Integer> findOtherIps(@Param("groupId")Integer groupId,@Param("cfgId")Integer cfgId);
public List<Integer> countValidIPs(@Param("ids")String ids); public List<Integer> countValidIPs(@Param("groups")String groups,@Param("ids")String ids);
} }

View File

@@ -387,7 +387,7 @@
select 1 from asn_ip_cfg where is_valid !=-1 and asn_ip_group in(${ids}) limit 1 select 1 from asn_ip_cfg where is_valid !=-1 and asn_ip_group in(${ids}) limit 1
</select> </select>
<select id="countValidIPs" resultType="java.lang.Integer" parameterType="java.lang.Integer"> <select id="countValidIPs" resultType="java.lang.Integer" parameterType="java.lang.Integer">
select count(1) from asn_ip_cfg where is_valid !=-1 and asn_ip_group in(${ids}) GROUP BY asn_ip_group; select count(1) from asn_ip_cfg where is_valid !=-1 and asn_ip_group in(${groups}) and cfg_id not in(${ids}) GROUP BY asn_ip_group;
</select> </select>
</mapper> </mapper>

View File

@@ -178,14 +178,17 @@ public class AsnIpCfgService extends CrudService<CrudDao<AsnIpCfg>, AsnIpCfg> {
* @param serviceGroupIds * @param serviceGroupIds
* @return * @return
*/ */
public boolean hasLastIp(String serviceGroupIds) { public boolean hasLastIp(String serviceGroupIds,String ids) {
// TODO Auto-generated method stub // TODO Auto-generated method stub
for(String groupId:serviceGroupIds.split(",")) { for(String groupId:serviceGroupIds.split(",")) {
Long.parseLong(groupId); Long.parseLong(groupId);
} }
List<Integer> countList=asnIpCfgDao.countValidIPs(serviceGroupIds); List<Integer> countList=asnIpCfgDao.countValidIPs(serviceGroupIds,ids);
if(countList.size()==0) {
return true;
}
for(Integer count:countList) { for(Integer count:countList) {
if(count==1) { if(count==0) {
return true; return true;
} }
} }

View File

@@ -1,283 +1,286 @@
<%@ tag language="java" pageEncoding="UTF-8"%> <%@ tag language="java" pageEncoding="UTF-8"%>
<%@ include file="/WEB-INF/include/taglib.jsp"%> <%@ include file="/WEB-INF/include/taglib.jsp"%>
<%@ attribute name="id" type="java.lang.String" required="true"%> <%@ attribute name="id" type="java.lang.String" required="true"%>
<%@ attribute name="url" type="java.lang.String" required="true"%> <%@ attribute name="url" type="java.lang.String" required="true"%>
<%@ attribute name="label" type="java.lang.String" required="false"%> <%@ attribute name="label" type="java.lang.String" required="false"%>
<%@ attribute name="maxRow" type="java.lang.Long" required="false"%> <%@ attribute name="maxRow" type="java.lang.Long" required="false"%>
<c:choose> <c:choose>
<c:when test="${label eq 'delete'}"> <c:when test="${label eq 'delete'}">
<a href="javascript:void(0);" class="btn btn-default" onclick="del('${url}')" data-toggle="tooltip" data-placement="top"> <a href="javascript:void(0);" class="btn btn-default" onclick="del('${url}')" data-toggle="tooltip" data-placement="top">
<i class="fa fa-trash"> <spring:message code="delete"/></i> <i class="fa fa-trash"> <spring:message code="delete"/></i>
</a> </a>
</c:when> </c:when>
<c:when test="${label eq 'update'}"> <c:when test="${label eq 'update'}">
<a href="javascript:void(0);" onclick="update('${url}')" class="btn btn-default" data-toggle="tooltip" data-placement="top"> <a href="javascript:void(0);" onclick="update('${url}')" class="btn btn-default" data-toggle="tooltip" data-placement="top">
<i class="fa fa-check"></i> <spring:message code="edit"/> <i class="fa fa-check"></i> <spring:message code="edit"/>
</a> </a>
</c:when> </c:when>
<c:when test="${label eq 'approved'}"> <c:when test="${label eq 'approved'}">
<a href="javascript:void(0);" onclick="passOpt('${url}')"><i class="fa fa-check"></i> <spring:message code="approved"/></a> <a href="javascript:void(0);" onclick="passOpt('${url}')"><i class="fa fa-check"></i> <spring:message code="approved"/></a>
</c:when> </c:when>
<c:when test="${label eq 'unapproved'}"> <c:when test="${label eq 'unapproved'}">
<a href="javascript:void(0);" onclick="noPassOpt('${url}')"><i class="fa fa-remove"></i> <spring:message code="unapproved"/></a> <a href="javascript:void(0);" onclick="noPassOpt('${url}')"><i class="fa fa-remove"></i> <spring:message code="unapproved"/></a>
</c:when> </c:when>
<c:when test="${label eq 'cancelPass'}"> <c:when test="${label eq 'cancelPass'}">
<a href="javascript:void(0);" onclick="cancelPassOpt('${url}')"><i class="fa fa-undo"></i> <spring:message code="cancel_approved"/></a> <a href="javascript:void(0);" onclick="cancelPassOpt('${url}')"><i class="fa fa-undo"></i> <spring:message code="cancel_approved"/></a>
</c:when> </c:when>
<c:when test="${label eq 'export'}"> <c:when test="${label eq 'export'}">
<a href="javascript:void(0);" class="btn btn-default" onclick="exportData('${url}',${maxRow })" data-toggle="tooltip" data-placement="top"> <a href="javascript:void(0);" class="btn btn-default" onclick="exportData('${url}',${maxRow })" data-toggle="tooltip" data-placement="top">
<i class="fa fa-download"> <spring:message code="export"/></i> <i class="fa fa-download"> <spring:message code="export"/></i>
</a> </a>
</c:when> </c:when>
</c:choose> </c:choose>
<%-- 使用方法: 1.将本tag写在查询的form之前2.传入table的id和controller的url --%> <%-- 使用方法: 1.将本tag写在查询的form之前2.传入table的id和controller的url --%>
<script type="text/javascript"> <script type="text/javascript">
$(document).ready(function() { $(document).ready(function() {
$('#${id} thead tr th input.i-checks').on('ifChecked', function(event){ //ifCreated 事件应该在插件初始化之前绑定 $('#${id} thead tr th input.i-checks').on('ifChecked', function(event){ //ifCreated 事件应该在插件初始化之前绑定
$('#${id} tbody tr td input.i-checks').iCheck('check'); $('#${id} tbody tr td input.i-checks').iCheck('check');
}); });
$('#${id} thead tr th input.i-checks').on('ifUnchecked', function(event){ //ifCreated 事件应该在插件初始化之前绑定 $('#${id} thead tr th input.i-checks').on('ifUnchecked', function(event){ //ifCreated 事件应该在插件初始化之前绑定
$('#${id} tbody tr td input.i-checks').iCheck('uncheck'); $('#${id} tbody tr td input.i-checks').iCheck('uncheck');
}); });
}); });
//删除 //删除
function del(url){ function del(url){
var checkboxes=$("#${id} ${value} tbody tr td input.i-checks:checkbox"); var checkboxes=$("#${id} ${value} tbody tr td input.i-checks:checkbox");
if($(checkboxes).filter(":checked").length>0){ if($(checkboxes).filter(":checked").length>0){
if(validateAllNoAudit(checkboxes)){ if(validateAllNoAudit(checkboxes)){
top.$.jBox.tip("<spring:message code='has_prohibit_delete'/>", "<spring:message code='info'/>"); top.$.jBox.tip("<spring:message code='has_prohibit_delete'/>", "<spring:message code='info'/>");
return; return;
}else{ }else{
var serviceGroupIds=[],canDel=true; var serviceGroupIds=[],ids=[],canDel=true;
$(checkboxes).filter(":checked").each(function(){ $(checkboxes).filter(":checked").each(function(){
if($(this).attr("serviceGroupId")){ if($(this).attr("serviceGroupId")&&$(this).attr("isValid")){
serviceGroupIds.push($(this).attr("serviceGroupId")); if($(this).attr("isValid")==1){//下发过的组的ip才需要判断是否是组内最后一个IP
} serviceGroupIds.push($(this).attr("serviceGroupId"));
}) }
if(serviceGroupIds.length>0){ ids.push($(this).attr("id"));
$.ajax({ }
type:'post', })
url:'${ctx}/basics/asn/ajaxIsLast', if(serviceGroupIds.length>0){
data:{"serviceGroupIds":serviceGroupIds.join(',')}, $.ajax({
async:false, type:'post',
success:function(data,textStatus){//处理返回结果 url:'${ctx}/basics/asn/ajaxIsLast',
if(data){ data:{"serviceGroupIds":serviceGroupIds.join(','),"ids":ids.join(',')},
top.$.jBox.tip('<spring:message code="last_ip_in_asn_group"/>'); async:false,
canDel=false; success:function(data,textStatus){//处理返回结果
} if(data){
} top.$.jBox.tip('<spring:message code="last_ip_in_asn_group"/>');
}); canDel=false;
} }
if(canDel){ }
doAll(checkboxes,url); });
} }
} if(canDel){
}else{ doAll(checkboxes,url);
top.$.jBox.tip("<spring:message code='one_more'/>", "<spring:message code='info'/>"); }
return; }
} }else{
} top.$.jBox.tip("<spring:message code='one_more'/>", "<spring:message code='info'/>");
//修改配置 return;
function update(url){ }
var checkboxes=$("#${id} ${value} tbody tr td input.i-checks:checkbox"); }
var cked = $("tbody tr td input.i-checks:checkbox:checked"); //修改配置
if($(checkboxes).filter(":checked").length==1){ function update(url){
if(cked.val()==1){ var checkboxes=$("#${id} ${value} tbody tr td input.i-checks:checkbox");
top.$.jBox.tip("<spring:message code='has_approved'/>", "<spring:message code='info'/>"); var cked = $("tbody tr td input.i-checks:checkbox:checked");
return; if($(checkboxes).filter(":checked").length==1){
}else if(cked.val()==3){ if(cked.val()==1){
top.$.jBox.tip("<spring:message code='cancel_approved'/>", "<spring:message code='info'/>"); top.$.jBox.tip("<spring:message code='has_approved'/>", "<spring:message code='info'/>");
return; return;
} }else if(cked.val()==3){
//处理asnIp,asn组下发过的ip配置不允许修改 top.$.jBox.tip("<spring:message code='cancel_approved'/>", "<spring:message code='info'/>");
if(cked.attr("serviceGroupId")&&cked.attr("isValid")){ return;
var serviceGroupId=cked.attr("serviceGroupId"); }
var _isValid=cked.attr("isValid"); //处理asnIp,asn组下发过的ip配置不允许修改
if(_isValid==1){ if(cked.attr("serviceGroupId")&&cked.attr("isValid")){
top.$.jBox.tip("<spring:message code='can_not_edit_issued_ans_ip'/>", "<spring:message code='info'/>"); var serviceGroupId=cked.attr("serviceGroupId");
return; var _isValid=cked.attr("isValid");
} if(_isValid==1){
} top.$.jBox.tip("<spring:message code='can_not_edit_issued_ans_ip'/>", "<spring:message code='info'/>");
doAll(checkboxes,url); return;
}else{ }
top.$.jBox.tip("<spring:message code='check_one'/>", "<spring:message code='info'/>"); }
return; doAll(checkboxes,url);
} }else{
} top.$.jBox.tip("<spring:message code='check_one'/>", "<spring:message code='info'/>");
//通过 return;
function passOpt(url){ }
var checkboxes=$("#${id} ${value} tbody tr td input.i-checks:checkbox"); }
//通过
if($(checkboxes).filter(":checked").length>0){ function passOpt(url){
if(validateAllNoAudit(checkboxes)){ var checkboxes=$("#${id} ${value} tbody tr td input.i-checks:checkbox");
top.$.jBox.tip("<spring:message code='has_prohibit_pass'/>", "<spring:message code='info'/>");
return; if($(checkboxes).filter(":checked").length>0){
}else{ if(validateAllNoAudit(checkboxes)){
doAll(checkboxes,url); top.$.jBox.tip("<spring:message code='has_prohibit_pass'/>", "<spring:message code='info'/>");
} return;
}else{ }else{
top.$.jBox.tip("<spring:message code='one_more'/>", "<spring:message code='info'/>"); doAll(checkboxes,url);
return; }
} }else{
} top.$.jBox.tip("<spring:message code='one_more'/>", "<spring:message code='info'/>");
//未通过 return;
function noPassOpt(url){ }
var checkboxes=$("#${id} ${value} tbody tr td input.i-checks:checkbox"); }
//未通过
if($(checkboxes).filter(":checked").length>0){ function noPassOpt(url){
if(validateAllNoAudit(checkboxes)){ var checkboxes=$("#${id} ${value} tbody tr td input.i-checks:checkbox");
top.$.jBox.tip("<spring:message code='has_prohibit_nopass'/>", "<spring:message code='info'/>");
return; if($(checkboxes).filter(":checked").length>0){
}else{ if(validateAllNoAudit(checkboxes)){
doAll(checkboxes,url); top.$.jBox.tip("<spring:message code='has_prohibit_nopass'/>", "<spring:message code='info'/>");
} return;
}else{ }else{
top.$.jBox.tip("<spring:message code='one_more'/>", "<spring:message code='info'/>"); doAll(checkboxes,url);
return; }
} }else{
} top.$.jBox.tip("<spring:message code='one_more'/>", "<spring:message code='info'/>");
//配置取消 return;
function cancelPassOpt(url){ }
var checkboxes=$("#${id} ${value} tbody tr td input.i-checks:checkbox"); }
//配置取消
if($(checkboxes).filter(":checked").length>0){ function cancelPassOpt(url){
if(validateAllPass(checkboxes)){ var checkboxes=$("#${id} ${value} tbody tr td input.i-checks:checkbox");
doAll(checkboxes,url);
}else{ if($(checkboxes).filter(":checked").length>0){
top.$.jBox.tip("<spring:message code='hasnot_approved'/>", "<spring:message code='info'/>"); if(validateAllPass(checkboxes)){
return; doAll(checkboxes,url);
} }else{
}else{ top.$.jBox.tip("<spring:message code='hasnot_approved'/>", "<spring:message code='info'/>");
top.$.jBox.tip("<spring:message code='one_more'/>", "<spring:message code='info'/>"); return;
return; }
} }else{
} top.$.jBox.tip("<spring:message code='one_more'/>", "<spring:message code='info'/>");
function doAll(checkboxes,url){ return;
// var url = $(this).attr('data-url'); }
var str=""; }
var compileIdStr=""; function doAll(checkboxes,url){
var ids=""; // var url = $(this).attr('data-url');
var compileIds=""; var str="";
var flag=false;//是否删除的为但是响应策略的无策略配置 var compileIdStr="";
checkboxes.each(function(){ var ids="";
if(true == $(this).is(':checked')){ var compileIds="";
var id=$(this).attr("id"); var flag=false;//是否删除的为但是响应策略的无策略配置
var serviceId=$(this).attr("id"); checkboxes.each(function(){
if($(this).attr("serviceId")){ if(true == $(this).is(':checked')){
serviceId=$(this).attr("serviceId"); var id=$(this).attr("id");
} var serviceId=$(this).attr("id");
if(serviceId == 65 && id==0){ if($(this).attr("serviceId")){
flag=true; serviceId=$(this).attr("serviceId");
} }
str+=$(this).attr("id")+","; if(serviceId == 65 && id==0){
if($(this).attr("compileId")){ flag=true;
compileIdStr +=$(this).attr("compileId")+","; }
} str+=$(this).attr("id")+",";
} if($(this).attr("compileId")){
}); compileIdStr +=$(this).attr("compileId")+",";
}
}
if(flag && url.indexOf("?isAudit=3") > 1){ });
top.$.jBox.tip("<spring:message code='one_more'/>", "<spring:message code='info'/>");
return;
} if(flag && url.indexOf("?isAudit=3") > 1){
top.$.jBox.tip("<spring:message code='one_more'/>", "<spring:message code='info'/>");
if(str.substr(str.length-1)== ','){ return;
ids = str.substr(0,str.length-1); }
}
if(compileIdStr.substr(compileIdStr.length-1)== ','){ if(str.substr(str.length-1)== ','){
compileIds = compileIdStr.substr(0,compileIdStr.length-1); ids = str.substr(0,str.length-1);
} }
if(ids == ""){ if(compileIdStr.substr(compileIdStr.length-1)== ','){
//top.$.jBox.tip("不能选择公共模型("+nodes[i].name+")请重新选择。"); compileIds = compileIdStr.substr(0,compileIdStr.length-1);
top.$.jBox.tip("<spring:message code='one_more'/>", "<spring:message code='info'/>"); }
return; if(ids == ""){
} //top.$.jBox.tip("不能选择公共模型("+nodes[i].name+")请重新选择。");
top.$.jBox.confirm("<spring:message code='confirm_message'/>","<spring:message code='info'/>",function(v,h,f){ top.$.jBox.tip("<spring:message code='one_more'/>", "<spring:message code='info'/>");
return;
if(v=="ok"){ }
if(url.indexOf("?")>0){ top.$.jBox.confirm("<spring:message code='confirm_message'/>","<spring:message code='info'/>",function(v,h,f){
window.location = url+"&ids="+ids+"&compileIds="+compileIds;
}else{ if(v=="ok"){
window.location = url+"?ids="+ids+"&compileIds="+compileIds; if(url.indexOf("?")>0){
} window.location = url+"&ids="+ids+"&compileIds="+compileIds;
if(url.indexOf("?isAudit") > 1){ }else{
loading('<spring:message code="onloading"/>'); window.location = url+"?ids="+ids+"&compileIds="+compileIds;
}else if(url.indexOf("export") > 1){ }
closeTip(); if(url.indexOf("?isAudit") > 1){
} loading('<spring:message code="onloading"/>');
//$("#searchForm").submit(); }else if(url.indexOf("export") > 1){
} closeTip();
},{buttonsFocus:1}); }
top.$('.jbox-body .jbox-icon').css('top','55px'); //$("#searchForm").submit();
}
} },{buttonsFocus:1});
//验证选择的配置,是否可删除或者审核未通过或者审核通过,只有未审核的配置可删除或审核未通过或审核通过 top.$('.jbox-body .jbox-icon').css('top','55px');
function validateAllNoAudit(checkboxes){
var flag = false; }
$(checkboxes).filter(":checked").each(function(){ //验证选择的配置,是否可删除或者审核未通过或者审核通过,只有未审核的配置可删除或审核未通过或审核通过
if($(this).val()!=0){ function validateAllNoAudit(checkboxes){
flag = true; var flag = false;
return; $(checkboxes).filter(":checked").each(function(){
} if($(this).val()!=0){
}); flag = true;
return flag; return;
} }
//验证选择的配置,是否有审核通过的 });
function validatePass(checkboxes){ return flag;
var flag = false; }
$(checkboxes).filter(":checked").each(function(){ //验证选择的配置,是否有审核通过的
if($(this).val()==1){ function validatePass(checkboxes){
flag = true; var flag = false;
return; $(checkboxes).filter(":checked").each(function(){
} if($(this).val()==1){
}); flag = true;
return flag; return;
} }
//验证选择的配置,是否全部为审核通过的 });
function validateAllPass(checkboxes){ return flag;
var flag = true; }
$(checkboxes).filter(":checked").each(function(){ //验证选择的配置,是否全部为审核通过的
if($(this).val()!=1){ function validateAllPass(checkboxes){
flag = false; var flag = true;
return; $(checkboxes).filter(":checked").each(function(){
} if($(this).val()!=1){
}); flag = false;
return flag; return;
} }
//删除 });
function exportData(url,maxRow){ return flag;
var column=[]; }
$("#${id} ${value} thead tr th").each(function(){ //删除
if($(this).attr("exportColumn")){ function exportData(url,maxRow){
column.push($(this).attr("exportColumn")); var column=[];
} $("#${id} ${value} thead tr th").each(function(){
}); if($(this).attr("exportColumn")){
if(column){ column.push($(this).attr("exportColumn"));
url+="&columns="+column.toString(); }
} });
var checkboxes=$("#${id} ${value} tbody tr td input.i-checks:checkbox"); if(column){
//导出选中数据 url+="&columns="+column.toString();
if($(checkboxes).filter(":checked").length>0){ }
doAll(checkboxes,url); var checkboxes=$("#${id} ${value} tbody tr td input.i-checks:checkbox");
//导出检索条件下所有数据 //导出选中数据
}else{ if($(checkboxes).filter(":checked").length>0){
if($("#showTotalCount").html().trim() > maxRow){ doAll(checkboxes,url);
top.$.jBox.confirm("<spring:message code='export_confirm_message'/>"+maxRow+"!","<spring:message code='info'/>",function(v,h,f){ //导出检索条件下所有数据
if(v=="ok"){ }else{
$("#searchForm").attr("action",url); if($("#showTotalCount").html().trim() > maxRow){
$("#searchForm").submit(); top.$.jBox.confirm("<spring:message code='export_confirm_message'/>"+maxRow+"!","<spring:message code='info'/>",function(v,h,f){
closeTip(); if(v=="ok"){
} $("#searchForm").attr("action",url);
},{buttonsFocus:1}); $("#searchForm").submit();
top.$('.jbox-body .jbox-icon').css('top','55px'); closeTip();
}else{ }
$("#searchForm").attr("action",url); },{buttonsFocus:1});
$("#searchForm").submit(); top.$('.jbox-body .jbox-icon').css('top','55px');
closeTip(); }else{
} $("#searchForm").attr("action",url);
} $("#searchForm").submit();
} closeTip();
}
}
}
</script> </script>