REM:
1. 增加项目Git版本信息获取功能
2. 增加规范化IP端口接口
3. 增加获取能力节点信息接口
4. 增加获取平台版本信息接口
5. 增加获取设备版本信息接口
This commit is contained in:
HuangXin 2020-09-04 20:59:51 +08:00
parent d899cb5da3
commit 3ec6da278d
13 changed files with 280 additions and 35 deletions

View File

@ -102,4 +102,15 @@ public class Helper {
.collect(Collectors.joining(".")) + mask; .collect(Collectors.joining(".")) + mask;
} }
} }
/**
* Ip port normalize string.
*
* @param ipPort the ip port
* @param type the type
* @return the string
*/
public static String ipPortNormalize(String ipPort, HttpType type) {
return ipPort.length() == 0 ? (type == HttpType.HTTP ? "80" : "443") : ipPort;
}
} }

View File

@ -0,0 +1,52 @@
package com.dispose.common;
import lombok.Getter;
import lombok.Setter;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.PropertySource;
import org.springframework.stereotype.Component;
/**
* The type Version configure.
*
* @author <huangxin@cmhi.chinamoblie.com>
*/
@Getter
@Setter
@Component
@Slf4j
@PropertySource("classpath:git.properties")
public class ProjectGitVersionInfo {
/**
* The Commit id.
*/
@Value("${git.commit.id}")
private String commitId;
/**
* The Commit describe.
*/
@Value("${git.commit.id.describe}")
private String commitDescribe;
/**
* The Commit time.
*/
@Value("${git.commit.time}")
private String commitTime;
/**
* The Tag name.
*/
@Value("${git.closest.tag.name}")
private String tagName;
/**
* The Build time.
*/
@Value("${git.build.time}")
private String buildTime;
/**
* The Git branch.
*/
@Value("${git.branch}")
private String gitBranch;
}

View File

@ -6,6 +6,7 @@ import com.dispose.common.DisposeConfigValue;
import com.dispose.common.DisposeDeviceType; import com.dispose.common.DisposeDeviceType;
import com.dispose.common.DisposeObjectType; import com.dispose.common.DisposeObjectType;
import com.dispose.common.ErrorCode; import com.dispose.common.ErrorCode;
import com.dispose.common.Helper;
import com.dispose.common.HttpType; import com.dispose.common.HttpType;
import com.dispose.common.IpAddrType; import com.dispose.common.IpAddrType;
import com.dispose.common.PrivacyHelper; import com.dispose.common.PrivacyHelper;
@ -143,9 +144,7 @@ public class DisposeDeviceManagerController {
DisposeDevice dev = v.getSecondParam(); DisposeDevice dev = v.getSecondParam();
AddDeviceRet rsp = AddDeviceRet.builder() AddDeviceRet rsp = AddDeviceRet.builder()
.ipAddr(dev.getIpAddr()) .ipAddr(dev.getIpAddr())
.ipPort(dev.getIpPort().length() == 0 ? .ipPort(Helper.ipPortNormalize(dev.getIpPort(), dev.getUrlType()))
(dev.getUrlType() == HttpType.HTTP ?
"80" : "443") : dev.getIpPort())
.build(); .build();
rsp.setStatus(v.getFirstParam().getCode()); rsp.setStatus(v.getFirstParam().getCode());
@ -272,8 +271,7 @@ public class DisposeDeviceManagerController {
devInfo.setId(v.getId().toString()); devInfo.setId(v.getId().toString());
devInfo.setIpAddr(DisposeConfigValue.USED_PRIVACY_PROTECT ? devInfo.setIpAddr(DisposeConfigValue.USED_PRIVACY_PROTECT ?
PrivacyHelper.ipAddressPrivacy(v.getIpAddr()) : v.getIpAddr()); PrivacyHelper.ipAddressPrivacy(v.getIpAddr()) : v.getIpAddr());
devInfo.setIpPort(v.getIpPort().length() == 0 ? devInfo.setIpPort(Helper.ipPortNormalize(v.getIpPort(), v.getUrlType()));
(v.getUrlType() == HttpType.HTTP ? "80" : "443") : v.getIpPort());
devInfo.setDeviceType(v.getDeviceType().getValue()); devInfo.setDeviceType(v.getDeviceType().getValue());
devInfo.setAreaCode(v.getAreaCode()); devInfo.setAreaCode(v.getAreaCode());
devInfo.setDeviceName(v.getDeviceName()); devInfo.setDeviceName(v.getDeviceName());

View File

@ -2,13 +2,21 @@ package com.dispose.controller;
import com.dispose.common.DisposeCapacityType; import com.dispose.common.DisposeCapacityType;
import com.dispose.common.ErrorCode; import com.dispose.common.ErrorCode;
import com.dispose.common.Helper;
import com.dispose.common.ProjectGitVersionInfo;
import com.dispose.pojo.dto.protocol.base.IdArraysReq;
import com.dispose.pojo.dto.protocol.base.ProtocolReqDTO;
import com.dispose.pojo.dto.protocol.base.ProtocolRespDTO; import com.dispose.pojo.dto.protocol.base.ProtocolRespDTO;
import com.dispose.pojo.dto.protocol.device.info.AreaInfoDetail; import com.dispose.pojo.dto.protocol.device.info.AreaInfoDetail;
import com.dispose.pojo.dto.protocol.device.info.DeviceVersionDetail;
import com.dispose.pojo.dto.protocol.device.info.GetAreaInfoRsp; import com.dispose.pojo.dto.protocol.device.info.GetAreaInfoRsp;
import com.dispose.pojo.dto.protocol.device.info.GetDeviceVerInfoRsp;
import com.dispose.pojo.dto.protocol.device.info.GetPlatformVerInfoRsp;
import com.dispose.pojo.entity.DisposeDevice; import com.dispose.pojo.entity.DisposeDevice;
import com.dispose.service.AreaCodeManagerService; import com.dispose.service.AreaCodeManagerService;
import com.dispose.service.DisposeAbilityRouterService; import com.dispose.service.DisposeAbilityRouterService;
import com.dispose.service.DisposeDeviceManagerService; import com.dispose.service.DisposeDeviceManagerService;
import com.dispose.validation.group.ValidGroups;
import com.security.annotation.Decryption; import com.security.annotation.Decryption;
import com.security.annotation.Encryption; import com.security.annotation.Encryption;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
@ -18,6 +26,8 @@ import org.springframework.stereotype.Component;
import org.springframework.stereotype.Controller; import org.springframework.stereotype.Controller;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.bind.annotation.ResponseBody;
@ -26,6 +36,8 @@ import java.util.ArrayList;
import java.util.Arrays; import java.util.Arrays;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.function.Function;
import java.util.stream.Collectors;
/** /**
* The type Dispose info controller. * The type Dispose info controller.
@ -48,24 +60,33 @@ public class DisposeInfoController {
@Resource @Resource
private DisposeDeviceManagerService disposeDeviceManagerService; private DisposeDeviceManagerService disposeDeviceManagerService;
/**
* The Area code manager service.
*/
@Resource
private AreaCodeManagerService areaCodeManagerService;
/**
* The Project git version info.
*/
@Resource
private ProjectGitVersionInfo projectGitVersionInfo;
/** /**
* The Dispose ability router service. * The Dispose ability router service.
*/ */
@Resource @Resource
private DisposeAbilityRouterService disposeAbilityRouterService; private DisposeAbilityRouterService disposeAbilityRouterService;
@Resource
private AreaCodeManagerService areaCodeManagerService;
/** /**
* Gets all dispose device. * Gets all dispose device area info.
* *
* @return the all dispose device * @return the all dispose device area info
*/ */
@GetMapping("areaInfo") @GetMapping("areaInfo")
@ResponseBody @ResponseBody
@ApiOperation("获取处置能力节点") @ApiOperation("获取处置能力节点")
public ProtocolRespDTO<?> getAllDisposeDevice() { public ProtocolRespDTO<GetAreaInfoRsp> getAllDisposeDeviceAreaInfo() {
GetAreaInfoRsp rspInfo = GetAreaInfoRsp.builder() GetAreaInfoRsp rspInfo = GetAreaInfoRsp.builder()
.items(new ArrayList<>()) .items(new ArrayList<>())
@ -85,6 +106,78 @@ public class DisposeInfoController {
rspInfo.getItems().add(info); rspInfo.getItems().add(info);
} }
rspInfo.setStatus(ErrorCode.ERR_OK.getCode());
rspInfo.setMessage(new String[]{ErrorCode.ERR_OK.getMsg()});
return ProtocolRespDTO.result(ErrorCode.ERR_OK, rspInfo); return ProtocolRespDTO.result(ErrorCode.ERR_OK, rspInfo);
} }
/**
* Gets version info.
*
* @return the version info
*/
@GetMapping("platformVersion")
@ResponseBody
@ApiOperation("获取平台版本信息")
public ProtocolRespDTO<GetPlatformVerInfoRsp> getPlatformVersionInfo() {
GetPlatformVerInfoRsp rspInfo = GetPlatformVerInfoRsp.builder()
.platformVersion(projectGitVersionInfo)
.build();
rspInfo.setStatus(ErrorCode.ERR_OK.getCode());
rspInfo.setMessage(new String[]{ErrorCode.ERR_OK.getMsg()});
return ProtocolRespDTO.result(ErrorCode.ERR_OK, rspInfo);
}
@PostMapping("deviceVersion")
@ResponseBody
@ApiOperation("获取设备版本信息")
public ProtocolRespDTO<GetDeviceVerInfoRsp> getDeviceVersionInfo(
@Validated(ValidGroups.GetDevVerReqValid.class)
@RequestBody ProtocolReqDTO<IdArraysReq> mr
) {
GetDeviceVerInfoRsp rspInfo = GetDeviceVerInfoRsp.builder()
.deviceVersion(new ArrayList<>())
.build();
List<Long> reqIds = Arrays.stream(mr.getMsgContent().getId()).map(Long::parseLong).collect(Collectors.toList());
Map<Long, DisposeDevice> devMap = disposeDeviceManagerService.getAllDisposeDevice()
.stream()
.collect(Collectors.toMap(DisposeDevice::getId,
Function.identity()));
List<Long> allDevId = new ArrayList<>(devMap.keySet());
if (reqIds.size() == 0) {
reqIds = allDevId;
}
reqIds.stream().collect(Collectors.groupingBy(allDevId::contains))
.forEach((k, v) -> v.forEach(m -> {
DeviceVersionDetail dv = DeviceVersionDetail.builder().build();
dv.setId(String.valueOf(m));
if (k) {
DisposeDevice d = devMap.get(m);
dv.setIpAddr(d.getIpAddr());
dv.setIpPort(Helper.ipPortNormalize(d.getIpPort(), d.getUrlType()));
dv.setVersion(disposeAbilityRouterService.getAbilityDevice(d.getId())
.getFirewareInfo()
.getVersion());
dv.setStatus(ErrorCode.ERR_OK.getCode());
dv.setMessage(new String[]{ErrorCode.ERR_OK.getMsg()});
} else {
dv.setStatus(ErrorCode.ERR_NOSUCHDEVICE.getCode());
dv.setMessage(new String[]{ErrorCode.ERR_NOSUCHDEVICE.getMsg()});
}
rspInfo.getDeviceVersion().add(dv);
}));
return ProtocolRespDTO.result(ErrorCode.ERR_OK, rspInfo);
}
} }

View File

@ -25,7 +25,8 @@ public class IdArraysReq {
/** /**
* The Id. * The Id.
*/ */
@NotNull(message = "id 字段不能为空", groups = ValidGroups.IdArrayValid.class) @NotNull(message = "id 字段不能为空",
groups = {ValidGroups.IdArrayValid.class, ValidGroups.GetDevVerReqValid.class})
@Size(min = 1, message = "id 字段必须指定明确id编号", groups = ValidGroups.ExplicitIdArrayValid.class) @Size(min = 1, message = "id 字段必须指定明确id编号", groups = ValidGroups.ExplicitIdArrayValid.class)
private String[] id; private String[] id;

View File

@ -0,0 +1,37 @@
package com.dispose.pojo.dto.protocol.device.info;
import com.dispose.pojo.dto.protocol.base.BaseIdResp;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonPropertyOrder;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
/**
* The type Device version detail.
*
* @author <huangxin@cmhi.chinamoblie.com>
*/
@EqualsAndHashCode(callSuper = true)
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@JsonPropertyOrder({"ipAddr", "ipPort", "version", "status", "message"})
@JsonInclude(JsonInclude.Include.NON_NULL)
public class DeviceVersionDetail extends BaseIdResp {
/**
* The Ip addr.
*/
private String ipAddr;
/**
* The Ip port.
*/
private String ipPort;
/**
* The Version.
*/
private String version;
}

View File

@ -20,7 +20,7 @@ import java.util.List;
@Data @Data
@Builder @Builder
@AllArgsConstructor @AllArgsConstructor
@JsonPropertyOrder({"taskId", "disposeIp", "expireTime", "status", "message"}) @JsonPropertyOrder({"items", "status", "message"})
@JsonInclude(JsonInclude.Include.NON_NULL) @JsonInclude(JsonInclude.Include.NON_NULL)
public class GetAreaInfoRsp extends BaseRespStatus { public class GetAreaInfoRsp extends BaseRespStatus {
/** /**

View File

@ -0,0 +1,4 @@
package com.dispose.pojo.dto.protocol.device.info;
public class GetDevVerReq {
}

View File

@ -0,0 +1,24 @@
package com.dispose.pojo.dto.protocol.device.info;
import com.fasterxml.jackson.annotation.JsonPropertyOrder;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import java.util.List;
/**
* The type Get device ver info rsp.
*
* @author <huangxin@cmhi.chinamoblie.com>
*/
@Data
@Builder
@AllArgsConstructor
@JsonPropertyOrder({"deviceVersion", "status", "message"})
public class GetDeviceVerInfoRsp {
/**
* The Device version.
*/
private List<DeviceVersionDetail> deviceVersion;
}

View File

@ -0,0 +1,26 @@
package com.dispose.pojo.dto.protocol.device.info;
import com.dispose.common.ProjectGitVersionInfo;
import com.dispose.pojo.dto.protocol.base.BaseRespStatus;
import com.fasterxml.jackson.annotation.JsonPropertyOrder;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
* The type Get version info rsp.
*
* @author <huangxin@cmhi.chinamoblie.com>
*/
@EqualsAndHashCode(callSuper = true)
@Data
@Builder
@AllArgsConstructor
@JsonPropertyOrder({"platformVersion", "status", "message"})
public class GetPlatformVerInfoRsp extends BaseRespStatus {
/**
* The Platform version.
*/
private ProjectGitVersionInfo platformVersion;
}

View File

@ -43,11 +43,6 @@ public class AreaCodeManagerServiceImpl implements AreaCodeManagerService {
@Override @Override
public Map<Integer, List<DisposeDevice>> getAreaCodeGroup() { public Map<Integer, List<DisposeDevice>> getAreaCodeGroup() {
List<DisposeDevice> disposeDevices = disposeDeviceManagerService.getAllDisposeDevice(); List<DisposeDevice> disposeDevices = disposeDeviceManagerService.getAllDisposeDevice();
if (disposeDevices == null) {
return null;
}
return disposeDevices.stream().collect(Collectors.groupingBy(DisposeDevice::getAreaCode)); return disposeDevices.stream().collect(Collectors.groupingBy(DisposeDevice::getAreaCode));
} }
@ -60,11 +55,6 @@ public class AreaCodeManagerServiceImpl implements AreaCodeManagerService {
@Override @Override
public int getAreaCodeGroupReserveNetflow(Integer areaCode) { public int getAreaCodeGroupReserveNetflow(Integer areaCode) {
List<DisposeDevice> disposeDevices = disposeDeviceManagerService.getAllDisposeDevice(); List<DisposeDevice> disposeDevices = disposeDeviceManagerService.getAllDisposeDevice();
if (disposeDevices == null) {
return 0;
}
return disposeDevices.stream() return disposeDevices.stream()
.filter(v -> v.getAreaCode().equals(areaCode)) .filter(v -> v.getAreaCode().equals(areaCode))
.mapToInt(v -> v.getDevCapacity().stream() .mapToInt(v -> v.getDevCapacity().stream()
@ -82,11 +72,6 @@ public class AreaCodeManagerServiceImpl implements AreaCodeManagerService {
@Override @Override
public int getAreaCodeOnlineDeviceNum(Integer areaCode) { public int getAreaCodeOnlineDeviceNum(Integer areaCode) {
List<DisposeDevice> disposeDevices = disposeDeviceManagerService.getAllDisposeDevice(); List<DisposeDevice> disposeDevices = disposeDeviceManagerService.getAllDisposeDevice();
if (disposeDevices == null) {
return 0;
}
return (int) disposeDevices.stream() return (int) disposeDevices.stream()
.filter(v -> v.getAreaCode().equals(areaCode)) .filter(v -> v.getAreaCode().equals(areaCode))
.filter(k -> disposeAbilityRouterService.getAbilityDevice(k.getId()) .filter(k -> disposeAbilityRouterService.getAbilityDevice(k.getId())
@ -104,11 +89,6 @@ public class AreaCodeManagerServiceImpl implements AreaCodeManagerService {
@Override @Override
public DisposeCapacityType[] getAreaCodeSupportCapacity(Integer areaCode) { public DisposeCapacityType[] getAreaCodeSupportCapacity(Integer areaCode) {
List<DisposeDevice> disposeDevices = disposeDeviceManagerService.getAllDisposeDevice(); List<DisposeDevice> disposeDevices = disposeDeviceManagerService.getAllDisposeDevice();
if (disposeDevices == null) {
return null;
}
return disposeDevices.stream() return disposeDevices.stream()
.filter(v -> v.getAreaCode().equals(areaCode)) .filter(v -> v.getAreaCode().equals(areaCode))
.flatMap(k -> k.getDevCapacity().stream() .flatMap(k -> k.getDevCapacity().stream()

View File

@ -120,6 +120,12 @@ public class DisposeDeviceManagerServiceImpl implements DisposeDeviceManagerServ
*/ */
@Override @Override
public List<DisposeDevice> getAllDisposeDevice() { public List<DisposeDevice> getAllDisposeDevice() {
return disposeDeviceManager.getAllNormalDisposeDevices(); List<DisposeDevice> disposeDevices = disposeDeviceManager.getAllNormalDisposeDevices();
if(disposeDevices == null) {
return new ArrayList<>();
} else {
return disposeDevices;
}
} }
} }

View File

@ -63,13 +63,18 @@ public interface ValidGroups {
} }
/** /**
* The interface Task start req valid. * The interface Task start req common valid.
* *
* @author <huangxin@cmhi.chinamoblie.com> * @author <huangxin@cmhi.chinamoblie.com>
*/ */
interface TaskStartReqCommonValid extends ProtocolCommonValid { interface TaskStartReqCommonValid extends ProtocolCommonValid {
} }
/**
* The interface Task start req valid.
*
* @author <huangxin@cmhi.chinamoblie.com>
*/
interface TaskStartReqValid extends TaskStartReqCommonValid { interface TaskStartReqValid extends TaskStartReqCommonValid {
} }
@ -88,4 +93,12 @@ public interface ValidGroups {
*/ */
interface TaskStopReqValid extends ProtocolCommonValid { interface TaskStopReqValid extends ProtocolCommonValid {
} }
/**
* The interface Get dev ver req valid.
*
* @author <huangxin@cmhi.chinamoblie.com>
*/
interface GetDevVerReqValid extends ProtocolCommonValid {
}
} }