package com.nis.web.controller.configuration; import java.io.File; import java.io.IOException; import java.util.ArrayList; import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.UUID; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.commons.codec.digest.DigestUtils; 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.util.FileCopyUtils; import org.springframework.web.bind.annotation.ModelAttribute; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.multipart.MultipartFile; import org.springframework.web.servlet.mvc.support.RedirectAttributes; import com.nis.domain.Page; import com.nis.domain.configuration.CfgIndexInfo; import com.nis.domain.configuration.ComplexkeywordCfg; import com.nis.domain.configuration.FileDigestCfg; import com.nis.domain.configuration.IpPortCfg; import com.nis.domain.maat.ToMaatResult; import com.nis.exceptions.MaatConvertException; import com.nis.util.ConfigServiceUtil; import com.nis.util.FileUtils; import com.nis.util.JsonMapper; import com.nis.web.controller.BaseController; import com.nis.web.security.UserUtils; /** * 邮件相关配置控制类 * @author dell * */ @Controller @RequestMapping("${adminPath}/ntc/mail/") public class MailCfgController extends BaseController{ @RequestMapping(value = {"mailList"}) @RequiresPermissions(value={"mail:config"}) public String mailList(Model model,@ModelAttribute("cfg")CfgIndexInfo cfg,HttpServletRequest request,HttpServletResponse response) { Page searchPage=new Page(request,response,"a"); Page page = mailCfgService.getMailList(searchPage, cfg); model.addAttribute("page", page); initPageCondition(model,cfg); return "/cfg/mail/mailList"; } @RequestMapping(value = {"mailForm"}) @RequiresPermissions(value={"mail:config"}) public String mailForm(Model model,String ids,CfgIndexInfo entity) { if(StringUtils.isNotBlank(ids)){ entity = mailCfgService.getMailCfg(Long.parseLong(ids)); model.addAttribute("areaCfgs", entity.getAreaCfg()); } initFormCondition(model,entity); model.addAttribute("_cfg", entity); return "/cfg/mail/mailForm"; } @RequestMapping(value = {"saveMailCfg"}) @RequiresPermissions(value={"mail:config"}) public String saveMailCfg(Model model,HttpServletRequest request,HttpServletResponse response,String ids, CfgIndexInfo entity,MultipartFile file) { try { ToMaatResult result = null; if(file!=null && file.getSize()>0 && entity.getDigestList()!=null && entity.getDigestList().size()>0){ String sep = System.getProperty("file.separator"); String digestFilePath = request.getRealPath("/")+"digestFile"; FileUtils.createDirectory(digestFilePath); String fileName = UUID.randomUUID()+FileUtils.getSuffix(file.getOriginalFilename(), true); File uploadFile = new File(digestFilePath+sep+fileName); FileCopyUtils.copy(file.getBytes(), uploadFile); Date creatTime = entity.getCreateTime(); //获取文件摘要接口调用 Map fileMap = new HashMap(); fileMap.put("filetype", FileUtils.getSuffix(file.getName(), false)); fileMap.put("datatype", "dbSystem");//源文件存入数据中心 fileMap.put("createTime",creatTime); fileMap.put("key",FileUtils.getPrefix(file.getName(), false)); fileMap.put("fileName", file.getName()); String md5 = DigestUtils.md5Hex(file.getBytes()); fileMap.put("checksum", md5); result = ConfigServiceUtil.getFileDigest(null, uploadFile, JsonMapper.toJsonString(fileMap)); logger.info("获取文件摘要响应信息:"+result); } mailCfgService.saveMailCfg(entity,result); } catch (IOException e) { e.printStackTrace(); } return "redirect:" + adminPath +"/ntc/mail/mailList?functionId="+entity.getFunctionId(); } @RequestMapping(value = {"ajaxMailSubList"}) public String ajaxMailSubList(Model model,Long cfgId,Integer index) { CfgIndexInfo cfg = mailCfgService.getMailCfg(cfgId); List tabList = new ArrayList(); if(cfg.getIpPortList()!=null){ String cfgType = null; for(IpPortCfg ip:cfg.getIpPortList()){ if(!ip.getCfgType().equals(cfgType)){ tabList.add(new String[]{"1",ip.getCfgType()}); cfgType = ip.getCfgType(); } } } if(cfg.getComplexList()!=null){ String cfgType = null; for(ComplexkeywordCfg keyword:cfg.getComplexList()){ if(!keyword.getCfgType().equals(cfgType)){ tabList.add(new String[]{"3",keyword.getCfgType()}); cfgType = keyword.getCfgType(); } } } if(cfg.getDigestList()!=null){ String cfgType = null; for(FileDigestCfg digest:cfg.getDigestList()){ if(!digest.getCfgType().equals(cfgType)){ tabList.add(new String[]{"5",digest.getCfgType()}); cfgType = digest.getCfgType(); } } } model.addAttribute("_cfg", cfg); model.addAttribute("index", index); model.addAttribute("tabList", tabList); return "/cfg/mail/mailSubList"; } @RequestMapping(value = {"updateMailCfgValid"}) @RequiresPermissions(value={"mail:config"}) public String updateMailCfgValid(Integer isValid,String ids,Integer functionId) { mailCfgService.updateMailCfgValid(isValid,ids,functionId); return "redirect:" + adminPath +"/ntc/mail/mailList?functionId="+functionId; } @RequestMapping(value = {"auditMailCfg"}) @RequiresPermissions(value={"mail:audit"}) public String auditMailCfg(Integer isAudit,Integer isValid,String ids,Integer functionId, RedirectAttributes redirectAttributes) { CfgIndexInfo entity = new CfgIndexInfo(); String[] idArray = ids.split(","); for(String id :idArray){ entity = mailCfgService.getMailCfg(Long.parseLong(id)); entity.setIsAudit(isAudit); entity.setIsValid(isValid); entity.setAuditorId(UserUtils.getUser().getId()); entity.setAuditTime(new Date()); entity.setFunctionId(functionId); try { mailCfgService.auditMailCfg(entity,isAudit); } catch (MaatConvertException e) { e.printStackTrace(); logger.info("mail配置下发失败:"+e.getMessage()); addMessage(redirectAttributes, e.getMessage()); } } return "redirect:" + adminPath +"/ntc/mail/mailList?functionId="+functionId; } }