package com.nis.web.service.configuration; 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.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import com.beust.jcommander.internal.Lists; import com.nis.domain.Page; import com.nis.domain.configuration.IpReusePolicyCfg; import com.nis.domain.maat.ToMaatResult; import com.nis.exceptions.MaatConvertException; import com.nis.util.ConfigServiceUtil; import com.nis.util.Constants; import com.nis.web.dao.configuration.IpMultiplexDao; import com.nis.web.security.UserUtils; import com.nis.web.service.BaseService; import com.nis.web.service.SpringContextHolder; import com.nis.web.service.basics.SysDictInfoService; @Service public class IpMultiplexService extends BaseService{ @Autowired private IpMultiplexDao ipMultiplexDao; public Page findPage(Page page, IpReusePolicyCfg entity) { entity.getSqlMap().put("dsf", configScopeFilter(entity.getCurrentUser(),"r")); entity.setPage(page); List list=ipMultiplexDao.findPage(entity); page.setList(list); return page; } public IpReusePolicyCfg getPolicyCfg(Long cfgId, Integer isValid) { List list=ipMultiplexDao.findList(cfgId,isValid); IpReusePolicyCfg policyCfg=null; if(list != null && list.size()>0){ policyCfg=list.get(0); } return policyCfg; } @Transactional(readOnly=false,rollbackFor=RuntimeException.class) public void saveOrUpdate(IpReusePolicyCfg entity, HttpServletRequest request, HttpServletResponse response) { Date time = new Date(); entity.setIsValid(0); entity.setIsAudit(0); setAreaEffectiveIds(entity); // 获取用户/账号类型 if(entity.getUserId() != null){ String userType = ipMultiplexDao.getUserType(entity.getUserId()); entity.setUserType(userType); } // 更新策略信息 if(entity.getCfgId() == null){ entity.initDefaultValue(); entity.setCreateTime(time); entity.setCreatorId(UserUtils.getUser().getId()); //调用服务接口获取compileId try { List compileIds = ConfigServiceUtil.getId(1,1); if(compileIds != null && compileIds.size() > 0 ){ entity.setCompileId(compileIds.get(0)); } } catch (Exception e) { e.printStackTrace(); logger.info("获取编译ID出错"); throw new MaatConvertException(":"+e.getMessage()); } ipMultiplexDao.savePolicyCfg(entity); }else{ entity.setEditorId(UserUtils.getUser().getId()); entity.setEditTime(time); ipMultiplexDao.updatePolicyCfg(entity); } } @Transactional(readOnly=false,rollbackFor=RuntimeException.class) public void delete(Integer isValid, String ids, Integer functionId) { String[] idArray = ids.split(","); for(String id :idArray){ IpReusePolicyCfg entity = new IpReusePolicyCfg(); entity.setCfgId(Long.valueOf(id)); entity.setFunctionId(functionId); entity.setIsValid(isValid); entity.setEditorId(UserUtils.getUser().getId()); entity.setEditTime(new Date()); ipMultiplexDao.updatePolicyCfg(entity); } } /** * 策略配置审核 * @param ids * @param cfg * @param auditTime */ @Transactional(readOnly=false,rollbackFor=RuntimeException.class) public void auditSnatPolicy(Integer isAudit, Integer isValid, Integer functionId, String id, Date auditTime) { // 更新配置审核状态 IpReusePolicyCfg cfg = new IpReusePolicyCfg(); cfg.setCfgId(Long.valueOf(id)); cfg.setIsValid(isValid); cfg.setIsAudit(isAudit); cfg.setAuditorId(UserUtils.getUser().getId()); cfg.setAuditTime(auditTime); cfg.setDoLog(null);; ipMultiplexDao.updatePolicyCfg(cfg); SysDictInfoService sysDictInfoService = SpringContextHolder.getBean(SysDictInfoService.class); // 获取配置信息 cfg = this.getPolicyCfg(cfg.getCfgId(), null); String json=""; if(cfg.getIsAudit() == Constants.AUDIT_YES){ String areaEffectiveIds = cfg.getIsAreaEffective() == 1?sysDictInfoService.setEffectiveRange(cfg.getAreaEffectiveIds()):"0"; Map params = new HashMap(); params.put("configId", cfg.getCompileId()); params.put("addrPoolId", cfg.getAddrPoolId()); params.put("userType", cfg.getUserType()); params.put("userId", cfg.getUserId()); params.put("doLog", cfg.getDoLog()); params.put("action", cfg.getAction()); params.put("service", cfg.getServiceId()); params.put("isValid", 1); params.put("opTime", auditTime); params.put("effectiveRange", areaEffectiveIds); List list = Lists.newArrayList(); list.add(params); //调用服务接口下发配置数据 json=gsonToJson(list); logger.info("SNAT策略配置下发参数:"+json); //调用服务接口下发配置 try { ToMaatResult result = ConfigServiceUtil.postCallbackCfg(json); if(result!=null){ logger.info("SNAT策略配置下发响应信息:"+result.getMsg()); } } catch (Exception e) { logger.error("SNAT策略配置下发失败",e); throw e; } }else if(cfg.getIsAudit() == Constants.AUDIT_NOT_YES){ String areaEffectiveIds = cfg.getIsAreaEffective() == 1?sysDictInfoService.setEffectiveRange(cfg.getAreaEffectiveIds()):"0"; Map params = new HashMap(); params.put("configId", cfg.getCompileId()); params.put("addrPoolId", cfg.getAddrPoolId()); params.put("userType", cfg.getUserType()); params.put("userId", cfg.getUserId()); params.put("doLog", cfg.getDoLog()); params.put("action", cfg.getAction()); params.put("service", cfg.getServiceId()); params.put("isValid", 0); params.put("opTime", auditTime); params.put("effectiveRange", areaEffectiveIds); List list = Lists.newArrayList(); list.add(params); //调用服务接口取消配置 json=gsonToJson(list); logger.info("SNAT策略配置下发参数:"+json); //调用服务接口取消配置 try { ToMaatResult result = ConfigServiceUtil.put(json, 2); logger.info("SNAT策略配置响应信息:"+result.getMsg()); } catch (Exception e) { e.printStackTrace(); logger.info("SNAT策略配置配置失败"); throw e; } } } }