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 searchPage=new Page(request,response,"r"); Page 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 ipRangeList = appMultiFeatureCfgService.getAppIpRangeCfg(compileId,functionId); AppFeatureIndex cfg = appMultiFeatureCfgService.getAppFeatureIndex(cfgId); List> 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 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 strList = appMultiFeatureCfgService.getAppStringFeatureCfg(compileId,functionId,Integer.valueOf(cfgRegionCode[i])); map.put("strList", strList); } if("3".equals(cfgRegionType[i])){ List complexList = appMultiFeatureCfgService.getAppComplexFeatureCfg(compileId,functionId,Integer.valueOf(cfgRegionCode[i])); map.put("complexList", complexList); } tabList.add(map); } }else{ Map 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"; } }