Commit 009374ed87202b96f9c088ac07641daf72cb95d6

Authored by Hugiee.Liu
0 parents

fea: create

pom.xml 0 → 100644
  1 +++ a/pom.xml
  1 +<?xml version="1.0" encoding="UTF-8"?>
  2 +<project xmlns="http://maven.apache.org/POM/4.0.0"
  3 + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4 + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  5 + <modelVersion>4.0.0</modelVersion>
  6 +
  7 + <groupId>com.objecteye</groupId>
  8 + <artifactId>viid-collector</artifactId>
  9 + <version>1.0-SNAPSHOT</version>
  10 +
  11 + <properties>
  12 + <maven.compiler.source>8</maven.compiler.source>
  13 + <maven.compiler.target>8</maven.compiler.target>
  14 + <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  15 + <spring-boot.version>2.6.3</spring-boot.version>
  16 + <spring-cloud.version>2021.0.0</spring-cloud.version>
  17 + <spring-cloud-alibaba.version>2021.0.1.0</spring-cloud-alibaba.version>
  18 + </properties>
  19 +
  20 + <dependencyManagement>
  21 + <dependencies>
  22 + <dependency>
  23 + <groupId>org.springframework.boot</groupId>
  24 + <artifactId>spring-boot-dependencies</artifactId>
  25 + <version>${spring-boot.version}</version>
  26 + <type>pom</type>
  27 + <scope>import</scope>
  28 + </dependency>
  29 + <dependency>
  30 + <groupId>org.springframework.cloud</groupId>
  31 + <artifactId>spring-cloud-dependencies</artifactId>
  32 + <version>${spring-cloud.version}</version>
  33 + <scope>import</scope>
  34 + <type>pom</type>
  35 + </dependency>
  36 + <dependency>
  37 + <groupId>com.alibaba.cloud</groupId>
  38 + <artifactId>spring-cloud-alibaba-dependencies</artifactId>
  39 + <version>${spring-cloud-alibaba.version}</version>
  40 + <type>pom</type>
  41 + <scope>import</scope>
  42 + </dependency>
  43 + </dependencies>
  44 + </dependencyManagement>
  45 +
  46 + <dependencies>
  47 + <dependency>
  48 + <groupId>org.springframework.boot</groupId>
  49 + <artifactId>spring-boot-starter-web</artifactId>
  50 + </dependency>
  51 + <dependency>
  52 + <groupId>com.alibaba.cloud</groupId>
  53 + <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
  54 + </dependency>
  55 + <dependency>
  56 + <groupId>com.alibaba.cloud</groupId>
  57 + <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
  58 + </dependency>
  59 + <dependency>
  60 + <groupId>org.projectlombok</groupId>
  61 + <artifactId>lombok</artifactId>
  62 + </dependency>
  63 + <dependency>
  64 + <groupId>org.springframework.boot</groupId>
  65 + <artifactId>spring-boot-configuration-processor</artifactId>
  66 + </dependency>
  67 + <dependency>
  68 + <groupId>org.springframework.boot</groupId>
  69 + <artifactId>spring-boot-starter-data-redis</artifactId>
  70 + </dependency>
  71 + <dependency>
  72 + <groupId>org.apache.commons</groupId>
  73 + <artifactId>commons-pool2</artifactId>
  74 + </dependency>
  75 + </dependencies>
  76 +</project>
0 \ No newline at end of file 77 \ No newline at end of file
src/main/java/com/objecteye/VIIDCollectorApplication.java 0 → 100644
  1 +++ a/src/main/java/com/objecteye/VIIDCollectorApplication.java
  1 +package com.objecteye;
  2 +
  3 +import org.springframework.boot.SpringApplication;
  4 +import org.springframework.boot.autoconfigure.SpringBootApplication;
  5 +
  6 +/**
  7 + * @author: liuhaoyu
  8 + * @date: 2023/6/28
  9 + */
  10 +@SpringBootApplication
  11 +public class VIIDCollectorApplication {
  12 +
  13 + public static void main(String[] args) {
  14 + SpringApplication.run(VIIDCollectorApplication.class, args);
  15 + }
  16 +}
src/main/java/com/objecteye/config/ApplicationConfigurationProperties.java 0 → 100644
  1 +++ a/src/main/java/com/objecteye/config/ApplicationConfigurationProperties.java
  1 +package com.objecteye.config;
  2 +
  3 +import lombok.Data;
  4 +import org.springframework.boot.context.properties.ConfigurationProperties;
  5 +import org.springframework.stereotype.Component;
  6 +
  7 +/**
  8 + * @author: liuhaoyu
  9 + * @date: 2023/6/28
  10 + */
  11 +@Data
  12 +@Component
  13 +@ConfigurationProperties(prefix = "config.application")
  14 +public class ApplicationConfigurationProperties {
  15 +
  16 + private String platformCode;
  17 +}
src/main/java/com/objecteye/config/ObjectMapperConfigure.java 0 → 100644
  1 +++ a/src/main/java/com/objecteye/config/ObjectMapperConfigure.java
  1 +package com.objecteye.config;
  2 +
  3 +import com.fasterxml.jackson.databind.ObjectMapper;
  4 +import lombok.Data;
  5 +import org.springframework.context.annotation.Bean;
  6 +
  7 +/**
  8 + * @author: liuhaoyu
  9 + * @date: 2023/6/28
  10 + */
  11 +@Data
  12 +public class ObjectMapperConfigure {
  13 +
  14 + @Bean
  15 + public ObjectMapper objectMapper() {
  16 + return new ObjectMapper();
  17 + }
  18 +}
src/main/java/com/objecteye/config/RestConfigurationProperties.java 0 → 100644
  1 +++ a/src/main/java/com/objecteye/config/RestConfigurationProperties.java
  1 +package com.objecteye.config;
  2 +
  3 +import lombok.Data;
  4 +import org.springframework.boot.context.properties.ConfigurationProperties;
  5 +import org.springframework.stereotype.Component;
  6 +
  7 +/**
  8 + * @author: liuhaoyu
  9 + * @date: 2023/6/28
  10 + */
  11 +@Data
  12 +@Component
  13 +@ConfigurationProperties(prefix = "config.rest")
  14 +public class RestConfigurationProperties {
  15 + /**
  16 + * 连接超时时间
  17 + */
  18 + private int connectionTimeOut = 5 * 1000;
  19 + /**
  20 + * 等待超时时间
  21 + */
  22 + private int readTimeOut = 30 * 1000;
  23 +}
src/main/java/com/objecteye/config/RestTemplateConfigure.java 0 → 100644
  1 +++ a/src/main/java/com/objecteye/config/RestTemplateConfigure.java
  1 +package com.objecteye.config;
  2 +
  3 +import org.springframework.context.annotation.Bean;
  4 +import org.springframework.context.annotation.Configuration;
  5 +import org.springframework.http.client.SimpleClientHttpRequestFactory;
  6 +import org.springframework.web.client.RestTemplate;
  7 +
  8 +/**
  9 + * @author: liuhaoyu
  10 + * @date: 2023/6/28
  11 + */
  12 +@Configuration
  13 +public class RestTemplateConfigure {
  14 +
  15 + @Bean
  16 + public RestTemplate restTemplate(RestConfigurationProperties restConfigurationProperties) {
  17 + SimpleClientHttpRequestFactory simpleClientHttpRequestFactory = new SimpleClientHttpRequestFactory();
  18 + simpleClientHttpRequestFactory.setConnectTimeout(restConfigurationProperties.getConnectionTimeOut());
  19 + simpleClientHttpRequestFactory.setReadTimeout(restConfigurationProperties.getReadTimeOut());
  20 + return new RestTemplate(simpleClientHttpRequestFactory);
  21 + }
  22 +}
src/main/java/com/objecteye/content/VIIDApi.java 0 → 100644
  1 +++ a/src/main/java/com/objecteye/content/VIIDApi.java
  1 +package com.objecteye.content;
  2 +
  3 +/**
  4 + * @author: liuhaoyu
  5 + * @date: 2023/6/28
  6 + */
  7 +public class VIIDApi {
  8 +
  9 + public static final String SYSTEM_PREFIX = "/VIID/System";
  10 + /**
  11 + * 注册
  12 + */
  13 + public static final String REGISTER = SYSTEM_PREFIX + "/Register";
  14 + /**
  15 + * 注销
  16 + */
  17 + public static final String UNREGISTER = SYSTEM_PREFIX + "/UnRegister";
  18 + /**
  19 + * 保活
  20 + */
  21 + public static final String KEEPALIVE = SYSTEM_PREFIX + "/Keepalive";
  22 +
  23 + private VIIDApi() {
  24 + }
  25 +}
src/main/java/com/objecteye/content/ViidCollectorRedisKey.java 0 → 100644
  1 +++ a/src/main/java/com/objecteye/content/ViidCollectorRedisKey.java
  1 +package com.objecteye.content;
  2 +
  3 +/**
  4 + * @author: liuhaoyu
  5 + * @date: 2023/6/30
  6 + */
  7 +public class ViidCollectorRedisKey {
  8 + /**
  9 + * 设备连接信息缓存
  10 + */
  11 + public static final String DEVICE_CACHE = "vc:dc";
  12 +
  13 + private ViidCollectorRedisKey() {
  14 + }
  15 +}
src/main/java/com/objecteye/content/enums/VIIDConfirmStatusTypeEnum.java 0 → 100644
  1 +++ a/src/main/java/com/objecteye/content/enums/VIIDConfirmStatusTypeEnum.java
  1 +package com.objecteye.content.enums;
  2 +
  3 +import lombok.AllArgsConstructor;
  4 +import lombok.Getter;
  5 +
  6 +/**
  7 + * @author: liuhaoyu
  8 + * @date: 2023/6/28
  9 + */
  10 +@Getter
  11 +@AllArgsConstructor
  12 +public enum VIIDConfirmStatusTypeEnum {
  13 + /**
  14 + * 正常
  15 + */
  16 + OK("OK"),
  17 + /**
  18 + * 其他未知错误
  19 + */
  20 + OTHER_ERROR("OtherError"),
  21 + /**
  22 + * 设备忙
  23 + */
  24 + DEVICE_BUSY("Device Busy"),
  25 + /**
  26 + * 设备错
  27 + */
  28 + DEVICE_ERROR("Device Error"),
  29 + /**
  30 + * 无效操作
  31 + */
  32 + invalid_operation("Invalid Operation"),
  33 + /**
  34 + * XML 格式无效
  35 + */
  36 + INVALID_XML_FORMAT("Invalid XML Format"),
  37 + /**
  38 + * XML 内容无效
  39 + */
  40 + INVALID_XML_CONTENT("Invalid XML Content"),
  41 + /**
  42 + * JSON 格式无效
  43 + */
  44 + INVALID_JSON_FORMAT("Invalid JSON Format"),
  45 + /**
  46 + * JSON 内容无效
  47 + */
  48 + INVALID_JSON_CONTENT("Invalid JSON Content"),
  49 + /**
  50 + * 系统重启中
  51 + */
  52 + REBOOT("Reboot"),
  53 + ;
  54 +
  55 + private final String desc;
  56 +
  57 + public static String getDesc(int idx) {
  58 + for (VIIDConfirmStatusTypeEnum type : values()) {
  59 + if (type.ordinal() == idx) {
  60 + return type.desc;
  61 + }
  62 + }
  63 + return "";
  64 + }
  65 +}
src/main/java/com/objecteye/handle/StartUpAndShutdown.java 0 → 100644
  1 +++ a/src/main/java/com/objecteye/handle/StartUpAndShutdown.java
  1 +package com.objecteye.handle;
  2 +
  3 +import com.alibaba.nacos.common.utils.ExceptionUtil;
  4 +import com.fasterxml.jackson.databind.ObjectMapper;
  5 +import com.objecteye.content.ViidCollectorRedisKey;
  6 +import com.objecteye.handle.viid.VIIDCommonHandle;
  7 +import com.objecteye.pojo.platform.DeviceRequestParams;
  8 +import lombok.RequiredArgsConstructor;
  9 +import org.slf4j.Logger;
  10 +import org.slf4j.LoggerFactory;
  11 +import org.springframework.beans.factory.DisposableBean;
  12 +import org.springframework.boot.ApplicationArguments;
  13 +import org.springframework.boot.ApplicationRunner;
  14 +import org.springframework.data.redis.core.Cursor;
  15 +import org.springframework.data.redis.core.ScanOptions;
  16 +import org.springframework.data.redis.core.StringRedisTemplate;
  17 +import org.springframework.stereotype.Component;
  18 +
  19 +import java.util.Map;
  20 +import java.util.function.Consumer;
  21 +
  22 +/**
  23 + * @author: liuhaoyu
  24 + * @date: 2023/6/30
  25 + */
  26 +@Component
  27 +@RequiredArgsConstructor
  28 +public class StartUpAndShutdown implements DisposableBean, ApplicationRunner {
  29 + private final VIIDCommonHandle viidCommonHandle;
  30 + private final StringRedisTemplate stringRedisTemplate;
  31 + private final ObjectMapper objectMapper;
  32 +
  33 + private final Logger logger = LoggerFactory.getLogger(StartUpAndShutdown.class);
  34 +
  35 + @Override
  36 + public void destroy() throws Exception {
  37 + allCacheHandle(viidCommonHandle::unregister);
  38 + }
  39 +
  40 + @Override
  41 + public void run(ApplicationArguments args) throws Exception {
  42 + allCacheHandle(viidCommonHandle::register);
  43 + }
  44 +
  45 + private void allCacheHandle(Consumer<DeviceRequestParams> func) {
  46 + try (Cursor<Map.Entry<Object, Object>> cursor = stringRedisTemplate.boundHashOps(ViidCollectorRedisKey.DEVICE_CACHE)
  47 + .scan(ScanOptions.scanOptions().build())) {
  48 + while (cursor.hasNext()) {
  49 + Map.Entry<Object, Object> entry = cursor.next();
  50 + try {
  51 + func.accept(objectMapper.readValue(entry.getValue().toString(), DeviceRequestParams.class));
  52 + } catch (Exception e) {
  53 + logger.error(ExceptionUtil.getAllExceptionMsg(e));
  54 + }
  55 + }
  56 + }
  57 + }
  58 +}
src/main/java/com/objecteye/handle/viid/VIIDCommonHandle.java 0 → 100644
  1 +++ a/src/main/java/com/objecteye/handle/viid/VIIDCommonHandle.java
  1 +package com.objecteye.handle.viid;
  2 +
  3 +import com.fasterxml.jackson.core.JsonProcessingException;
  4 +import com.fasterxml.jackson.databind.ObjectMapper;
  5 +import com.objecteye.config.ApplicationConfigurationProperties;
  6 +import com.objecteye.content.VIIDApi;
  7 +import com.objecteye.content.enums.VIIDConfirmStatusTypeEnum;
  8 +import com.objecteye.pojo.platform.DeviceRequestParams;
  9 +import com.objecteye.pojo.viid.common.CommonDeviceIdRequestParams;
  10 +import com.objecteye.pojo.viid.common.ResponseStatusResponse;
  11 +import lombok.RequiredArgsConstructor;
  12 +import lombok.extern.slf4j.Slf4j;
  13 +import org.springframework.http.HttpEntity;
  14 +import org.springframework.http.HttpHeaders;
  15 +import org.springframework.http.ResponseEntity;
  16 +import org.springframework.stereotype.Component;
  17 +import org.springframework.util.StringUtils;
  18 +import org.springframework.web.client.RestTemplate;
  19 +
  20 +/**
  21 + * @author: liuhaoyu
  22 + * @date: 2023/6/28
  23 + */
  24 +@Slf4j
  25 +@Component
  26 +@RequiredArgsConstructor
  27 +public class VIIDCommonHandle {
  28 + private final ObjectMapper objectMapper;
  29 + private final RestTemplate restTemplate;
  30 + private final ApplicationConfigurationProperties applicationConfigurationProperties;
  31 + private static final String CONTENT_TYPE = "application/*+JSON";
  32 + private static final String HTTP = "http://";
  33 +
  34 + /**
  35 + * 注册
  36 + *
  37 + * @param deviceRequestParams 注册目标设备
  38 + * @return 注册结果
  39 + */
  40 + public boolean register(DeviceRequestParams deviceRequestParams) {
  41 + return commonDeviceIdPost(deviceRequestParams, VIIDApi.REGISTER);
  42 + }
  43 +
  44 + /**
  45 + * 保活
  46 + *
  47 + * @param deviceRequestParams 心跳目标设备
  48 + * @return 发送结果
  49 + */
  50 + public boolean keepalive(DeviceRequestParams deviceRequestParams) {
  51 + return commonDeviceIdPost(deviceRequestParams, VIIDApi.KEEPALIVE);
  52 + }
  53 +
  54 + /**
  55 + * 注销
  56 + *
  57 + * @param deviceRequestParams 注销目标设备
  58 + * @return 注销结果
  59 + */
  60 + public boolean unregister(DeviceRequestParams deviceRequestParams) {
  61 + return commonDeviceIdPost(deviceRequestParams, VIIDApi.UNREGISTER);
  62 + }
  63 +
  64 + private boolean commonDeviceIdPost(DeviceRequestParams deviceRequestParams, String uri) {
  65 + return checkResponse(restTemplate.postForEntity(getAddress(deviceRequestParams) + uri,
  66 + buildHttpEntity(buildCommonDeviceIdRequestParam(deviceRequestParams)), String.class));
  67 + }
  68 +
  69 + private CommonDeviceIdRequestParams buildCommonDeviceIdRequestParam(DeviceRequestParams deviceRequestParams) {
  70 + CommonDeviceIdRequestParams commonDeviceIdRequestParams = new CommonDeviceIdRequestParams();
  71 + commonDeviceIdRequestParams.setDeviceId(applicationConfigurationProperties.getPlatformCode());
  72 + return commonDeviceIdRequestParams;
  73 + }
  74 +
  75 + private String getAddress(DeviceRequestParams deviceRequestParams) {
  76 + return HTTP + deviceRequestParams.getHost() + ":" + deviceRequestParams.getPort();
  77 + }
  78 +
  79 + private boolean checkResponse(ResponseEntity<String> responseEntity) {
  80 + String body = responseEntity.getBody();
  81 + if (StringUtils.hasText(body)) {
  82 + try {
  83 + ResponseStatusResponse responseStatusResponse = objectMapper.readValue(body, ResponseStatusResponse.class);
  84 + if (null == responseStatusResponse || null == responseStatusResponse.getStatusCode() ||
  85 + !responseStatusResponse.getStatusCode().equals(VIIDConfirmStatusTypeEnum.OK.ordinal())) {
  86 + if (log.isDebugEnabled()) {
  87 + log.debug("register failed, {}", body);
  88 + }
  89 + return false;
  90 + }
  91 + return true;
  92 + } catch (JsonProcessingException e) {
  93 + if (log.isDebugEnabled()) {
  94 + log.debug("convert failed, {}", body);
  95 + }
  96 + return false;
  97 + }
  98 + }
  99 + return false;
  100 + }
  101 +
  102 + private <T> HttpEntity<T> buildHttpEntity(T t) {
  103 + HttpHeaders httpHeaders = new HttpHeaders();
  104 + httpHeaders.add(HttpHeaders.CONTENT_TYPE, CONTENT_TYPE);
  105 +
  106 + return new HttpEntity<>(t, httpHeaders);
  107 + }
  108 +}
src/main/java/com/objecteye/pojo/platform/DeviceRequestParams.java 0 → 100644
  1 +++ a/src/main/java/com/objecteye/pojo/platform/DeviceRequestParams.java
  1 +package com.objecteye.pojo.platform;
  2 +
  3 +import lombok.Data;
  4 +
  5 +import java.io.Serializable;
  6 +
  7 +/**
  8 + * @author: liuhaoyu
  9 + * @date: 2023/6/28
  10 + */
  11 +@Data
  12 +public class DeviceRequestParams implements Serializable {
  13 + private static final long serialVersionUID = -7801549061937667804L;
  14 +
  15 + private String deviceId;
  16 +
  17 + private String host;
  18 +
  19 + private String port;
  20 +
  21 + private String accessKey;
  22 +
  23 + private String securityKey;
  24 +
  25 +}
src/main/java/com/objecteye/pojo/viid/common/CommonDeviceIdRequestParams.java 0 → 100644
  1 +++ a/src/main/java/com/objecteye/pojo/viid/common/CommonDeviceIdRequestParams.java
  1 +package com.objecteye.pojo.viid.common;
  2 +
  3 +import com.fasterxml.jackson.annotation.JsonProperty;
  4 +import lombok.Data;
  5 +
  6 +import java.io.Serializable;
  7 +
  8 +/**
  9 + * @author: liuhaoyu
  10 + * @date: 2023/6/28
  11 + */
  12 +@Data
  13 +public class CommonDeviceIdRequestParams implements Serializable {
  14 + private static final long serialVersionUID = 1L;
  15 +
  16 + @JsonProperty("DeviceID")
  17 + private String deviceId;
  18 +}
src/main/java/com/objecteye/pojo/viid/common/ResponseStatusResponse.java 0 → 100644
  1 +++ a/src/main/java/com/objecteye/pojo/viid/common/ResponseStatusResponse.java
  1 +package com.objecteye.pojo.viid.common;
  2 +
  3 +import com.fasterxml.jackson.annotation.JsonProperty;
  4 +import lombok.Data;
  5 +
  6 +import java.io.Serializable;
  7 +
  8 +/**
  9 + * @author: liuhaoyu
  10 + * @date: 2023/6/28
  11 + */
  12 +@Data
  13 +public class ResponseStatusResponse implements Serializable {
  14 +
  15 + private static final long serialVersionUID = 1L;
  16 +
  17 + @JsonProperty("RequestURL")
  18 + private String requestUrl;
  19 +
  20 + @JsonProperty("StatusCode")
  21 + private Integer statusCode;
  22 +
  23 + @JsonProperty("StatusString")
  24 + private String statusString;
  25 +
  26 + @JsonProperty("ID")
  27 + private String id;
  28 +
  29 + @JsonProperty("LocalTime")
  30 + private String localTime;
  31 +}
src/main/java/com/objecteye/pojo/viid/subscribe/Subscribe.java 0 → 100644
  1 +++ a/src/main/java/com/objecteye/pojo/viid/subscribe/Subscribe.java
  1 +package com.objecteye.pojo.viid.subscribe;
  2 +
  3 +import com.fasterxml.jackson.annotation.JsonProperty;
  4 +import lombok.Data;
  5 +
  6 +import java.io.Serializable;
  7 +
  8 +/**
  9 + * @author: liuhaoyu
  10 + * @date: 2023/6/28
  11 + */
  12 +@Data
  13 +public class Subscribe implements Serializable {
  14 + private static final long serialVersionUID = 6385076997369719156L;
  15 + /**
  16 + * 订阅标识符
  17 + * 数据共享接口调用时由VIID生成, 取消订阅时必选
  18 + */
  19 + @JsonProperty("SubscribeID")
  20 + private String subscribeId;
  21 + /**
  22 + * 订阅标题
  23 + * <p>
  24 + * 订阅时必填
  25 + */
  26 + @JsonProperty("Title")
  27 + private String title;
  28 + /**
  29 + * 订阅类别
  30 + * <p>
  31 + * 订阅时必填,可多个用英文逗号隔开
  32 + */
  33 + @JsonProperty("SubscribeDetail")
  34 + private String subscribeDetail;
  35 + /**
  36 + * 订阅资源路径
  37 + * <p>
  38 + * 资源路径URI(卡口ID, 设备ID, 采集内容ID, 案件ID, 目标视图库ID, 行政区编号2/4/6位等), 支持单个和批量, 订阅时必填
  39 + */
  40 + @JsonProperty("ResourceURI")
  41 + private String resourceUri;
  42 + /**
  43 + * 申请人
  44 + * <p>
  45 + * 必填
  46 + */
  47 + @JsonProperty("ApplicantName")
  48 + private String applicantName;
  49 + /**
  50 + * 申请单位
  51 + * <p>
  52 + * required
  53 + */
  54 + @JsonProperty("ApplicantOrg")
  55 + private String applicantOrg;
  56 + /**
  57 + * 开始时间
  58 + * <p>
  59 + * required
  60 + */
  61 + @JsonProperty("BeginTime")
  62 + private String beginTime;
  63 + /**
  64 + * 结束时间
  65 + * <p>
  66 + * required
  67 + */
  68 + @JsonProperty("EndTime")
  69 + private String endTime;
  70 + /**
  71 + * 信息接收地址 string(256)
  72 + * <p>
  73 + * e.g. http://ip:port/uri
  74 + */
  75 + @JsonProperty("ReceiveAddr")
  76 + private String receiveAddr;
  77 + /**
  78 + * 信息上报间隔时间
  79 + * <p>
  80 + * required, 单位: s, <=0表示不限制
  81 + */
  82 + @JsonProperty("ReportInterval")
  83 + private Integer reportInterval;
  84 + /**
  85 + * 操作类型
  86 + * <p>
  87 + * 0: 订阅, 1: 取消订阅
  88 + */
  89 + @JsonProperty("OperateType")
  90 + private Integer operateType;
  91 + /**
  92 + * 订阅执行状态
  93 + * <p>
  94 + * 0: 订阅中, 1: 已取消, 2: 订阅到期, 9: 未订阅. 只读字段
  95 + */
  96 + @JsonProperty("SubscribeStatus")
  97 + private Integer subscribeStatus;
  98 +}
src/main/resources/application.yml 0 → 100644
  1 +++ a/src/main/resources/application.yml