新增APP复杂特征配置组合功能,根据功能业务字典与功能配置域字典灵活增加权限菜单,实现APP特征的灵活组合与新增。

This commit is contained in:
zhangwei
2018-09-23 15:02:01 +08:00
parent 26e885ceed
commit 8fb9cd6934
21 changed files with 3030 additions and 113 deletions

View File

@@ -0,0 +1,247 @@
package com.nis.web.controller.configuration;
import java.io.File;
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.lang3.StringUtils;
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.multipart.MultipartFile;
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.SysDataDictionaryItem;
import com.nis.domain.configuration.AppBuiltInFeatureFile;
import com.nis.domain.configuration.AppByteCfg;
import com.nis.domain.configuration.AppComplexFeatureCfg;
import com.nis.domain.configuration.AppDomainCfg;
import com.nis.domain.configuration.AppFeatureIndex;
import com.nis.domain.configuration.AppHeaderCfg;
import com.nis.domain.configuration.AppHttpCfg;
import com.nis.domain.configuration.AppIpCfg;
import com.nis.domain.configuration.AppPolicyCfg;
import com.nis.domain.configuration.AppSslCertCfg;
import com.nis.domain.configuration.AppStringFeatureCfg;
import com.nis.domain.configuration.AppTcpCfg;
import com.nis.domain.configuration.AppTopicDomainCfg;
import com.nis.domain.configuration.IpPortCfg;
import com.nis.domain.configuration.NtcSubscribeIdCfg;
import com.nis.domain.configuration.WebsiteDomainTopic;
import com.nis.domain.maat.ToMaatResult;
import com.nis.domain.maat.ToMaatResult.ResponseData;
import com.nis.domain.specific.SpecificServiceCfg;
import com.nis.exceptions.CallExternalProceduresException;
import com.nis.exceptions.MaatConvertException;
import com.nis.util.ConfigServiceUtil;
import com.nis.util.Constants;
import com.nis.util.DictUtils;
import com.nis.util.FileUtils;
import com.nis.util.JsonMapper;
import com.nis.util.StringUtil;
import com.nis.web.controller.BaseController;
import com.nis.web.security.UserUtils;
/**
* 特定协议相关配置控制类
* @author zhangwei
*
*/
@Controller
@RequestMapping("${adminPath}/app/feature/")
public class AppFeatureCfgController extends BaseController {
/**
* app协议复杂特征配置列表
* @param model
* @param cfg
* @param request
* @param response
* @return
*/
@RequestMapping(value = {"multiFeatureCfgList"})
public String multiFeatureCfgList(Model model,@ModelAttribute("cfg")AppFeatureIndex cfg,HttpServletRequest request,HttpServletResponse response) {
Page<AppFeatureIndex> searchPage=new Page<AppFeatureIndex>(request,response,"r");
Page<AppFeatureIndex> page = appMultiFeatureCfgService.findAppFeatureIndexList(searchPage, cfg);
for(AppFeatureIndex entity:page.getList()){
SpecificServiceCfg app = specificServiceCfgService.getBySpecServiceId(entity.getSpecServiceId());
entity.setAppName(app.getSpecServiceName());
}
model.addAttribute("page", page);
initPageCondition(model,cfg);
return "/cfg/app/appMultiFeatureCfgList";
}
/**
* 特征配置表单
* @param model
* @param ids
* @param entity
* @return
*/
@RequestMapping(value = {"multiFeatureCfgForm"})
public String multiFeatureCfgForm(Model model,String ids,AppFeatureIndex entity) {
if(StringUtils.isNotBlank(ids)){
entity = appMultiFeatureCfgService.getAppFeatureIndex(Long.parseLong(ids));
entity.setIpPortList(appMultiFeatureCfgService.getAppIpRangeCfg(entity.getCompileId(), entity.getFunctionId()));
entity.setStrList(appMultiFeatureCfgService.getAppStringFeatureCfg(entity.getCompileId(), entity.getFunctionId(),null));
entity.setComplexList(appMultiFeatureCfgService.getAppComplexFeatureCfg(entity.getCompileId(), entity.getFunctionId(),null));
initUpdateFormCondition(model,entity);
}else{
initFormCondition(model,entity);
}
model.addAttribute("_cfg", entity);
return "/cfg/app/appMultiFeatureCfgForm";
}
/**
* 特征配置新增修改
* @param model
* @param request
* @param response
* @param entity
* @param redirectAttributes
* @return
*/
@RequestMapping(value = {"saveAppMultiFeatureCfg"})
public String saveAppMultiFeatureCfg(Model model,HttpServletRequest request,HttpServletResponse response,
AppFeatureIndex entity,RedirectAttributes redirectAttributes) {
try {
SpecificServiceCfg specificService = specificServiceCfgService.getBySpecServiceId(entity.getSpecServiceId());
if(specificService!=null){
entity.setAppCode(specificService.getSpecServiceCode());
}
appMultiFeatureCfgService.saveOrUpdateAppFeatureCfg(entity);
} catch (Exception e) {
e.printStackTrace();
addMessage(redirectAttributes, e.getMessage());
}
return "redirect:" + adminPath +"/app/feature/multiFeatureCfgList?functionId="+entity.getFunctionId();
}
/**
* 特征配置审核
* @param isAudit
* @param isValid
* @param ids
* @param functionId
* @param redirectAttributes
* @return
*/
@RequestMapping(value = {"auditAppFeatureCfg"})
public String auditAppFeatureCfg(Integer isAudit,Integer isValid,String ids,Integer functionId, RedirectAttributes redirectAttributes) {
AppFeatureIndex entity = new AppFeatureIndex();
String[] idArray = ids.split(",");
for(String id :idArray){
entity = appMultiFeatureCfgService.getAppFeatureIndex(Long.parseLong(id));
entity.setIsAudit(isAudit);
entity.setIsValid(isValid);
entity.setAuditorId(UserUtils.getUser().getId());
entity.setAuditTime(new Date());
entity.setFunctionId(functionId);
try {
appMultiFeatureCfgService.auditAppFeatureCfg(entity,isAudit);
} catch (MaatConvertException e) {
e.printStackTrace();
logger.info("app 特征配置下发失败:"+e.getMessage());
addMessage(redirectAttributes, e.getMessage());
}
}
return "redirect:" + adminPath +"/app/feature/multiFeatureCfgList?functionId="+functionId;
}
/**
* 特征配置删除
* @param isValid
* @param ids
* @param functionId
* @return
*/
@RequestMapping(value = {"updateAppFeatureCfgValid"})
public String updateAppFeatureCfgValid(Integer isValid,String ids,Integer functionId) {
appMultiFeatureCfgService.updateAppFeatureCfgValid(isValid,ids,functionId);
return "redirect:" + adminPath +"/app/feature/multiFeatureCfgList?functionId="+functionId;
}
/**
* 查询特征子配置
* @param model
* @param cfgId
* @param index
* @return
*/
@RequestMapping(value = {"ajaxAppFeatureList"})
public String ajaxAppFeatureList(Model model,Long cfgId,Integer compileId,Integer functionId,Integer index) {
List<AppIpCfg> ipRangeList = appMultiFeatureCfgService.getAppIpRangeCfg(compileId,functionId);
AppFeatureIndex cfg = appMultiFeatureCfgService.getAppFeatureIndex(cfgId);
List<Map<String,Object>> tabList = new ArrayList();
String[] cfgRegionValue = cfg.getCfgRegionValue().split(",");
String[] cfgRegionType = cfg.getCfgRegionType().split(",");
String[] cfgRegionCode = cfg.getCfgRegionCode1().split(",");
if(cfgRegionValue.length == cfgRegionType.length && cfgRegionValue.length==cfgRegionCode.length){
for(int i=0;i<cfgRegionValue.length;i++){
Map<String,Object> map = new HashMap();
map.put("regionType", cfgRegionType[i]);
map.put("regionValue", cfgRegionValue[i]);
if("1".equals(cfgRegionType[i])){
map.put("ipRangeList", ipRangeList);
}
if("2".equals(cfgRegionType[i])){
List<AppStringFeatureCfg> strList = appMultiFeatureCfgService.getAppStringFeatureCfg(compileId,functionId,Integer.valueOf(cfgRegionCode[i]));
map.put("strList", strList);
}
if("3".equals(cfgRegionType[i])){
List<AppComplexFeatureCfg> complexList = appMultiFeatureCfgService.getAppComplexFeatureCfg(compileId,functionId,Integer.valueOf(cfgRegionCode[i]));
map.put("complexList", complexList);
}
tabList.add(map);
}
}else{
Map<String,Object> map = new HashMap();
map.put("regionType", "0");
map.put("regionValue", "query config detail error");
tabList.add(map);
}
/*if(ipRangeList!=null){
String cfgType = null;
for(AppIpCfg ip:ipRangeList){
if(!ip.getCfgType().equals(cfgType)){
tabList.add(new String[]{"1",ip.getCfgType()});
cfgType = ip.getCfgType();
}
}
}
if(strList!=null){
String cfgType = null;
for(AppStringFeatureCfg cfg:strList){
if(!cfg.getCfgType().equals(cfgType)){
tabList.add(new String[]{"2",cfg.getCfgType()});
cfgType = cfg.getCfgType();
}
}
}
if(complexList!=null){
String cfgType = null;
for(AppComplexFeatureCfg cfg:complexList){
if(!cfg.getCfgType().equals(cfgType)){
tabList.add(new String[]{"3",cfg.getCfgType()});
cfgType = cfg.getCfgType();
}
}
}*/
model.addAttribute("index", index);
model.addAttribute("tabList", tabList);
return "/cfg/app/appSubFeatureList";
}
}