diff --git a/pom.xml b/pom.xml
index 636a830..40b31fe 100644
--- a/pom.xml
+++ b/pom.xml
@@ -42,6 +42,8 @@
1.0.13.15
+
+
diff --git a/start/pom.xml b/start/pom.xml
index 1b303b1..647c784 100644
--- a/start/pom.xml
+++ b/start/pom.xml
@@ -30,6 +30,11 @@
com.jjb.saas
jjb-saas-framework-web
+
+ com.dahuatech.icc
+ java-sdk-oauth
+ 1.0.13.15
+
diff --git a/start/src/main/resources/bootstrap.yml b/start/src/main/resources/bootstrap.yml
index c0bc004..62d008f 100644
--- a/start/src/main/resources/bootstrap.yml
+++ b/start/src/main/resources/bootstrap.yml
@@ -1,8 +1,8 @@
spring:
config:
import:
-# - classpath:nacos.yml
- - classpath:prodnacos.yml
+ - classpath:nacos.yml
+# - classpath:prodnacos.yml
- classpath:sdk.yml
- classpath:swagger.yml
# - classpath:ds.yml
diff --git a/start/src/main/resources/sdk.yml b/start/src/main/resources/sdk.yml
index 44e0b10..ffd7e29 100644
--- a/start/src/main/resources/sdk.yml
+++ b/start/src/main/resources/sdk.yml
@@ -86,10 +86,10 @@ message:
# 大华平台配置
dahua:
oauth:
- host: 192.168.1.100
- client-id: your-client-id
- client-secret: your-secret
- username: admin
- password: 123456
+ host: 123.183.159.35
+ client-id: 123.183.159.35
+ client-secret: 4edfdcd2-67e6-41db-a1ae-b98d47a70266
+ username: system
+ password: zcloud88888
http: false
- port: 443
\ No newline at end of file
+ port: 4443
\ No newline at end of file
diff --git a/web-adapter/src/main/java/com/zcloud/primeport/web/DaHuaController.java b/web-adapter/src/main/java/com/zcloud/primeport/web/DaHuaController.java
new file mode 100644
index 0000000..5fd3e24
--- /dev/null
+++ b/web-adapter/src/main/java/com/zcloud/primeport/web/DaHuaController.java
@@ -0,0 +1,29 @@
+package com.zcloud.primeport.web;
+
+import com.alibaba.cola.dto.SingleResponse;
+import com.zcloud.primeport.api.DaHuaServiceI;
+import com.zcloud.primeport.domain.model.DaHuaPersonSyncCmd;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+@Api(tags = "大华平台对接")
+@RequestMapping("/${application.gateway}/dahua")
+@RestController
+public class DaHuaController {
+
+ @Autowired(required = false)
+ private DaHuaServiceI daHuaService;
+
+ @ApiOperation("同步人员到大华平台-新增")
+ @PostMapping("/person/sync")
+ public SingleResponse syncPerson(@Validated @RequestBody DaHuaPersonSyncCmd cmd) {
+
+ if (daHuaService == null) {
+ throw new RuntimeException("大华服务未配置");
+ }
+ return daHuaService.syncPerson(cmd);
+ }
+}
\ No newline at end of file
diff --git a/web-app/pom.xml b/web-app/pom.xml
index 6834fef..4a5bcce 100644
--- a/web-app/pom.xml
+++ b/web-app/pom.xml
@@ -21,6 +21,10 @@
com.zcloud.primeport
web-infrastructure
+
+ com.zcloud.primeport
+ web-domain
+
org.springframework.boot
spring-boot-starter-test
diff --git a/web-app/src/main/java/com/zcloud/primeport/service/DaHuaServiceImpl.java b/web-app/src/main/java/com/zcloud/primeport/service/DaHuaServiceImpl.java
new file mode 100644
index 0000000..48c6855
--- /dev/null
+++ b/web-app/src/main/java/com/zcloud/primeport/service/DaHuaServiceImpl.java
@@ -0,0 +1,24 @@
+package com.zcloud.primeport.service;
+
+import com.alibaba.cola.dto.SingleResponse;
+import com.zcloud.primeport.api.DaHuaServiceI;
+import com.zcloud.primeport.domain.gateway.DaHuaGateway;
+import com.zcloud.primeport.domain.model.DaHuaPersonSyncCmd;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+@Service
+public class DaHuaServiceImpl implements DaHuaServiceI {
+
+ @Autowired(required = false)
+ private DaHuaGateway daHuaGateway;
+
+ @Override
+ public SingleResponse syncPerson(DaHuaPersonSyncCmd cmd) {
+ if (daHuaGateway == null) {
+ throw new RuntimeException("大华服务未配置");
+ }
+ Boolean result = daHuaGateway.syncPerson(cmd);
+ return SingleResponse.of(result);
+ }
+}
\ No newline at end of file
diff --git a/web-client/src/main/java/com/zcloud/primeport/api/DaHuaServiceI.java b/web-client/src/main/java/com/zcloud/primeport/api/DaHuaServiceI.java
new file mode 100644
index 0000000..bfdf3c1
--- /dev/null
+++ b/web-client/src/main/java/com/zcloud/primeport/api/DaHuaServiceI.java
@@ -0,0 +1,9 @@
+package com.zcloud.primeport.api;
+
+import com.alibaba.cola.dto.SingleResponse;
+import com.zcloud.primeport.domain.model.DaHuaPersonSyncCmd;
+
+public interface DaHuaServiceI {
+
+ SingleResponse syncPerson(DaHuaPersonSyncCmd cmd);
+}
\ No newline at end of file
diff --git a/web-client/src/main/java/com/zcloud/primeport/config/ThreadPoolAsyncConfig.java b/web-client/src/main/java/com/zcloud/primeport/config/ThreadPoolAsyncConfig.java
index 90177da..c9b16f2 100644
--- a/web-client/src/main/java/com/zcloud/primeport/config/ThreadPoolAsyncConfig.java
+++ b/web-client/src/main/java/com/zcloud/primeport/config/ThreadPoolAsyncConfig.java
@@ -23,27 +23,27 @@ public class ThreadPoolAsyncConfig {
public static String namePrefix;
public static Integer keepAliveSeconds;
- @Value("${archives.async.pool.maxPoolSize}")
+ @Value("${archives.async.pool.maxPoolSize:10}")
public void setMaxPoolSize(Integer maxPoolSizeProperties) {
maxPoolSize = maxPoolSizeProperties;
}
- @Value("${archives.async.pool.corePoolSize}")
+ @Value("${archives.async.pool.corePoolSize:5}")
public void setCorePoolSize(Integer corePoolSizeProperties) {
corePoolSize = corePoolSizeProperties;
}
- @Value("${archives.async.pool.queueCapacity}")
+ @Value("${archives.async.pool.queueCapacity:100}")
public void setQueueCapacity(Integer queueCapacityProperties) {
queueCapacity = queueCapacityProperties;
}
- @Value("${archives.async.pool.namePrefix}")
+ @Value("${archives.async.pool.namePrefix:async-}")
public void setNamePrefix(String namePrefixProperties) {
namePrefix = namePrefixProperties;
}
- @Value("${archives.async.pool.keepAliveSeconds}")
+ @Value("${archives.async.pool.keepAliveSeconds:60}")
public void setKeepAliveSeconds(Integer keepAliveSecondsProperties) {
keepAliveSeconds = keepAliveSecondsProperties;
}
diff --git a/web-domain/src/main/java/com/zcloud/primeport/domain/config/DaHuaOauthProperties.java b/web-domain/src/main/java/com/zcloud/primeport/domain/config/DaHuaOauthProperties.java
deleted file mode 100644
index e2de941..0000000
--- a/web-domain/src/main/java/com/zcloud/primeport/domain/config/DaHuaOauthProperties.java
+++ /dev/null
@@ -1,26 +0,0 @@
-package com.zcloud.primeport.domain.config;
-
-import lombok.Data;
-import lombok.Getter;
-import lombok.Setter;
-import org.springframework.boot.context.properties.ConfigurationProperties;
-import org.springframework.stereotype.Component;
-
-/**
- * @Description:
- * @Date: 2026/7/2
- * @User: tianxinlei
- */
-@Component
-@Getter
-@Setter
-@ConfigurationProperties(prefix = "dahua.oauth")
-public class DaHuaOauthProperties {
- private String host;
- private String clientId;
- private String clientSecret;
- private String username;
- private String password;
- private boolean http;
- private String port;
-}
diff --git a/web-domain/src/main/java/com/zcloud/primeport/domain/config/DaHuaSdkConfig.java b/web-domain/src/main/java/com/zcloud/primeport/domain/config/DaHuaSdkConfig.java
deleted file mode 100644
index 568f3f0..0000000
--- a/web-domain/src/main/java/com/zcloud/primeport/domain/config/DaHuaSdkConfig.java
+++ /dev/null
@@ -1,34 +0,0 @@
-package com.zcloud.primeport.domain.config;
-
-import com.dahuatech.icc.oauth.model.v202010.OauthConfigUserPwdInfo;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-
-/**
- * @Description:
- * @Date: 2026/7/2
- * @User: tianxinlei
- */
-@Configuration
-public class DaHuaSdkConfig {
-
- private final DaHuaOauthProperties dahuaOauthProperties;
-
- // 构造注入配置属性
- public DaHuaSdkConfig(DaHuaOauthProperties dahuaOauthProperties) {
- this.dahuaOauthProperties = dahuaOauthProperties;
- }
-
- @Bean
- public OauthConfigUserPwdInfo daHuaOauthConfig() {
- return new OauthConfigUserPwdInfo(
- dahuaOauthProperties.getHost(),
- dahuaOauthProperties.getClientId(),
- dahuaOauthProperties.getClientSecret(),
- dahuaOauthProperties.getUsername(),
- dahuaOauthProperties.getPassword(),
- dahuaOauthProperties.isHttp(),
- dahuaOauthProperties.getPort()
- );
- }
-}
diff --git a/web-domain/src/main/java/com/zcloud/primeport/domain/gateway/DaHuaGateway.java b/web-domain/src/main/java/com/zcloud/primeport/domain/gateway/DaHuaGateway.java
new file mode 100644
index 0000000..3edbc4c
--- /dev/null
+++ b/web-domain/src/main/java/com/zcloud/primeport/domain/gateway/DaHuaGateway.java
@@ -0,0 +1,8 @@
+package com.zcloud.primeport.domain.gateway;
+
+import com.zcloud.primeport.domain.model.DaHuaPersonSyncCmd;
+
+public interface DaHuaGateway {
+
+ Boolean syncPerson(DaHuaPersonSyncCmd cmd);
+}
\ No newline at end of file
diff --git a/web-domain/src/main/java/com/zcloud/primeport/domain/model/DaHuaPersonSyncCmd.java b/web-domain/src/main/java/com/zcloud/primeport/domain/model/DaHuaPersonSyncCmd.java
new file mode 100644
index 0000000..6e0bc31
--- /dev/null
+++ b/web-domain/src/main/java/com/zcloud/primeport/domain/model/DaHuaPersonSyncCmd.java
@@ -0,0 +1,77 @@
+package com.zcloud.primeport.domain.model;
+
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class DaHuaPersonSyncCmd {
+
+ private String service;
+
+ private Long id;
+
+ private String name;
+
+ private String code;
+
+ private Integer paperType;
+
+ private String paperNumber;
+
+ private String paperAddress;
+
+ private Long departmentId;
+
+ private Integer personType;
+
+ private Integer availableTimes;
+
+ private String phone;
+
+ private String email;
+
+ private Integer age;
+
+ private String birthday;
+
+ private Integer sex;
+
+ private String country;
+
+ private Integer nation;
+
+ private String nationName;
+
+ private String selfCode;
+
+ private String ownerCode;
+
+ private String validStartTime;
+
+ private String validEndTime;
+
+ private String password;
+
+ private String passwordKey;
+
+ private List departmentList;
+
+ private List personBiosignatures;
+
+ private Object fieldExt;
+
+ @Data
+ public static class DepartmentItem {
+ private Long departmentId;
+ private Long departmentType;
+ }
+
+ @Data
+ public static class PersonBiosignature {
+ private Integer type;
+ private Integer index;
+ private String path;
+ private String base64Data;
+ }
+}
\ No newline at end of file
diff --git a/web-infrastructure/src/main/java/com/zcloud/primeport/dahua/api/DaHuaPersonApi.java b/web-infrastructure/src/main/java/com/zcloud/primeport/dahua/api/DaHuaPersonApi.java
new file mode 100644
index 0000000..6d715d9
--- /dev/null
+++ b/web-infrastructure/src/main/java/com/zcloud/primeport/dahua/api/DaHuaPersonApi.java
@@ -0,0 +1,28 @@
+package com.zcloud.primeport.dahua.api;
+
+import com.dahuatech.icc.exception.ClientException;
+import com.dahuatech.icc.oauth.model.v202010.GeneralResponse;
+import com.zcloud.primeport.dahua.client.DaHuaApiClient;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
+import org.springframework.stereotype.Component;
+
+import javax.annotation.Resource;
+import java.util.HashMap;
+import java.util.Map;
+
+@Component
+@ConditionalOnBean(DaHuaApiClient.class)
+public class DaHuaPersonApi {
+
+ @Resource
+ private DaHuaApiClient daHuaApiClient;
+
+ private static final String PERSON_ADD_URL = "/evo-apigw/evo-brm/1.2.0/person/subsystem/add";
+
+ public GeneralResponse addPerson(Map body) throws ClientException {
+ String token = daHuaApiClient.getToken();
+ Map headers = new HashMap<>();
+ headers.put("Authorization", "bearer " + token);
+ return daHuaApiClient.postJson(PERSON_ADD_URL, body, headers);
+ }
+}
\ No newline at end of file
diff --git a/web-infrastructure/src/main/java/com/zcloud/primeport/dahua/client/DaHuaApiClient.java b/web-infrastructure/src/main/java/com/zcloud/primeport/dahua/client/DaHuaApiClient.java
new file mode 100644
index 0000000..f548ca4
--- /dev/null
+++ b/web-infrastructure/src/main/java/com/zcloud/primeport/dahua/client/DaHuaApiClient.java
@@ -0,0 +1,79 @@
+package com.zcloud.primeport.dahua.client;
+
+import com.dahuatech.hutool.http.Method;
+import com.dahuatech.icc.exception.ClientException;
+import com.dahuatech.icc.oauth.model.v202010.GeneralResponse;
+import com.dahuatech.icc.oauth.model.v202010.OauthConfigUserPwdInfo;
+import com.dahuatech.icc.oauth.utils.HttpUtils;
+
+import java.util.HashMap;
+import java.util.Map;
+
+public class DaHuaApiClient {
+
+ private final OauthConfigUserPwdInfo oauthConfig;
+
+ public DaHuaApiClient(OauthConfigUserPwdInfo oauthConfig) {
+ this.oauthConfig = oauthConfig;
+ oauthConfig.getHttpConfigInfo().setReadTimeout(-1L);
+ oauthConfig.getHttpConfigInfo().setConnectionTimeout(-1L);
+ }
+
+ public DaHuaApiClient(String host, String clientId, String clientSecret, String username, String password, boolean isHttp, String port) {
+ this.oauthConfig = new OauthConfigUserPwdInfo(host, clientId, clientSecret, username, password, isHttp, port);
+ oauthConfig.getHttpConfigInfo().setReadTimeout(-1L);
+ oauthConfig.getHttpConfigInfo().setConnectionTimeout(-1L);
+ }
+
+ public GeneralResponse postJson(String path, Map body) throws ClientException {
+ return HttpUtils.executeJson(path, body, null, Method.POST, oauthConfig, GeneralResponse.class);
+ }
+
+ public GeneralResponse postJson(String path, Map body, Map headers) throws ClientException {
+ return HttpUtils.executeJson(path, body, headers, Method.POST, oauthConfig, GeneralResponse.class);
+ }
+
+ public GeneralResponse getForm(String path) throws ClientException {
+ return HttpUtils.executeForm(path, null, null, Method.GET, oauthConfig, GeneralResponse.class);
+ }
+
+ public GeneralResponse getForm(String path, Map params) throws ClientException {
+ return HttpUtils.executeForm(path, params, null, Method.GET, oauthConfig, GeneralResponse.class);
+ }
+
+ public GeneralResponse getForm(String path, Map params, Map headers) throws ClientException {
+ return HttpUtils.executeForm(path, params, headers, Method.GET, oauthConfig, GeneralResponse.class);
+ }
+
+ public GeneralResponse putJson(String path, Map body) throws ClientException {
+ return HttpUtils.executeJson(path, body, null, Method.PUT, oauthConfig, GeneralResponse.class);
+ }
+
+ public GeneralResponse putJson(String path, Map body, Map headers) throws ClientException {
+ return HttpUtils.executeJson(path, body, headers, Method.PUT, oauthConfig, GeneralResponse.class);
+ }
+
+ public GeneralResponse deleteForm(String path) throws ClientException {
+ return HttpUtils.executeForm(path, null, null, Method.DELETE, oauthConfig, GeneralResponse.class);
+ }
+
+ public GeneralResponse deleteForm(String path, Map params) throws ClientException {
+ return HttpUtils.executeForm(path, params, null, Method.DELETE, oauthConfig, GeneralResponse.class);
+ }
+
+ public String getToken() throws ClientException {
+ return HttpUtils.getToken(oauthConfig).getAccess_token();
+ }
+
+ public void setReadTimeout(Long timeout) {
+ oauthConfig.getHttpConfigInfo().setReadTimeout(timeout);
+ }
+
+ public void setConnectionTimeout(Long timeout) {
+ oauthConfig.getHttpConfigInfo().setConnectionTimeout(timeout);
+ }
+
+ public OauthConfigUserPwdInfo getOauthConfig() {
+ return oauthConfig;
+ }
+}
\ No newline at end of file
diff --git a/web-infrastructure/src/main/java/com/zcloud/primeport/dahua/config/DaHuaAutoConfig.java b/web-infrastructure/src/main/java/com/zcloud/primeport/dahua/config/DaHuaAutoConfig.java
new file mode 100644
index 0000000..f88d93d
--- /dev/null
+++ b/web-infrastructure/src/main/java/com/zcloud/primeport/dahua/config/DaHuaAutoConfig.java
@@ -0,0 +1,36 @@
+package com.zcloud.primeport.dahua.config;
+
+import com.dahuatech.icc.oauth.model.v202010.OauthConfigUserPwdInfo;
+import com.zcloud.primeport.dahua.client.DaHuaApiClient;
+import org.springframework.beans.factory.annotation.Qualifier;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
+import org.springframework.boot.context.properties.EnableConfigurationProperties;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+@Configuration
+@EnableConfigurationProperties(DaHuaProperties.class)
+@ConditionalOnProperty(prefix = "dahua.oauth", name = "host")
+public class DaHuaAutoConfig {
+
+ @Bean("dahuaApiOauthConfig")
+ public OauthConfigUserPwdInfo dahuaApiOauthConfig(DaHuaProperties properties) {
+ OauthConfigUserPwdInfo config = new OauthConfigUserPwdInfo(
+ properties.getHost(),
+ properties.getClientId(),
+ properties.getClientSecret(),
+ properties.getUsername(),
+ properties.getPassword(),
+ properties.isHttp(),
+ properties.getPort()
+ );
+ config.getHttpConfigInfo().setReadTimeout(properties.getReadTimeout());
+ config.getHttpConfigInfo().setConnectionTimeout(properties.getConnectionTimeout());
+ return config;
+ }
+
+ @Bean
+ public DaHuaApiClient daHuaApiClient(@Qualifier("dahuaApiOauthConfig") OauthConfigUserPwdInfo oauthConfig) {
+ return new DaHuaApiClient(oauthConfig);
+ }
+}
\ No newline at end of file
diff --git a/web-infrastructure/src/main/java/com/zcloud/primeport/dahua/config/DaHuaProperties.java b/web-infrastructure/src/main/java/com/zcloud/primeport/dahua/config/DaHuaProperties.java
new file mode 100644
index 0000000..baa1415
--- /dev/null
+++ b/web-infrastructure/src/main/java/com/zcloud/primeport/dahua/config/DaHuaProperties.java
@@ -0,0 +1,19 @@
+package com.zcloud.primeport.dahua.config;
+
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+
+@Data
+@ConfigurationProperties(prefix = "dahua.oauth")
+public class DaHuaProperties {
+
+ private String host;
+ private String clientId;
+ private String clientSecret;
+ private String username;
+ private String password;
+ private boolean http = false;
+ private String port = "4443";
+ private Long readTimeout = -1L;
+ private Long connectionTimeout = -1L;
+}
\ No newline at end of file
diff --git a/web-infrastructure/src/main/java/com/zcloud/primeport/gatewayimpl/DaHuaGatewayImpl.java b/web-infrastructure/src/main/java/com/zcloud/primeport/gatewayimpl/DaHuaGatewayImpl.java
new file mode 100644
index 0000000..0884549
--- /dev/null
+++ b/web-infrastructure/src/main/java/com/zcloud/primeport/gatewayimpl/DaHuaGatewayImpl.java
@@ -0,0 +1,51 @@
+package com.zcloud.primeport.gatewayimpl;
+
+import com.dahuatech.icc.exception.ClientException;
+import com.dahuatech.icc.oauth.model.v202010.GeneralResponse;
+import com.zcloud.primeport.dahua.api.DaHuaPersonApi;
+import com.zcloud.primeport.domain.gateway.DaHuaGateway;
+import com.zcloud.primeport.domain.model.DaHuaPersonSyncCmd;
+import lombok.AllArgsConstructor;
+import org.springframework.beans.BeanUtils;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
+import org.springframework.stereotype.Service;
+
+import java.lang.reflect.Field;
+import java.util.HashMap;
+import java.util.Map;
+
+@Service
+@AllArgsConstructor
+@ConditionalOnBean(DaHuaPersonApi.class)
+public class DaHuaGatewayImpl implements DaHuaGateway {
+
+ private final DaHuaPersonApi daHuaPersonApi;
+
+ @Override
+ public Boolean syncPerson(DaHuaPersonSyncCmd cmd) {
+ Map body = convertToMap(cmd);
+ try {
+ GeneralResponse response = daHuaPersonApi.addPerson(body);
+ return response != null && "0".equals(response.getCode());
+ } catch (ClientException e) {
+ throw new RuntimeException("同步人员到大华平台失败", e);
+ }
+ }
+
+ private Map convertToMap(DaHuaPersonSyncCmd cmd) {
+ Map map = new HashMap<>();
+ try {
+ Field[] fields = cmd.getClass().getDeclaredFields();
+ for (Field field : fields) {
+ field.setAccessible(true);
+ Object value = field.get(cmd);
+ if (value != null) {
+ map.put(field.getName(), value);
+ }
+ }
+ } catch (Exception e) {
+ throw new RuntimeException("转换请求参数失败", e);
+ }
+ return map;
+ }
+}
\ No newline at end of file
diff --git a/web-infrastructure/src/main/java/com/zcloud/primeport/plan/mjDevice/DaHuaSdkUtil.java b/web-infrastructure/src/main/java/com/zcloud/primeport/plan/mjDevice/DaHuaSdkUtil.java
index 2bc2040..17c5694 100644
--- a/web-infrastructure/src/main/java/com/zcloud/primeport/plan/mjDevice/DaHuaSdkUtil.java
+++ b/web-infrastructure/src/main/java/com/zcloud/primeport/plan/mjDevice/DaHuaSdkUtil.java
@@ -1,6 +1,8 @@
package com.zcloud.primeport.plan.mjDevice;
import com.dahuatech.icc.oauth.model.v202010.OauthConfigUserPwdInfo;
+import org.springframework.beans.factory.annotation.Qualifier;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
import org.springframework.stereotype.Component;
/**
@@ -9,11 +11,12 @@ import org.springframework.stereotype.Component;
* @User: tianxinlei
*/
@Component
+@ConditionalOnBean(name = "dahuaApiOauthConfig")
public class DaHuaSdkUtil {
private final OauthConfigUserPwdInfo oauthConfig;
- public DaHuaSdkUtil(OauthConfigUserPwdInfo oauthConfig) {
+ public DaHuaSdkUtil(@Qualifier("dahuaApiOauthConfig") OauthConfigUserPwdInfo oauthConfig) {
this.oauthConfig = oauthConfig;
}
@@ -33,4 +36,4 @@ public class DaHuaSdkUtil {
}
// 其他设备查询、回放、抓拍等业务方法
-}
+}
\ No newline at end of file
diff --git a/web-infrastructure/src/main/java/com/zcloud/primeport/plan/mjDevice/OauthUtil.java b/web-infrastructure/src/main/java/com/zcloud/primeport/plan/mjDevice/OauthUtil.java
index 32903f6..d94a849 100644
--- a/web-infrastructure/src/main/java/com/zcloud/primeport/plan/mjDevice/OauthUtil.java
+++ b/web-infrastructure/src/main/java/com/zcloud/primeport/plan/mjDevice/OauthUtil.java
@@ -35,26 +35,26 @@ public class OauthUtil {
// private final String publicKeyUrl = "https://192.168.42.194/evo-apigw/evo-oauth/1.0.0/oauth/public-key";
- @Value("${icc.clientId}")
+ @Value("${icc.clientId:}")
private String clientId;
- @Value("${icc.publicKeyUrl}")
+ @Value("${icc.publicKeyUrl:}")
private String publicKeyUrl;
- @Value("${icc.clientSecret}")
+ @Value("${icc.clientSecret:}")
private String clientSecret;
- @Value("${icc.username}")
+ @Value("${icc.username:}")
private String username;
- @Value("${icc.password}")
+ @Value("${icc.password:}")
private String password;
- @Value("${icc.url}")
+ @Value("${icc.url:}")
private String iccUrl;
- @Value("${icc.request.getGenerateIdUrl}")
+ @Value("${icc.request.getGenerateIdUrl:}")
private String iccGenerateIdUrl;
- @Value("${icc.request.getGenerateIdListUrl}")
+ @Value("${icc.request.getGenerateIdListUrl:}")
private String iccGenerateIdListUrl;
- @Value("${icc.request.imgInspectUrl}")
+ @Value("${icc.request.imgInspectUrl:}")
private String iccImgInspectUrl;
- @Value("${icc.request.getDepartmentIdUrl}")
+ @Value("${icc.request.getDepartmentIdUrl:}")
private String iccDepartmentIdUrl;
/**
diff --git a/web-infrastructure/src/main/java/com/zcloud/primeport/plan/mjDevice/OneLevelCarUtil.java b/web-infrastructure/src/main/java/com/zcloud/primeport/plan/mjDevice/OneLevelCarUtil.java
index e641bb2..7daed94 100644
--- a/web-infrastructure/src/main/java/com/zcloud/primeport/plan/mjDevice/OneLevelCarUtil.java
+++ b/web-infrastructure/src/main/java/com/zcloud/primeport/plan/mjDevice/OneLevelCarUtil.java
@@ -18,9 +18,9 @@ import javax.annotation.Resource;
*/
@Component
public class OneLevelCarUtil {
- @Value("${kmmj.dockflag}")
+ @Value("${kmmj.dockflag:0}")
private Integer dockFlag;
- @Value("${oneLevelCar.prefix}")
+ @Value("${oneLevelCar.prefix:}")
private String prefix;
@Resource
diff --git a/web-infrastructure/src/main/resources/META-INF/spring.factories b/web-infrastructure/src/main/resources/META-INF/spring.factories
new file mode 100644
index 0000000..a4d9fa5
--- /dev/null
+++ b/web-infrastructure/src/main/resources/META-INF/spring.factories
@@ -0,0 +1,2 @@
+org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
+com.zcloud.primeport.dahua.config.DaHuaAutoConfig
\ No newline at end of file
diff --git a/web-infrastructure/src/test/java/com/zcloud/primeport/dahua/client/DaHuaApiClientTest.java b/web-infrastructure/src/test/java/com/zcloud/primeport/dahua/client/DaHuaApiClientTest.java
new file mode 100644
index 0000000..d803935
--- /dev/null
+++ b/web-infrastructure/src/test/java/com/zcloud/primeport/dahua/client/DaHuaApiClientTest.java
@@ -0,0 +1,74 @@
+package com.zcloud.primeport.dahua.client;
+
+import com.dahuatech.icc.exception.ClientException;
+
+import java.util.HashMap;
+import java.util.Map;
+
+public class DaHuaApiClientTest {
+
+ public static void main(String[] args) {
+ System.out.println("========== DaHuaApiClient 测试 ==========");
+
+ String host = "123.183.159.35";
+ String clientId = "123.183.159.35";
+ String clientSecret = "4edfdcd2-67e6-41db-a1ae-b98d47a70266";
+ String username = "system";
+ String password = "zcloud88888";
+ boolean isHttp = false;
+ String port = "4443";
+
+ // host: 123.183.159.35
+ // client-id: 123.183.159.35
+ // client-secret: 4edfdcd2-67e6-41db-a1ae-b98d47a70266
+ // username: system
+ // password: zcloud88888
+ // http: false
+ // port: 4443
+
+
+ if (isPlaceholder(host) || isPlaceholder(clientId) || isPlaceholder(clientSecret)) {
+ System.err.println("错误: 请先修改测试类中的配置参数为真实的大华平台凭证!");
+ System.err.println("配置位置: DaHuaApiClientTest.java 第13-19行");
+ System.err.println("需要填写: host, clientId, clientSecret, username, password");
+ return;
+ }
+
+ try {
+ DaHuaApiClient client = new DaHuaApiClient(host, clientId, clientSecret, username, password, isHttp, port);
+
+ System.out.println("1. 测试获取 Token...");
+ String token = client.getToken();
+ System.out.println(" Token 获取成功!");
+ System.out.println( token);
+
+ System.out.println("\n2. 测试 POST JSON 请求...");
+ Map body = new HashMap<>();
+ body.put("testKey", "testValue");
+ try {
+ client.postJson("/evo-apigw/evo-brm/1.2.0/device/subsystem/page", body);
+ System.out.println(" POST 请求调用成功!");
+ } catch (ClientException e) {
+ System.out.println(" POST 请求返回错误(预期,因为接口不存在): " + e.getMessage());
+ }
+
+ System.out.println("\n3. 测试 GET 请求...");
+ try {
+ client.getForm("/evo-apigw/evo-brm/1.0.0/device/1");
+ System.out.println(" GET 请求调用成功!");
+ } catch (ClientException e) {
+ System.out.println(" GET 请求返回错误(预期,因为接口不存在): " + e.getMessage());
+ }
+
+ System.out.println("\n========== 测试完成 ==========");
+
+ } catch (ClientException e) {
+ System.err.println("测试失败: " + e.getMessage());
+ e.printStackTrace();
+ }
+ }
+
+ private static boolean isPlaceholder(String value) {
+ return value == null || value.contains("your-") || value.contains("平台") || value.contains("凭证") || value.contains("用户名") || value.contains("密码");
+ }
+}
\ No newline at end of file
diff --git a/web-infrastructure/src/test/java/com/zcloud/primeport/dahua/config/DaHuaAutoConfigTest.java b/web-infrastructure/src/test/java/com/zcloud/primeport/dahua/config/DaHuaAutoConfigTest.java
new file mode 100644
index 0000000..2615286
--- /dev/null
+++ b/web-infrastructure/src/test/java/com/zcloud/primeport/dahua/config/DaHuaAutoConfigTest.java
@@ -0,0 +1,56 @@
+package com.zcloud.primeport.dahua.config;
+
+import com.zcloud.primeport.dahua.client.DaHuaApiClient;
+import org.junit.jupiter.api.Test;
+import org.springframework.boot.context.properties.EnableConfigurationProperties;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.context.annotation.Import;
+
+import javax.annotation.Resource;
+
+import static org.assertj.core.api.Assertions.assertThat;
+
+@SpringBootTest(classes = DaHuaAutoConfigTest.TestConfig.class)
+public class DaHuaAutoConfigTest {
+
+ @Resource
+ private DaHuaApiClient daHuaApiClient;
+
+ @Resource
+ private DaHuaProperties daHuaProperties;
+
+ @Test
+ public void testDaHuaApiClientBeanExists() {
+ assertThat(daHuaApiClient).isNotNull();
+ System.out.println("✅ DaHuaApiClient Bean 注入成功");
+ }
+
+ @Test
+ public void testDaHuaPropertiesBinding() {
+ assertThat(daHuaProperties.getHost()).isEqualTo("123.183.159.35");
+ assertThat(daHuaProperties.getClientId()).isEqualTo("123.183.159.35");
+ assertThat(daHuaProperties.getClientSecret()).isEqualTo("4edfdcd2-67e6-41db-a1ae-b98d47a70266");
+ assertThat(daHuaProperties.getUsername()).isEqualTo("system");
+ assertThat(daHuaProperties.getPassword()).isEqualTo("zcloud88888");
+ assertThat(daHuaProperties.isHttp()).isFalse();
+ assertThat(daHuaProperties.getPort()).isEqualTo("4443");
+ System.out.println("✅ DaHuaProperties 配置绑定成功");
+ System.out.println(" host: " + daHuaProperties.getHost());
+ System.out.println(" clientId: " + daHuaProperties.getClientId());
+ System.out.println(" username: " + daHuaProperties.getUsername());
+ }
+
+ @Test
+ public void testOauthConfigInitialized() {
+ assertThat(daHuaApiClient.getOauthConfig()).isNotNull();
+ // OauthConfigUserPwdInfo 是SDK内部类,不暴露getHost,配置绑定已通过DaHuaProperties验证
+ System.out.println("✅ OauthConfigUserPwdInfo 初始化成功");
+ System.out.println(" host: " + daHuaProperties.getHost());
+ System.out.println(" username: " + daHuaProperties.getUsername());
+ }
+
+ @EnableConfigurationProperties(DaHuaProperties.class)
+ @Import(DaHuaAutoConfig.class)
+ public static class TestConfig {
+ }
+}
\ No newline at end of file
diff --git a/web-infrastructure/src/test/resources/application.yml b/web-infrastructure/src/test/resources/application.yml
new file mode 100644
index 0000000..24e47ee
--- /dev/null
+++ b/web-infrastructure/src/test/resources/application.yml
@@ -0,0 +1,9 @@
+dahua:
+ host: 123.183.159.35
+ client-id: 123.183.159.35
+ client-secret: 4edfdcd2-67e6-41db-a1ae-b98d47a70266
+ username: system
+ password: zcloud88888
+ http: false
+ port: 4443
+