Commit 92064ef2 by zhangjw

海康SDK

parent 3ecdf92f
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>jeecg-boot-parent</artifactId>
<groupId>org.jeecgframework.boot</groupId>
<version>3.1.0</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>jeecg-boot-module-hikvision</artifactId>
<dependencies>
<dependency>
<groupId>org.jeecgframework.boot</groupId>
<artifactId>jeecg-boot-base-core</artifactId>
</dependency>
</dependencies>
</project>
\ No newline at end of file
package org.jeecg.pm.hikvision.sdk.Result;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
/**
* @author: JJww
* @Date:2022/3/22
*/
@Data
@EqualsAndHashCode(callSuper = true)
@Accessors(chain = true)
public class HikvisionDefaultUserUuidResult extends HikvisionVideoResult{
}
package org.jeecg.pm.hikvision.sdk.Result;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import java.io.Serializable;
import java.util.Map;
/**
* @author: JJww
* @Date:2022/3/21
*/
@Data
@Accessors(chain = true)
@EqualsAndHashCode(callSuper = false)
public class HikvisionVideoResult implements Serializable {
/**
* 0 表示成功
*/
public final static int SUCCESS = 0;
private Integer errorCode;
private String errorMessage;
//当 data 有返回值时,各字段属性参
private Map data;
}
package org.jeecg.pm.hikvision.sdk.client;
/**
* @author: JJww
* @Date:2022/3/21
*/
public abstract class HikvisionAbstractClient implements HikvisionClient {
}
package org.jeecg.pm.hikvision.sdk.client;
import org.jeecg.pm.hikvision.sdk.request.HikvisionRequest;
import org.jeecg.pm.hikvision.sdk.request.HikvisionVideoRequest;
import org.jeecg.pm.hikvision.sdk.response.HikvisionResponse;
import org.jeecg.pm.hikvision.sdk.response.HikvisionVideoResponse;
/**
* @author: JJww
* @Date:2022/3/21
*/
public interface HikvisionClient {
default <T extends HikvisionVideoResponse<R>, R> T execute(HikvisionVideoRequest<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;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import java.io.Serializable;
/**
* @author: JJww
* @Date:2022/3/21
*/
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
public abstract class HikvisionBaseModel implements Serializable {
private String appkey;
private Long time;
}
package org.jeecg.pm.hikvision.sdk.entity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
/**
* @author: JJww
* @Date:2022/3/21
*/
@Data
@EqualsAndHashCode(callSuper = true)
@Accessors(chain = true)
public class HikvisionDefaultUserUuidQuery extends HikvisionBaseModel {
}
package org.jeecg.pm.hikvision.sdk.request;
import com.chanjx.utils.HttpMethod;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import org.jeecg.pm.hikvision.sdk.Result.HikvisionDefaultUserUuidResult;
import org.jeecg.pm.hikvision.sdk.entity.HikvisionBaseModel;
import org.jeecg.pm.hikvision.sdk.entity.HikvisionDefaultUserUuidQuery;
import org.jeecg.pm.hikvision.sdk.response.HikvisionDefaultUserUuidResponse;
import java.util.Map;
/**
* @author: JJww
* @Date:2022/3/21
*/
@Data
@EqualsAndHashCode(callSuper = true)
@Accessors(chain = true)
public class HikvisionDefaultUserUuidRequest extends HikvisionVideoRequest<HikvisionDefaultUserUuidResponse, HikvisionDefaultUserUuidResult> {
private HikvisionDefaultUserUuidQuery hikvisionDefaultUserUuidQuery;
@Override
public HikvisionBaseModel getModel() {
return super.getModel();
}
@Override
public void serModel(HikvisionBaseModel hikvisionBaseModel) {
super.serModel(hikvisionBaseModel);
}
@Override
public HttpMethod getHttpMethod() {
return HttpMethod.POST;
}
@Override
public void setToken(String token) {
super.setToken(token);
}
@Override
public String getReqUri() {
return "http://172.16.16.2/openapi/service/base/user/getDefaultUserUuid?token=720F760A88C19696935E200F9F2334DC";
}
@Override
public Map<String, String> getHeaders() {
return null;
}
}
package org.jeecg.pm.hikvision.sdk.request;
/**
* @author: JJww
* @Date:2022/3/21
*/
public class HikvisionEncodersRequest {
}
package org.jeecg.pm.hikvision.sdk.request;
import com.chanjx.utils.HttpMethod;
import org.jeecg.pm.hikvision.sdk.entity.HikvisionBaseModel;
import org.jeecg.pm.hikvision.sdk.response.HikvisionResponse;
import java.util.Map;
/**
* @author: JJww
* @Date:2022/3/21
*/
public interface HikvisionRequest<T extends HikvisionResponse<R>, R> {
/**
* 获取业务对象
*
* @return model
*/
HikvisionBaseModel getModel();
/**
* 设置业务实体
*
* @param hikvisionBaseModel
*/
void serModel(HikvisionBaseModel hikvisionBaseModel);
/**
* 获取请求接口方法:GET POST ...
*
* @return method
*/
HttpMethod getHttpMethod();
/**
* 设置 URI 查询参数
*
* @param query query
*/
void setToken(String token);
/**
* 获取请求uri,可能包含一个或多个 * 号占位符,需要使用 {@link #getUriReplaces()} 进行替换
*
* @return uri
*/
String getReqUri();
/**
* 获取设置的请求头参数(有的请求参数在请求头里)
*
* @return headers
*/
Map<String, String> getHeaders();
}
package org.jeecg.pm.hikvision.sdk.request;
import com.chanjx.utils.HttpMethod;
import org.jeecg.pm.hikvision.sdk.entity.HikvisionBaseModel;
import org.jeecg.pm.hikvision.sdk.response.HikvisionResponse;
/**
* @author: JJww
* @Date:2022/3/21
*/
public abstract class HikvisionVideoRequest<T extends HikvisionResponse<R>,R>implements HikvisionRequest<T,R> {
@Override
public HikvisionBaseModel getModel() {
return null;
}
@Override
public void serModel(HikvisionBaseModel hikvisionBaseModel) {
}
@Override
public HttpMethod getHttpMethod() {
return null;
}
@Override
public void setToken(String token) {
}
}
package org.jeecg.pm.hikvision.sdk.response;
import org.jeecg.pm.hikvision.sdk.Result.HikvisionDefaultUserUuidResult;
/**
* @author: JJww
* @Date:2022/3/22
*/
public class HikvisionDefaultUserUuidResponse extends HikvisionVideoResponse<HikvisionDefaultUserUuidResult> {
}
package org.jeecg.pm.hikvision.sdk.response;
import java.io.Serializable;
import java.util.List;
/**
* @author: JJww
* @Date:2022/3/21
*/
public interface HikvisionResponse<R> extends Serializable {
Class<R> getResultClazz();
String getCode();
void setCode(String code);
String getMsg();
void setMsg(String msg);
R getBody();
void setBody(R body);
List<R> getListBody();
void setListBody(List<R> listBody);
void setSuccess(Boolean success);
boolean isSuccess();
}
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;
}
}
......@@ -56,6 +56,7 @@
<module>jeecg-boot-base</module>
<module>jeecg-boot-module-demo</module>
<module>jeecg-boot-module-system</module>
<module>jeecg-boot-module-hikvision</module>
<!--需要微服务,请打开
<module>jeecg-boot-starter</module>
<module>jeecg-cloud-module</module>-->
......
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