From 0b0ffdfd5ceae7531ef44ce5e7e25b073d316ebb Mon Sep 17 00:00:00 2001 From: huangxin Date: Thu, 28 Jan 2021 10:38:10 +0800 Subject: [PATCH 1/3] =?UTF-8?q?OCT=20REM:=201.=20=E9=87=8D=E5=91=BD?= =?UTF-8?q?=E5=90=8DMapper=E8=8E=B7=E5=8F=96=E5=A4=84=E7=BD=AE=E8=AE=BE?= =?UTF-8?q?=E5=A4=87=E5=87=BD=E6=95=B0=E5=90=8D=202.=20=E5=A2=9E=E5=8A=A0?= =?UTF-8?q?=E5=A4=84=E7=BD=AE=E8=AE=BE=E5=A4=87IP=E7=AB=AF=E5=8F=A3?= =?UTF-8?q?=E9=BB=98=E8=AE=A4=E5=80=BC=E5=88=A4=E6=96=AD=E6=96=B9=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/com/dispose/common/Helper.java | 35 +++++++++++++++++++ .../impl/DisposeDeviceManagerImpl.java | 26 +++++--------- .../dispose/mapper/DisposeDeviceMapper.java | 20 ++++++++--- src/main/resources/mappers/DisposeDevice.xml | 11 +++++- .../dev/manager/DisposeDeviceManagerTest.java | 2 +- .../dev/mapper/DisposeDeviceMapperTest.java | 6 ++-- .../dispose/test/testcase/qa/v200/P1All.java | 2 +- .../test/testcase/qa/v200/P2DeviceAdd.java | 2 +- .../testcase/qa/v200/P2DeviceUpgrade.java | 2 +- 9 files changed, 75 insertions(+), 31 deletions(-) diff --git a/src/main/java/com/dispose/common/Helper.java b/src/main/java/com/dispose/common/Helper.java index 48d27a94..c28166b7 100644 --- a/src/main/java/com/dispose/common/Helper.java +++ b/src/main/java/com/dispose/common/Helper.java @@ -6,6 +6,7 @@ import inet.ipaddr.AddressStringException; import inet.ipaddr.IPAddress; import inet.ipaddr.IPAddressSeqRange; import inet.ipaddr.IPAddressString; +import io.swagger.models.auth.In; import lombok.extern.slf4j.Slf4j; import java.io.BufferedReader; @@ -227,4 +228,38 @@ public class Helper { return ret.orElse(""); } + + /** + * Is ip port match boolean. + * + * @param originPort the origin port + * @param targetPort the target port + * @param portType the port type + * @return the boolean + */ + public static boolean isIpPortMatch(String originPort, String targetPort, HttpType portType) { + String oPort, tPort; + + if (portType == null) { + return false; + } + + if (originPort != null && originPort.length() > 0) { + oPort = originPort; + } else { + oPort = portType.equals(HttpType.HTTP) ? + HttpType.getDefaultPort(HttpType.HTTP) : + HttpType.getDefaultPort(HttpType.HTTPS); + } + + if (targetPort != null && targetPort.length() > 0) { + tPort = targetPort; + } else { + tPort = portType.equals(HttpType.HTTP) ? + HttpType.getDefaultPort(HttpType.HTTP) : + HttpType.getDefaultPort(HttpType.HTTPS); + } + + return oPort.equals(tPort); + } } diff --git a/src/main/java/com/dispose/manager/impl/DisposeDeviceManagerImpl.java b/src/main/java/com/dispose/manager/impl/DisposeDeviceManagerImpl.java index 29f98c37..57dc08da 100644 --- a/src/main/java/com/dispose/manager/impl/DisposeDeviceManagerImpl.java +++ b/src/main/java/com/dispose/manager/impl/DisposeDeviceManagerImpl.java @@ -1,6 +1,7 @@ package com.dispose.manager.impl; import com.dispose.common.ErrorCode; +import com.dispose.common.Helper; import com.dispose.common.HttpType; import com.dispose.common.IpAddrType; import com.dispose.common.ObjectStatus; @@ -56,8 +57,8 @@ public class DisposeDeviceManagerImpl implements DisposeDeviceManager { @Override public MulReturnType addDisposeDevice(DisposeDevice dev) { // 看看系统中有没有存在相同IP+端口地址的设备,有的话返回失败 - DisposeDevice tDev = disposeDeviceMapper.getDeviceByAddress(dev.getIpAddr(), dev.getIpPort(), - dev.getDeviceType().getValue()); + DisposeDevice tDev = disposeDeviceMapper.getDeviceByAddrAndType(dev.getIpAddr(), dev.getIpPort(), + dev.getDeviceType().getValue()); if (tDev != null) { // 如果设备是删除状态,则更新设备信息 @@ -116,7 +117,7 @@ public class DisposeDeviceManagerImpl implements DisposeDeviceManager { fdDest.setAccessible(true); if (!obj.equals(fdDest.get(destDev))) { log.debug("Upgrade field [{}] value form [{}] to [{}]", fdSrc.getName(), fdDest.get(destDev), - obj); + obj); fdDest.set(destDev, obj); } fdDest.setAccessible(false); @@ -136,22 +137,11 @@ public class DisposeDeviceManagerImpl implements DisposeDeviceManager { */ @Override public MulReturnType upgradeDisposeDevice(DisposeDevice dev) { - DisposeDevice tDev = disposeDeviceMapper.getDeviceByAddress(dev.getIpAddr(), dev.getIpPort(), - dev.getDeviceType().getValue()); + // 根据Ip和设备类型获取设备 + DisposeDevice tDev = disposeDeviceMapper.getDeviceByIpAndType(dev.getIpAddr(), dev.getDeviceType().getValue()); - // 处理默认端口情况 - if (tDev == null) { - if (dev.getIpPort() == null || dev.getIpPort().length() == 0) { - tDev = disposeDeviceMapper.getDeviceByAddress(dev.getIpAddr(), - dev.getUrlType() == HttpType.HTTP ? - HttpType.getDefaultPort(HttpType.HTTP) : - HttpType.getDefaultPort(HttpType.HTTPS), - dev.getDeviceType().getValue()); - } - } - - // 实在找不到设备返回错误 - if (tDev == null) { + // 找不到设备 + if (tDev == null || !Helper.isIpPortMatch(tDev.getIpPort(), dev.getIpPort(), dev.getUrlType())) { return new MulReturnType<>(ErrorCode.ERR_NOSUCHDEVICE, -1L); } diff --git a/src/main/java/com/dispose/mapper/DisposeDeviceMapper.java b/src/main/java/com/dispose/mapper/DisposeDeviceMapper.java index aa5f31ea..f9c7d9d2 100644 --- a/src/main/java/com/dispose/mapper/DisposeDeviceMapper.java +++ b/src/main/java/com/dispose/mapper/DisposeDeviceMapper.java @@ -78,14 +78,24 @@ public interface DisposeDeviceMapper { /** * Gets device by address. * - * @param ipAddr the ip addr - * @param ipPort the ip port + * @param ipAddr the ip addr + * @param ipPort the ip port * @param devType the device type * @return the device by address */ - DisposeDevice getDeviceByAddress(@Param("ipAddr") String ipAddr, - @Param("ipPort") String ipPort, - @Param("devType") Integer devType); + DisposeDevice getDeviceByAddrAndType(@Param("ipAddr") String ipAddr, + @Param("ipPort") String ipPort, + @Param("devType") Integer devType); + + /** + * Gets device by ip and type. + * + * @param ipAddr the ip addr + * @param devType the dev type + * @return the device by ip and type + */ + DisposeDevice getDeviceByIpAndType(@Param("ipAddr") String ipAddr, + @Param("devType") Integer devType); /** diff --git a/src/main/resources/mappers/DisposeDevice.xml b/src/main/resources/mappers/DisposeDevice.xml index 8fa31f5a..8df95439 100644 --- a/src/main/resources/mappers/DisposeDevice.xml +++ b/src/main/resources/mappers/DisposeDevice.xml @@ -63,7 +63,7 @@ LEFT JOIN dispose_capacity c ON d.id = c.deviceId - SELECT d.*, c.* FROM dispose_device d @@ -73,6 +73,15 @@ AND d.deviceType = #{devType} + +