diff --git a/src/main/java/com/nis/domain/configuration/AppPolicyCfg.java b/src/main/java/com/nis/domain/configuration/AppPolicyCfg.java index c64e7de10..a29846ae2 100644 --- a/src/main/java/com/nis/domain/configuration/AppPolicyCfg.java +++ b/src/main/java/com/nis/domain/configuration/AppPolicyCfg.java @@ -49,7 +49,6 @@ public class AppPolicyCfg extends BaseCfg { @ExcelField(title="ratelimit",dictType="APP_RATE_LIMIT",sort=3) private String userRegion2; private String userRegion3; - @ExcelField(title="block_by_app_server_ip",dictType="SYS_YES_NO",sort=4) private String userRegion4; private String userRegion5; private String configType; diff --git a/src/main/java/com/nis/domain/configuration/UserManage.java b/src/main/java/com/nis/domain/configuration/UserManage.java index 1bceb2efe..da0163f70 100644 --- a/src/main/java/com/nis/domain/configuration/UserManage.java +++ b/src/main/java/com/nis/domain/configuration/UserManage.java @@ -50,9 +50,22 @@ public class UserManage extends BaseEntity{ private String seltype; private Integer functionId; private String isAudit; + private String cgiError; + private String errorType; - + public String getErrorType() { + return errorType; + } + public void setErrorType(String errorType) { + this.errorType = errorType; + } + public String getCgiError() { + return cgiError; + } + public void setCgiError(String cgiError) { + this.cgiError = cgiError; + } public String getUserType() { return userType; } diff --git a/src/main/java/com/nis/util/httpclient/HttpClientUtil.java b/src/main/java/com/nis/util/httpclient/HttpClientUtil.java index 77a6e6a10..2e3c58c06 100644 --- a/src/main/java/com/nis/util/httpclient/HttpClientUtil.java +++ b/src/main/java/com/nis/util/httpclient/HttpClientUtil.java @@ -400,14 +400,14 @@ public class HttpClientUtil { //获取响应结果 Builder header = wt.request(MediaType.APPLICATION_JSON).header("Content-Type", MediaType.APPLICATION_JSON); response= header.get(); - int status = response.getStatus(); result= response.readEntity(String.class); + //调用处理数据方法 logger.info("获取消息成功,相应内容如下: " + result); } catch (Exception e) { e.printStackTrace(); logger.error("获取消息失败,相应内容如下: " + result); logger.error("获取消息失败 ", e); - throw new MaatConvertException(":"); + throw new MaatConvertException(":"); }finally { if (response != null) { response.close(); diff --git a/src/main/java/com/nis/web/controller/configuration/BasicProtocolController.java b/src/main/java/com/nis/web/controller/configuration/BasicProtocolController.java index 0a33d653a..e6a760d3f 100644 --- a/src/main/java/com/nis/web/controller/configuration/BasicProtocolController.java +++ b/src/main/java/com/nis/web/controller/configuration/BasicProtocolController.java @@ -255,7 +255,7 @@ public class BasicProtocolController extends BaseController { classMap.put(entity.getMenuNameCode(), AppPolicyCfg.class); classMap.put("NTC_IP", IpPortCfg.class); classMap.put("NTC_SUBSCRIBE_ID", NtcSubscribeIdCfg.class); - String cfgIndexInfoNoExport=",ratelimit,block_by_app_server_ip,encrypted_tunnel_behavior,behaviour_type,social_app,behaviour_type,expression_type,match_method,whether_hexbinary,group_name,userregion1,userregion2,userregion3,userregion4,userregion5,"; + String cfgIndexInfoNoExport=",encrypted_tunnel_behavior,behaviour_type,social_app,behaviour_type,expression_type,match_method,whether_hexbinary,group_name,userregion1,userregion2,userregion3,userregion4,userregion5,"; 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" diff --git a/src/main/java/com/nis/web/controller/configuration/EncryptedTunnelBehaviorController.java b/src/main/java/com/nis/web/controller/configuration/EncryptedTunnelBehaviorController.java index 4a47d57f9..53a82614b 100644 --- a/src/main/java/com/nis/web/controller/configuration/EncryptedTunnelBehaviorController.java +++ b/src/main/java/com/nis/web/controller/configuration/EncryptedTunnelBehaviorController.java @@ -293,7 +293,7 @@ public class EncryptedTunnelBehaviorController extends BaseController { classMap.put(entity.getMenuNameCode(), AppPolicyCfg.class); classMap.put("NTC_IP", IpPortCfg.class); classMap.put("NTC_SUBSCRIBE_ID", NtcSubscribeIdCfg.class); - String cfgIndexInfoNoExport=",ratelimit,block_by_app_server_ip,social_app,basic_protocol,expression_type,match_method,whether_hexbinary,group_name,userregion1,userregion2,userregion3,userregion4,userregion5,"; + String cfgIndexInfoNoExport=",social_app,basic_protocol,expression_type,match_method,whether_hexbinary,group_name,userregion1,userregion2,userregion3,userregion4,userregion5,"; 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" diff --git a/src/main/java/com/nis/web/controller/configuration/maintenance/UserManageController.java b/src/main/java/com/nis/web/controller/configuration/maintenance/UserManageController.java index 1a4fd32b5..dc5200131 100644 --- a/src/main/java/com/nis/web/controller/configuration/maintenance/UserManageController.java +++ b/src/main/java/com/nis/web/controller/configuration/maintenance/UserManageController.java @@ -1,9 +1,12 @@ package com.nis.web.controller.configuration.maintenance; import java.util.ArrayList; +import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.Properties; + import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.shiro.authz.annotation.RequiresPermissions; @@ -20,6 +23,8 @@ import com.nis.domain.Page; import com.nis.domain.basics.IpReuseIpCfg; import com.nis.domain.configuration.UserManage; import com.nis.exceptions.MaatConvertException; +import com.nis.util.Constants; +import com.nis.util.StringUtil; import com.nis.util.StringUtils; import com.nis.web.controller.BaseController; @@ -30,11 +35,16 @@ public class UserManageController extends BaseController{ @RequestMapping(value = {"/list"}) @RequiresPermissions(value={"user:manage:view"}) public String list(Model model,HttpServletRequest request,HttpServletResponse response - ,@ModelAttribute("cfg")UserManage entity - ,RedirectAttributes redirectAttributes){ + ,@ModelAttribute("cfg")UserManage entity){ Page page = userManageService.findPage(new Page(request, response,"r"), entity); + if(!StringUtil.isEmpty(entity.getErrorType())){ + if("create".equals(entity.getErrorType())){ + Properties msgProp = getMsgProp(); + String error=msgProp.getProperty("user")+" "+entity.getCgiError()+" "+msgProp.getProperty("vpn_ip")+" "+msgProp.getProperty("save_failed"); + model.addAttribute("message", error); + } + } model.addAttribute("page", page); -// initPageCondition(model,entity); return "/cfg/maintenance/userManage/list"; } @@ -80,18 +90,49 @@ public class UserManageController extends BaseController{ public String save(Model model,HttpServletRequest request,HttpServletResponse response ,String ids,UserManage entity ,RedirectAttributes redirectAttributes) { - try{ - userManageService.save(entity,model,request); - addMessage(redirectAttributes,"save_success"); - }catch(Exception e){ - logger.error("信息保存失败",e); - e.printStackTrace(); - addMessage(redirectAttributes,"save_failed"); - } - return "redirect:" + adminPath +"/maintenance/userManage/list"; + Date createTime=new Date(); + String errorIp=""; + String errorType=""; + if(entity.getId()==null){ + entity.setCreateTime(createTime); + entity.setCreatorId(entity.getCurrentUser().getId()); + entity.setIsValid(Constants.VALID_NO); + String[] ipArray =entity.getServerIp().split(","); + for (String ip : ipArray) { + userManageService.saveip(entity,ip,model,request); + } + UserManage oldUser=userManageService.getUserByLoginName(entity.getUserName()); + if(oldUser!=null){ + String[] ips=oldUser.getServerIp().split(","); + String erorIp =userManageService.getMessageIp(ipArray, ips); + if(!StringUtil.isEmpty(erorIp)){ + errorType="create"; + errorIp=entity.getUserName()+" "+erorIp; + } + } + }else{ + entity.setEditTime(createTime); + entity.setEditorId(entity.getCurrentUser().getId()); + String[] ipArray =entity.getServerIp().split(","); + UserManage oldUser=userManageService.getUserById(String.valueOf(entity.getId())); + int num=0; + for (String ip : ipArray) { + userManageService.updateip(entity,ip,num,model,request); + num++; + } + UserManage user=userManageService.getUserById(String.valueOf(entity.getId())); + if(user!=null){ + String[] ips=user.getServerIp().split(","); + String erorIp =userManageService.getMessageIp(ipArray, ips); + if(!StringUtil.isEmpty(erorIp)){ + errorType="create"; + errorIp=user.getUserName()+" "+erorIp; + } + } + } + return "redirect:" + adminPath +"/maintenance/userManage/list?cgiError="+errorIp+"&errorType="+errorType; } - - + /** * 验证登录名是否有效 * @param oldLoginName diff --git a/src/main/java/com/nis/web/service/configuration/UserManageService.java b/src/main/java/com/nis/web/service/configuration/UserManageService.java index 283902cdf..1409cafb5 100644 --- a/src/main/java/com/nis/web/service/configuration/UserManageService.java +++ b/src/main/java/com/nis/web/service/configuration/UserManageService.java @@ -1,6 +1,8 @@ package com.nis.web.service.configuration; +import java.io.IOException; import java.util.ArrayList; +import java.util.Arrays; import java.util.Date; import java.util.HashMap; import java.util.List; @@ -9,20 +11,28 @@ import java.util.Map; import javax.servlet.http.HttpServletRequest; 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.eclipse.jetty.util.ajax.JSON; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.ui.Model; import com.nis.domain.Page; +import com.nis.domain.configuration.AppPolicyCfg; +import com.nis.domain.configuration.CfgIndexInfo; import com.nis.domain.configuration.UserManage; import com.nis.exceptions.MaatConvertException; import com.nis.util.Constants; import com.nis.util.StringUtil; import com.nis.util.httpclient.HttpClientUtil; +import com.nis.web.dao.configuration.AppCfgDao; +import com.nis.web.dao.configuration.IpCfgDao; import com.nis.web.dao.configuration.UserManageDao; import com.nis.web.security.UserUtils; import com.nis.web.service.BaseService; +import com.nis.web.service.SpringContextHolder; @Service public class UserManageService extends BaseService{ @@ -45,77 +55,128 @@ public class UserManageService extends BaseService{ return userManageDao.getUserById(id); } - public void save(UserManage entity,Model model, HttpServletRequest request){ - Date createTime=new Date(); - if(entity.getId()==null){ + public static String getMessageIp(String[] oldIp,String[] ip){ + String ips=null; + for (int i = 0; i < oldIp.length; i++) { + boolean flag=true; + for (int j = 0; j < ip.length; j++) { + if(oldIp[i].equals(ip[j])){ + flag=false; + break; + } + } + if(flag){ + if(ips==null){ + ips=oldIp[i]; + }else{ + ips=ips+","+oldIp[i]; + } + } + } + return ips; + } + + @Transactional(readOnly=false,rollbackFor=RuntimeException.class) + public void saveip(UserManage entity,String ips,Model model, HttpServletRequest request){ + SqlSessionFactory sqlSessionFactory=SpringContextHolder.getBean(SqlSessionFactory.class); + SqlSession batchSqlSession = null; try { - entity.setCreateTime(createTime); - entity.setCreatorId(entity.getCurrentUser().getId()); - entity.setIsValid(Constants.VALID_NO); - userManageDao.insert(entity); - //cgi接口添加 - String[] ipArray = entity.getServerIp().split(","); - for(String ip :ipArray){ + batchSqlSession = sqlSessionFactory.openSession(ExecutorType.BATCH, false); + UserManage user=userManageDao.getUserByLoginName(entity.getUserName()); + if(user==null){ + entity.setServerIp(ips); + ((UserManageDao) batchSqlSession.getMapper(UserManageDao.class)).insert(entity); + }else{ + user.setServerIp(user.getServerIp()+","+ips); + ((UserManageDao) batchSqlSession.getMapper(UserManageDao.class)).update(user); + } + //cgi接口添加 //循环调用接口增加 Map params = new HashMap(); - params.put("server_ip", ip); + params.put("server_ip", ips); params.put("user_name", entity.getUserName()); params.put("user_pwd", entity.getUserPwd()); - Map map=getUrl(params,Constants.NTC_IP_REUSE_USER_CREATE,request); - //返回处理 - } - } catch (MaatConvertException e) { + String url =Constants.IP_REUSE_CALL_CGI_URL+ Constants.NTC_IP_REUSE_USER_CREATE ; + String recv = HttpClientUtil.getCGI(url, params, request); + if (StringUtils.isNotBlank(recv)) { + Map map = new HashMap(); + map = (Map) JSON.parse(recv); + String error = map.get("error"); + if (!StringUtil.isEmpty(error)) { + batchSqlSession.rollback(); + } else { + batchSqlSession.commit(); + } + } + } catch (IOException e) { e.printStackTrace(); - logger.info("获取编译ID出错"); - throw new MaatConvertException(""); - } - }else{ - try { - entity.setEditTime(createTime); - entity.setEditorId(entity.getCurrentUser().getId()); - //获取修改之前数据 - UserManage olduser=userManageDao.getUserById(String.valueOf(entity.getId())); - userManageDao.update(entity); - //cgi接口删除旧数据 - String[] ipArray = olduser.getServerIp().split(","); - for(String ip :ipArray){ - //循环调用接口删除 - Map params = new HashMap(); - params.put("server_ip", ip); - params.put("user_name", olduser.getUserName()); - Map map=getUrl(params,Constants.NTC_IP_REUSE_USER_DELETE,request); - //返回处理 - + } finally { + if (batchSqlSession != null) { + batchSqlSession.close(); } - if(StringUtil.isEmpty(entity.getUserName())){ - entity.setUserName(olduser.getUserName()); - } - if(StringUtil.isEmpty(entity.getUserPwd())){ - entity.setUserPwd(olduser.getUserPwd()); - } - String[] newIpArray = entity.getServerIp().split(","); - for(String newIp :newIpArray){ - //循环调用接口添加 - Map params = new HashMap(); - params.put("server_ip", newIp); - params.put("user_name", entity.getUserName()); - params.put("user_pwd", entity.getUserPwd()); - Map map=getUrl(params,Constants.NTC_IP_REUSE_USER_CREATE,request); - //返回处理 - } - }catch (Exception e) { - e.printStackTrace(); - logger.info("获取编译ID出错"); - throw new MaatConvertException(""); - } - } + } } + + + @Transactional(readOnly=false,rollbackFor=RuntimeException.class) + public void updateip(UserManage entity,String ips,int num,Model model, HttpServletRequest request){ + SqlSessionFactory sqlSessionFactory=SpringContextHolder.getBean(SqlSessionFactory.class); + SqlSession batchSqlSession = null; + try { + batchSqlSession = sqlSessionFactory.openSession(ExecutorType.BATCH, false); + if(num==0){ + UserManage olduser=userManageDao.getUserById(String.valueOf(entity.getId())); + //接口旧数据删除 + //cgi接口删除旧数据 + String[] ipArray = olduser.getServerIp().split(","); + for(String ip :ipArray){ + //循环调用接口删除 + Map params = new HashMap(); + params.put("server_ip", ip); + params.put("user_name", olduser.getUserName()); + Map map=getUrl(params,Constants.NTC_IP_REUSE_USER_DELETE,request); + //返回处理 + } + entity.setServerIp(ips); + ((UserManageDao) batchSqlSession.getMapper(UserManageDao.class)).update(entity); + }else{ + UserManage user=userManageDao.getUserById(String.valueOf(entity.getId())); + user.setServerIp(user.getServerIp()+","+ips); + ((UserManageDao) batchSqlSession.getMapper(UserManageDao.class)).update(user); + } + // cgi接口添加 + // 循环调用接口增加 + Map params = new HashMap(); + params.put("server_ip", ips); + params.put("user_name", entity.getUserName()); + params.put("user_pwd", entity.getUserPwd()); + String url = Constants.IP_REUSE_CALL_CGI_URL + Constants.NTC_IP_REUSE_USER_CREATE; + String recv = HttpClientUtil.getCGI(url, params, request); + if (StringUtils.isNotBlank(recv)) { + Map map = new HashMap(); + map = (Map) JSON.parse(recv); + String error = map.get("error"); + if (!StringUtil.isEmpty(error)) { + batchSqlSession.rollback(); + } else { + batchSqlSession.commit(); + } + } + } catch (IOException e) { + e.printStackTrace(); + } finally { + if (batchSqlSession != null) { + batchSqlSession.close(); + } + } + } + + public Map getUrl(Map params,String urlType,HttpServletRequest request){ Map map=new HashMap(); try{ String url =Constants.IP_REUSE_CALL_CGI_URL+ urlType ; String recv = HttpClientUtil.getCGI(url, params, request); - logger.info("查询结果:" + recv); if (StringUtils.isNotBlank(recv)) { map=(Map)JSON.parse(recv); } @@ -134,7 +195,6 @@ public class UserManageService extends BaseService{ try{ String url =Constants.IP_REUSE_CALL_CGI_URL+ Constants.NTC_IP_REUSE_USER_GET ; String recv = HttpClientUtil.getCGI(url, params, request); - logger.info("查询结果:" + recv); if (StringUtils.isNotBlank(recv)) { map=(Map)JSON.parse(recv); } diff --git a/src/main/resources/messages/message_en.properties b/src/main/resources/messages/message_en.properties index 470b26175..dfa7eaaa9 100644 --- a/src/main/resources/messages/message_en.properties +++ b/src/main/resources/messages/message_en.properties @@ -1336,4 +1336,5 @@ ip_total=IP Total available_ip_total=Available IP Total address_pool_id=Address Pool ID log_to_cfg=Config -address_pool_is_used=Address pool is used and cannot perform this operation! \ No newline at end of file +address_pool_is_used=Address pool is used and cannot perform this operation! +cgi_service_failed=Request CGI server failed \ 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 b8e9adb95..9fc0bacca 100644 --- a/src/main/resources/messages/message_zh_CN.properties +++ b/src/main/resources/messages/message_zh_CN.properties @@ -1322,16 +1322,17 @@ user_info=\u7528\u6237\u4FE1\u606F user_list=\u7528\u6237\u5217\u8868 equal_password=\u5BC6\u7801\u4E0D\u4E00\u81F4\uFF01 outgoing_unicast_packets=\u4E0A\u4F20\u6570\u636E\u5305\u6570 -outgoing_unicast_total_size=\u4E0A\u4F20\u6570\u636E\u5305\u6570\u603B\u91CF -outgoing_broadcast_packets=\u4E0A\u4F20\u5B57\u8282\u6570 -outgoing_broadcast_total_size=\u4E0A\u4F20\u5B57\u8282\u6570\u603B\u91CF +outgoing_unicast_total_size=\u4E0A\u4F20\u5B57\u8282\u6570 +outgoing_broadcast_packets=outgoing_broadcast_packets +outgoing_broadcast_total_size=outgoing_broadcast_total_size incoming_unicast_packets=\u4E0B\u8F7D\u6570\u636E\u5305\u6570 -incoming_unicast_total_size=\u4E0B\u8F7D\u6570\u636E\u5305\u6570\u603B\u91CF -incoming_broadcast_packets=\u4E0B\u8F7D\u5B57\u8282\u6570 -incoming_broadcast_total_size=\u4E0B\u8F7D\u5B57\u8282\u6570\u603B\u91CF +incoming_unicast_total_size=\u4E0B\u8F7D\u6570\u636E\u5B57\u8282\u6570 +incoming_broadcast_packets=incoming_broadcast_packets +incoming_broadcast_total_size=incoming_broadcast_total_size address_pool=\u5730\u5740\u6C60 ip_total=IP\u603B\u6570 available_ip_total=\u53EF\u7528IP\u6570 address_pool_id=\u5730\u5740\u6C60ID -log_to_cfg=\u914D\u7F6E -address_pool_is_used=\u5730\u5740\u6C60\u5DF2\u88AB\u4F7F\u7528\uFF0C\u65E0\u6CD5\u6267\u884C\u8BE5\u64CD\u4F5C\uFF01 \ No newline at end of file +log_to_cfg=\u914D\u7F6E +address_pool_is_used=\u5730\u5740\u6C60\u5DF2\u88AB\u4F7F\u7528\uFF0C\u65E0\u6CD5\u6267\u884C\u8BE5\u64CD\u4F5C\uFF01 +cgi_service_failed=\u8BF7\u6C42CGI\u670D\u52A1\u63A5\u53E3\u5931\u8D25 \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/views/cfg/maintenance/userManage/list.jsp b/src/main/webapp/WEB-INF/views/cfg/maintenance/userManage/list.jsp index 2624cce36..471f1a60f 100644 --- a/src/main/webapp/WEB-INF/views/cfg/maintenance/userManage/list.jsp +++ b/src/main/webapp/WEB-INF/views/cfg/maintenance/userManage/list.jsp @@ -61,9 +61,10 @@ html+=""; html+=""; html+=""; - html+=""; - html+=""; - html+=""; + html+=""; + /* html+=""; */ + html+=""; + /* html+=""; */ html+=""; html+=""; for(i=0;i" } }, + errorPlacement : function(error,element) { + /* $("#messageBox").text(""); + if (element.is(":checkbox")|| element.is(":radio")|| element.parent().is(".input-append")) { + error.appendTo(element.parent().parent()); + } else { + error.insertAfter(element); + } */ + $(element).parents(".form-group").find("div[for='"+ element.attr("name")+ "']").append(error); + }, submitHandler : function(form) { loading('onloading...'); form.submit(); }, - errorContainer : "#messageBox", - errorPlacement : function(error, - element) { - $("#messageBox") - .text( - ""); - if (element.is(":checkbox") - || element.is(":radio") - || element - .parent() - .is( - ".input-append")) { - error.appendTo(element - .parent().parent()); - } else { - error.insertAfter(element); - } - } + errorContainer : "#messageBox" }); - - }); + + }); @@ -93,6 +86,7 @@ + *
- * -
+
+ *
@@ -133,35 +127,37 @@
- * +
+ + * +
- - * - +
+ *
- * +