This repository has been archived on 2025-09-14. You can view files and clone it, but cannot push or open issues or pull requests.
Files
k18-ntcs-web-ntc/src/main/java/com/nis/web/controller/basics/ServiceDictInfoController.java
leijun 436190fe8c VPN服务器
新增添加IP重复验证
删除验证是否被IP复用-用户管理使用
IP复用-用户管理 删除验证是否被snat策略和dnat策略使用
2019-01-18 17:40:23 +08:00

639 lines
21 KiB
Java
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package com.nis.web.controller.basics;
import java.util.ArrayList;
import java.util.Collections;
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.Logical;
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.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.Lists;
import com.google.common.collect.Maps;
import com.nis.domain.Page;
import com.nis.domain.SysUser;
import com.nis.domain.basics.ServiceDictInfo;
import com.nis.domain.configuration.UserManage;
import com.nis.util.ConfigDictUtils;
import com.nis.util.Configurations;
import com.nis.util.Constants;
import com.nis.util.DateUtils;
import com.nis.util.StringUtil;
import com.nis.util.StringUtils;
import com.nis.web.controller.BaseController;
import com.nis.web.security.UserUtils;
@Controller
@RequestMapping(value = "${adminPath}/basics/serviceDictInfo")
public class ServiceDictInfoController extends BaseController {
@ModelAttribute
public ServiceDictInfo get(@RequestParam(required=false) Integer serviceDictId) {
if (!StringUtil.isEmpty(serviceDictId)){
return serviceDictInfoService.getDictById(serviceDictId);
}else{
return new ServiceDictInfo();
}
}
@ResponseBody
@RequestMapping(value="requestCancleInfoAjax", method = RequestMethod.POST)
public String requestCancleInfoAjax(Integer cancelRequestId,String ids,String indexTable){
if(!StringUtil.isEmpty(ids)){
String[] idArray = ids.split(",");
for(String id :idArray){
try {
serviceDictInfoService.auditCancleRequestInfo(cancelRequestId,indexTable,id);
} catch (Exception e) {
e.printStackTrace();
logger.error("审核添加取消来函信息失败",e);
return "false";
}
}
}
return "true";
}
/**
*
* 根据id获取取消审核时的来函号信息
* @param ids
* @param indexTable
* @return
*/
@ResponseBody
@RequestMapping(value="requestCancleInfoNumber")
public Map requestCancleInfoNumber(String ids,String indexTable){
List list = new ArrayList();
String requestTitle="";
Map map=new HashMap();
if(!StringUtil.isEmpty(ids)){
String[] idArray = ids.split(",");
// for(String id :idArray){
try {
Integer cancelRequestId= serviceDictInfoService.requestCancleInfoNumber(indexTable.trim(),Long.parseLong(ids));
if(cancelRequestId!=null) {
requestTitle = requestInfoService.getRequestTitleById(cancelRequestId.longValue());
if(StringUtils.isBlank(requestTitle)) {
return map;
}
}
} catch (Exception e) {
e.printStackTrace();
logger.error("查询取消审核来函信息失败",e);
return map;
}
// }
}
map.put("requestTitle", requestTitle);
return map;
}
/**
* 查询业务辅助表-业务字典信息列表(无条件分页查询)
* 修改内容添加查询数据总数添加原则不得修改原对象引用参数不得影响原分页参数page数据
* @param serviceDictInfo
* @param request
* @param response
* @param model
* @return
*/
@RequiresPermissions(value={"basics:classification:view","basics:attribute:view","basics:label:view","basics:vpn_ip:view"},logical=Logical.OR)
@RequestMapping(value = {"list", ""})
public String list(String itType, ServiceDictInfo serviceDictInfo,HttpServletRequest request, HttpServletResponse response, Model model) {
//处理数据
List<Integer> intArr = ConfigDictUtils.dealTypeCondition(Configurations.getStringProperty("SERVICE_DICT_ITM_TYPE", ""), itType);
String searchType = null;
String searchContent = null;
if(!StringUtils.isBlank(serviceDictInfo.getItemCode())){
searchType = "itemCode";
searchContent = serviceDictInfo.getItemCode();
}
if(!StringUtils.isBlank(serviceDictInfo.getItemValue())){
searchType = "itemValue";
searchContent = serviceDictInfo.getItemValue();
}
model.addAttribute("searchType", searchType);
model.addAttribute("searchContent", searchContent);
Page<ServiceDictInfo> pageCondition = new Page<ServiceDictInfo>(request, response);
//查询符合条件总数
List<ServiceDictInfo> allList = serviceDictInfoService.findAllServiceDictInfo(serviceDictInfo,intArr,pageCondition.getOrderBy());
model.addAttribute("showTotalCount", allList.size());
//查出顶层分页数据
Page<ServiceDictInfo> page = serviceDictInfoService.findTopDictList(pageCondition, serviceDictInfo,intArr);
// 植入序号
for (int i = 0; i < page.getList().size(); i++) {
page.getList().get(i).setShowSequence("" + (i + 1 + ((page.getPageNo() - 1) * page.getPageSize())));
}
model.addAttribute("page", page);
// 删除顶层数据、取出id
List<Integer> intList = Lists.newArrayList();
for(ServiceDictInfo tempSe : page.getList()) {
if (tempSe != null) {
intList.add(tempSe.getServiceDictId());
}
}
for (int i = allList.size() - 1; i >= 0; i--) {
ServiceDictInfo se = allList.get(i);
if(se!=null&&intList.contains(se.getServiceDictId())||(se!=null&&se.getParent().getServiceDictId()==0)){
allList.remove(se);
}
}
List<ServiceDictInfo> list = Lists.newArrayList();
allList.addAll(page.getList());
ServiceDictInfo.sortList(list,allList,0,true);
//处理下级序号
ServiceDictInfo.addChildrenSeq(list, 0);
model.addAttribute("itType", itType);
model.addAttribute("intArr", intArr);
model.addAttribute("list", list);
return "/basics/serviceDictList";
}
/**
* 进入添加或修改页面
* @param serviceDictInfo
* @param model
* @return
*/
@RequiresPermissions(value={"basics:classification:add","basics:attribute:add","basics:vpn_ip:add","basics:label:add","basics:classification:edit","basics:attribute:edit","basics:vpn_ip:edit","basics:label:edit","basics:classification:view","basics:attribute:view","basics:label:view","basics:vpn_ip:view"},logical=Logical.OR)
@RequestMapping(value={"form"})
public String form(ServiceDictInfo serviceDictInfo, Model model,String doAction,String itType) {
if(doAction!=null&&doAction.equals("0")){
return "/basics/serviceDictInfo";
}
if (serviceDictInfo==null||serviceDictInfo.getParent() == null || serviceDictInfo.getParent().getServiceDictId() == null) {
ServiceDictInfo parent = new ServiceDictInfo();
parent.setServiceDictId(0);
serviceDictInfo.setParent(parent);
}
List<Integer> intArr = ConfigDictUtils.dealTypeCondition(Configurations.getStringProperty("SERVICE_DICT_ITM_TYPE", ""), itType);
model.addAttribute("intArr", intArr);
model.addAttribute("serviceDictInfo", serviceDictInfo);
model.addAttribute("itType", itType);
return "/basics/serviceDictForm";
}
/**
* 新增或修改
* @param serviceDictInfo
* @param model
* @param redirectAttributes
* @return
*/
@RequiresPermissions(value={"basics:classification:add","basics:attribute:add","basics:label:add","basics:vpn_ip:add","basics:classification:edit","basics:attribute:edit","basics:label:edit","basics:vpn_ip:edit"},logical=Logical.OR)
@RequestMapping(value = "saveOrUpdate")
public String saveOrUpdate(ServiceDictInfo serviceDictInfo,Model model, RedirectAttributes redirectAttributes,String itType) {
try {
serviceDictInfoService.saveOrUpdate(serviceDictInfo);
addMessage(redirectAttributes,"success", "save_success");
} catch (Exception e) {
e.printStackTrace();
addMessage(redirectAttributes,"error", "save_failed");
}
return "redirect:" + adminPath + "/basics/serviceDictInfo/list?itType="+itType;
}
/**
* 删除(删除时删除所有下级菜单)
* @param serviceDictInfo
* @param model
* @return
*/
@RequiresPermissions(value={"basics:classification:del","basics:attribute:del","basics:label:del","basics:vpn_ip:del"},logical=Logical.OR)
@RequestMapping(value={"delete"})
public String delete(ServiceDictInfo serviceDictInfo, RedirectAttributes redirectAttributes, String itType, String mulitId) {
try {
String exIp="";
String id="";
Properties msgProp = getMsgProp();
if(itType.equals("5")){
String [] ids=mulitId.split(",");
for (int i = 0; i < ids.length; i++) {
ServiceDictInfo dict= serviceDictInfoService.getDictById(Integer.valueOf(ids[i]));
if(dict!=null){
UserManage user =new UserManage();
user.setServerIp(dict.getItemValue()+",");
List<UserManage> list=userManageService.findList(user);
if(list!=null && list.size()>0){
exIp+=dict.getItemValue()+"";
}else{
id+=ids[i]+",";
}
}
}
}else{
id=mulitId;
}
if(!StringUtil.isEmpty(id)){
serviceDictInfoService.deleteDict(id);
}
if(!StringUtil.isEmpty(exIp)){
exIp=exIp.substring(0, exIp.length()-1);
addMessage(redirectAttributes,"error", "IP "+exIp+" "+msgProp.getProperty("user_check"));
}else{
addMessage(redirectAttributes,"success", "delete_success");
}
} catch (Exception e) {
e.printStackTrace();
addMessage(redirectAttributes,"error", "delete_failed");
}
return "redirect:" + adminPath + "/basics/serviceDictInfo/list?itType="+itType;
}
/**
* isShowHide是否显示隐藏菜单
* @param extId
* @param isShowHidden
* @param response
* @param isShowLeaf是否查询叶子节点
* @return
*/
@ResponseBody
@RequestMapping(value = "treeData")
public List<Map<String, Object>> treeData(@RequestParam(required=false) String extId,@RequestParam(required=false) boolean isShowLeaf,
@RequestParam(required=false) String isShowHide, HttpServletResponse response, String itType) {
List<Map<String, Object>> mapList = Lists.newArrayList();
Map<String, Object> map2 = Maps.newHashMap();
map2.put("id", 0);
map2.put("pId", 0);
map2.put("name","root_node");
//map2.put("placeholder","0");
mapList.add(map2);
List<ServiceDictInfo> list = new ArrayList();
if(isShowLeaf){
if(itType.equals("1")){
list = serviceDictInfoService.findFlDict();
}else if(itType.equals("2")){
list = serviceDictInfoService.findXzDict();
}else{
list = serviceDictInfoService.findLableDict();
}
}else{
//找出该类型所有的非叶子配置
list = serviceDictInfoService.findAllNoLeafDictList(itType);
}
for (int i=0; i<list.size(); i++){
ServiceDictInfo serviceDictInfo = list.get(i);
if (StringUtils.isBlank(extId) || (extId !=null && !extId.equals(serviceDictInfo.getServiceDictId().toString()))) {
if(serviceDictInfo.getIsValid().equals(0)){
continue;
}
Map<String, Object> map = Maps.newHashMap();
map.put("id", serviceDictInfo.getServiceDictId());
map.put("pId", serviceDictInfo.getParent().getServiceDictId());
map.put("name",serviceDictInfo.getItemValue());
mapList.add(map);
}
}
return mapList;
}
/**
* 校验itemCode是否重复
* @param itemCode
* @return
*/
@ResponseBody
@RequestMapping(value = "isItemCodeRepeat")
public boolean isItemCodeRepeat(String itemCode,String oldItemCode) {
List<ServiceDictInfo> list = Lists.newArrayList();
if(oldItemCode!=null&&itemCode.trim().equals(oldItemCode.trim())){
return true;
}
if(!StringUtil.isEmpty(itemCode)){
list = serviceDictInfoService.findByItemCode(itemCode);
}
if(list==null||list.size()==0){
return true;
}
return false;
}
/**
* 校验上下级配置数据类型
* @param parent 父级id
* param parent 子级类型
* @return
*/
@ResponseBody
@RequestMapping(value = "ajaxType")
public boolean ajaxType(Integer parent,Integer child) {
if(parent==-1||parent==0){
return true;
}
ServiceDictInfo p = serviceDictInfoService.getDictById(parent);
if(p.getItemType()==child){
return true;
}
return false;
}
/**
* 校验更改数据类型后校验数据类型是否与下级冲突
* @param parent 父级id
* param parent 子级类型
* @return
*/
@ResponseBody
@RequestMapping(value = "ajaxChildrenType")
public boolean ajaxChildrenType(Integer parent,Integer itemType) {
if(parent==null){
return true;
}
//比较下级任意一个对象
List<ServiceDictInfo> list = serviceDictInfoService.getDictByParentId(parent);
if(list==null||list.size()==0){
return true;
}else{
for(ServiceDictInfo serviceDictInfo:list){
if(serviceDictInfo.getItemType()==itemType){
return true;
}
}
}
return false;
}
/**
* 根据id取itemType
* @return
*/
@ResponseBody
@RequestMapping(value = "ajaxItemType")
public Integer ajaxItemType(Integer parent) {
if(parent==0||parent==-1){
return 0;
}
ServiceDictInfo p = serviceDictInfoService.getDictById(parent);
return p.getItemType();
}
/**
* 校验叶子节点有下级不得更改为叶子节点
* @return
*/
@ResponseBody
@RequestMapping(value = "ajaxLeafChange")
public boolean ajaxLeafChange(Integer parent,Integer newIsLeaf) {
if(parent==null||parent==0){
return true;
}
List<ServiceDictInfo> list = serviceDictInfoService.getDictByParentId(parent);
if(list==null||list.size()==0){
return true;
}else{
if(newIsLeaf==0){
return true;
}
}
return false;
}
/**
* 校验叶子节点无父级不得更改为叶子节点
* @return
*/
@ResponseBody
@RequestMapping(value = "ajaxLeafHasTree")
public boolean ajaxLeafHasTree(Integer serviceDictId,Integer newIsLeaf,Integer parentId) {
if(parentId==null||parentId==0||parentId==-1){
if(newIsLeaf==0){
return true;
}
}
if(parentId!=null&&parentId!=0){
return true;
}
return false;
}
/**
* 校验层级关系
* @return
*/
@ResponseBody
@RequestMapping(value = "isLevelTotalSure")
public boolean isLevelTotalSure(Integer parentId,Integer currentId) {
//获取层级配置
int max = Integer.valueOf(Configurations.getIntProperty("maxLevelNo", 4));
if(parentId==-1||parentId==0){
return true;
}else{
ServiceDictInfo p = serviceDictInfoService.getDictById(parentId);
if(currentId==null){
if(p.getLevelNo()<max){
return true;
}
}else{
if(p.getLevelNo()<max){
//查出该节点所有下级的层级数之和
List<ServiceDictInfo> list = serviceDictInfoService.getDictByParentId(currentId);
if(list==null||list.size()==0){
return true;
}
List<ServiceDictInfo> resultList = Lists.newArrayList();
List<Integer> intList = Lists.newArrayList();
allTreeNode(1,list,resultList);
for(ServiceDictInfo se:resultList){
intList.add(se.getLevelNo());
}
int x = Collections.max(intList);
if((p.getLevelNo()+x)<(max+1)){
return true;
}
}
}
}
return false;
}
/**
* 查出所该节点下有树形子节点
*/
public void allTreeNode(Integer levelNo, List<ServiceDictInfo> list,List<ServiceDictInfo> resultList){
if(list!=null&&list.size()>0){
for(ServiceDictInfo se:list){
se.setLevelNo(levelNo+1);
resultList.add(se);
List<ServiceDictInfo> newList = serviceDictInfoService.getDictByParentId(se.getServiceDictId());
allTreeNode(se.getLevelNo(),newList,resultList);
}
}
}
// dict配置导出
@RequestMapping(value = "exportDict")
public void exportDict(String itType, ServiceDictInfo serviceDictInfo,Model model, HttpServletRequest request, HttpServletResponse response,
String ids, RedirectAttributes redirectAttributes,String exType,String hColumns) {
try {
// export data info
List<String> titleList = new ArrayList<String>();
Map<String, Class<?>> classMap = new HashMap<String, Class<?>>();
Map<String, List> dataMap = new HashMap<String, List>();
Map<String, String> noExportMap = new HashMap<String, String>();
List<ServiceDictInfo> list = Lists.newArrayList();
List<Integer> intArr = ConfigDictUtils.dealTypeCondition(Configurations.getStringProperty("SERVICE_DICT_ITM_TYPE", ""), itType);
//处理数据
if (!StringUtil.isEmpty(ids)) {
list = serviceDictInfoService.findByDictInfo(ids,intArr);
} else {
Page<ServiceDictInfo> pageCondition = new Page<ServiceDictInfo>(request, response);
pageCondition.setPageNo(1);
pageCondition.setPageSize(Constants.MAX_EXPORT_SIZE);
//查询符合条件总数
List<ServiceDictInfo> allList = serviceDictInfoService.findAllServiceDictInfo(serviceDictInfo,intArr,pageCondition.getOrderBy());
//查出顶层分页数据
Page<ServiceDictInfo> page = serviceDictInfoService.findTopDictList(pageCondition, serviceDictInfo,intArr);
// 删除顶层数据、取出id
List<Integer> intList = Lists.newArrayList();
for(ServiceDictInfo tempSe : page.getList()) {
if (tempSe != null) {
intList.add(tempSe.getServiceDictId());
}
}
for (int i = allList.size() - 1; i >= 0; i--) {
ServiceDictInfo se = allList.get(i);
if(se!=null&&intList.contains(se.getServiceDictId())||(se!=null&&se.getParent().getServiceDictId()==0)){
allList.remove(se);
}
}
allList.addAll(page.getList());
ServiceDictInfo.sortList(list,allList,0,true);
}
for(ServiceDictInfo tempSe : list) {
if(tempSe.getServiceDictCreator()!=null){
if(tempSe.getServiceDictCreator().getId()!=null){
SysUser creator=UserUtils.get(tempSe.getServiceDictCreator().getId().toString());
tempSe.setCreatorName(creator.getName());
}
}
if(tempSe.getServiceDictEditor()!=null){
if(tempSe.getServiceDictEditor().getId()!=null){
SysUser creator=UserUtils.get(tempSe.getServiceDictEditor().getId().toString());
tempSe.setEditorName(creator.getName());
}
}
}
String dictName=getDicName(intArr);
titleList.add(dictName);
classMap.put(dictName, ServiceDictInfo.class);
String cfgIndexInfoNoExport = "";
if("5".equals(itType)){
cfgIndexInfoNoExport=",item_type,is_leaf,&config_content:vpn_ip-";
}
if(serviceDictInfo.getBeginDate()==null){
cfgIndexInfoNoExport=",create_time,"+cfgIndexInfoNoExport;
}
if(serviceDictInfo.getEditBeginDate()==null){
cfgIndexInfoNoExport=",edit_time,"+cfgIndexInfoNoExport;
}
if (!StringUtil.isEmpty(hColumns)) {
cfgIndexInfoNoExport = "," +hColumns+ ","+cfgIndexInfoNoExport;
}
noExportMap.put(dictName, cfgIndexInfoNoExport);
dataMap.put(dictName, list);
String timeRange = initDictMap(serviceDictInfo,dictName);
noExportMap.put("timeRange", timeRange);
if ("csv".equals(exType)) {
this._exportCsv(model, request, response, redirectAttributes, dictName, titleList,
classMap, dataMap, noExportMap);
} else {
this._export(model, request, response, redirectAttributes, dictName, titleList,
classMap, dataMap, noExportMap);
}
} catch (Exception e) {
logger.error("dict white export failed", e);
addMessage(redirectAttributes, "error", "export_failed");
}
}
public String initDictMap(ServiceDictInfo cfg,String dictName){
Properties msgProp = getMsgProp();
String titleTime=dictName;
if(cfg.getBeginDate()!=null){
titleTime+=" "+msgProp.getProperty("create_time")+""+DateUtils.formatDateTime(cfg.getBeginDate());
if(cfg.getEndDate()!=null){
titleTime+=""+DateUtils.formatDateTime(cfg.getEndDate());
}else{
titleTime+=""+DateUtils.getDateTime();
}
}
if(cfg.getEditBeginDate()!=null){
titleTime+=" "+msgProp.getProperty("edit_time")+""+DateUtils.formatDateTime(cfg.getEditBeginDate());
if(cfg.getEditEndDate()!=null){
titleTime+=""+DateUtils.formatDateTime(cfg.getEditEndDate());
}else{
titleTime+=""+DateUtils.getDateTime();
}
}
return titleTime;
}
public String getDicName(List intArr){
String dicName="";
Properties msgProp = getMsgProp();
List<String> dict=ConfigDictUtils.getItemTypeByNo("SERVICE_DICT_ITM_TYPE",intArr);
if(dict.size()>0){
dicName=msgProp.getProperty(dict.get(0),dict.get(0));
}
return dicName;
}
@ResponseBody
@RequestMapping(value = "ajaxIpRepeat")
public boolean ajaxIpRepeat(String oldIp, String ip,Integer type) {
if (ip !=null && ip.equals(oldIp)) {
return true;
} else if (ip !=null && serviceDictInfoService.getByItemValue(ip,type) == null) {
return true;
}
return false;
}
}