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/service/basics/CommonGroupManageService.java

207 lines
6.7 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.service.basics;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
import java.util.Date;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import com.nis.domain.Page;
import com.nis.domain.basics.CommonGroupInfo;
import com.nis.domain.basics.DomainCommCfg;
import com.nis.domain.basics.IpCommCfg;
import com.nis.domain.basics.PolicyGroupInfo;
import com.nis.domain.basics.ProtectionListInfo;
import com.nis.domain.basics.ScriberIdCommCfg;
import com.nis.domain.basics.UrlCommCfg;
import com.nis.exceptions.MaatConvertException;
import com.nis.util.CacheUtils;
import com.nis.util.ConfigServiceUtil;
import com.nis.util.Constants;
import com.nis.util.StringUtil;
import com.nis.web.dao.basics.CommonGroupManageDao;
import com.nis.web.dao.basics.DomainCommGroupDao;
import com.nis.web.dao.basics.IpCommGroupCfgDao;
import com.nis.web.dao.basics.ScriberIdCommGroupDao;
import com.nis.web.dao.basics.UrlCommGroupDao;
import com.nis.web.security.UserUtils;
import com.nis.web.service.BaseService;
@Service
public class CommonGroupManageService extends BaseService{
@Autowired
private CommonGroupManageDao commonGroupManageDao;
@Autowired
private IpCommGroupCfgDao ipCommGroupCfgDao; // 校验分组时使用
@Autowired
private UrlCommGroupDao urlCommGroupDao;
@Autowired
private DomainCommGroupDao domainCommGroupDao;
@Autowired
private ScriberIdCommGroupDao scriberIdCommGroupDao;
public Page<CommonGroupInfo> findCommonGroupInfoList(Page<CommonGroupInfo> page, CommonGroupInfo entity) {
entity.getSqlMap().put("dsf", configScopeFilter(entity.getCurrentUser(),"r"));
entity.setPage(page);
List<CommonGroupInfo> list=commonGroupManageDao.findCommonGroupInfoList(entity);
page.setList(list);
return page;
}
public CommonGroupInfo getById(int id) {
CommonGroupInfo groupInfo=commonGroupManageDao.getById(id);
return groupInfo;
}
@Transactional(readOnly=false,rollbackFor=RuntimeException.class)
public void saveOrUpdate(CommonGroupInfo entity) throws MaatConvertException{
entity.setIsValid(1);
if(entity.getGroupId()==null){ // 新增
Date createTime=new Date();
entity.setCreatorId(UserUtils.getUser().getId());
entity.setCreateTime(createTime);
// 获取GroupId
int serviceGroupId=0;
List<Integer> groupIds= ConfigServiceUtil.getId(2,1);
if(groupIds.size()>0) {
serviceGroupId=groupIds.get(0).intValue();
}else {
throw new MaatConvertException("Get group id failed");
}
entity.setServiceGroupId(serviceGroupId);
commonGroupManageDao.insert(entity);
this.updatePolicyGroupDict(entity.getGroupType()+"");
}else{ // 修改
Date editTime=new Date();
entity.setEditorId(UserUtils.getUser().getId());
entity.setEditTime(editTime);
commonGroupManageDao.update(entity);
}
}
@Transactional(readOnly=false,rollbackFor=RuntimeException.class)
public void deldete(String ids, int isValid, String groupTypes){
CommonGroupInfo entity=new CommonGroupInfo();
Date editTime=new Date();
entity.setEditorId(UserUtils.getUser().getId());
entity.setEditTime(editTime);
entity.setIsValid(isValid);
if(!StringUtil.isEmpty(ids)){
for (String id : ids.split(",")) {
if(!StringUtil.isEmpty(id)){
entity.setGroupId(Integer.parseInt(id));
commonGroupManageDao.update(entity);
}
}
}
}
// 分组配置界面使用
public List<CommonGroupInfo> findCommonGroupInfosByType(int type) {
List<CommonGroupInfo> list=commonGroupManageDao.findCommonGroupInfosByType(type);
return list;
}
// 导出时使用
public List<CommonGroupInfo> findGroupInfoList(String ids) {
List<CommonGroupInfo> list=commonGroupManageDao.findGroupInfoList(ids);
return list;
}
/**
* 更新分组状态 policy_group_info ud_flag0无有效的域配置 1存在有效的域配置
* @param policyGroupInfos
* @param groupType
*/
public void updateGroupStatus(List<PolicyGroupInfo> policyGroupInfos, Integer groupType) {
/**
* void updateUdFlag(String groupIds, Integer udFlag, Integer groupType);
*/
for(PolicyGroupInfo info:policyGroupInfos){
boolean update=false;
Integer udFlag = 0;
Integer size = 0;
if(groupType == 5) { // IP
size = ipCommGroupCfgDao.getCfgInfoByGroupIds(info.getServiceGroupId().toString());
}else if(groupType == 7) { // URL
size = urlCommGroupDao.getCfgInfoByGroupIds(info.getServiceGroupId().toString());
}else if(groupType == 8) { // Domain
size = domainCommGroupDao.getCfgInfoByGroupIds(info.getServiceGroupId().toString());
}else if(groupType == 9) { // ScriberId
size = scriberIdCommGroupDao.getCfgInfoByGroupIds(info.getServiceGroupId().toString());
}
if(size > 0 && info.getUdFlag().equals(0)) {
update=true;
udFlag = 1;
}else if(size == 0 && !info.getUdFlag().equals(2)){
update=true;
}
if(update){
commonGroupManageDao.updateGroupStatus(info.getServiceGroupId().toString(), udFlag, groupType);
}
}
}
public CommonGroupInfo getGroupInfo(CommonGroupInfo searchCfg) {
return commonGroupManageDao.getGroupInfo(searchCfg);
}
/**
* 更新字典缓存
* @return
*/
private void updatePolicyGroupDict(String groupTypes) {
String dictKey = Constants.CACHE_IPGROUP_DICT;
if(groupTypes.contains(",")) {
String[] split = groupTypes.split(",");
List<String> asList = Arrays.asList(split);
HashSet<String> strings = new HashSet<>(asList);
for (String str : strings) {
Integer groupType = Integer.valueOf(str);
if(groupType.equals(7)) {
dictKey = Constants.CACHE_URLGROUP_DICT;
}else if(groupType.equals(8)) {
dictKey = Constants.CACHE_DOMAINGROUP_DICT;
}else if(groupType.equals(9)) {
dictKey = Constants.CACHE_SCRIBERGROUP_DICT;
}
List<CommonGroupInfo> groupInfo = findCommonGroupInfosByType(groupType);
CacheUtils.put(dictKey, groupInfo);
}
}else {
Integer groupType = Integer.valueOf(groupTypes);
if(groupType.equals(7)) {
dictKey = Constants.CACHE_URLGROUP_DICT;
}else if(groupType.equals(8)) {
dictKey = Constants.CACHE_DOMAINGROUP_DICT;
}else if(groupType.equals(9)) {
dictKey = Constants.CACHE_SCRIBERGROUP_DICT;
}
List<CommonGroupInfo> groupInfo = findCommonGroupInfosByType(groupType);
CacheUtils.put(dictKey, groupInfo);
}
}
}