Commit 79421e3e by chenjunxiong

build(hikvision-sdk):

海康威视SDK开发
海康威视SDK获取默认用户UUID接口开发
parent b1221191
...@@ -17,6 +17,10 @@ ...@@ -17,6 +17,10 @@
<groupId>org.jeecgframework.boot</groupId> <groupId>org.jeecgframework.boot</groupId>
<artifactId>jeecg-boot-base-core</artifactId> <artifactId>jeecg-boot-base-core</artifactId>
</dependency> </dependency>
<dependency>
<groupId>com.chanjx</groupId>
<artifactId>chanjx-utils</artifactId>
</dependency>
</dependencies> </dependencies>
</project> </project>
\ No newline at end of file
package org.jeecg.pm.hikvision.sdk.client;
import com.chanjx.utils.HttpClientUtils;
import com.chanjx.utils.JsonUtils;
import com.chanjx.utils.entity.http.HttpResponse;
import com.fasterxml.jackson.core.JsonProcessingException;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.codec.digest.DigestUtils;
import org.apache.commons.collections4.MapUtils;
import org.apache.http.client.methods.HttpEntityEnclosingRequestBase;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.client.methods.HttpRequestBase;
import org.apache.http.client.utils.URIBuilder;
import org.apache.http.impl.client.CloseableHttpClient;
import org.jeecg.common.exception.JeecgBootException;
import org.jeecg.pm.hikvision.sdk.parser.HikvisionJsonParser;
import org.jeecg.pm.hikvision.sdk.parser.HikvisionParser;
import org.jeecg.pm.hikvision.sdk.request.HikvisionAbstractRequest;
import org.jeecg.pm.hikvision.sdk.request.HikvisionGetDefaultUserUuidRequest;
import org.jeecg.pm.hikvision.sdk.response.HikvisionAbstractResponse;
import org.jeecg.pm.hikvision.sdk.response.HikvisionGetDefaultUserUuidResponse;
import org.jeecg.pm.hikvision.sdk.result.HikvisionBaseResult;
import java.net.URI;
import java.net.URISyntaxException;
import java.nio.charset.StandardCharsets;
import java.time.Instant;
import java.util.Map;
/**
* @author: JJww
* @Date:2022/3/21
*/
@Slf4j
public class HikvisionBaseClient extends HikvisionAbstractClient {
/**
* 请求的Host头,该字段值必须是:openapi/service
*/
private final static String host = "172.16.16.2";
private final static String protocol = "http";
private final static String joiner = "://";
private final String appKey;
private final String secret;
private final String opUserUuid;
public HikvisionBaseClient(String appKey, String secret) {
this.appKey = appKey;
this.secret = secret;
final HikvisionGetDefaultUserUuidResponse response = this.execute(new HikvisionGetDefaultUserUuidRequest());
if (response.isSuccess) {
opUserUuid = response.getResult().getData();
} else {
throw new JeecgBootException("初始化海康威视SDK异常:无法获取opUserUuid");
}
}
@Override
public <T extends HikvisionAbstractResponse<R>, R extends HikvisionBaseResult> T execute
(HikvisionAbstractRequest<T, R> request) {
try {
final HttpResponse resp = doHttpClient(request);
final T response = request.getResponseClazz().newInstance();
if (resp.getContentType() == null) {
return autoParser(resp, response);
}
final HikvisionParser<R> parser = new HikvisionJsonParser<>(request.getResultClazz());
setResult(resp, response, parser);
return response;
} catch (JsonProcessingException e) {
throw new JeecgBootException("Json转换异常!", e);
} catch (URISyntaxException e) {
throw new JeecgBootException("URI语法异常!", e);
} catch (InstantiationException | IllegalAccessException e) {
throw new JeecgBootException("创建Response异常!", e);
}
}
public <T extends HikvisionAbstractResponse<R>, R extends HikvisionBaseResult> HttpResponse doHttpClient
(HikvisionAbstractRequest<T, R> request) throws URISyntaxException, JsonProcessingException {
request.getModel()
.setAppKey(appKey)
.setTime(Instant.now().toEpochMilli());
if (!(request instanceof HikvisionGetDefaultUserUuidRequest)) {
request.getModel().setOpUserUuid(opUserUuid);
}
final URIBuilder uriBuilder = new URIBuilder(
new URI((protocol + joiner + host + request.getReqPath())));
uriBuilder.setCharset(StandardCharsets.UTF_8);
uriBuilder.addParameter("token", createToken(request));
if (request.getQuery() != null) {
final Map<String, String> queryMap = JsonUtils.obj2MapSS(request.getQuery());
if (MapUtils.isNotEmpty(queryMap)) {
queryMap.forEach(uriBuilder::addParameter);
}
}
final HttpRequestBase req;
switch (request.getHttpMethod()) {
case GET:
req = new HttpGet(uriBuilder.build());
break;
case POST:
req = new HttpPost(uriBuilder.build());
HttpClientUtils.setRowBody(
JsonUtils.obj2JsonNonNull(request.getModel()),
(HttpEntityEnclosingRequestBase) req,
request.getContentType());
break;
default:
throw new JeecgBootException("不支持的请求类型!");
}
final CloseableHttpClient httpClient = HttpClientUtils.getHttpClient();
return HttpClientUtils.send(httpClient, req, request.getHeaders());
}
private <T extends HikvisionAbstractResponse<R>, R extends HikvisionBaseResult> String createToken
(HikvisionAbstractRequest<T, R> request) throws JsonProcessingException {
final String tokenSource =
request.getReqPath()
+ JsonUtils.obj2JsonNonNull(request.getModel())
+ this.secret;
return DigestUtils.md5Hex(tokenSource).toUpperCase();
}
public <T extends HikvisionAbstractResponse<R>, R extends HikvisionBaseResult> T autoParser(HttpResponse resp, T response) {
try {
log.warn("返回头无 ContentType 值,执行自动解析,进行 Json 解析!");
final HikvisionJsonParser<R> jsonParser = new HikvisionJsonParser<>(response.getResultClazz());
setResult(resp, response, jsonParser);
log.info("返回头无 ContentType 值,执行自动解析,Json 解析成功!");
return response;
} catch (JeecgBootException e) {
log.error("返回头无 ContentType 值,自动进行 Json 解析,解析失败:{}", e.getMessage());
}
throw new JeecgBootException("返回头无 ContentType 值,自动解析全部失败!");
}
public <T extends HikvisionAbstractResponse<R>, R extends HikvisionBaseResult> void setResult(HttpResponse resp, T response, HikvisionParser<R> parser) {
final R result = parser.parse(new String(resp.getByteBody()));
response.setSuccess(result.isSuccess());
response.setResult(result);
}
}
package org.jeecg.pm.hikvision.sdk.client; package org.jeecg.pm.hikvision.sdk.client;
import org.jeecg.pm.hikvision.sdk.request.HikvisionRequest; import org.jeecg.pm.hikvision.sdk.request.HikvisionAbstractRequest;
import org.jeecg.pm.hikvision.sdk.request.HikvisionVideoRequest; import org.jeecg.pm.hikvision.sdk.response.HikvisionAbstractResponse;
import org.jeecg.pm.hikvision.sdk.response.HikvisionResponse; import org.jeecg.pm.hikvision.sdk.result.HikvisionBaseResult;
import org.jeecg.pm.hikvision.sdk.response.HikvisionVideoResponse;
/** /**
* @author: JJww * @author: JJww
...@@ -11,8 +10,6 @@ import org.jeecg.pm.hikvision.sdk.response.HikvisionVideoResponse; ...@@ -11,8 +10,6 @@ import org.jeecg.pm.hikvision.sdk.response.HikvisionVideoResponse;
*/ */
public interface HikvisionClient { public interface HikvisionClient {
default <T extends HikvisionVideoResponse<R>, R> T execute(HikvisionVideoRequest<T, R> request) { <T extends HikvisionAbstractResponse<R>, R extends HikvisionBaseResult> T execute(HikvisionAbstractRequest<T, R> request);
return null;
}
} }
package org.jeecg.pm.hikvision.sdk.client;
import com.chanjx.utils.HttpClientUtils;
import com.chanjx.utils.JsonUtils;
import com.chanjx.utils.entity.http.HttpResponse;
import com.fasterxml.jackson.core.JsonProcessingException;
import lombok.SneakyThrows;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.collections4.MapUtils;
import org.apache.http.client.methods.*;
import org.apache.http.client.utils.URIBuilder;
import org.apache.http.impl.client.CloseableHttpClient;
import org.jeecg.pm.hikvision.sdk.request.HikvisionVideoRequest;
import org.jeecg.pm.hikvision.sdk.response.HikvisionVideoResponse;
import java.net.URI;
import java.net.URISyntaxException;
import java.nio.charset.StandardCharsets;
import java.util.HashMap;
import java.util.Map;
/**
* @author: JJww
* @Date:2022/3/21
*/
public class HikvisionVideoClient extends HikvisionAbstractClient {
/**
* 请求的Host头,该字段值必须是:openapi/service
*/
private static final String HEADER_HOST = "openapi/service";
private final String appkey;
private final String secret;
public HikvisionVideoClient(String appkey, String secret) {
this.appkey = appkey;
this.secret = secret;
}
@SneakyThrows
@Override
public <T extends HikvisionVideoResponse<R>, R> T execute(HikvisionVideoRequest<T, R> request) {
final HttpResponse resp = doHttpClient(request);
return super.execute(request);
}
public <T extends HikvisionVideoResponse<R>, R> HttpResponse doHttpClient(HikvisionVideoRequest<T, R> request) throws URISyntaxException, JsonProcessingException {
final CloseableHttpClient httpClient = HttpClientUtils.getHttpClient();
return HttpClientUtils.send(httpClient, new HttpPost(), request.getHeaders());
}
}
package org.jeecg.pm.hikvision.sdk.entity.body;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import java.io.Serializable;
import java.time.LocalDateTime;
import java.time.ZoneOffset;
/**
* @author: JJww
* @Date:2022/3/21
*/
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
public abstract class HikvisionBodyModel implements Serializable {
/**
* appKey
*/
@JsonProperty("appkey")
private String appKey;
/**
* 毫秒时间戳
*/
private Long time = LocalDateTime.now().toEpochSecond(ZoneOffset.UTC);
/**
* 操作用户 UUID 自动填充
*/
private String opUserUuid;
}
package org.jeecg.pm.hikvision.sdk.entity; package org.jeecg.pm.hikvision.sdk.entity.body;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
...@@ -11,8 +11,6 @@ import lombok.experimental.Accessors; ...@@ -11,8 +11,6 @@ import lombok.experimental.Accessors;
@Data @Data
@EqualsAndHashCode(callSuper = true) @EqualsAndHashCode(callSuper = true)
@Accessors(chain = true) @Accessors(chain = true)
public class HikvisionDefaultUserUuidQuery extends HikvisionBaseModel { public class HikvisionGetDefaultUserUuidQuery extends HikvisionBodyModel {
} }
package org.jeecg.pm.hikvision.sdk.entity; package org.jeecg.pm.hikvision.sdk.entity.query;
import com.fasterxml.jackson.annotation.JsonAlias;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors; import lombok.experimental.Accessors;
import java.io.Serializable; import java.io.Serializable;
import java.time.LocalDateTime;
import java.time.ZoneOffset;
/** /**
* @author: JJww * @author: JJww
...@@ -13,9 +16,22 @@ import java.io.Serializable; ...@@ -13,9 +16,22 @@ import java.io.Serializable;
@Data @Data
@EqualsAndHashCode(callSuper = false) @EqualsAndHashCode(callSuper = false)
@Accessors(chain = true) @Accessors(chain = true)
public abstract class HikvisionBaseModel implements Serializable { public abstract class HikvisionQueryModel implements Serializable {
private String appkey; /**
* appKey
*/
@JsonAlias("appkey")
private String appKey;
/**
* 毫秒时间戳
*/
private Long time = LocalDateTime.now().toEpochSecond(ZoneOffset.UTC);
/**
* 认证参数
*/
private String token;
private Long time;
} }
package org.jeecg.pm.hikvision.sdk.parser;
import com.chanjx.utils.JsonUtils;
import com.fasterxml.jackson.core.JsonProcessingException;
import org.jeecg.common.exception.JeecgBootException;
import org.jeecg.pm.hikvision.sdk.result.HikvisionBaseResult;
import java.io.IOException;
import java.util.List;
/**
* <p>
*
* </p>
*
* @author 陈俊雄
* @since 2022/3/22
*/
public class HikvisionJsonParser<R extends HikvisionBaseResult> implements HikvisionParser<R>{
private final Class<R> clazz;
public HikvisionJsonParser(Class<R> clazz) {
this.clazz = clazz;
}
@Override
public R parse(String resp) throws JeecgBootException {
try {
return JsonUtils.json2Obj(resp, clazz);
} catch (JsonProcessingException e) {
throw new JeecgBootException(e);
}
}
@Override
public List<R> parseList(String resp) throws JeecgBootException {
try {
return JsonUtils.json2List(resp, clazz);
} catch (IOException e) {
throw new JeecgBootException(e);
}
}
@Override
public Class<R> getResultClazz() throws JeecgBootException {
return clazz;
}
@Override
public R parseErrorResult(String resp) throws JeecgBootException {
try {
return JsonUtils.json2Obj(resp, clazz);
} catch (JsonProcessingException e) {
throw new JeecgBootException(e);
}
}
}
package org.jeecg.pm.hikvision.sdk.parser;
import org.jeecg.common.exception.JeecgBootException;
import org.jeecg.pm.hikvision.sdk.result.HikvisionBaseResult;
import java.util.List;
/**
* <p>
*
* </p>
*
* @author 陈俊雄
* @since 2022/3/22
*/
public interface HikvisionParser<R extends HikvisionBaseResult> {
/**
* 把响应字符串解释成相应的领域对象。
*
* @param resp 响应字符串
* @return 领域对象
*/
R parse(String resp) throws JeecgBootException;
/**
*
* @param resp
* @return
* @throws JeecgBootException
*/
List<R> parseList(String resp) throws JeecgBootException;
/**
* 获取响应类类型。
*/
Class<R> getResultClazz() throws JeecgBootException;
R parseErrorResult(String resp) throws JeecgBootException;
}
package org.jeecg.pm.hikvision.sdk.request; package org.jeecg.pm.hikvision.sdk.request;
import com.chanjx.utils.HttpMethod; import org.jeecg.pm.hikvision.sdk.entity.body.HikvisionBodyModel;
import org.jeecg.pm.hikvision.sdk.entity.HikvisionBaseModel; import org.jeecg.pm.hikvision.sdk.entity.query.HikvisionQueryModel;
import org.jeecg.pm.hikvision.sdk.response.HikvisionResponse; import org.jeecg.pm.hikvision.sdk.response.HikvisionResponse;
import org.jeecg.pm.hikvision.sdk.result.HikvisionBaseResult;
import java.util.Map;
/** /**
* @author: JJww * @author: JJww
* @Date:2022/3/21 * @Date:2022/3/21
*/ */
public abstract class HikvisionVideoRequest<T extends HikvisionResponse<R>,R>implements HikvisionRequest<T,R> { public abstract class HikvisionAbstractRequest<T extends HikvisionResponse<R>, R extends HikvisionBaseResult> implements HikvisionRequest<T, R> {
@Override
public Map<String, String> getHeaders() {
return null;
}
@Override @Override
public HikvisionBaseModel getModel() { public HikvisionBodyModel getModel() {
return null; return null;
} }
@Override @Override
public void serModel(HikvisionBaseModel hikvisionBaseModel) { public void setModel(HikvisionBodyModel model) {
} }
@Override @Override
public HttpMethod getHttpMethod() { public HikvisionQueryModel getQuery() {
return null; return null;
} }
@Override @Override
public void setToken(String token) { public void setQuery(HikvisionQueryModel query) {
} }
} }
...@@ -4,12 +4,11 @@ import com.chanjx.utils.HttpMethod; ...@@ -4,12 +4,11 @@ import com.chanjx.utils.HttpMethod;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors; import lombok.experimental.Accessors;
import org.jeecg.pm.hikvision.sdk.Result.HikvisionDefaultUserUuidResult; import org.apache.http.entity.ContentType;
import org.jeecg.pm.hikvision.sdk.entity.HikvisionBaseModel; import org.jeecg.pm.hikvision.sdk.entity.body.HikvisionBodyModel;
import org.jeecg.pm.hikvision.sdk.entity.HikvisionDefaultUserUuidQuery; import org.jeecg.pm.hikvision.sdk.entity.body.HikvisionGetDefaultUserUuidQuery;
import org.jeecg.pm.hikvision.sdk.response.HikvisionDefaultUserUuidResponse; import org.jeecg.pm.hikvision.sdk.response.HikvisionGetDefaultUserUuidResponse;
import org.jeecg.pm.hikvision.sdk.result.HikvisionGetDefaultUserUuidBaseResult;
import java.util.Map;
/** /**
* @author: JJww * @author: JJww
...@@ -18,37 +17,37 @@ import java.util.Map; ...@@ -18,37 +17,37 @@ import java.util.Map;
@Data @Data
@EqualsAndHashCode(callSuper = true) @EqualsAndHashCode(callSuper = true)
@Accessors(chain = true) @Accessors(chain = true)
public class HikvisionDefaultUserUuidRequest extends HikvisionVideoRequest<HikvisionDefaultUserUuidResponse, HikvisionDefaultUserUuidResult> { public class HikvisionGetDefaultUserUuidRequest extends HikvisionAbstractRequest<HikvisionGetDefaultUserUuidResponse, HikvisionGetDefaultUserUuidBaseResult> {
private HikvisionDefaultUserUuidQuery hikvisionDefaultUserUuidQuery; private final HikvisionGetDefaultUserUuidQuery hikvisionGetDefaultUserUuidQuery = new HikvisionGetDefaultUserUuidQuery();
@Override @Override
public HikvisionBaseModel getModel() { public ContentType getContentType() {
return super.getModel(); return ContentType.APPLICATION_JSON;
} }
@Override @Override
public void serModel(HikvisionBaseModel hikvisionBaseModel) { public Class<HikvisionGetDefaultUserUuidResponse> getResponseClazz() {
super.serModel(hikvisionBaseModel); return HikvisionGetDefaultUserUuidResponse.class;
} }
@Override @Override
public HttpMethod getHttpMethod() { public Class<HikvisionGetDefaultUserUuidBaseResult> getResultClazz() {
return HttpMethod.POST; return HikvisionGetDefaultUserUuidBaseResult.class;
} }
@Override @Override
public void setToken(String token) { public HttpMethod getHttpMethod() {
super.setToken(token); return HttpMethod.POST;
} }
@Override @Override
public String getReqUri() { public String getReqPath() {
return "http://172.16.16.2/openapi/service/base/user/getDefaultUserUuid?token=720F760A88C19696935E200F9F2334DC"; return "/openapi/service/base/user/getDefaultUserUuid";
} }
@Override @Override
public Map<String, String> getHeaders() { public HikvisionBodyModel getModel() {
return null; return hikvisionGetDefaultUserUuidQuery;
} }
} }
package org.jeecg.pm.hikvision.sdk.request; package org.jeecg.pm.hikvision.sdk.request;
import com.chanjx.utils.HttpMethod; import com.chanjx.utils.HttpMethod;
import org.jeecg.pm.hikvision.sdk.entity.HikvisionBaseModel; import org.apache.http.entity.ContentType;
import org.jeecg.pm.hikvision.sdk.entity.body.HikvisionBodyModel;
import org.jeecg.pm.hikvision.sdk.entity.query.HikvisionQueryModel;
import org.jeecg.pm.hikvision.sdk.response.HikvisionResponse; import org.jeecg.pm.hikvision.sdk.response.HikvisionResponse;
import org.jeecg.pm.hikvision.sdk.result.HikvisionBaseResult;
import java.util.Map; import java.util.Map;
...@@ -10,44 +13,72 @@ import java.util.Map; ...@@ -10,44 +13,72 @@ import java.util.Map;
* @author: JJww * @author: JJww
* @Date:2022/3/21 * @Date:2022/3/21
*/ */
public interface HikvisionRequest<T extends HikvisionResponse<R>, R> { public interface HikvisionRequest<T extends HikvisionResponse<R>, R extends HikvisionBaseResult> {
/** /**
* 获取业务对象 * 获取请求体类型请求头
* *
* @return model * @return 请求头
*/ */
HikvisionBaseModel getModel(); ContentType getContentType();
/**
* 得到当前API的响应结果类型
*
* @return 响应类型
*/
Class<T> getResponseClazz();
/** /**
* 设置业务实体 * 获取返回业务对象的响应结果类型
* *
* @param hikvisionBaseModel * @return 响应类型
*/ */
void serModel(HikvisionBaseModel hikvisionBaseModel); Class<R> getResultClazz();
/**
* 获取业务对象
*
* @return model
*/
HikvisionBodyModel getModel();
/** /**
* 获取请求接口方法:GET POST ... * 设置业务实体,如需使用此方法
* *
* @return method * @param model WangsuModel
*/ */
HttpMethod getHttpMethod(); void setModel(HikvisionBodyModel model);
/**
* 获取 URI 查询参数
*
* @return URI 查询参数
*/
HikvisionQueryModel getQuery();
/** /**
* 设置 URI 查询参数 * 设置 URI 查询参数
* *
* @param query query * @param query query
*/ */
void setToken(String token); void setQuery(HikvisionQueryModel query);
/**
* 获取请求接口方法:GET POST ...
*
* @return method
*/
HttpMethod getHttpMethod();
/** /**
* 获取请求uri,可能包含一个或多个 * 号占位符,需要使用 {@link #getUriReplaces()} 进行替换 * 获取请求路径
* *
* @return uri * @return path
*/ */
String getReqUri(); String getReqPath();
/** /**
* 获取设置的请求头参数(有的请求参数在请求头里) * 获取设置的请求头参数(有的请求参数在请求头里)
......
package org.jeecg.pm.hikvision.sdk.response;
import org.jeecg.pm.hikvision.sdk.result.HikvisionBaseResult;
import java.util.List;
/**
* @author: JJww
* @Date:2022/3/21
*/
public abstract class HikvisionAbstractResponse<R extends HikvisionBaseResult> implements HikvisionResponse<R> {
/**
* 返回的结果对象
*/
private final Class<R> resultClazz;
public Boolean isSuccess;
/**
* 返回结果是否为多个(数组)
* 默认false,通过构造参数修改
*/
private boolean multiple = false;
/**
* 异常代码
* 目前仅请求失败有值
*/
private String code;
/**
* 返回消息,成功为success
*/
private String msg;
/**
* 获取返回对象
*/
private R result;
/**
* 获取返回结果数组
*/
private List<R> listResult;
/**
* 获取网宿错误的返回信息
*/
private HikvisionBaseResult errorResult;
public HikvisionAbstractResponse(Class<R> resultClazz) {
this.resultClazz = resultClazz;
}
public HikvisionAbstractResponse(Class<R> resultClazz, boolean multiple) {
this.resultClazz = resultClazz;
this.multiple = multiple;
}
@Override
public Class<R> getResultClazz() {
return resultClazz;
}
@Override
public String getCode() {
return code;
}
@Override
public void setCode(String code) {
this.code = code;
}
@Override
public String getMsg() {
return this.msg;
}
@Override
public void setMsg(String msg) {
this.msg = msg;
}
@Override
public R getResult() {
return result;
}
@Override
public void setResult(R result) {
this.result = result;
}
@Override
public List<R> getListResult() {
return this.listResult;
}
@Override
public void setListResult(List<R> listResult) {
this.listResult = listResult;
}
@Override
public boolean isSuccess() {
return false;
}
@Override
public void setSuccess(boolean success) {
this.isSuccess = success;
}
@Override
public boolean isMultiple() {
return multiple;
}
}
package org.jeecg.pm.hikvision.sdk.response; package org.jeecg.pm.hikvision.sdk.response;
import org.jeecg.pm.hikvision.sdk.Result.HikvisionDefaultUserUuidResult; import org.jeecg.pm.hikvision.sdk.result.HikvisionGetDefaultUserUuidBaseResult;
/** /**
* @author: JJww * @author: JJww
* @Date:2022/3/22 * @Date:2022/3/22
*/ */
public class HikvisionDefaultUserUuidResponse extends HikvisionVideoResponse<HikvisionDefaultUserUuidResult> { public class HikvisionGetDefaultUserUuidResponse extends HikvisionAbstractResponse<HikvisionGetDefaultUserUuidBaseResult> {
public HikvisionGetDefaultUserUuidResponse() {
super(HikvisionGetDefaultUserUuidBaseResult.class, false);
}
} }
package org.jeecg.pm.hikvision.sdk.response; package org.jeecg.pm.hikvision.sdk.response;
import org.jeecg.pm.hikvision.sdk.result.HikvisionBaseResult;
import java.io.Serializable; import java.io.Serializable;
import java.util.List; import java.util.List;
...@@ -7,7 +9,7 @@ import java.util.List; ...@@ -7,7 +9,7 @@ import java.util.List;
* @author: JJww * @author: JJww
* @Date:2022/3/21 * @Date:2022/3/21
*/ */
public interface HikvisionResponse<R> extends Serializable { public interface HikvisionResponse<R extends HikvisionBaseResult> extends Serializable {
Class<R> getResultClazz(); Class<R> getResultClazz();
...@@ -19,15 +21,17 @@ public interface HikvisionResponse<R> extends Serializable { ...@@ -19,15 +21,17 @@ public interface HikvisionResponse<R> extends Serializable {
void setMsg(String msg); void setMsg(String msg);
R getBody(); R getResult();
void setBody(R body); void setResult(R result);
List<R> getListBody(); List<R> getListResult();
void setListBody(List<R> listBody); void setListResult(List<R> listResult);
void setSuccess(Boolean success); void setSuccess(boolean success);
boolean isSuccess(); boolean isSuccess();
boolean isMultiple();
} }
package org.jeecg.pm.hikvision.sdk.response;
import java.util.List;
import java.util.Map;
/**
* @author: JJww
* @Date:2022/3/21
*/
public abstract class HikvisionVideoResponse<R> implements HikvisionResponse<R> {
@Override
public Class<R> getResultClazz() {
return null;
}
@Override
public String getCode() {
return null;
}
@Override
public void setCode(String code) {
}
@Override
public String getMsg() {
return null;
}
@Override
public void setMsg(String msg) {
}
@Override
public R getBody() {
return null;
}
@Override
public void setBody(R body) {
}
@Override
public List<R> getListBody() {
return null;
}
@Override
public void setListBody(List<R> listBody) {
}
@Override
public void setSuccess(Boolean success) {
}
@Override
public boolean isSuccess() {
return false;
}
}
package org.jeecg.pm.hikvision.sdk.Result; package org.jeecg.pm.hikvision.sdk.result;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors; import lombok.experimental.Accessors;
import java.io.Serializable; import java.io.Serializable;
import java.util.Map;
/** /**
* @author: JJww * @author: JJww
...@@ -14,8 +13,7 @@ import java.util.Map; ...@@ -14,8 +13,7 @@ import java.util.Map;
@Data @Data
@Accessors(chain = true) @Accessors(chain = true)
@EqualsAndHashCode(callSuper = false) @EqualsAndHashCode(callSuper = false)
public class HikvisionVideoResult implements Serializable { public class HikvisionBaseResult implements Serializable {
/** /**
* 0 表示成功 * 0 表示成功
...@@ -26,7 +24,7 @@ public class HikvisionVideoResult implements Serializable { ...@@ -26,7 +24,7 @@ public class HikvisionVideoResult implements Serializable {
private String errorMessage; private String errorMessage;
//当 data 有返回值时,各字段属性参 public boolean isSuccess() {
private Map data; return SUCCESS == errorCode;
}
} }
package org.jeecg.pm.hikvision.sdk.Result; package org.jeecg.pm.hikvision.sdk.result;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
...@@ -11,5 +11,6 @@ import lombok.experimental.Accessors; ...@@ -11,5 +11,6 @@ import lombok.experimental.Accessors;
@Data @Data
@EqualsAndHashCode(callSuper = true) @EqualsAndHashCode(callSuper = true)
@Accessors(chain = true) @Accessors(chain = true)
public class HikvisionDefaultUserUuidResult extends HikvisionVideoResult{ public class HikvisionGetDefaultUserUuidBaseResult extends HikvisionBaseResult {
private String data;
} }
import org.jeecg.pm.hikvision.sdk.client.HikvisionBaseClient;
import org.junit.jupiter.api.Test;
/**
* <p>
*
* </p>
*
* @author 陈俊雄
* @since 2022/3/22
*/
public class HikvisionSdkTest {
@Test
void getDefaultUserUuidTest() {
final HikvisionBaseClient client = new HikvisionBaseClient(null, null);
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment