Explorar el Código

fix: 优化修改IP分组

lwh hace 3 semanas
padre
commit
64053e0701

+ 1 - 1
pig-marketing/pig-marketing-biz/src/main/java/com/pig4cloud/pig/marketing/service/impl/MarketingAppsServiceImpl.java

@@ -544,7 +544,7 @@ public class MarketingAppsServiceImpl implements MarketingAppsService {
 						throw new BusinessException("ip:"+ipDto.getStartIp()+"已存在");
 					}
 					String[] end = ipDto.getEndIp().split("\\.");
-					throw new BusinessException("ip:"+ipDto.getStartIp()+"/"+end[3]+"已存在");
+					throw new BusinessException("ip:"+ipDto.getStartIp()+"/"+end[3]+"已存在、或有重叠");
 				}
 
 				// 执行新增或修改

+ 36 - 34
pig-marketing/pig-marketing-biz/src/main/java/com/pig4cloud/pig/marketing/service/impl/MarketingConfigServiceImpl.java

@@ -170,7 +170,7 @@ public class MarketingConfigServiceImpl implements MarketingConfigService {
 	 * @return Boolean
 	 */
 	@Override
-	@Transactional
+	@Transactional(rollbackFor = Exception.class)
 	public R modMarketingGroupDomain(ModMarketingGroupDomainDTO reqDto) {
 		//先查询分组是否存在
 		MarketingConfigGroup group = groupMapper.selectOne(Wrappers.<MarketingConfigGroup>lambdaQuery()
@@ -200,13 +200,17 @@ public class MarketingConfigServiceImpl implements MarketingConfigService {
 		// 更新域名信息
 		List<MarketingGroupDomainDTO> domains = reqDto.getDomains();
 		for (MarketingGroupDomainDTO domainDto : domains) {
+			if (domainDto.getId() != null && (domainDto.getModify()==null || !domainDto.getModify())){
+				continue;
+			}
+
 
 			// 域名格式校验
 			if(!DomainValidationUtil.isValidDomain(domainDto.getDomain())){
 				throw new BusinessException("域名格式不合法(支持字母、数字、下划线、横线、点)");
 			}
 
-			// 新增、修改
+			// 校验域名是否重复
 			MarketingGroupDomain domainExist = groupDomainMapper.selectOne(Wrappers.<MarketingGroupDomain>lambdaQuery()
 					.eq(MarketingGroupDomain::getDomain, domainDto.getDomain())
 					.eq(MarketingGroupDomain::getGroupId, reqDto.getId())
@@ -215,19 +219,16 @@ public class MarketingConfigServiceImpl implements MarketingConfigService {
 				return R.failed("域名:"+domainDto.getDomain()+"已存在");
 			}
 
+			// 新增、修改
+			MarketingGroupDomain domain = new MarketingGroupDomain();
+			BeanUtils.copyProperties(domainDto, domain);
+			domain.setGroupId(reqDto.getId());
 			if (domainDto.getId() == null){
 				// 新增
-				MarketingGroupDomain domain = new MarketingGroupDomain();
-				domain.setDomain(domainDto.getDomain());
-				domain.setGroupId(reqDto.getId());
 				groupDomainMapper.insert(domain);
-			} else {
+			} else if (domainDto.getModify() != null && domainDto.getModify()){
 				// 修改
-				if (domainDto.getModify()) {
-					MarketingGroupDomain domain = groupDomainMapper.selectById(domainDto.getId());
-					domain.setDomain(domainDto.getDomain());
-					groupDomainMapper.updateById(domain);
-				}
+				groupDomainMapper.updateById(domain);
 			}
 		}
 		return R.ok();
@@ -267,6 +268,7 @@ public class MarketingConfigServiceImpl implements MarketingConfigService {
 	 * @return R
 	 */
 	@Override
+	@Transactional(rollbackFor = Exception.class)
 	public R modMarketingGroupIp(ModMarketingGroupIPDTO reqDto) {
 		//先查询分组是否存在
 		MarketingConfigGroup group = groupMapper.selectOne(Wrappers.<MarketingConfigGroup>lambdaQuery()
@@ -297,13 +299,12 @@ public class MarketingConfigServiceImpl implements MarketingConfigService {
 		 // 更新IP信息
 		List<MarketingGroupIPDTO> ips = reqDto.getIps();
 		for (MarketingGroupIPDTO ipDto : ips) {
-			// 新增、修改
-			Boolean isExist = groupIpMapper.checkIpConflict(ipDto.getIpMode(),ipDto.getStartIp(), ipDto.getEndIp(), ipDto.getId(), reqDto.getId());
-			if (isExist){
-				if (ipDto.getIpMode() == 1){
-					throw new BusinessException("ip:"+ipDto.getStartIp()+"已存在");
-				}
-				throw new BusinessException("ip:"+ipDto.getStartIp()+"/"+ipDto.getEndIp()+"已存在");
+			if (ipDto.getId() != null && (ipDto.getModify()==null || !ipDto.getModify())){
+				continue;
+			}
+			// 去除无用数据
+			if (ipDto.getIpMode() == 1){
+				ipDto.setEndIp(null);
 			}
 
 			// ip格式校验
@@ -319,25 +320,26 @@ public class MarketingConfigServiceImpl implements MarketingConfigService {
 				}
 			}
 
+			// 校验是否重复
+			Boolean isExist = groupIpMapper.checkIpConflict(ipDto.getIpMode(),ipDto.getStartIp(), ipDto.getEndIp(), ipDto.getId(), reqDto.getId());
+			if (isExist){
+				if (ipDto.getIpMode() == 1){
+					throw new BusinessException("ip:"+ipDto.getStartIp()+"已存在");
+				}
+				String[] end = ipDto.getEndIp().split("\\.");
+				throw new BusinessException("ip:"+ipDto.getStartIp()+"/"+end[3]+"已存在、或有重叠");
+			}
+
+			// 新增、修改
+			MarketingGroupIp groupIp = new MarketingGroupIp();
+			BeanUtils.copyProperties(ipDto, groupIp);
+			groupIp.setGroupId(reqDto.getId());
 			 if (ipDto.getId() == null){
 				 // 新增
-				 MarketingGroupIp groupIp = new MarketingGroupIp();
-				 groupIp.setGroupId(reqDto.getId());
-				 groupIp.setIpMode(ipDto.getIpMode());
-				 groupIp.setStartIp(ipDto.getStartIp());
-				 groupIp.setEndIp(ipDto.getEndIp());
 				 groupIpMapper.insert(groupIp);
-			 }else {
-				 if (ipDto.getModify()) {
-					 // 修改
-					 MarketingGroupIp groupIp = new MarketingGroupIp();
-					 groupIp.setId(ipDto.getId());
-					 groupIp.setGroupId(reqDto.getId());
-					 groupIp.setIpMode(ipDto.getIpMode());
-					 groupIp.setStartIp(ipDto.getStartIp());
-					 groupIp.setEndIp(ipDto.getEndIp());
-					 groupIpMapper.updateById(groupIp);
-				 }
+			 }else if (ipDto.getModify() != null && ipDto.getModify()){
+				 // 修改
+				 groupIpMapper.updateById(groupIp);
 			 }
 		}
 		return R.ok();