diff --git a/README.md b/README.md
index 430796e..8dbc9a5 100644
--- a/README.md
+++ b/README.md
@@ -9,3 +9,7 @@
#### 其他
>* [git地址](http://192.168.0.203:8080/gitbucket)
>* [本地免登地址](http://localhost:8083/route/mockToken)
+
+AView 对接问题
+1.用户设备关联关系
+ 对应返回 device_list是否为设备国标号
\ No newline at end of file
diff --git a/README.md b/README.md
index 430796e..8dbc9a5 100644
--- a/README.md
+++ b/README.md
@@ -9,3 +9,7 @@
#### 其他
>* [git地址](http://192.168.0.203:8080/gitbucket)
>* [本地免登地址](http://localhost:8083/route/mockToken)
+
+AView 对接问题
+1.用户设备关联关系
+ 对应返回 device_list是否为设备国标号
\ No newline at end of file
diff --git a/casic-device-sync/casic-device-aview/pom.xml b/casic-device-sync/casic-device-aview/pom.xml
index 0a3c5fa..94fb9e5 100644
--- a/casic-device-sync/casic-device-aview/pom.xml
+++ b/casic-device-sync/casic-device-aview/pom.xml
@@ -33,6 +33,21 @@
${boot.version}
provided
+
+ com.casic
+ casic-http
+ ${core.version}
+
+
+ com.casic
+ casic-admin-group
+ ${admin.version}
+
+
+ com.casic
+ casic-server
+ ${pro.version}
+
diff --git a/README.md b/README.md
index 430796e..8dbc9a5 100644
--- a/README.md
+++ b/README.md
@@ -9,3 +9,7 @@
#### 其他
>* [git地址](http://192.168.0.203:8080/gitbucket)
>* [本地免登地址](http://localhost:8083/route/mockToken)
+
+AView 对接问题
+1.用户设备关联关系
+ 对应返回 device_list是否为设备国标号
\ No newline at end of file
diff --git a/casic-device-sync/casic-device-aview/pom.xml b/casic-device-sync/casic-device-aview/pom.xml
index 0a3c5fa..94fb9e5 100644
--- a/casic-device-sync/casic-device-aview/pom.xml
+++ b/casic-device-sync/casic-device-aview/pom.xml
@@ -33,6 +33,21 @@
${boot.version}
provided
+
+ com.casic
+ casic-http
+ ${core.version}
+
+
+ com.casic
+ casic-admin-group
+ ${admin.version}
+
+
+ com.casic
+ casic-server
+ ${pro.version}
+
diff --git a/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/controller/AvRouteController.java b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/controller/AvRouteController.java
new file mode 100644
index 0000000..195cba2
--- /dev/null
+++ b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/controller/AvRouteController.java
@@ -0,0 +1,45 @@
+package com.casic.missiles.modular.device.controller;
+
+import com.casic.missiles.model.response.dto.ResponseDataDTO;
+import com.casic.missiles.modular.device.dto.stream.StreamRequestDTO;
+import com.casic.missiles.modular.device.service.IAvSyncService;
+import io.swagger.annotations.Api;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+
+@Api(tags = "AV平台代理接口")
+@RestController
+@RequestMapping("/route")
+public class AvRouteController {
+ @Resource
+ private IAvSyncService avSyncService;
+
+ @PostMapping("/open/v1/api/streams")
+ public Object streams(@RequestBody StreamRequestDTO requestDTO) {
+ Object object = avSyncService.getStreams(requestDTO);
+ if (object == null) {
+ ResponseDataDTO respDTO = ResponseDataDTO.error("流读取失败,请稍后重试!");
+ respDTO.setMessage("流读取失败,请稍后重试!");
+ return respDTO;
+ }
+ return ResponseDataDTO.success(avSyncService.getStreams(requestDTO));
+ }
+
+ @DeleteMapping("/open/v1/api/streams/{id}")
+ public Object stopStreams(@PathVariable("id") String id) {
+ Object object = avSyncService.stopStreams(id);
+ return ResponseDataDTO.success(object);
+ }
+
+ @PostMapping("/open/v1/api/streams/{id}/heart")
+ public Object heart(@PathVariable("id") String id) {
+ Object object = avSyncService.heart(id);
+ if (object == null) {
+ ResponseDataDTO respDTO = ResponseDataDTO.error("流心跳失败,请稍后重试!");
+ respDTO.setMessage("流心跳失败,请稍后重试!");
+ return respDTO;
+ }
+ return ResponseDataDTO.success(object);
+ }
+}
\ No newline at end of file
diff --git a/README.md b/README.md
index 430796e..8dbc9a5 100644
--- a/README.md
+++ b/README.md
@@ -9,3 +9,7 @@
#### 其他
>* [git地址](http://192.168.0.203:8080/gitbucket)
>* [本地免登地址](http://localhost:8083/route/mockToken)
+
+AView 对接问题
+1.用户设备关联关系
+ 对应返回 device_list是否为设备国标号
\ No newline at end of file
diff --git a/casic-device-sync/casic-device-aview/pom.xml b/casic-device-sync/casic-device-aview/pom.xml
index 0a3c5fa..94fb9e5 100644
--- a/casic-device-sync/casic-device-aview/pom.xml
+++ b/casic-device-sync/casic-device-aview/pom.xml
@@ -33,6 +33,21 @@
${boot.version}
provided
+
+ com.casic
+ casic-http
+ ${core.version}
+
+
+ com.casic
+ casic-admin-group
+ ${admin.version}
+
+
+ com.casic
+ casic-server
+ ${pro.version}
+
diff --git a/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/controller/AvRouteController.java b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/controller/AvRouteController.java
new file mode 100644
index 0000000..195cba2
--- /dev/null
+++ b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/controller/AvRouteController.java
@@ -0,0 +1,45 @@
+package com.casic.missiles.modular.device.controller;
+
+import com.casic.missiles.model.response.dto.ResponseDataDTO;
+import com.casic.missiles.modular.device.dto.stream.StreamRequestDTO;
+import com.casic.missiles.modular.device.service.IAvSyncService;
+import io.swagger.annotations.Api;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+
+@Api(tags = "AV平台代理接口")
+@RestController
+@RequestMapping("/route")
+public class AvRouteController {
+ @Resource
+ private IAvSyncService avSyncService;
+
+ @PostMapping("/open/v1/api/streams")
+ public Object streams(@RequestBody StreamRequestDTO requestDTO) {
+ Object object = avSyncService.getStreams(requestDTO);
+ if (object == null) {
+ ResponseDataDTO respDTO = ResponseDataDTO.error("流读取失败,请稍后重试!");
+ respDTO.setMessage("流读取失败,请稍后重试!");
+ return respDTO;
+ }
+ return ResponseDataDTO.success(avSyncService.getStreams(requestDTO));
+ }
+
+ @DeleteMapping("/open/v1/api/streams/{id}")
+ public Object stopStreams(@PathVariable("id") String id) {
+ Object object = avSyncService.stopStreams(id);
+ return ResponseDataDTO.success(object);
+ }
+
+ @PostMapping("/open/v1/api/streams/{id}/heart")
+ public Object heart(@PathVariable("id") String id) {
+ Object object = avSyncService.heart(id);
+ if (object == null) {
+ ResponseDataDTO respDTO = ResponseDataDTO.error("流心跳失败,请稍后重试!");
+ respDTO.setMessage("流心跳失败,请稍后重试!");
+ return respDTO;
+ }
+ return ResponseDataDTO.success(object);
+ }
+}
\ No newline at end of file
diff --git a/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/AvDeviceDTO.java b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/AvDeviceDTO.java
new file mode 100644
index 0000000..97bde9f
--- /dev/null
+++ b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/AvDeviceDTO.java
@@ -0,0 +1,49 @@
+package com.casic.missiles.modular.device.dto;
+
+import com.alibaba.fastjson.annotation.JSONField;
+import lombok.Data;
+
+/**
+ * 艾薇设备对象DTO
+ */
+@Data
+public class AvDeviceDTO {
+ // 设备ID
+ private Long id;
+
+ // 设备名称
+ private String name;
+
+ // 设备唯一国标序列号
+ private String sn;
+
+ // 设备类型
+ private Integer type;
+
+ // 设备版本号
+ private String version;
+
+ // 安全等级
+ @JSONField(name = "secure_level")
+ private String secureLevel;
+
+ // 设备状态
+ private Integer status;
+
+ // 云台类型
+ private Integer ptzType;
+
+ // 朝向
+ private Integer orientation;
+
+ // 创建时间
+ @JSONField(name = "gmt_created")
+ private String gmtCreated;
+
+ // 修改时间
+ @JSONField(name = "gmt_modified")
+ private String gmtModified;
+
+ // 数据状态
+ private Integer state;
+}
diff --git a/README.md b/README.md
index 430796e..8dbc9a5 100644
--- a/README.md
+++ b/README.md
@@ -9,3 +9,7 @@
#### 其他
>* [git地址](http://192.168.0.203:8080/gitbucket)
>* [本地免登地址](http://localhost:8083/route/mockToken)
+
+AView 对接问题
+1.用户设备关联关系
+ 对应返回 device_list是否为设备国标号
\ No newline at end of file
diff --git a/casic-device-sync/casic-device-aview/pom.xml b/casic-device-sync/casic-device-aview/pom.xml
index 0a3c5fa..94fb9e5 100644
--- a/casic-device-sync/casic-device-aview/pom.xml
+++ b/casic-device-sync/casic-device-aview/pom.xml
@@ -33,6 +33,21 @@
${boot.version}
provided
+
+ com.casic
+ casic-http
+ ${core.version}
+
+
+ com.casic
+ casic-admin-group
+ ${admin.version}
+
+
+ com.casic
+ casic-server
+ ${pro.version}
+
diff --git a/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/controller/AvRouteController.java b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/controller/AvRouteController.java
new file mode 100644
index 0000000..195cba2
--- /dev/null
+++ b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/controller/AvRouteController.java
@@ -0,0 +1,45 @@
+package com.casic.missiles.modular.device.controller;
+
+import com.casic.missiles.model.response.dto.ResponseDataDTO;
+import com.casic.missiles.modular.device.dto.stream.StreamRequestDTO;
+import com.casic.missiles.modular.device.service.IAvSyncService;
+import io.swagger.annotations.Api;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+
+@Api(tags = "AV平台代理接口")
+@RestController
+@RequestMapping("/route")
+public class AvRouteController {
+ @Resource
+ private IAvSyncService avSyncService;
+
+ @PostMapping("/open/v1/api/streams")
+ public Object streams(@RequestBody StreamRequestDTO requestDTO) {
+ Object object = avSyncService.getStreams(requestDTO);
+ if (object == null) {
+ ResponseDataDTO respDTO = ResponseDataDTO.error("流读取失败,请稍后重试!");
+ respDTO.setMessage("流读取失败,请稍后重试!");
+ return respDTO;
+ }
+ return ResponseDataDTO.success(avSyncService.getStreams(requestDTO));
+ }
+
+ @DeleteMapping("/open/v1/api/streams/{id}")
+ public Object stopStreams(@PathVariable("id") String id) {
+ Object object = avSyncService.stopStreams(id);
+ return ResponseDataDTO.success(object);
+ }
+
+ @PostMapping("/open/v1/api/streams/{id}/heart")
+ public Object heart(@PathVariable("id") String id) {
+ Object object = avSyncService.heart(id);
+ if (object == null) {
+ ResponseDataDTO respDTO = ResponseDataDTO.error("流心跳失败,请稍后重试!");
+ respDTO.setMessage("流心跳失败,请稍后重试!");
+ return respDTO;
+ }
+ return ResponseDataDTO.success(object);
+ }
+}
\ No newline at end of file
diff --git a/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/AvDeviceDTO.java b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/AvDeviceDTO.java
new file mode 100644
index 0000000..97bde9f
--- /dev/null
+++ b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/AvDeviceDTO.java
@@ -0,0 +1,49 @@
+package com.casic.missiles.modular.device.dto;
+
+import com.alibaba.fastjson.annotation.JSONField;
+import lombok.Data;
+
+/**
+ * 艾薇设备对象DTO
+ */
+@Data
+public class AvDeviceDTO {
+ // 设备ID
+ private Long id;
+
+ // 设备名称
+ private String name;
+
+ // 设备唯一国标序列号
+ private String sn;
+
+ // 设备类型
+ private Integer type;
+
+ // 设备版本号
+ private String version;
+
+ // 安全等级
+ @JSONField(name = "secure_level")
+ private String secureLevel;
+
+ // 设备状态
+ private Integer status;
+
+ // 云台类型
+ private Integer ptzType;
+
+ // 朝向
+ private Integer orientation;
+
+ // 创建时间
+ @JSONField(name = "gmt_created")
+ private String gmtCreated;
+
+ // 修改时间
+ @JSONField(name = "gmt_modified")
+ private String gmtModified;
+
+ // 数据状态
+ private Integer state;
+}
diff --git a/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/AvPageResponse.java b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/AvPageResponse.java
new file mode 100644
index 0000000..9a05183
--- /dev/null
+++ b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/AvPageResponse.java
@@ -0,0 +1,10 @@
+package com.casic.missiles.modular.device.dto;
+
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class AvPageResponse {
+ private List items;
+}
diff --git a/README.md b/README.md
index 430796e..8dbc9a5 100644
--- a/README.md
+++ b/README.md
@@ -9,3 +9,7 @@
#### 其他
>* [git地址](http://192.168.0.203:8080/gitbucket)
>* [本地免登地址](http://localhost:8083/route/mockToken)
+
+AView 对接问题
+1.用户设备关联关系
+ 对应返回 device_list是否为设备国标号
\ No newline at end of file
diff --git a/casic-device-sync/casic-device-aview/pom.xml b/casic-device-sync/casic-device-aview/pom.xml
index 0a3c5fa..94fb9e5 100644
--- a/casic-device-sync/casic-device-aview/pom.xml
+++ b/casic-device-sync/casic-device-aview/pom.xml
@@ -33,6 +33,21 @@
${boot.version}
provided
+
+ com.casic
+ casic-http
+ ${core.version}
+
+
+ com.casic
+ casic-admin-group
+ ${admin.version}
+
+
+ com.casic
+ casic-server
+ ${pro.version}
+
diff --git a/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/controller/AvRouteController.java b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/controller/AvRouteController.java
new file mode 100644
index 0000000..195cba2
--- /dev/null
+++ b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/controller/AvRouteController.java
@@ -0,0 +1,45 @@
+package com.casic.missiles.modular.device.controller;
+
+import com.casic.missiles.model.response.dto.ResponseDataDTO;
+import com.casic.missiles.modular.device.dto.stream.StreamRequestDTO;
+import com.casic.missiles.modular.device.service.IAvSyncService;
+import io.swagger.annotations.Api;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+
+@Api(tags = "AV平台代理接口")
+@RestController
+@RequestMapping("/route")
+public class AvRouteController {
+ @Resource
+ private IAvSyncService avSyncService;
+
+ @PostMapping("/open/v1/api/streams")
+ public Object streams(@RequestBody StreamRequestDTO requestDTO) {
+ Object object = avSyncService.getStreams(requestDTO);
+ if (object == null) {
+ ResponseDataDTO respDTO = ResponseDataDTO.error("流读取失败,请稍后重试!");
+ respDTO.setMessage("流读取失败,请稍后重试!");
+ return respDTO;
+ }
+ return ResponseDataDTO.success(avSyncService.getStreams(requestDTO));
+ }
+
+ @DeleteMapping("/open/v1/api/streams/{id}")
+ public Object stopStreams(@PathVariable("id") String id) {
+ Object object = avSyncService.stopStreams(id);
+ return ResponseDataDTO.success(object);
+ }
+
+ @PostMapping("/open/v1/api/streams/{id}/heart")
+ public Object heart(@PathVariable("id") String id) {
+ Object object = avSyncService.heart(id);
+ if (object == null) {
+ ResponseDataDTO respDTO = ResponseDataDTO.error("流心跳失败,请稍后重试!");
+ respDTO.setMessage("流心跳失败,请稍后重试!");
+ return respDTO;
+ }
+ return ResponseDataDTO.success(object);
+ }
+}
\ No newline at end of file
diff --git a/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/AvDeviceDTO.java b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/AvDeviceDTO.java
new file mode 100644
index 0000000..97bde9f
--- /dev/null
+++ b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/AvDeviceDTO.java
@@ -0,0 +1,49 @@
+package com.casic.missiles.modular.device.dto;
+
+import com.alibaba.fastjson.annotation.JSONField;
+import lombok.Data;
+
+/**
+ * 艾薇设备对象DTO
+ */
+@Data
+public class AvDeviceDTO {
+ // 设备ID
+ private Long id;
+
+ // 设备名称
+ private String name;
+
+ // 设备唯一国标序列号
+ private String sn;
+
+ // 设备类型
+ private Integer type;
+
+ // 设备版本号
+ private String version;
+
+ // 安全等级
+ @JSONField(name = "secure_level")
+ private String secureLevel;
+
+ // 设备状态
+ private Integer status;
+
+ // 云台类型
+ private Integer ptzType;
+
+ // 朝向
+ private Integer orientation;
+
+ // 创建时间
+ @JSONField(name = "gmt_created")
+ private String gmtCreated;
+
+ // 修改时间
+ @JSONField(name = "gmt_modified")
+ private String gmtModified;
+
+ // 数据状态
+ private Integer state;
+}
diff --git a/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/AvPageResponse.java b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/AvPageResponse.java
new file mode 100644
index 0000000..9a05183
--- /dev/null
+++ b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/AvPageResponse.java
@@ -0,0 +1,10 @@
+package com.casic.missiles.modular.device.dto;
+
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class AvPageResponse {
+ private List items;
+}
diff --git a/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/DeviceRelationshipDTO.java b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/DeviceRelationshipDTO.java
new file mode 100644
index 0000000..098dda4
--- /dev/null
+++ b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/DeviceRelationshipDTO.java
@@ -0,0 +1,12 @@
+package com.casic.missiles.modular.device.dto;
+
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class DeviceRelationshipDTO {
+ private Long user_id;
+ private String device_list;
+ private List deviceList;
+}
diff --git a/README.md b/README.md
index 430796e..8dbc9a5 100644
--- a/README.md
+++ b/README.md
@@ -9,3 +9,7 @@
#### 其他
>* [git地址](http://192.168.0.203:8080/gitbucket)
>* [本地免登地址](http://localhost:8083/route/mockToken)
+
+AView 对接问题
+1.用户设备关联关系
+ 对应返回 device_list是否为设备国标号
\ No newline at end of file
diff --git a/casic-device-sync/casic-device-aview/pom.xml b/casic-device-sync/casic-device-aview/pom.xml
index 0a3c5fa..94fb9e5 100644
--- a/casic-device-sync/casic-device-aview/pom.xml
+++ b/casic-device-sync/casic-device-aview/pom.xml
@@ -33,6 +33,21 @@
${boot.version}
provided
+
+ com.casic
+ casic-http
+ ${core.version}
+
+
+ com.casic
+ casic-admin-group
+ ${admin.version}
+
+
+ com.casic
+ casic-server
+ ${pro.version}
+
diff --git a/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/controller/AvRouteController.java b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/controller/AvRouteController.java
new file mode 100644
index 0000000..195cba2
--- /dev/null
+++ b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/controller/AvRouteController.java
@@ -0,0 +1,45 @@
+package com.casic.missiles.modular.device.controller;
+
+import com.casic.missiles.model.response.dto.ResponseDataDTO;
+import com.casic.missiles.modular.device.dto.stream.StreamRequestDTO;
+import com.casic.missiles.modular.device.service.IAvSyncService;
+import io.swagger.annotations.Api;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+
+@Api(tags = "AV平台代理接口")
+@RestController
+@RequestMapping("/route")
+public class AvRouteController {
+ @Resource
+ private IAvSyncService avSyncService;
+
+ @PostMapping("/open/v1/api/streams")
+ public Object streams(@RequestBody StreamRequestDTO requestDTO) {
+ Object object = avSyncService.getStreams(requestDTO);
+ if (object == null) {
+ ResponseDataDTO respDTO = ResponseDataDTO.error("流读取失败,请稍后重试!");
+ respDTO.setMessage("流读取失败,请稍后重试!");
+ return respDTO;
+ }
+ return ResponseDataDTO.success(avSyncService.getStreams(requestDTO));
+ }
+
+ @DeleteMapping("/open/v1/api/streams/{id}")
+ public Object stopStreams(@PathVariable("id") String id) {
+ Object object = avSyncService.stopStreams(id);
+ return ResponseDataDTO.success(object);
+ }
+
+ @PostMapping("/open/v1/api/streams/{id}/heart")
+ public Object heart(@PathVariable("id") String id) {
+ Object object = avSyncService.heart(id);
+ if (object == null) {
+ ResponseDataDTO respDTO = ResponseDataDTO.error("流心跳失败,请稍后重试!");
+ respDTO.setMessage("流心跳失败,请稍后重试!");
+ return respDTO;
+ }
+ return ResponseDataDTO.success(object);
+ }
+}
\ No newline at end of file
diff --git a/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/AvDeviceDTO.java b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/AvDeviceDTO.java
new file mode 100644
index 0000000..97bde9f
--- /dev/null
+++ b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/AvDeviceDTO.java
@@ -0,0 +1,49 @@
+package com.casic.missiles.modular.device.dto;
+
+import com.alibaba.fastjson.annotation.JSONField;
+import lombok.Data;
+
+/**
+ * 艾薇设备对象DTO
+ */
+@Data
+public class AvDeviceDTO {
+ // 设备ID
+ private Long id;
+
+ // 设备名称
+ private String name;
+
+ // 设备唯一国标序列号
+ private String sn;
+
+ // 设备类型
+ private Integer type;
+
+ // 设备版本号
+ private String version;
+
+ // 安全等级
+ @JSONField(name = "secure_level")
+ private String secureLevel;
+
+ // 设备状态
+ private Integer status;
+
+ // 云台类型
+ private Integer ptzType;
+
+ // 朝向
+ private Integer orientation;
+
+ // 创建时间
+ @JSONField(name = "gmt_created")
+ private String gmtCreated;
+
+ // 修改时间
+ @JSONField(name = "gmt_modified")
+ private String gmtModified;
+
+ // 数据状态
+ private Integer state;
+}
diff --git a/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/AvPageResponse.java b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/AvPageResponse.java
new file mode 100644
index 0000000..9a05183
--- /dev/null
+++ b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/AvPageResponse.java
@@ -0,0 +1,10 @@
+package com.casic.missiles.modular.device.dto;
+
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class AvPageResponse {
+ private List items;
+}
diff --git a/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/DeviceRelationshipDTO.java b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/DeviceRelationshipDTO.java
new file mode 100644
index 0000000..098dda4
--- /dev/null
+++ b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/DeviceRelationshipDTO.java
@@ -0,0 +1,12 @@
+package com.casic.missiles.modular.device.dto;
+
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class DeviceRelationshipDTO {
+ private Long user_id;
+ private String device_list;
+ private List deviceList;
+}
diff --git a/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/page/AvPageRep.java b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/page/AvPageRep.java
new file mode 100644
index 0000000..74e6a9b
--- /dev/null
+++ b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/page/AvPageRep.java
@@ -0,0 +1,9 @@
+package com.casic.missiles.modular.device.dto.page;
+
+import lombok.Data;
+
+@Data
+public class AvPageRep {
+ private Integer total;
+ private T list;
+}
diff --git a/README.md b/README.md
index 430796e..8dbc9a5 100644
--- a/README.md
+++ b/README.md
@@ -9,3 +9,7 @@
#### 其他
>* [git地址](http://192.168.0.203:8080/gitbucket)
>* [本地免登地址](http://localhost:8083/route/mockToken)
+
+AView 对接问题
+1.用户设备关联关系
+ 对应返回 device_list是否为设备国标号
\ No newline at end of file
diff --git a/casic-device-sync/casic-device-aview/pom.xml b/casic-device-sync/casic-device-aview/pom.xml
index 0a3c5fa..94fb9e5 100644
--- a/casic-device-sync/casic-device-aview/pom.xml
+++ b/casic-device-sync/casic-device-aview/pom.xml
@@ -33,6 +33,21 @@
${boot.version}
provided
+
+ com.casic
+ casic-http
+ ${core.version}
+
+
+ com.casic
+ casic-admin-group
+ ${admin.version}
+
+
+ com.casic
+ casic-server
+ ${pro.version}
+
diff --git a/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/controller/AvRouteController.java b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/controller/AvRouteController.java
new file mode 100644
index 0000000..195cba2
--- /dev/null
+++ b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/controller/AvRouteController.java
@@ -0,0 +1,45 @@
+package com.casic.missiles.modular.device.controller;
+
+import com.casic.missiles.model.response.dto.ResponseDataDTO;
+import com.casic.missiles.modular.device.dto.stream.StreamRequestDTO;
+import com.casic.missiles.modular.device.service.IAvSyncService;
+import io.swagger.annotations.Api;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+
+@Api(tags = "AV平台代理接口")
+@RestController
+@RequestMapping("/route")
+public class AvRouteController {
+ @Resource
+ private IAvSyncService avSyncService;
+
+ @PostMapping("/open/v1/api/streams")
+ public Object streams(@RequestBody StreamRequestDTO requestDTO) {
+ Object object = avSyncService.getStreams(requestDTO);
+ if (object == null) {
+ ResponseDataDTO respDTO = ResponseDataDTO.error("流读取失败,请稍后重试!");
+ respDTO.setMessage("流读取失败,请稍后重试!");
+ return respDTO;
+ }
+ return ResponseDataDTO.success(avSyncService.getStreams(requestDTO));
+ }
+
+ @DeleteMapping("/open/v1/api/streams/{id}")
+ public Object stopStreams(@PathVariable("id") String id) {
+ Object object = avSyncService.stopStreams(id);
+ return ResponseDataDTO.success(object);
+ }
+
+ @PostMapping("/open/v1/api/streams/{id}/heart")
+ public Object heart(@PathVariable("id") String id) {
+ Object object = avSyncService.heart(id);
+ if (object == null) {
+ ResponseDataDTO respDTO = ResponseDataDTO.error("流心跳失败,请稍后重试!");
+ respDTO.setMessage("流心跳失败,请稍后重试!");
+ return respDTO;
+ }
+ return ResponseDataDTO.success(object);
+ }
+}
\ No newline at end of file
diff --git a/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/AvDeviceDTO.java b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/AvDeviceDTO.java
new file mode 100644
index 0000000..97bde9f
--- /dev/null
+++ b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/AvDeviceDTO.java
@@ -0,0 +1,49 @@
+package com.casic.missiles.modular.device.dto;
+
+import com.alibaba.fastjson.annotation.JSONField;
+import lombok.Data;
+
+/**
+ * 艾薇设备对象DTO
+ */
+@Data
+public class AvDeviceDTO {
+ // 设备ID
+ private Long id;
+
+ // 设备名称
+ private String name;
+
+ // 设备唯一国标序列号
+ private String sn;
+
+ // 设备类型
+ private Integer type;
+
+ // 设备版本号
+ private String version;
+
+ // 安全等级
+ @JSONField(name = "secure_level")
+ private String secureLevel;
+
+ // 设备状态
+ private Integer status;
+
+ // 云台类型
+ private Integer ptzType;
+
+ // 朝向
+ private Integer orientation;
+
+ // 创建时间
+ @JSONField(name = "gmt_created")
+ private String gmtCreated;
+
+ // 修改时间
+ @JSONField(name = "gmt_modified")
+ private String gmtModified;
+
+ // 数据状态
+ private Integer state;
+}
diff --git a/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/AvPageResponse.java b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/AvPageResponse.java
new file mode 100644
index 0000000..9a05183
--- /dev/null
+++ b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/AvPageResponse.java
@@ -0,0 +1,10 @@
+package com.casic.missiles.modular.device.dto;
+
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class AvPageResponse {
+ private List items;
+}
diff --git a/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/DeviceRelationshipDTO.java b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/DeviceRelationshipDTO.java
new file mode 100644
index 0000000..098dda4
--- /dev/null
+++ b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/DeviceRelationshipDTO.java
@@ -0,0 +1,12 @@
+package com.casic.missiles.modular.device.dto;
+
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class DeviceRelationshipDTO {
+ private Long user_id;
+ private String device_list;
+ private List deviceList;
+}
diff --git a/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/page/AvPageRep.java b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/page/AvPageRep.java
new file mode 100644
index 0000000..74e6a9b
--- /dev/null
+++ b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/page/AvPageRep.java
@@ -0,0 +1,9 @@
+package com.casic.missiles.modular.device.dto.page;
+
+import lombok.Data;
+
+@Data
+public class AvPageRep {
+ private Integer total;
+ private T list;
+}
diff --git a/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/page/AvPageRequest.java b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/page/AvPageRequest.java
new file mode 100644
index 0000000..900ae4a
--- /dev/null
+++ b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/page/AvPageRequest.java
@@ -0,0 +1,14 @@
+package com.casic.missiles.modular.device.dto.page;
+
+import lombok.Data;
+
+/**
+ * 分页请求DTO
+ */
+@Data
+public class AvPageRequest {
+ private int page;
+ private int paging;
+ private int limit;
+
+}
diff --git a/README.md b/README.md
index 430796e..8dbc9a5 100644
--- a/README.md
+++ b/README.md
@@ -9,3 +9,7 @@
#### 其他
>* [git地址](http://192.168.0.203:8080/gitbucket)
>* [本地免登地址](http://localhost:8083/route/mockToken)
+
+AView 对接问题
+1.用户设备关联关系
+ 对应返回 device_list是否为设备国标号
\ No newline at end of file
diff --git a/casic-device-sync/casic-device-aview/pom.xml b/casic-device-sync/casic-device-aview/pom.xml
index 0a3c5fa..94fb9e5 100644
--- a/casic-device-sync/casic-device-aview/pom.xml
+++ b/casic-device-sync/casic-device-aview/pom.xml
@@ -33,6 +33,21 @@
${boot.version}
provided
+
+ com.casic
+ casic-http
+ ${core.version}
+
+
+ com.casic
+ casic-admin-group
+ ${admin.version}
+
+
+ com.casic
+ casic-server
+ ${pro.version}
+
diff --git a/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/controller/AvRouteController.java b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/controller/AvRouteController.java
new file mode 100644
index 0000000..195cba2
--- /dev/null
+++ b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/controller/AvRouteController.java
@@ -0,0 +1,45 @@
+package com.casic.missiles.modular.device.controller;
+
+import com.casic.missiles.model.response.dto.ResponseDataDTO;
+import com.casic.missiles.modular.device.dto.stream.StreamRequestDTO;
+import com.casic.missiles.modular.device.service.IAvSyncService;
+import io.swagger.annotations.Api;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+
+@Api(tags = "AV平台代理接口")
+@RestController
+@RequestMapping("/route")
+public class AvRouteController {
+ @Resource
+ private IAvSyncService avSyncService;
+
+ @PostMapping("/open/v1/api/streams")
+ public Object streams(@RequestBody StreamRequestDTO requestDTO) {
+ Object object = avSyncService.getStreams(requestDTO);
+ if (object == null) {
+ ResponseDataDTO respDTO = ResponseDataDTO.error("流读取失败,请稍后重试!");
+ respDTO.setMessage("流读取失败,请稍后重试!");
+ return respDTO;
+ }
+ return ResponseDataDTO.success(avSyncService.getStreams(requestDTO));
+ }
+
+ @DeleteMapping("/open/v1/api/streams/{id}")
+ public Object stopStreams(@PathVariable("id") String id) {
+ Object object = avSyncService.stopStreams(id);
+ return ResponseDataDTO.success(object);
+ }
+
+ @PostMapping("/open/v1/api/streams/{id}/heart")
+ public Object heart(@PathVariable("id") String id) {
+ Object object = avSyncService.heart(id);
+ if (object == null) {
+ ResponseDataDTO respDTO = ResponseDataDTO.error("流心跳失败,请稍后重试!");
+ respDTO.setMessage("流心跳失败,请稍后重试!");
+ return respDTO;
+ }
+ return ResponseDataDTO.success(object);
+ }
+}
\ No newline at end of file
diff --git a/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/AvDeviceDTO.java b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/AvDeviceDTO.java
new file mode 100644
index 0000000..97bde9f
--- /dev/null
+++ b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/AvDeviceDTO.java
@@ -0,0 +1,49 @@
+package com.casic.missiles.modular.device.dto;
+
+import com.alibaba.fastjson.annotation.JSONField;
+import lombok.Data;
+
+/**
+ * 艾薇设备对象DTO
+ */
+@Data
+public class AvDeviceDTO {
+ // 设备ID
+ private Long id;
+
+ // 设备名称
+ private String name;
+
+ // 设备唯一国标序列号
+ private String sn;
+
+ // 设备类型
+ private Integer type;
+
+ // 设备版本号
+ private String version;
+
+ // 安全等级
+ @JSONField(name = "secure_level")
+ private String secureLevel;
+
+ // 设备状态
+ private Integer status;
+
+ // 云台类型
+ private Integer ptzType;
+
+ // 朝向
+ private Integer orientation;
+
+ // 创建时间
+ @JSONField(name = "gmt_created")
+ private String gmtCreated;
+
+ // 修改时间
+ @JSONField(name = "gmt_modified")
+ private String gmtModified;
+
+ // 数据状态
+ private Integer state;
+}
diff --git a/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/AvPageResponse.java b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/AvPageResponse.java
new file mode 100644
index 0000000..9a05183
--- /dev/null
+++ b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/AvPageResponse.java
@@ -0,0 +1,10 @@
+package com.casic.missiles.modular.device.dto;
+
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class AvPageResponse {
+ private List items;
+}
diff --git a/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/DeviceRelationshipDTO.java b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/DeviceRelationshipDTO.java
new file mode 100644
index 0000000..098dda4
--- /dev/null
+++ b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/DeviceRelationshipDTO.java
@@ -0,0 +1,12 @@
+package com.casic.missiles.modular.device.dto;
+
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class DeviceRelationshipDTO {
+ private Long user_id;
+ private String device_list;
+ private List deviceList;
+}
diff --git a/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/page/AvPageRep.java b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/page/AvPageRep.java
new file mode 100644
index 0000000..74e6a9b
--- /dev/null
+++ b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/page/AvPageRep.java
@@ -0,0 +1,9 @@
+package com.casic.missiles.modular.device.dto.page;
+
+import lombok.Data;
+
+@Data
+public class AvPageRep {
+ private Integer total;
+ private T list;
+}
diff --git a/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/page/AvPageRequest.java b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/page/AvPageRequest.java
new file mode 100644
index 0000000..900ae4a
--- /dev/null
+++ b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/page/AvPageRequest.java
@@ -0,0 +1,14 @@
+package com.casic.missiles.modular.device.dto.page;
+
+import lombok.Data;
+
+/**
+ * 分页请求DTO
+ */
+@Data
+public class AvPageRequest {
+ private int page;
+ private int paging;
+ private int limit;
+
+}
diff --git a/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/page/AvResponseDTO.java b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/page/AvResponseDTO.java
new file mode 100644
index 0000000..f1c1e7a
--- /dev/null
+++ b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/page/AvResponseDTO.java
@@ -0,0 +1,15 @@
+package com.casic.missiles.modular.device.dto.page;
+
+import lombok.Data;
+
+/**
+ * mvp返回基类封装
+ *
+ * @param
+ */
+@Data
+public class AvResponseDTO {
+ private T data;
+ private Integer code;
+ private String msg;
+}
diff --git a/README.md b/README.md
index 430796e..8dbc9a5 100644
--- a/README.md
+++ b/README.md
@@ -9,3 +9,7 @@
#### 其他
>* [git地址](http://192.168.0.203:8080/gitbucket)
>* [本地免登地址](http://localhost:8083/route/mockToken)
+
+AView 对接问题
+1.用户设备关联关系
+ 对应返回 device_list是否为设备国标号
\ No newline at end of file
diff --git a/casic-device-sync/casic-device-aview/pom.xml b/casic-device-sync/casic-device-aview/pom.xml
index 0a3c5fa..94fb9e5 100644
--- a/casic-device-sync/casic-device-aview/pom.xml
+++ b/casic-device-sync/casic-device-aview/pom.xml
@@ -33,6 +33,21 @@
${boot.version}
provided
+
+ com.casic
+ casic-http
+ ${core.version}
+
+
+ com.casic
+ casic-admin-group
+ ${admin.version}
+
+
+ com.casic
+ casic-server
+ ${pro.version}
+
diff --git a/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/controller/AvRouteController.java b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/controller/AvRouteController.java
new file mode 100644
index 0000000..195cba2
--- /dev/null
+++ b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/controller/AvRouteController.java
@@ -0,0 +1,45 @@
+package com.casic.missiles.modular.device.controller;
+
+import com.casic.missiles.model.response.dto.ResponseDataDTO;
+import com.casic.missiles.modular.device.dto.stream.StreamRequestDTO;
+import com.casic.missiles.modular.device.service.IAvSyncService;
+import io.swagger.annotations.Api;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+
+@Api(tags = "AV平台代理接口")
+@RestController
+@RequestMapping("/route")
+public class AvRouteController {
+ @Resource
+ private IAvSyncService avSyncService;
+
+ @PostMapping("/open/v1/api/streams")
+ public Object streams(@RequestBody StreamRequestDTO requestDTO) {
+ Object object = avSyncService.getStreams(requestDTO);
+ if (object == null) {
+ ResponseDataDTO respDTO = ResponseDataDTO.error("流读取失败,请稍后重试!");
+ respDTO.setMessage("流读取失败,请稍后重试!");
+ return respDTO;
+ }
+ return ResponseDataDTO.success(avSyncService.getStreams(requestDTO));
+ }
+
+ @DeleteMapping("/open/v1/api/streams/{id}")
+ public Object stopStreams(@PathVariable("id") String id) {
+ Object object = avSyncService.stopStreams(id);
+ return ResponseDataDTO.success(object);
+ }
+
+ @PostMapping("/open/v1/api/streams/{id}/heart")
+ public Object heart(@PathVariable("id") String id) {
+ Object object = avSyncService.heart(id);
+ if (object == null) {
+ ResponseDataDTO respDTO = ResponseDataDTO.error("流心跳失败,请稍后重试!");
+ respDTO.setMessage("流心跳失败,请稍后重试!");
+ return respDTO;
+ }
+ return ResponseDataDTO.success(object);
+ }
+}
\ No newline at end of file
diff --git a/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/AvDeviceDTO.java b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/AvDeviceDTO.java
new file mode 100644
index 0000000..97bde9f
--- /dev/null
+++ b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/AvDeviceDTO.java
@@ -0,0 +1,49 @@
+package com.casic.missiles.modular.device.dto;
+
+import com.alibaba.fastjson.annotation.JSONField;
+import lombok.Data;
+
+/**
+ * 艾薇设备对象DTO
+ */
+@Data
+public class AvDeviceDTO {
+ // 设备ID
+ private Long id;
+
+ // 设备名称
+ private String name;
+
+ // 设备唯一国标序列号
+ private String sn;
+
+ // 设备类型
+ private Integer type;
+
+ // 设备版本号
+ private String version;
+
+ // 安全等级
+ @JSONField(name = "secure_level")
+ private String secureLevel;
+
+ // 设备状态
+ private Integer status;
+
+ // 云台类型
+ private Integer ptzType;
+
+ // 朝向
+ private Integer orientation;
+
+ // 创建时间
+ @JSONField(name = "gmt_created")
+ private String gmtCreated;
+
+ // 修改时间
+ @JSONField(name = "gmt_modified")
+ private String gmtModified;
+
+ // 数据状态
+ private Integer state;
+}
diff --git a/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/AvPageResponse.java b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/AvPageResponse.java
new file mode 100644
index 0000000..9a05183
--- /dev/null
+++ b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/AvPageResponse.java
@@ -0,0 +1,10 @@
+package com.casic.missiles.modular.device.dto;
+
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class AvPageResponse {
+ private List items;
+}
diff --git a/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/DeviceRelationshipDTO.java b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/DeviceRelationshipDTO.java
new file mode 100644
index 0000000..098dda4
--- /dev/null
+++ b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/DeviceRelationshipDTO.java
@@ -0,0 +1,12 @@
+package com.casic.missiles.modular.device.dto;
+
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class DeviceRelationshipDTO {
+ private Long user_id;
+ private String device_list;
+ private List deviceList;
+}
diff --git a/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/page/AvPageRep.java b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/page/AvPageRep.java
new file mode 100644
index 0000000..74e6a9b
--- /dev/null
+++ b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/page/AvPageRep.java
@@ -0,0 +1,9 @@
+package com.casic.missiles.modular.device.dto.page;
+
+import lombok.Data;
+
+@Data
+public class AvPageRep {
+ private Integer total;
+ private T list;
+}
diff --git a/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/page/AvPageRequest.java b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/page/AvPageRequest.java
new file mode 100644
index 0000000..900ae4a
--- /dev/null
+++ b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/page/AvPageRequest.java
@@ -0,0 +1,14 @@
+package com.casic.missiles.modular.device.dto.page;
+
+import lombok.Data;
+
+/**
+ * 分页请求DTO
+ */
+@Data
+public class AvPageRequest {
+ private int page;
+ private int paging;
+ private int limit;
+
+}
diff --git a/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/page/AvResponseDTO.java b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/page/AvResponseDTO.java
new file mode 100644
index 0000000..f1c1e7a
--- /dev/null
+++ b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/page/AvResponseDTO.java
@@ -0,0 +1,15 @@
+package com.casic.missiles.modular.device.dto.page;
+
+import lombok.Data;
+
+/**
+ * mvp返回基类封装
+ *
+ * @param
+ */
+@Data
+public class AvResponseDTO {
+ private T data;
+ private Integer code;
+ private String msg;
+}
diff --git a/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/stream/StreamRequestDTO.java b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/stream/StreamRequestDTO.java
new file mode 100644
index 0000000..69e88ce
--- /dev/null
+++ b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/stream/StreamRequestDTO.java
@@ -0,0 +1,12 @@
+package com.casic.missiles.modular.device.dto.stream;
+
+import lombok.Data;
+
+@Data
+public class StreamRequestDTO {
+ private String device_id;
+ private String stream_type;
+ private String quality;
+ private int from;
+ private int to;
+}
diff --git a/README.md b/README.md
index 430796e..8dbc9a5 100644
--- a/README.md
+++ b/README.md
@@ -9,3 +9,7 @@
#### 其他
>* [git地址](http://192.168.0.203:8080/gitbucket)
>* [本地免登地址](http://localhost:8083/route/mockToken)
+
+AView 对接问题
+1.用户设备关联关系
+ 对应返回 device_list是否为设备国标号
\ No newline at end of file
diff --git a/casic-device-sync/casic-device-aview/pom.xml b/casic-device-sync/casic-device-aview/pom.xml
index 0a3c5fa..94fb9e5 100644
--- a/casic-device-sync/casic-device-aview/pom.xml
+++ b/casic-device-sync/casic-device-aview/pom.xml
@@ -33,6 +33,21 @@
${boot.version}
provided
+
+ com.casic
+ casic-http
+ ${core.version}
+
+
+ com.casic
+ casic-admin-group
+ ${admin.version}
+
+
+ com.casic
+ casic-server
+ ${pro.version}
+
diff --git a/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/controller/AvRouteController.java b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/controller/AvRouteController.java
new file mode 100644
index 0000000..195cba2
--- /dev/null
+++ b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/controller/AvRouteController.java
@@ -0,0 +1,45 @@
+package com.casic.missiles.modular.device.controller;
+
+import com.casic.missiles.model.response.dto.ResponseDataDTO;
+import com.casic.missiles.modular.device.dto.stream.StreamRequestDTO;
+import com.casic.missiles.modular.device.service.IAvSyncService;
+import io.swagger.annotations.Api;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+
+@Api(tags = "AV平台代理接口")
+@RestController
+@RequestMapping("/route")
+public class AvRouteController {
+ @Resource
+ private IAvSyncService avSyncService;
+
+ @PostMapping("/open/v1/api/streams")
+ public Object streams(@RequestBody StreamRequestDTO requestDTO) {
+ Object object = avSyncService.getStreams(requestDTO);
+ if (object == null) {
+ ResponseDataDTO respDTO = ResponseDataDTO.error("流读取失败,请稍后重试!");
+ respDTO.setMessage("流读取失败,请稍后重试!");
+ return respDTO;
+ }
+ return ResponseDataDTO.success(avSyncService.getStreams(requestDTO));
+ }
+
+ @DeleteMapping("/open/v1/api/streams/{id}")
+ public Object stopStreams(@PathVariable("id") String id) {
+ Object object = avSyncService.stopStreams(id);
+ return ResponseDataDTO.success(object);
+ }
+
+ @PostMapping("/open/v1/api/streams/{id}/heart")
+ public Object heart(@PathVariable("id") String id) {
+ Object object = avSyncService.heart(id);
+ if (object == null) {
+ ResponseDataDTO respDTO = ResponseDataDTO.error("流心跳失败,请稍后重试!");
+ respDTO.setMessage("流心跳失败,请稍后重试!");
+ return respDTO;
+ }
+ return ResponseDataDTO.success(object);
+ }
+}
\ No newline at end of file
diff --git a/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/AvDeviceDTO.java b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/AvDeviceDTO.java
new file mode 100644
index 0000000..97bde9f
--- /dev/null
+++ b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/AvDeviceDTO.java
@@ -0,0 +1,49 @@
+package com.casic.missiles.modular.device.dto;
+
+import com.alibaba.fastjson.annotation.JSONField;
+import lombok.Data;
+
+/**
+ * 艾薇设备对象DTO
+ */
+@Data
+public class AvDeviceDTO {
+ // 设备ID
+ private Long id;
+
+ // 设备名称
+ private String name;
+
+ // 设备唯一国标序列号
+ private String sn;
+
+ // 设备类型
+ private Integer type;
+
+ // 设备版本号
+ private String version;
+
+ // 安全等级
+ @JSONField(name = "secure_level")
+ private String secureLevel;
+
+ // 设备状态
+ private Integer status;
+
+ // 云台类型
+ private Integer ptzType;
+
+ // 朝向
+ private Integer orientation;
+
+ // 创建时间
+ @JSONField(name = "gmt_created")
+ private String gmtCreated;
+
+ // 修改时间
+ @JSONField(name = "gmt_modified")
+ private String gmtModified;
+
+ // 数据状态
+ private Integer state;
+}
diff --git a/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/AvPageResponse.java b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/AvPageResponse.java
new file mode 100644
index 0000000..9a05183
--- /dev/null
+++ b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/AvPageResponse.java
@@ -0,0 +1,10 @@
+package com.casic.missiles.modular.device.dto;
+
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class AvPageResponse {
+ private List items;
+}
diff --git a/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/DeviceRelationshipDTO.java b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/DeviceRelationshipDTO.java
new file mode 100644
index 0000000..098dda4
--- /dev/null
+++ b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/DeviceRelationshipDTO.java
@@ -0,0 +1,12 @@
+package com.casic.missiles.modular.device.dto;
+
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class DeviceRelationshipDTO {
+ private Long user_id;
+ private String device_list;
+ private List deviceList;
+}
diff --git a/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/page/AvPageRep.java b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/page/AvPageRep.java
new file mode 100644
index 0000000..74e6a9b
--- /dev/null
+++ b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/page/AvPageRep.java
@@ -0,0 +1,9 @@
+package com.casic.missiles.modular.device.dto.page;
+
+import lombok.Data;
+
+@Data
+public class AvPageRep {
+ private Integer total;
+ private T list;
+}
diff --git a/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/page/AvPageRequest.java b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/page/AvPageRequest.java
new file mode 100644
index 0000000..900ae4a
--- /dev/null
+++ b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/page/AvPageRequest.java
@@ -0,0 +1,14 @@
+package com.casic.missiles.modular.device.dto.page;
+
+import lombok.Data;
+
+/**
+ * 分页请求DTO
+ */
+@Data
+public class AvPageRequest {
+ private int page;
+ private int paging;
+ private int limit;
+
+}
diff --git a/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/page/AvResponseDTO.java b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/page/AvResponseDTO.java
new file mode 100644
index 0000000..f1c1e7a
--- /dev/null
+++ b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/page/AvResponseDTO.java
@@ -0,0 +1,15 @@
+package com.casic.missiles.modular.device.dto.page;
+
+import lombok.Data;
+
+/**
+ * mvp返回基类封装
+ *
+ * @param
+ */
+@Data
+public class AvResponseDTO {
+ private T data;
+ private Integer code;
+ private String msg;
+}
diff --git a/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/stream/StreamRequestDTO.java b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/stream/StreamRequestDTO.java
new file mode 100644
index 0000000..69e88ce
--- /dev/null
+++ b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/stream/StreamRequestDTO.java
@@ -0,0 +1,12 @@
+package com.casic.missiles.modular.device.dto.stream;
+
+import lombok.Data;
+
+@Data
+public class StreamRequestDTO {
+ private String device_id;
+ private String stream_type;
+ private String quality;
+ private int from;
+ private int to;
+}
diff --git a/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/stream/StreamStopRequestDTO.java b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/stream/StreamStopRequestDTO.java
new file mode 100644
index 0000000..9cf94b1
--- /dev/null
+++ b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/stream/StreamStopRequestDTO.java
@@ -0,0 +1,11 @@
+package com.casic.missiles.modular.device.dto.stream;
+
+import lombok.Data;
+
+@Data
+public class StreamStopRequestDTO {
+ private String id;
+ private String type;
+ private StreamRequestDTO request;
+ private String url;
+}
diff --git a/README.md b/README.md
index 430796e..8dbc9a5 100644
--- a/README.md
+++ b/README.md
@@ -9,3 +9,7 @@
#### 其他
>* [git地址](http://192.168.0.203:8080/gitbucket)
>* [本地免登地址](http://localhost:8083/route/mockToken)
+
+AView 对接问题
+1.用户设备关联关系
+ 对应返回 device_list是否为设备国标号
\ No newline at end of file
diff --git a/casic-device-sync/casic-device-aview/pom.xml b/casic-device-sync/casic-device-aview/pom.xml
index 0a3c5fa..94fb9e5 100644
--- a/casic-device-sync/casic-device-aview/pom.xml
+++ b/casic-device-sync/casic-device-aview/pom.xml
@@ -33,6 +33,21 @@
${boot.version}
provided
+
+ com.casic
+ casic-http
+ ${core.version}
+
+
+ com.casic
+ casic-admin-group
+ ${admin.version}
+
+
+ com.casic
+ casic-server
+ ${pro.version}
+
diff --git a/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/controller/AvRouteController.java b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/controller/AvRouteController.java
new file mode 100644
index 0000000..195cba2
--- /dev/null
+++ b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/controller/AvRouteController.java
@@ -0,0 +1,45 @@
+package com.casic.missiles.modular.device.controller;
+
+import com.casic.missiles.model.response.dto.ResponseDataDTO;
+import com.casic.missiles.modular.device.dto.stream.StreamRequestDTO;
+import com.casic.missiles.modular.device.service.IAvSyncService;
+import io.swagger.annotations.Api;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+
+@Api(tags = "AV平台代理接口")
+@RestController
+@RequestMapping("/route")
+public class AvRouteController {
+ @Resource
+ private IAvSyncService avSyncService;
+
+ @PostMapping("/open/v1/api/streams")
+ public Object streams(@RequestBody StreamRequestDTO requestDTO) {
+ Object object = avSyncService.getStreams(requestDTO);
+ if (object == null) {
+ ResponseDataDTO respDTO = ResponseDataDTO.error("流读取失败,请稍后重试!");
+ respDTO.setMessage("流读取失败,请稍后重试!");
+ return respDTO;
+ }
+ return ResponseDataDTO.success(avSyncService.getStreams(requestDTO));
+ }
+
+ @DeleteMapping("/open/v1/api/streams/{id}")
+ public Object stopStreams(@PathVariable("id") String id) {
+ Object object = avSyncService.stopStreams(id);
+ return ResponseDataDTO.success(object);
+ }
+
+ @PostMapping("/open/v1/api/streams/{id}/heart")
+ public Object heart(@PathVariable("id") String id) {
+ Object object = avSyncService.heart(id);
+ if (object == null) {
+ ResponseDataDTO respDTO = ResponseDataDTO.error("流心跳失败,请稍后重试!");
+ respDTO.setMessage("流心跳失败,请稍后重试!");
+ return respDTO;
+ }
+ return ResponseDataDTO.success(object);
+ }
+}
\ No newline at end of file
diff --git a/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/AvDeviceDTO.java b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/AvDeviceDTO.java
new file mode 100644
index 0000000..97bde9f
--- /dev/null
+++ b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/AvDeviceDTO.java
@@ -0,0 +1,49 @@
+package com.casic.missiles.modular.device.dto;
+
+import com.alibaba.fastjson.annotation.JSONField;
+import lombok.Data;
+
+/**
+ * 艾薇设备对象DTO
+ */
+@Data
+public class AvDeviceDTO {
+ // 设备ID
+ private Long id;
+
+ // 设备名称
+ private String name;
+
+ // 设备唯一国标序列号
+ private String sn;
+
+ // 设备类型
+ private Integer type;
+
+ // 设备版本号
+ private String version;
+
+ // 安全等级
+ @JSONField(name = "secure_level")
+ private String secureLevel;
+
+ // 设备状态
+ private Integer status;
+
+ // 云台类型
+ private Integer ptzType;
+
+ // 朝向
+ private Integer orientation;
+
+ // 创建时间
+ @JSONField(name = "gmt_created")
+ private String gmtCreated;
+
+ // 修改时间
+ @JSONField(name = "gmt_modified")
+ private String gmtModified;
+
+ // 数据状态
+ private Integer state;
+}
diff --git a/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/AvPageResponse.java b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/AvPageResponse.java
new file mode 100644
index 0000000..9a05183
--- /dev/null
+++ b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/AvPageResponse.java
@@ -0,0 +1,10 @@
+package com.casic.missiles.modular.device.dto;
+
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class AvPageResponse {
+ private List items;
+}
diff --git a/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/DeviceRelationshipDTO.java b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/DeviceRelationshipDTO.java
new file mode 100644
index 0000000..098dda4
--- /dev/null
+++ b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/DeviceRelationshipDTO.java
@@ -0,0 +1,12 @@
+package com.casic.missiles.modular.device.dto;
+
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class DeviceRelationshipDTO {
+ private Long user_id;
+ private String device_list;
+ private List deviceList;
+}
diff --git a/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/page/AvPageRep.java b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/page/AvPageRep.java
new file mode 100644
index 0000000..74e6a9b
--- /dev/null
+++ b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/page/AvPageRep.java
@@ -0,0 +1,9 @@
+package com.casic.missiles.modular.device.dto.page;
+
+import lombok.Data;
+
+@Data
+public class AvPageRep {
+ private Integer total;
+ private T list;
+}
diff --git a/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/page/AvPageRequest.java b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/page/AvPageRequest.java
new file mode 100644
index 0000000..900ae4a
--- /dev/null
+++ b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/page/AvPageRequest.java
@@ -0,0 +1,14 @@
+package com.casic.missiles.modular.device.dto.page;
+
+import lombok.Data;
+
+/**
+ * 分页请求DTO
+ */
+@Data
+public class AvPageRequest {
+ private int page;
+ private int paging;
+ private int limit;
+
+}
diff --git a/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/page/AvResponseDTO.java b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/page/AvResponseDTO.java
new file mode 100644
index 0000000..f1c1e7a
--- /dev/null
+++ b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/page/AvResponseDTO.java
@@ -0,0 +1,15 @@
+package com.casic.missiles.modular.device.dto.page;
+
+import lombok.Data;
+
+/**
+ * mvp返回基类封装
+ *
+ * @param
+ */
+@Data
+public class AvResponseDTO {
+ private T data;
+ private Integer code;
+ private String msg;
+}
diff --git a/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/stream/StreamRequestDTO.java b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/stream/StreamRequestDTO.java
new file mode 100644
index 0000000..69e88ce
--- /dev/null
+++ b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/stream/StreamRequestDTO.java
@@ -0,0 +1,12 @@
+package com.casic.missiles.modular.device.dto.stream;
+
+import lombok.Data;
+
+@Data
+public class StreamRequestDTO {
+ private String device_id;
+ private String stream_type;
+ private String quality;
+ private int from;
+ private int to;
+}
diff --git a/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/stream/StreamStopRequestDTO.java b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/stream/StreamStopRequestDTO.java
new file mode 100644
index 0000000..9cf94b1
--- /dev/null
+++ b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/stream/StreamStopRequestDTO.java
@@ -0,0 +1,11 @@
+package com.casic.missiles.modular.device.dto.stream;
+
+import lombok.Data;
+
+@Data
+public class StreamStopRequestDTO {
+ private String id;
+ private String type;
+ private StreamRequestDTO request;
+ private String url;
+}
diff --git a/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/enums/AvDataStateEnum.java b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/enums/AvDataStateEnum.java
new file mode 100644
index 0000000..e1a6658
--- /dev/null
+++ b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/enums/AvDataStateEnum.java
@@ -0,0 +1,72 @@
+package com.casic.missiles.modular.device.enums;
+
+/**
+ * 数据状态
+ *
+ * @author lwh
+ * @Date 2017年1月10日 下午9:54:13
+ */
+public enum AvDataStateEnum {
+
+ TYPE0(0, "有效",0),
+ DEL(1, "无效",1);
+
+ Integer code;
+ String message;
+ Integer type;
+ AvDataStateEnum(Integer code, String message, Integer type) {
+ this.code = code;
+ this.message = message;
+ this.type = type;
+ }
+
+ public Integer getCode() {
+ return code;
+ }
+
+ public void setCode(Integer code) {
+ this.code = code;
+ }
+
+ public String getMessage() {
+ return message;
+ }
+
+ public void setMessage(String message) {
+ this.message = message;
+ }
+
+ public Integer getType() {
+ return type;
+ }
+
+ public void setType(Integer type) {
+ this.type = type;
+ }
+
+ public static String valueOfs(Integer value) {
+ if (value == null) {
+ return "";
+ } else {
+ for (AvDataStateEnum ms : AvDataStateEnum.values()) {
+ if (ms.getCode().equals(value)) {
+ return ms.getMessage();
+ }
+ }
+ return "";
+ }
+ }
+
+ public static AvDataStateEnum valueOfType(Integer value) {
+ if (value == null) {
+ return TYPE0;
+ } else {
+ for (AvDataStateEnum ms : AvDataStateEnum.values()) {
+ if (ms.getCode().equals(value)) {
+ return ms;
+ }
+ }
+ return TYPE0;
+ }
+ }
+}
diff --git a/README.md b/README.md
index 430796e..8dbc9a5 100644
--- a/README.md
+++ b/README.md
@@ -9,3 +9,7 @@
#### 其他
>* [git地址](http://192.168.0.203:8080/gitbucket)
>* [本地免登地址](http://localhost:8083/route/mockToken)
+
+AView 对接问题
+1.用户设备关联关系
+ 对应返回 device_list是否为设备国标号
\ No newline at end of file
diff --git a/casic-device-sync/casic-device-aview/pom.xml b/casic-device-sync/casic-device-aview/pom.xml
index 0a3c5fa..94fb9e5 100644
--- a/casic-device-sync/casic-device-aview/pom.xml
+++ b/casic-device-sync/casic-device-aview/pom.xml
@@ -33,6 +33,21 @@
${boot.version}
provided
+
+ com.casic
+ casic-http
+ ${core.version}
+
+
+ com.casic
+ casic-admin-group
+ ${admin.version}
+
+
+ com.casic
+ casic-server
+ ${pro.version}
+
diff --git a/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/controller/AvRouteController.java b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/controller/AvRouteController.java
new file mode 100644
index 0000000..195cba2
--- /dev/null
+++ b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/controller/AvRouteController.java
@@ -0,0 +1,45 @@
+package com.casic.missiles.modular.device.controller;
+
+import com.casic.missiles.model.response.dto.ResponseDataDTO;
+import com.casic.missiles.modular.device.dto.stream.StreamRequestDTO;
+import com.casic.missiles.modular.device.service.IAvSyncService;
+import io.swagger.annotations.Api;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+
+@Api(tags = "AV平台代理接口")
+@RestController
+@RequestMapping("/route")
+public class AvRouteController {
+ @Resource
+ private IAvSyncService avSyncService;
+
+ @PostMapping("/open/v1/api/streams")
+ public Object streams(@RequestBody StreamRequestDTO requestDTO) {
+ Object object = avSyncService.getStreams(requestDTO);
+ if (object == null) {
+ ResponseDataDTO respDTO = ResponseDataDTO.error("流读取失败,请稍后重试!");
+ respDTO.setMessage("流读取失败,请稍后重试!");
+ return respDTO;
+ }
+ return ResponseDataDTO.success(avSyncService.getStreams(requestDTO));
+ }
+
+ @DeleteMapping("/open/v1/api/streams/{id}")
+ public Object stopStreams(@PathVariable("id") String id) {
+ Object object = avSyncService.stopStreams(id);
+ return ResponseDataDTO.success(object);
+ }
+
+ @PostMapping("/open/v1/api/streams/{id}/heart")
+ public Object heart(@PathVariable("id") String id) {
+ Object object = avSyncService.heart(id);
+ if (object == null) {
+ ResponseDataDTO respDTO = ResponseDataDTO.error("流心跳失败,请稍后重试!");
+ respDTO.setMessage("流心跳失败,请稍后重试!");
+ return respDTO;
+ }
+ return ResponseDataDTO.success(object);
+ }
+}
\ No newline at end of file
diff --git a/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/AvDeviceDTO.java b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/AvDeviceDTO.java
new file mode 100644
index 0000000..97bde9f
--- /dev/null
+++ b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/AvDeviceDTO.java
@@ -0,0 +1,49 @@
+package com.casic.missiles.modular.device.dto;
+
+import com.alibaba.fastjson.annotation.JSONField;
+import lombok.Data;
+
+/**
+ * 艾薇设备对象DTO
+ */
+@Data
+public class AvDeviceDTO {
+ // 设备ID
+ private Long id;
+
+ // 设备名称
+ private String name;
+
+ // 设备唯一国标序列号
+ private String sn;
+
+ // 设备类型
+ private Integer type;
+
+ // 设备版本号
+ private String version;
+
+ // 安全等级
+ @JSONField(name = "secure_level")
+ private String secureLevel;
+
+ // 设备状态
+ private Integer status;
+
+ // 云台类型
+ private Integer ptzType;
+
+ // 朝向
+ private Integer orientation;
+
+ // 创建时间
+ @JSONField(name = "gmt_created")
+ private String gmtCreated;
+
+ // 修改时间
+ @JSONField(name = "gmt_modified")
+ private String gmtModified;
+
+ // 数据状态
+ private Integer state;
+}
diff --git a/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/AvPageResponse.java b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/AvPageResponse.java
new file mode 100644
index 0000000..9a05183
--- /dev/null
+++ b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/AvPageResponse.java
@@ -0,0 +1,10 @@
+package com.casic.missiles.modular.device.dto;
+
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class AvPageResponse {
+ private List items;
+}
diff --git a/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/DeviceRelationshipDTO.java b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/DeviceRelationshipDTO.java
new file mode 100644
index 0000000..098dda4
--- /dev/null
+++ b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/DeviceRelationshipDTO.java
@@ -0,0 +1,12 @@
+package com.casic.missiles.modular.device.dto;
+
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class DeviceRelationshipDTO {
+ private Long user_id;
+ private String device_list;
+ private List deviceList;
+}
diff --git a/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/page/AvPageRep.java b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/page/AvPageRep.java
new file mode 100644
index 0000000..74e6a9b
--- /dev/null
+++ b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/page/AvPageRep.java
@@ -0,0 +1,9 @@
+package com.casic.missiles.modular.device.dto.page;
+
+import lombok.Data;
+
+@Data
+public class AvPageRep {
+ private Integer total;
+ private T list;
+}
diff --git a/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/page/AvPageRequest.java b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/page/AvPageRequest.java
new file mode 100644
index 0000000..900ae4a
--- /dev/null
+++ b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/page/AvPageRequest.java
@@ -0,0 +1,14 @@
+package com.casic.missiles.modular.device.dto.page;
+
+import lombok.Data;
+
+/**
+ * 分页请求DTO
+ */
+@Data
+public class AvPageRequest {
+ private int page;
+ private int paging;
+ private int limit;
+
+}
diff --git a/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/page/AvResponseDTO.java b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/page/AvResponseDTO.java
new file mode 100644
index 0000000..f1c1e7a
--- /dev/null
+++ b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/page/AvResponseDTO.java
@@ -0,0 +1,15 @@
+package com.casic.missiles.modular.device.dto.page;
+
+import lombok.Data;
+
+/**
+ * mvp返回基类封装
+ *
+ * @param
+ */
+@Data
+public class AvResponseDTO {
+ private T data;
+ private Integer code;
+ private String msg;
+}
diff --git a/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/stream/StreamRequestDTO.java b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/stream/StreamRequestDTO.java
new file mode 100644
index 0000000..69e88ce
--- /dev/null
+++ b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/stream/StreamRequestDTO.java
@@ -0,0 +1,12 @@
+package com.casic.missiles.modular.device.dto.stream;
+
+import lombok.Data;
+
+@Data
+public class StreamRequestDTO {
+ private String device_id;
+ private String stream_type;
+ private String quality;
+ private int from;
+ private int to;
+}
diff --git a/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/stream/StreamStopRequestDTO.java b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/stream/StreamStopRequestDTO.java
new file mode 100644
index 0000000..9cf94b1
--- /dev/null
+++ b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/stream/StreamStopRequestDTO.java
@@ -0,0 +1,11 @@
+package com.casic.missiles.modular.device.dto.stream;
+
+import lombok.Data;
+
+@Data
+public class StreamStopRequestDTO {
+ private String id;
+ private String type;
+ private StreamRequestDTO request;
+ private String url;
+}
diff --git a/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/enums/AvDataStateEnum.java b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/enums/AvDataStateEnum.java
new file mode 100644
index 0000000..e1a6658
--- /dev/null
+++ b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/enums/AvDataStateEnum.java
@@ -0,0 +1,72 @@
+package com.casic.missiles.modular.device.enums;
+
+/**
+ * 数据状态
+ *
+ * @author lwh
+ * @Date 2017年1月10日 下午9:54:13
+ */
+public enum AvDataStateEnum {
+
+ TYPE0(0, "有效",0),
+ DEL(1, "无效",1);
+
+ Integer code;
+ String message;
+ Integer type;
+ AvDataStateEnum(Integer code, String message, Integer type) {
+ this.code = code;
+ this.message = message;
+ this.type = type;
+ }
+
+ public Integer getCode() {
+ return code;
+ }
+
+ public void setCode(Integer code) {
+ this.code = code;
+ }
+
+ public String getMessage() {
+ return message;
+ }
+
+ public void setMessage(String message) {
+ this.message = message;
+ }
+
+ public Integer getType() {
+ return type;
+ }
+
+ public void setType(Integer type) {
+ this.type = type;
+ }
+
+ public static String valueOfs(Integer value) {
+ if (value == null) {
+ return "";
+ } else {
+ for (AvDataStateEnum ms : AvDataStateEnum.values()) {
+ if (ms.getCode().equals(value)) {
+ return ms.getMessage();
+ }
+ }
+ return "";
+ }
+ }
+
+ public static AvDataStateEnum valueOfType(Integer value) {
+ if (value == null) {
+ return TYPE0;
+ } else {
+ for (AvDataStateEnum ms : AvDataStateEnum.values()) {
+ if (ms.getCode().equals(value)) {
+ return ms;
+ }
+ }
+ return TYPE0;
+ }
+ }
+}
diff --git a/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/enums/AvPtzTypeEnum.java b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/enums/AvPtzTypeEnum.java
new file mode 100644
index 0000000..fdcb08d
--- /dev/null
+++ b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/enums/AvPtzTypeEnum.java
@@ -0,0 +1,73 @@
+package com.casic.missiles.modular.device.enums;
+
+/**
+ * wvp设备类型转换
+ *
+ * @author lwh
+ * @Date 2017年1月10日 下午9:54:13
+ */
+public enum AvPtzTypeEnum {
+
+ TYPE0(0, "枪机",0),
+ TYPE1(1, "半球",1),
+ TYPE2(2, "球机",2);
+
+ Integer code;
+ String message;
+ Integer type;
+ AvPtzTypeEnum(Integer code, String message, Integer type) {
+ this.code = code;
+ this.message = message;
+ this.type = type;
+ }
+
+ public Integer getCode() {
+ return code;
+ }
+
+ public void setCode(Integer code) {
+ this.code = code;
+ }
+
+ public String getMessage() {
+ return message;
+ }
+
+ public void setMessage(String message) {
+ this.message = message;
+ }
+
+ public Integer getType() {
+ return type;
+ }
+
+ public void setType(Integer type) {
+ this.type = type;
+ }
+
+ public static String valueOfs(Integer value) {
+ if (value == null) {
+ return "";
+ } else {
+ for (AvPtzTypeEnum ms : AvPtzTypeEnum.values()) {
+ if (ms.getCode().equals(value)) {
+ return ms.getMessage();
+ }
+ }
+ return "";
+ }
+ }
+
+ public static AvPtzTypeEnum valueOfType(Integer value) {
+ if (value == null) {
+ return TYPE0;
+ } else {
+ for (AvPtzTypeEnum ms : AvPtzTypeEnum.values()) {
+ if (ms.getCode().equals(value)) {
+ return ms;
+ }
+ }
+ return TYPE0;
+ }
+ }
+}
diff --git a/README.md b/README.md
index 430796e..8dbc9a5 100644
--- a/README.md
+++ b/README.md
@@ -9,3 +9,7 @@
#### 其他
>* [git地址](http://192.168.0.203:8080/gitbucket)
>* [本地免登地址](http://localhost:8083/route/mockToken)
+
+AView 对接问题
+1.用户设备关联关系
+ 对应返回 device_list是否为设备国标号
\ No newline at end of file
diff --git a/casic-device-sync/casic-device-aview/pom.xml b/casic-device-sync/casic-device-aview/pom.xml
index 0a3c5fa..94fb9e5 100644
--- a/casic-device-sync/casic-device-aview/pom.xml
+++ b/casic-device-sync/casic-device-aview/pom.xml
@@ -33,6 +33,21 @@
${boot.version}
provided
+
+ com.casic
+ casic-http
+ ${core.version}
+
+
+ com.casic
+ casic-admin-group
+ ${admin.version}
+
+
+ com.casic
+ casic-server
+ ${pro.version}
+
diff --git a/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/controller/AvRouteController.java b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/controller/AvRouteController.java
new file mode 100644
index 0000000..195cba2
--- /dev/null
+++ b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/controller/AvRouteController.java
@@ -0,0 +1,45 @@
+package com.casic.missiles.modular.device.controller;
+
+import com.casic.missiles.model.response.dto.ResponseDataDTO;
+import com.casic.missiles.modular.device.dto.stream.StreamRequestDTO;
+import com.casic.missiles.modular.device.service.IAvSyncService;
+import io.swagger.annotations.Api;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+
+@Api(tags = "AV平台代理接口")
+@RestController
+@RequestMapping("/route")
+public class AvRouteController {
+ @Resource
+ private IAvSyncService avSyncService;
+
+ @PostMapping("/open/v1/api/streams")
+ public Object streams(@RequestBody StreamRequestDTO requestDTO) {
+ Object object = avSyncService.getStreams(requestDTO);
+ if (object == null) {
+ ResponseDataDTO respDTO = ResponseDataDTO.error("流读取失败,请稍后重试!");
+ respDTO.setMessage("流读取失败,请稍后重试!");
+ return respDTO;
+ }
+ return ResponseDataDTO.success(avSyncService.getStreams(requestDTO));
+ }
+
+ @DeleteMapping("/open/v1/api/streams/{id}")
+ public Object stopStreams(@PathVariable("id") String id) {
+ Object object = avSyncService.stopStreams(id);
+ return ResponseDataDTO.success(object);
+ }
+
+ @PostMapping("/open/v1/api/streams/{id}/heart")
+ public Object heart(@PathVariable("id") String id) {
+ Object object = avSyncService.heart(id);
+ if (object == null) {
+ ResponseDataDTO respDTO = ResponseDataDTO.error("流心跳失败,请稍后重试!");
+ respDTO.setMessage("流心跳失败,请稍后重试!");
+ return respDTO;
+ }
+ return ResponseDataDTO.success(object);
+ }
+}
\ No newline at end of file
diff --git a/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/AvDeviceDTO.java b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/AvDeviceDTO.java
new file mode 100644
index 0000000..97bde9f
--- /dev/null
+++ b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/AvDeviceDTO.java
@@ -0,0 +1,49 @@
+package com.casic.missiles.modular.device.dto;
+
+import com.alibaba.fastjson.annotation.JSONField;
+import lombok.Data;
+
+/**
+ * 艾薇设备对象DTO
+ */
+@Data
+public class AvDeviceDTO {
+ // 设备ID
+ private Long id;
+
+ // 设备名称
+ private String name;
+
+ // 设备唯一国标序列号
+ private String sn;
+
+ // 设备类型
+ private Integer type;
+
+ // 设备版本号
+ private String version;
+
+ // 安全等级
+ @JSONField(name = "secure_level")
+ private String secureLevel;
+
+ // 设备状态
+ private Integer status;
+
+ // 云台类型
+ private Integer ptzType;
+
+ // 朝向
+ private Integer orientation;
+
+ // 创建时间
+ @JSONField(name = "gmt_created")
+ private String gmtCreated;
+
+ // 修改时间
+ @JSONField(name = "gmt_modified")
+ private String gmtModified;
+
+ // 数据状态
+ private Integer state;
+}
diff --git a/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/AvPageResponse.java b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/AvPageResponse.java
new file mode 100644
index 0000000..9a05183
--- /dev/null
+++ b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/AvPageResponse.java
@@ -0,0 +1,10 @@
+package com.casic.missiles.modular.device.dto;
+
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class AvPageResponse {
+ private List items;
+}
diff --git a/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/DeviceRelationshipDTO.java b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/DeviceRelationshipDTO.java
new file mode 100644
index 0000000..098dda4
--- /dev/null
+++ b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/DeviceRelationshipDTO.java
@@ -0,0 +1,12 @@
+package com.casic.missiles.modular.device.dto;
+
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class DeviceRelationshipDTO {
+ private Long user_id;
+ private String device_list;
+ private List deviceList;
+}
diff --git a/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/page/AvPageRep.java b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/page/AvPageRep.java
new file mode 100644
index 0000000..74e6a9b
--- /dev/null
+++ b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/page/AvPageRep.java
@@ -0,0 +1,9 @@
+package com.casic.missiles.modular.device.dto.page;
+
+import lombok.Data;
+
+@Data
+public class AvPageRep {
+ private Integer total;
+ private T list;
+}
diff --git a/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/page/AvPageRequest.java b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/page/AvPageRequest.java
new file mode 100644
index 0000000..900ae4a
--- /dev/null
+++ b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/page/AvPageRequest.java
@@ -0,0 +1,14 @@
+package com.casic.missiles.modular.device.dto.page;
+
+import lombok.Data;
+
+/**
+ * 分页请求DTO
+ */
+@Data
+public class AvPageRequest {
+ private int page;
+ private int paging;
+ private int limit;
+
+}
diff --git a/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/page/AvResponseDTO.java b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/page/AvResponseDTO.java
new file mode 100644
index 0000000..f1c1e7a
--- /dev/null
+++ b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/page/AvResponseDTO.java
@@ -0,0 +1,15 @@
+package com.casic.missiles.modular.device.dto.page;
+
+import lombok.Data;
+
+/**
+ * mvp返回基类封装
+ *
+ * @param
+ */
+@Data
+public class AvResponseDTO {
+ private T data;
+ private Integer code;
+ private String msg;
+}
diff --git a/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/stream/StreamRequestDTO.java b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/stream/StreamRequestDTO.java
new file mode 100644
index 0000000..69e88ce
--- /dev/null
+++ b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/stream/StreamRequestDTO.java
@@ -0,0 +1,12 @@
+package com.casic.missiles.modular.device.dto.stream;
+
+import lombok.Data;
+
+@Data
+public class StreamRequestDTO {
+ private String device_id;
+ private String stream_type;
+ private String quality;
+ private int from;
+ private int to;
+}
diff --git a/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/stream/StreamStopRequestDTO.java b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/stream/StreamStopRequestDTO.java
new file mode 100644
index 0000000..9cf94b1
--- /dev/null
+++ b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/stream/StreamStopRequestDTO.java
@@ -0,0 +1,11 @@
+package com.casic.missiles.modular.device.dto.stream;
+
+import lombok.Data;
+
+@Data
+public class StreamStopRequestDTO {
+ private String id;
+ private String type;
+ private StreamRequestDTO request;
+ private String url;
+}
diff --git a/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/enums/AvDataStateEnum.java b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/enums/AvDataStateEnum.java
new file mode 100644
index 0000000..e1a6658
--- /dev/null
+++ b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/enums/AvDataStateEnum.java
@@ -0,0 +1,72 @@
+package com.casic.missiles.modular.device.enums;
+
+/**
+ * 数据状态
+ *
+ * @author lwh
+ * @Date 2017年1月10日 下午9:54:13
+ */
+public enum AvDataStateEnum {
+
+ TYPE0(0, "有效",0),
+ DEL(1, "无效",1);
+
+ Integer code;
+ String message;
+ Integer type;
+ AvDataStateEnum(Integer code, String message, Integer type) {
+ this.code = code;
+ this.message = message;
+ this.type = type;
+ }
+
+ public Integer getCode() {
+ return code;
+ }
+
+ public void setCode(Integer code) {
+ this.code = code;
+ }
+
+ public String getMessage() {
+ return message;
+ }
+
+ public void setMessage(String message) {
+ this.message = message;
+ }
+
+ public Integer getType() {
+ return type;
+ }
+
+ public void setType(Integer type) {
+ this.type = type;
+ }
+
+ public static String valueOfs(Integer value) {
+ if (value == null) {
+ return "";
+ } else {
+ for (AvDataStateEnum ms : AvDataStateEnum.values()) {
+ if (ms.getCode().equals(value)) {
+ return ms.getMessage();
+ }
+ }
+ return "";
+ }
+ }
+
+ public static AvDataStateEnum valueOfType(Integer value) {
+ if (value == null) {
+ return TYPE0;
+ } else {
+ for (AvDataStateEnum ms : AvDataStateEnum.values()) {
+ if (ms.getCode().equals(value)) {
+ return ms;
+ }
+ }
+ return TYPE0;
+ }
+ }
+}
diff --git a/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/enums/AvPtzTypeEnum.java b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/enums/AvPtzTypeEnum.java
new file mode 100644
index 0000000..fdcb08d
--- /dev/null
+++ b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/enums/AvPtzTypeEnum.java
@@ -0,0 +1,73 @@
+package com.casic.missiles.modular.device.enums;
+
+/**
+ * wvp设备类型转换
+ *
+ * @author lwh
+ * @Date 2017年1月10日 下午9:54:13
+ */
+public enum AvPtzTypeEnum {
+
+ TYPE0(0, "枪机",0),
+ TYPE1(1, "半球",1),
+ TYPE2(2, "球机",2);
+
+ Integer code;
+ String message;
+ Integer type;
+ AvPtzTypeEnum(Integer code, String message, Integer type) {
+ this.code = code;
+ this.message = message;
+ this.type = type;
+ }
+
+ public Integer getCode() {
+ return code;
+ }
+
+ public void setCode(Integer code) {
+ this.code = code;
+ }
+
+ public String getMessage() {
+ return message;
+ }
+
+ public void setMessage(String message) {
+ this.message = message;
+ }
+
+ public Integer getType() {
+ return type;
+ }
+
+ public void setType(Integer type) {
+ this.type = type;
+ }
+
+ public static String valueOfs(Integer value) {
+ if (value == null) {
+ return "";
+ } else {
+ for (AvPtzTypeEnum ms : AvPtzTypeEnum.values()) {
+ if (ms.getCode().equals(value)) {
+ return ms.getMessage();
+ }
+ }
+ return "";
+ }
+ }
+
+ public static AvPtzTypeEnum valueOfType(Integer value) {
+ if (value == null) {
+ return TYPE0;
+ } else {
+ for (AvPtzTypeEnum ms : AvPtzTypeEnum.values()) {
+ if (ms.getCode().equals(value)) {
+ return ms;
+ }
+ }
+ return TYPE0;
+ }
+ }
+}
diff --git a/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/enums/AvSecretLevelEnum.java b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/enums/AvSecretLevelEnum.java
new file mode 100644
index 0000000..39e8524
--- /dev/null
+++ b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/enums/AvSecretLevelEnum.java
@@ -0,0 +1,60 @@
+package com.casic.missiles.modular.device.enums;
+
+/**
+ * Av主数据密集对应关系枚举
+ *
+ * @author lwh
+ * @Date 2017年1月10日 下午9:54:13
+ */
+public enum AvSecretLevelEnum {
+ s("999", "未定密", 999, "未定密"),
+ s0("0", "公开", 0, "公开"),
+ s1("1", "内部", 1, "内部"),
+ s2("2", "秘密", 2, "秘密"),
+ s3("3", "机密", 3, "机密");
+
+ String code;
+ Integer currCode;
+ String message;
+ String currMsg;
+
+ AvSecretLevelEnum(String code, String message, Integer currCode, String currMsg) {
+ this.code = code;
+ this.currCode = currCode;
+ this.message = message;
+ this.currMsg = currMsg;
+ }
+
+ public Integer getCurrCode() {
+ return currCode;
+ }
+
+ public String getCode() {
+ return code;
+ }
+
+ public void setCode(String code) {
+ this.code = code;
+ }
+
+ public String getMessage() {
+ return message;
+ }
+
+ public void setMessage(String message) {
+ this.message = message;
+ }
+
+ public static AvSecretLevelEnum valueOfCode(String value) {
+ if (value == null) {
+ return s0;
+ } else {
+ for (AvSecretLevelEnum ms : AvSecretLevelEnum.values()) {
+ if (ms.getCode().equals(value)) {
+ return ms;
+ }
+ }
+ return s0;
+ }
+ }
+}
diff --git a/README.md b/README.md
index 430796e..8dbc9a5 100644
--- a/README.md
+++ b/README.md
@@ -9,3 +9,7 @@
#### 其他
>* [git地址](http://192.168.0.203:8080/gitbucket)
>* [本地免登地址](http://localhost:8083/route/mockToken)
+
+AView 对接问题
+1.用户设备关联关系
+ 对应返回 device_list是否为设备国标号
\ No newline at end of file
diff --git a/casic-device-sync/casic-device-aview/pom.xml b/casic-device-sync/casic-device-aview/pom.xml
index 0a3c5fa..94fb9e5 100644
--- a/casic-device-sync/casic-device-aview/pom.xml
+++ b/casic-device-sync/casic-device-aview/pom.xml
@@ -33,6 +33,21 @@
${boot.version}
provided
+
+ com.casic
+ casic-http
+ ${core.version}
+
+
+ com.casic
+ casic-admin-group
+ ${admin.version}
+
+
+ com.casic
+ casic-server
+ ${pro.version}
+
diff --git a/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/controller/AvRouteController.java b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/controller/AvRouteController.java
new file mode 100644
index 0000000..195cba2
--- /dev/null
+++ b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/controller/AvRouteController.java
@@ -0,0 +1,45 @@
+package com.casic.missiles.modular.device.controller;
+
+import com.casic.missiles.model.response.dto.ResponseDataDTO;
+import com.casic.missiles.modular.device.dto.stream.StreamRequestDTO;
+import com.casic.missiles.modular.device.service.IAvSyncService;
+import io.swagger.annotations.Api;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+
+@Api(tags = "AV平台代理接口")
+@RestController
+@RequestMapping("/route")
+public class AvRouteController {
+ @Resource
+ private IAvSyncService avSyncService;
+
+ @PostMapping("/open/v1/api/streams")
+ public Object streams(@RequestBody StreamRequestDTO requestDTO) {
+ Object object = avSyncService.getStreams(requestDTO);
+ if (object == null) {
+ ResponseDataDTO respDTO = ResponseDataDTO.error("流读取失败,请稍后重试!");
+ respDTO.setMessage("流读取失败,请稍后重试!");
+ return respDTO;
+ }
+ return ResponseDataDTO.success(avSyncService.getStreams(requestDTO));
+ }
+
+ @DeleteMapping("/open/v1/api/streams/{id}")
+ public Object stopStreams(@PathVariable("id") String id) {
+ Object object = avSyncService.stopStreams(id);
+ return ResponseDataDTO.success(object);
+ }
+
+ @PostMapping("/open/v1/api/streams/{id}/heart")
+ public Object heart(@PathVariable("id") String id) {
+ Object object = avSyncService.heart(id);
+ if (object == null) {
+ ResponseDataDTO respDTO = ResponseDataDTO.error("流心跳失败,请稍后重试!");
+ respDTO.setMessage("流心跳失败,请稍后重试!");
+ return respDTO;
+ }
+ return ResponseDataDTO.success(object);
+ }
+}
\ No newline at end of file
diff --git a/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/AvDeviceDTO.java b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/AvDeviceDTO.java
new file mode 100644
index 0000000..97bde9f
--- /dev/null
+++ b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/AvDeviceDTO.java
@@ -0,0 +1,49 @@
+package com.casic.missiles.modular.device.dto;
+
+import com.alibaba.fastjson.annotation.JSONField;
+import lombok.Data;
+
+/**
+ * 艾薇设备对象DTO
+ */
+@Data
+public class AvDeviceDTO {
+ // 设备ID
+ private Long id;
+
+ // 设备名称
+ private String name;
+
+ // 设备唯一国标序列号
+ private String sn;
+
+ // 设备类型
+ private Integer type;
+
+ // 设备版本号
+ private String version;
+
+ // 安全等级
+ @JSONField(name = "secure_level")
+ private String secureLevel;
+
+ // 设备状态
+ private Integer status;
+
+ // 云台类型
+ private Integer ptzType;
+
+ // 朝向
+ private Integer orientation;
+
+ // 创建时间
+ @JSONField(name = "gmt_created")
+ private String gmtCreated;
+
+ // 修改时间
+ @JSONField(name = "gmt_modified")
+ private String gmtModified;
+
+ // 数据状态
+ private Integer state;
+}
diff --git a/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/AvPageResponse.java b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/AvPageResponse.java
new file mode 100644
index 0000000..9a05183
--- /dev/null
+++ b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/AvPageResponse.java
@@ -0,0 +1,10 @@
+package com.casic.missiles.modular.device.dto;
+
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class AvPageResponse {
+ private List items;
+}
diff --git a/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/DeviceRelationshipDTO.java b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/DeviceRelationshipDTO.java
new file mode 100644
index 0000000..098dda4
--- /dev/null
+++ b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/DeviceRelationshipDTO.java
@@ -0,0 +1,12 @@
+package com.casic.missiles.modular.device.dto;
+
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class DeviceRelationshipDTO {
+ private Long user_id;
+ private String device_list;
+ private List deviceList;
+}
diff --git a/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/page/AvPageRep.java b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/page/AvPageRep.java
new file mode 100644
index 0000000..74e6a9b
--- /dev/null
+++ b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/page/AvPageRep.java
@@ -0,0 +1,9 @@
+package com.casic.missiles.modular.device.dto.page;
+
+import lombok.Data;
+
+@Data
+public class AvPageRep {
+ private Integer total;
+ private T list;
+}
diff --git a/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/page/AvPageRequest.java b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/page/AvPageRequest.java
new file mode 100644
index 0000000..900ae4a
--- /dev/null
+++ b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/page/AvPageRequest.java
@@ -0,0 +1,14 @@
+package com.casic.missiles.modular.device.dto.page;
+
+import lombok.Data;
+
+/**
+ * 分页请求DTO
+ */
+@Data
+public class AvPageRequest {
+ private int page;
+ private int paging;
+ private int limit;
+
+}
diff --git a/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/page/AvResponseDTO.java b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/page/AvResponseDTO.java
new file mode 100644
index 0000000..f1c1e7a
--- /dev/null
+++ b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/page/AvResponseDTO.java
@@ -0,0 +1,15 @@
+package com.casic.missiles.modular.device.dto.page;
+
+import lombok.Data;
+
+/**
+ * mvp返回基类封装
+ *
+ * @param
+ */
+@Data
+public class AvResponseDTO {
+ private T data;
+ private Integer code;
+ private String msg;
+}
diff --git a/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/stream/StreamRequestDTO.java b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/stream/StreamRequestDTO.java
new file mode 100644
index 0000000..69e88ce
--- /dev/null
+++ b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/stream/StreamRequestDTO.java
@@ -0,0 +1,12 @@
+package com.casic.missiles.modular.device.dto.stream;
+
+import lombok.Data;
+
+@Data
+public class StreamRequestDTO {
+ private String device_id;
+ private String stream_type;
+ private String quality;
+ private int from;
+ private int to;
+}
diff --git a/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/stream/StreamStopRequestDTO.java b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/stream/StreamStopRequestDTO.java
new file mode 100644
index 0000000..9cf94b1
--- /dev/null
+++ b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/stream/StreamStopRequestDTO.java
@@ -0,0 +1,11 @@
+package com.casic.missiles.modular.device.dto.stream;
+
+import lombok.Data;
+
+@Data
+public class StreamStopRequestDTO {
+ private String id;
+ private String type;
+ private StreamRequestDTO request;
+ private String url;
+}
diff --git a/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/enums/AvDataStateEnum.java b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/enums/AvDataStateEnum.java
new file mode 100644
index 0000000..e1a6658
--- /dev/null
+++ b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/enums/AvDataStateEnum.java
@@ -0,0 +1,72 @@
+package com.casic.missiles.modular.device.enums;
+
+/**
+ * 数据状态
+ *
+ * @author lwh
+ * @Date 2017年1月10日 下午9:54:13
+ */
+public enum AvDataStateEnum {
+
+ TYPE0(0, "有效",0),
+ DEL(1, "无效",1);
+
+ Integer code;
+ String message;
+ Integer type;
+ AvDataStateEnum(Integer code, String message, Integer type) {
+ this.code = code;
+ this.message = message;
+ this.type = type;
+ }
+
+ public Integer getCode() {
+ return code;
+ }
+
+ public void setCode(Integer code) {
+ this.code = code;
+ }
+
+ public String getMessage() {
+ return message;
+ }
+
+ public void setMessage(String message) {
+ this.message = message;
+ }
+
+ public Integer getType() {
+ return type;
+ }
+
+ public void setType(Integer type) {
+ this.type = type;
+ }
+
+ public static String valueOfs(Integer value) {
+ if (value == null) {
+ return "";
+ } else {
+ for (AvDataStateEnum ms : AvDataStateEnum.values()) {
+ if (ms.getCode().equals(value)) {
+ return ms.getMessage();
+ }
+ }
+ return "";
+ }
+ }
+
+ public static AvDataStateEnum valueOfType(Integer value) {
+ if (value == null) {
+ return TYPE0;
+ } else {
+ for (AvDataStateEnum ms : AvDataStateEnum.values()) {
+ if (ms.getCode().equals(value)) {
+ return ms;
+ }
+ }
+ return TYPE0;
+ }
+ }
+}
diff --git a/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/enums/AvPtzTypeEnum.java b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/enums/AvPtzTypeEnum.java
new file mode 100644
index 0000000..fdcb08d
--- /dev/null
+++ b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/enums/AvPtzTypeEnum.java
@@ -0,0 +1,73 @@
+package com.casic.missiles.modular.device.enums;
+
+/**
+ * wvp设备类型转换
+ *
+ * @author lwh
+ * @Date 2017年1月10日 下午9:54:13
+ */
+public enum AvPtzTypeEnum {
+
+ TYPE0(0, "枪机",0),
+ TYPE1(1, "半球",1),
+ TYPE2(2, "球机",2);
+
+ Integer code;
+ String message;
+ Integer type;
+ AvPtzTypeEnum(Integer code, String message, Integer type) {
+ this.code = code;
+ this.message = message;
+ this.type = type;
+ }
+
+ public Integer getCode() {
+ return code;
+ }
+
+ public void setCode(Integer code) {
+ this.code = code;
+ }
+
+ public String getMessage() {
+ return message;
+ }
+
+ public void setMessage(String message) {
+ this.message = message;
+ }
+
+ public Integer getType() {
+ return type;
+ }
+
+ public void setType(Integer type) {
+ this.type = type;
+ }
+
+ public static String valueOfs(Integer value) {
+ if (value == null) {
+ return "";
+ } else {
+ for (AvPtzTypeEnum ms : AvPtzTypeEnum.values()) {
+ if (ms.getCode().equals(value)) {
+ return ms.getMessage();
+ }
+ }
+ return "";
+ }
+ }
+
+ public static AvPtzTypeEnum valueOfType(Integer value) {
+ if (value == null) {
+ return TYPE0;
+ } else {
+ for (AvPtzTypeEnum ms : AvPtzTypeEnum.values()) {
+ if (ms.getCode().equals(value)) {
+ return ms;
+ }
+ }
+ return TYPE0;
+ }
+ }
+}
diff --git a/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/enums/AvSecretLevelEnum.java b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/enums/AvSecretLevelEnum.java
new file mode 100644
index 0000000..39e8524
--- /dev/null
+++ b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/enums/AvSecretLevelEnum.java
@@ -0,0 +1,60 @@
+package com.casic.missiles.modular.device.enums;
+
+/**
+ * Av主数据密集对应关系枚举
+ *
+ * @author lwh
+ * @Date 2017年1月10日 下午9:54:13
+ */
+public enum AvSecretLevelEnum {
+ s("999", "未定密", 999, "未定密"),
+ s0("0", "公开", 0, "公开"),
+ s1("1", "内部", 1, "内部"),
+ s2("2", "秘密", 2, "秘密"),
+ s3("3", "机密", 3, "机密");
+
+ String code;
+ Integer currCode;
+ String message;
+ String currMsg;
+
+ AvSecretLevelEnum(String code, String message, Integer currCode, String currMsg) {
+ this.code = code;
+ this.currCode = currCode;
+ this.message = message;
+ this.currMsg = currMsg;
+ }
+
+ public Integer getCurrCode() {
+ return currCode;
+ }
+
+ public String getCode() {
+ return code;
+ }
+
+ public void setCode(String code) {
+ this.code = code;
+ }
+
+ public String getMessage() {
+ return message;
+ }
+
+ public void setMessage(String message) {
+ this.message = message;
+ }
+
+ public static AvSecretLevelEnum valueOfCode(String value) {
+ if (value == null) {
+ return s0;
+ } else {
+ for (AvSecretLevelEnum ms : AvSecretLevelEnum.values()) {
+ if (ms.getCode().equals(value)) {
+ return ms;
+ }
+ }
+ return s0;
+ }
+ }
+}
diff --git a/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/enums/AvStatusTypeEnum.java b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/enums/AvStatusTypeEnum.java
new file mode 100644
index 0000000..ddccd52
--- /dev/null
+++ b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/enums/AvStatusTypeEnum.java
@@ -0,0 +1,72 @@
+package com.casic.missiles.modular.device.enums;
+
+/**
+ * wvp设备类型转换
+ *
+ * @author lwh
+ * @Date 2017年1月10日 下午9:54:13
+ */
+public enum AvStatusTypeEnum {
+
+ TYPE0(0, "离线",0),
+ TYPE1(1, "在线",1);
+
+ Integer code;
+ String message;
+ Integer type;
+ AvStatusTypeEnum(Integer code, String message, Integer type) {
+ this.code = code;
+ this.message = message;
+ this.type = type;
+ }
+
+ public Integer getCode() {
+ return code;
+ }
+
+ public void setCode(Integer code) {
+ this.code = code;
+ }
+
+ public String getMessage() {
+ return message;
+ }
+
+ public void setMessage(String message) {
+ this.message = message;
+ }
+
+ public Integer getType() {
+ return type;
+ }
+
+ public void setType(Integer type) {
+ this.type = type;
+ }
+
+ public static String valueOfs(Integer value) {
+ if (value == null) {
+ return "";
+ } else {
+ for (AvStatusTypeEnum ms : AvStatusTypeEnum.values()) {
+ if (ms.getCode().equals(value)) {
+ return ms.getMessage();
+ }
+ }
+ return "";
+ }
+ }
+
+ public static AvStatusTypeEnum valueOfType(Integer value) {
+ if (value == null) {
+ return TYPE0;
+ } else {
+ for (AvStatusTypeEnum ms : AvStatusTypeEnum.values()) {
+ if (ms.getCode().equals(value)) {
+ return ms;
+ }
+ }
+ return TYPE0;
+ }
+ }
+}
diff --git a/README.md b/README.md
index 430796e..8dbc9a5 100644
--- a/README.md
+++ b/README.md
@@ -9,3 +9,7 @@
#### 其他
>* [git地址](http://192.168.0.203:8080/gitbucket)
>* [本地免登地址](http://localhost:8083/route/mockToken)
+
+AView 对接问题
+1.用户设备关联关系
+ 对应返回 device_list是否为设备国标号
\ No newline at end of file
diff --git a/casic-device-sync/casic-device-aview/pom.xml b/casic-device-sync/casic-device-aview/pom.xml
index 0a3c5fa..94fb9e5 100644
--- a/casic-device-sync/casic-device-aview/pom.xml
+++ b/casic-device-sync/casic-device-aview/pom.xml
@@ -33,6 +33,21 @@
${boot.version}
provided
+
+ com.casic
+ casic-http
+ ${core.version}
+
+
+ com.casic
+ casic-admin-group
+ ${admin.version}
+
+
+ com.casic
+ casic-server
+ ${pro.version}
+
diff --git a/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/controller/AvRouteController.java b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/controller/AvRouteController.java
new file mode 100644
index 0000000..195cba2
--- /dev/null
+++ b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/controller/AvRouteController.java
@@ -0,0 +1,45 @@
+package com.casic.missiles.modular.device.controller;
+
+import com.casic.missiles.model.response.dto.ResponseDataDTO;
+import com.casic.missiles.modular.device.dto.stream.StreamRequestDTO;
+import com.casic.missiles.modular.device.service.IAvSyncService;
+import io.swagger.annotations.Api;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+
+@Api(tags = "AV平台代理接口")
+@RestController
+@RequestMapping("/route")
+public class AvRouteController {
+ @Resource
+ private IAvSyncService avSyncService;
+
+ @PostMapping("/open/v1/api/streams")
+ public Object streams(@RequestBody StreamRequestDTO requestDTO) {
+ Object object = avSyncService.getStreams(requestDTO);
+ if (object == null) {
+ ResponseDataDTO respDTO = ResponseDataDTO.error("流读取失败,请稍后重试!");
+ respDTO.setMessage("流读取失败,请稍后重试!");
+ return respDTO;
+ }
+ return ResponseDataDTO.success(avSyncService.getStreams(requestDTO));
+ }
+
+ @DeleteMapping("/open/v1/api/streams/{id}")
+ public Object stopStreams(@PathVariable("id") String id) {
+ Object object = avSyncService.stopStreams(id);
+ return ResponseDataDTO.success(object);
+ }
+
+ @PostMapping("/open/v1/api/streams/{id}/heart")
+ public Object heart(@PathVariable("id") String id) {
+ Object object = avSyncService.heart(id);
+ if (object == null) {
+ ResponseDataDTO respDTO = ResponseDataDTO.error("流心跳失败,请稍后重试!");
+ respDTO.setMessage("流心跳失败,请稍后重试!");
+ return respDTO;
+ }
+ return ResponseDataDTO.success(object);
+ }
+}
\ No newline at end of file
diff --git a/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/AvDeviceDTO.java b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/AvDeviceDTO.java
new file mode 100644
index 0000000..97bde9f
--- /dev/null
+++ b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/AvDeviceDTO.java
@@ -0,0 +1,49 @@
+package com.casic.missiles.modular.device.dto;
+
+import com.alibaba.fastjson.annotation.JSONField;
+import lombok.Data;
+
+/**
+ * 艾薇设备对象DTO
+ */
+@Data
+public class AvDeviceDTO {
+ // 设备ID
+ private Long id;
+
+ // 设备名称
+ private String name;
+
+ // 设备唯一国标序列号
+ private String sn;
+
+ // 设备类型
+ private Integer type;
+
+ // 设备版本号
+ private String version;
+
+ // 安全等级
+ @JSONField(name = "secure_level")
+ private String secureLevel;
+
+ // 设备状态
+ private Integer status;
+
+ // 云台类型
+ private Integer ptzType;
+
+ // 朝向
+ private Integer orientation;
+
+ // 创建时间
+ @JSONField(name = "gmt_created")
+ private String gmtCreated;
+
+ // 修改时间
+ @JSONField(name = "gmt_modified")
+ private String gmtModified;
+
+ // 数据状态
+ private Integer state;
+}
diff --git a/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/AvPageResponse.java b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/AvPageResponse.java
new file mode 100644
index 0000000..9a05183
--- /dev/null
+++ b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/AvPageResponse.java
@@ -0,0 +1,10 @@
+package com.casic.missiles.modular.device.dto;
+
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class AvPageResponse {
+ private List items;
+}
diff --git a/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/DeviceRelationshipDTO.java b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/DeviceRelationshipDTO.java
new file mode 100644
index 0000000..098dda4
--- /dev/null
+++ b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/DeviceRelationshipDTO.java
@@ -0,0 +1,12 @@
+package com.casic.missiles.modular.device.dto;
+
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class DeviceRelationshipDTO {
+ private Long user_id;
+ private String device_list;
+ private List deviceList;
+}
diff --git a/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/page/AvPageRep.java b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/page/AvPageRep.java
new file mode 100644
index 0000000..74e6a9b
--- /dev/null
+++ b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/page/AvPageRep.java
@@ -0,0 +1,9 @@
+package com.casic.missiles.modular.device.dto.page;
+
+import lombok.Data;
+
+@Data
+public class AvPageRep {
+ private Integer total;
+ private T list;
+}
diff --git a/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/page/AvPageRequest.java b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/page/AvPageRequest.java
new file mode 100644
index 0000000..900ae4a
--- /dev/null
+++ b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/page/AvPageRequest.java
@@ -0,0 +1,14 @@
+package com.casic.missiles.modular.device.dto.page;
+
+import lombok.Data;
+
+/**
+ * 分页请求DTO
+ */
+@Data
+public class AvPageRequest {
+ private int page;
+ private int paging;
+ private int limit;
+
+}
diff --git a/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/page/AvResponseDTO.java b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/page/AvResponseDTO.java
new file mode 100644
index 0000000..f1c1e7a
--- /dev/null
+++ b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/page/AvResponseDTO.java
@@ -0,0 +1,15 @@
+package com.casic.missiles.modular.device.dto.page;
+
+import lombok.Data;
+
+/**
+ * mvp返回基类封装
+ *
+ * @param
+ */
+@Data
+public class AvResponseDTO {
+ private T data;
+ private Integer code;
+ private String msg;
+}
diff --git a/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/stream/StreamRequestDTO.java b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/stream/StreamRequestDTO.java
new file mode 100644
index 0000000..69e88ce
--- /dev/null
+++ b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/stream/StreamRequestDTO.java
@@ -0,0 +1,12 @@
+package com.casic.missiles.modular.device.dto.stream;
+
+import lombok.Data;
+
+@Data
+public class StreamRequestDTO {
+ private String device_id;
+ private String stream_type;
+ private String quality;
+ private int from;
+ private int to;
+}
diff --git a/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/stream/StreamStopRequestDTO.java b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/stream/StreamStopRequestDTO.java
new file mode 100644
index 0000000..9cf94b1
--- /dev/null
+++ b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/stream/StreamStopRequestDTO.java
@@ -0,0 +1,11 @@
+package com.casic.missiles.modular.device.dto.stream;
+
+import lombok.Data;
+
+@Data
+public class StreamStopRequestDTO {
+ private String id;
+ private String type;
+ private StreamRequestDTO request;
+ private String url;
+}
diff --git a/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/enums/AvDataStateEnum.java b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/enums/AvDataStateEnum.java
new file mode 100644
index 0000000..e1a6658
--- /dev/null
+++ b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/enums/AvDataStateEnum.java
@@ -0,0 +1,72 @@
+package com.casic.missiles.modular.device.enums;
+
+/**
+ * 数据状态
+ *
+ * @author lwh
+ * @Date 2017年1月10日 下午9:54:13
+ */
+public enum AvDataStateEnum {
+
+ TYPE0(0, "有效",0),
+ DEL(1, "无效",1);
+
+ Integer code;
+ String message;
+ Integer type;
+ AvDataStateEnum(Integer code, String message, Integer type) {
+ this.code = code;
+ this.message = message;
+ this.type = type;
+ }
+
+ public Integer getCode() {
+ return code;
+ }
+
+ public void setCode(Integer code) {
+ this.code = code;
+ }
+
+ public String getMessage() {
+ return message;
+ }
+
+ public void setMessage(String message) {
+ this.message = message;
+ }
+
+ public Integer getType() {
+ return type;
+ }
+
+ public void setType(Integer type) {
+ this.type = type;
+ }
+
+ public static String valueOfs(Integer value) {
+ if (value == null) {
+ return "";
+ } else {
+ for (AvDataStateEnum ms : AvDataStateEnum.values()) {
+ if (ms.getCode().equals(value)) {
+ return ms.getMessage();
+ }
+ }
+ return "";
+ }
+ }
+
+ public static AvDataStateEnum valueOfType(Integer value) {
+ if (value == null) {
+ return TYPE0;
+ } else {
+ for (AvDataStateEnum ms : AvDataStateEnum.values()) {
+ if (ms.getCode().equals(value)) {
+ return ms;
+ }
+ }
+ return TYPE0;
+ }
+ }
+}
diff --git a/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/enums/AvPtzTypeEnum.java b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/enums/AvPtzTypeEnum.java
new file mode 100644
index 0000000..fdcb08d
--- /dev/null
+++ b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/enums/AvPtzTypeEnum.java
@@ -0,0 +1,73 @@
+package com.casic.missiles.modular.device.enums;
+
+/**
+ * wvp设备类型转换
+ *
+ * @author lwh
+ * @Date 2017年1月10日 下午9:54:13
+ */
+public enum AvPtzTypeEnum {
+
+ TYPE0(0, "枪机",0),
+ TYPE1(1, "半球",1),
+ TYPE2(2, "球机",2);
+
+ Integer code;
+ String message;
+ Integer type;
+ AvPtzTypeEnum(Integer code, String message, Integer type) {
+ this.code = code;
+ this.message = message;
+ this.type = type;
+ }
+
+ public Integer getCode() {
+ return code;
+ }
+
+ public void setCode(Integer code) {
+ this.code = code;
+ }
+
+ public String getMessage() {
+ return message;
+ }
+
+ public void setMessage(String message) {
+ this.message = message;
+ }
+
+ public Integer getType() {
+ return type;
+ }
+
+ public void setType(Integer type) {
+ this.type = type;
+ }
+
+ public static String valueOfs(Integer value) {
+ if (value == null) {
+ return "";
+ } else {
+ for (AvPtzTypeEnum ms : AvPtzTypeEnum.values()) {
+ if (ms.getCode().equals(value)) {
+ return ms.getMessage();
+ }
+ }
+ return "";
+ }
+ }
+
+ public static AvPtzTypeEnum valueOfType(Integer value) {
+ if (value == null) {
+ return TYPE0;
+ } else {
+ for (AvPtzTypeEnum ms : AvPtzTypeEnum.values()) {
+ if (ms.getCode().equals(value)) {
+ return ms;
+ }
+ }
+ return TYPE0;
+ }
+ }
+}
diff --git a/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/enums/AvSecretLevelEnum.java b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/enums/AvSecretLevelEnum.java
new file mode 100644
index 0000000..39e8524
--- /dev/null
+++ b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/enums/AvSecretLevelEnum.java
@@ -0,0 +1,60 @@
+package com.casic.missiles.modular.device.enums;
+
+/**
+ * Av主数据密集对应关系枚举
+ *
+ * @author lwh
+ * @Date 2017年1月10日 下午9:54:13
+ */
+public enum AvSecretLevelEnum {
+ s("999", "未定密", 999, "未定密"),
+ s0("0", "公开", 0, "公开"),
+ s1("1", "内部", 1, "内部"),
+ s2("2", "秘密", 2, "秘密"),
+ s3("3", "机密", 3, "机密");
+
+ String code;
+ Integer currCode;
+ String message;
+ String currMsg;
+
+ AvSecretLevelEnum(String code, String message, Integer currCode, String currMsg) {
+ this.code = code;
+ this.currCode = currCode;
+ this.message = message;
+ this.currMsg = currMsg;
+ }
+
+ public Integer getCurrCode() {
+ return currCode;
+ }
+
+ public String getCode() {
+ return code;
+ }
+
+ public void setCode(String code) {
+ this.code = code;
+ }
+
+ public String getMessage() {
+ return message;
+ }
+
+ public void setMessage(String message) {
+ this.message = message;
+ }
+
+ public static AvSecretLevelEnum valueOfCode(String value) {
+ if (value == null) {
+ return s0;
+ } else {
+ for (AvSecretLevelEnum ms : AvSecretLevelEnum.values()) {
+ if (ms.getCode().equals(value)) {
+ return ms;
+ }
+ }
+ return s0;
+ }
+ }
+}
diff --git a/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/enums/AvStatusTypeEnum.java b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/enums/AvStatusTypeEnum.java
new file mode 100644
index 0000000..ddccd52
--- /dev/null
+++ b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/enums/AvStatusTypeEnum.java
@@ -0,0 +1,72 @@
+package com.casic.missiles.modular.device.enums;
+
+/**
+ * wvp设备类型转换
+ *
+ * @author lwh
+ * @Date 2017年1月10日 下午9:54:13
+ */
+public enum AvStatusTypeEnum {
+
+ TYPE0(0, "离线",0),
+ TYPE1(1, "在线",1);
+
+ Integer code;
+ String message;
+ Integer type;
+ AvStatusTypeEnum(Integer code, String message, Integer type) {
+ this.code = code;
+ this.message = message;
+ this.type = type;
+ }
+
+ public Integer getCode() {
+ return code;
+ }
+
+ public void setCode(Integer code) {
+ this.code = code;
+ }
+
+ public String getMessage() {
+ return message;
+ }
+
+ public void setMessage(String message) {
+ this.message = message;
+ }
+
+ public Integer getType() {
+ return type;
+ }
+
+ public void setType(Integer type) {
+ this.type = type;
+ }
+
+ public static String valueOfs(Integer value) {
+ if (value == null) {
+ return "";
+ } else {
+ for (AvStatusTypeEnum ms : AvStatusTypeEnum.values()) {
+ if (ms.getCode().equals(value)) {
+ return ms.getMessage();
+ }
+ }
+ return "";
+ }
+ }
+
+ public static AvStatusTypeEnum valueOfType(Integer value) {
+ if (value == null) {
+ return TYPE0;
+ } else {
+ for (AvStatusTypeEnum ms : AvStatusTypeEnum.values()) {
+ if (ms.getCode().equals(value)) {
+ return ms;
+ }
+ }
+ return TYPE0;
+ }
+ }
+}
diff --git a/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/enums/AvUrlEnums.java b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/enums/AvUrlEnums.java
new file mode 100644
index 0000000..04b38ad
--- /dev/null
+++ b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/enums/AvUrlEnums.java
@@ -0,0 +1,37 @@
+package com.casic.missiles.modular.device.enums;
+
+/**
+ * 设备媒体
+ */
+public enum AvUrlEnums {
+ DEVICE("/open/v1/api/devices","设备信息查询"),
+ STREAM("/open/v1/api/streams","创建流"),
+ STREAM_STOP("/open/v1/api/streams/%s","停止流"),
+ HEART("/open/v1/api/streams/%s/heartbeat","发送心跳"),
+ DICT("/open/v1/api/dictionary_datas","字典查询"),
+ USER_DEVICE_RELATION("/open/v1/api/user_device_relationships","用户设备关联关系");
+
+ private String url;
+ private String name;
+
+ AvUrlEnums(String url, String name) {
+ this.url = url;
+ this.name = name;
+ }
+
+ public String getUrl() {
+ return url;
+ }
+
+ public void setUrl(String url) {
+ this.url = url;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+}
diff --git a/README.md b/README.md
index 430796e..8dbc9a5 100644
--- a/README.md
+++ b/README.md
@@ -9,3 +9,7 @@
#### 其他
>* [git地址](http://192.168.0.203:8080/gitbucket)
>* [本地免登地址](http://localhost:8083/route/mockToken)
+
+AView 对接问题
+1.用户设备关联关系
+ 对应返回 device_list是否为设备国标号
\ No newline at end of file
diff --git a/casic-device-sync/casic-device-aview/pom.xml b/casic-device-sync/casic-device-aview/pom.xml
index 0a3c5fa..94fb9e5 100644
--- a/casic-device-sync/casic-device-aview/pom.xml
+++ b/casic-device-sync/casic-device-aview/pom.xml
@@ -33,6 +33,21 @@
${boot.version}
provided
+
+ com.casic
+ casic-http
+ ${core.version}
+
+
+ com.casic
+ casic-admin-group
+ ${admin.version}
+
+
+ com.casic
+ casic-server
+ ${pro.version}
+
diff --git a/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/controller/AvRouteController.java b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/controller/AvRouteController.java
new file mode 100644
index 0000000..195cba2
--- /dev/null
+++ b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/controller/AvRouteController.java
@@ -0,0 +1,45 @@
+package com.casic.missiles.modular.device.controller;
+
+import com.casic.missiles.model.response.dto.ResponseDataDTO;
+import com.casic.missiles.modular.device.dto.stream.StreamRequestDTO;
+import com.casic.missiles.modular.device.service.IAvSyncService;
+import io.swagger.annotations.Api;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+
+@Api(tags = "AV平台代理接口")
+@RestController
+@RequestMapping("/route")
+public class AvRouteController {
+ @Resource
+ private IAvSyncService avSyncService;
+
+ @PostMapping("/open/v1/api/streams")
+ public Object streams(@RequestBody StreamRequestDTO requestDTO) {
+ Object object = avSyncService.getStreams(requestDTO);
+ if (object == null) {
+ ResponseDataDTO respDTO = ResponseDataDTO.error("流读取失败,请稍后重试!");
+ respDTO.setMessage("流读取失败,请稍后重试!");
+ return respDTO;
+ }
+ return ResponseDataDTO.success(avSyncService.getStreams(requestDTO));
+ }
+
+ @DeleteMapping("/open/v1/api/streams/{id}")
+ public Object stopStreams(@PathVariable("id") String id) {
+ Object object = avSyncService.stopStreams(id);
+ return ResponseDataDTO.success(object);
+ }
+
+ @PostMapping("/open/v1/api/streams/{id}/heart")
+ public Object heart(@PathVariable("id") String id) {
+ Object object = avSyncService.heart(id);
+ if (object == null) {
+ ResponseDataDTO respDTO = ResponseDataDTO.error("流心跳失败,请稍后重试!");
+ respDTO.setMessage("流心跳失败,请稍后重试!");
+ return respDTO;
+ }
+ return ResponseDataDTO.success(object);
+ }
+}
\ No newline at end of file
diff --git a/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/AvDeviceDTO.java b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/AvDeviceDTO.java
new file mode 100644
index 0000000..97bde9f
--- /dev/null
+++ b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/AvDeviceDTO.java
@@ -0,0 +1,49 @@
+package com.casic.missiles.modular.device.dto;
+
+import com.alibaba.fastjson.annotation.JSONField;
+import lombok.Data;
+
+/**
+ * 艾薇设备对象DTO
+ */
+@Data
+public class AvDeviceDTO {
+ // 设备ID
+ private Long id;
+
+ // 设备名称
+ private String name;
+
+ // 设备唯一国标序列号
+ private String sn;
+
+ // 设备类型
+ private Integer type;
+
+ // 设备版本号
+ private String version;
+
+ // 安全等级
+ @JSONField(name = "secure_level")
+ private String secureLevel;
+
+ // 设备状态
+ private Integer status;
+
+ // 云台类型
+ private Integer ptzType;
+
+ // 朝向
+ private Integer orientation;
+
+ // 创建时间
+ @JSONField(name = "gmt_created")
+ private String gmtCreated;
+
+ // 修改时间
+ @JSONField(name = "gmt_modified")
+ private String gmtModified;
+
+ // 数据状态
+ private Integer state;
+}
diff --git a/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/AvPageResponse.java b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/AvPageResponse.java
new file mode 100644
index 0000000..9a05183
--- /dev/null
+++ b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/AvPageResponse.java
@@ -0,0 +1,10 @@
+package com.casic.missiles.modular.device.dto;
+
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class AvPageResponse {
+ private List items;
+}
diff --git a/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/DeviceRelationshipDTO.java b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/DeviceRelationshipDTO.java
new file mode 100644
index 0000000..098dda4
--- /dev/null
+++ b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/DeviceRelationshipDTO.java
@@ -0,0 +1,12 @@
+package com.casic.missiles.modular.device.dto;
+
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class DeviceRelationshipDTO {
+ private Long user_id;
+ private String device_list;
+ private List deviceList;
+}
diff --git a/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/page/AvPageRep.java b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/page/AvPageRep.java
new file mode 100644
index 0000000..74e6a9b
--- /dev/null
+++ b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/page/AvPageRep.java
@@ -0,0 +1,9 @@
+package com.casic.missiles.modular.device.dto.page;
+
+import lombok.Data;
+
+@Data
+public class AvPageRep {
+ private Integer total;
+ private T list;
+}
diff --git a/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/page/AvPageRequest.java b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/page/AvPageRequest.java
new file mode 100644
index 0000000..900ae4a
--- /dev/null
+++ b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/page/AvPageRequest.java
@@ -0,0 +1,14 @@
+package com.casic.missiles.modular.device.dto.page;
+
+import lombok.Data;
+
+/**
+ * 分页请求DTO
+ */
+@Data
+public class AvPageRequest {
+ private int page;
+ private int paging;
+ private int limit;
+
+}
diff --git a/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/page/AvResponseDTO.java b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/page/AvResponseDTO.java
new file mode 100644
index 0000000..f1c1e7a
--- /dev/null
+++ b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/page/AvResponseDTO.java
@@ -0,0 +1,15 @@
+package com.casic.missiles.modular.device.dto.page;
+
+import lombok.Data;
+
+/**
+ * mvp返回基类封装
+ *
+ * @param
+ */
+@Data
+public class AvResponseDTO {
+ private T data;
+ private Integer code;
+ private String msg;
+}
diff --git a/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/stream/StreamRequestDTO.java b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/stream/StreamRequestDTO.java
new file mode 100644
index 0000000..69e88ce
--- /dev/null
+++ b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/stream/StreamRequestDTO.java
@@ -0,0 +1,12 @@
+package com.casic.missiles.modular.device.dto.stream;
+
+import lombok.Data;
+
+@Data
+public class StreamRequestDTO {
+ private String device_id;
+ private String stream_type;
+ private String quality;
+ private int from;
+ private int to;
+}
diff --git a/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/stream/StreamStopRequestDTO.java b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/stream/StreamStopRequestDTO.java
new file mode 100644
index 0000000..9cf94b1
--- /dev/null
+++ b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/stream/StreamStopRequestDTO.java
@@ -0,0 +1,11 @@
+package com.casic.missiles.modular.device.dto.stream;
+
+import lombok.Data;
+
+@Data
+public class StreamStopRequestDTO {
+ private String id;
+ private String type;
+ private StreamRequestDTO request;
+ private String url;
+}
diff --git a/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/enums/AvDataStateEnum.java b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/enums/AvDataStateEnum.java
new file mode 100644
index 0000000..e1a6658
--- /dev/null
+++ b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/enums/AvDataStateEnum.java
@@ -0,0 +1,72 @@
+package com.casic.missiles.modular.device.enums;
+
+/**
+ * 数据状态
+ *
+ * @author lwh
+ * @Date 2017年1月10日 下午9:54:13
+ */
+public enum AvDataStateEnum {
+
+ TYPE0(0, "有效",0),
+ DEL(1, "无效",1);
+
+ Integer code;
+ String message;
+ Integer type;
+ AvDataStateEnum(Integer code, String message, Integer type) {
+ this.code = code;
+ this.message = message;
+ this.type = type;
+ }
+
+ public Integer getCode() {
+ return code;
+ }
+
+ public void setCode(Integer code) {
+ this.code = code;
+ }
+
+ public String getMessage() {
+ return message;
+ }
+
+ public void setMessage(String message) {
+ this.message = message;
+ }
+
+ public Integer getType() {
+ return type;
+ }
+
+ public void setType(Integer type) {
+ this.type = type;
+ }
+
+ public static String valueOfs(Integer value) {
+ if (value == null) {
+ return "";
+ } else {
+ for (AvDataStateEnum ms : AvDataStateEnum.values()) {
+ if (ms.getCode().equals(value)) {
+ return ms.getMessage();
+ }
+ }
+ return "";
+ }
+ }
+
+ public static AvDataStateEnum valueOfType(Integer value) {
+ if (value == null) {
+ return TYPE0;
+ } else {
+ for (AvDataStateEnum ms : AvDataStateEnum.values()) {
+ if (ms.getCode().equals(value)) {
+ return ms;
+ }
+ }
+ return TYPE0;
+ }
+ }
+}
diff --git a/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/enums/AvPtzTypeEnum.java b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/enums/AvPtzTypeEnum.java
new file mode 100644
index 0000000..fdcb08d
--- /dev/null
+++ b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/enums/AvPtzTypeEnum.java
@@ -0,0 +1,73 @@
+package com.casic.missiles.modular.device.enums;
+
+/**
+ * wvp设备类型转换
+ *
+ * @author lwh
+ * @Date 2017年1月10日 下午9:54:13
+ */
+public enum AvPtzTypeEnum {
+
+ TYPE0(0, "枪机",0),
+ TYPE1(1, "半球",1),
+ TYPE2(2, "球机",2);
+
+ Integer code;
+ String message;
+ Integer type;
+ AvPtzTypeEnum(Integer code, String message, Integer type) {
+ this.code = code;
+ this.message = message;
+ this.type = type;
+ }
+
+ public Integer getCode() {
+ return code;
+ }
+
+ public void setCode(Integer code) {
+ this.code = code;
+ }
+
+ public String getMessage() {
+ return message;
+ }
+
+ public void setMessage(String message) {
+ this.message = message;
+ }
+
+ public Integer getType() {
+ return type;
+ }
+
+ public void setType(Integer type) {
+ this.type = type;
+ }
+
+ public static String valueOfs(Integer value) {
+ if (value == null) {
+ return "";
+ } else {
+ for (AvPtzTypeEnum ms : AvPtzTypeEnum.values()) {
+ if (ms.getCode().equals(value)) {
+ return ms.getMessage();
+ }
+ }
+ return "";
+ }
+ }
+
+ public static AvPtzTypeEnum valueOfType(Integer value) {
+ if (value == null) {
+ return TYPE0;
+ } else {
+ for (AvPtzTypeEnum ms : AvPtzTypeEnum.values()) {
+ if (ms.getCode().equals(value)) {
+ return ms;
+ }
+ }
+ return TYPE0;
+ }
+ }
+}
diff --git a/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/enums/AvSecretLevelEnum.java b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/enums/AvSecretLevelEnum.java
new file mode 100644
index 0000000..39e8524
--- /dev/null
+++ b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/enums/AvSecretLevelEnum.java
@@ -0,0 +1,60 @@
+package com.casic.missiles.modular.device.enums;
+
+/**
+ * Av主数据密集对应关系枚举
+ *
+ * @author lwh
+ * @Date 2017年1月10日 下午9:54:13
+ */
+public enum AvSecretLevelEnum {
+ s("999", "未定密", 999, "未定密"),
+ s0("0", "公开", 0, "公开"),
+ s1("1", "内部", 1, "内部"),
+ s2("2", "秘密", 2, "秘密"),
+ s3("3", "机密", 3, "机密");
+
+ String code;
+ Integer currCode;
+ String message;
+ String currMsg;
+
+ AvSecretLevelEnum(String code, String message, Integer currCode, String currMsg) {
+ this.code = code;
+ this.currCode = currCode;
+ this.message = message;
+ this.currMsg = currMsg;
+ }
+
+ public Integer getCurrCode() {
+ return currCode;
+ }
+
+ public String getCode() {
+ return code;
+ }
+
+ public void setCode(String code) {
+ this.code = code;
+ }
+
+ public String getMessage() {
+ return message;
+ }
+
+ public void setMessage(String message) {
+ this.message = message;
+ }
+
+ public static AvSecretLevelEnum valueOfCode(String value) {
+ if (value == null) {
+ return s0;
+ } else {
+ for (AvSecretLevelEnum ms : AvSecretLevelEnum.values()) {
+ if (ms.getCode().equals(value)) {
+ return ms;
+ }
+ }
+ return s0;
+ }
+ }
+}
diff --git a/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/enums/AvStatusTypeEnum.java b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/enums/AvStatusTypeEnum.java
new file mode 100644
index 0000000..ddccd52
--- /dev/null
+++ b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/enums/AvStatusTypeEnum.java
@@ -0,0 +1,72 @@
+package com.casic.missiles.modular.device.enums;
+
+/**
+ * wvp设备类型转换
+ *
+ * @author lwh
+ * @Date 2017年1月10日 下午9:54:13
+ */
+public enum AvStatusTypeEnum {
+
+ TYPE0(0, "离线",0),
+ TYPE1(1, "在线",1);
+
+ Integer code;
+ String message;
+ Integer type;
+ AvStatusTypeEnum(Integer code, String message, Integer type) {
+ this.code = code;
+ this.message = message;
+ this.type = type;
+ }
+
+ public Integer getCode() {
+ return code;
+ }
+
+ public void setCode(Integer code) {
+ this.code = code;
+ }
+
+ public String getMessage() {
+ return message;
+ }
+
+ public void setMessage(String message) {
+ this.message = message;
+ }
+
+ public Integer getType() {
+ return type;
+ }
+
+ public void setType(Integer type) {
+ this.type = type;
+ }
+
+ public static String valueOfs(Integer value) {
+ if (value == null) {
+ return "";
+ } else {
+ for (AvStatusTypeEnum ms : AvStatusTypeEnum.values()) {
+ if (ms.getCode().equals(value)) {
+ return ms.getMessage();
+ }
+ }
+ return "";
+ }
+ }
+
+ public static AvStatusTypeEnum valueOfType(Integer value) {
+ if (value == null) {
+ return TYPE0;
+ } else {
+ for (AvStatusTypeEnum ms : AvStatusTypeEnum.values()) {
+ if (ms.getCode().equals(value)) {
+ return ms;
+ }
+ }
+ return TYPE0;
+ }
+ }
+}
diff --git a/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/enums/AvUrlEnums.java b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/enums/AvUrlEnums.java
new file mode 100644
index 0000000..04b38ad
--- /dev/null
+++ b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/enums/AvUrlEnums.java
@@ -0,0 +1,37 @@
+package com.casic.missiles.modular.device.enums;
+
+/**
+ * 设备媒体
+ */
+public enum AvUrlEnums {
+ DEVICE("/open/v1/api/devices","设备信息查询"),
+ STREAM("/open/v1/api/streams","创建流"),
+ STREAM_STOP("/open/v1/api/streams/%s","停止流"),
+ HEART("/open/v1/api/streams/%s/heartbeat","发送心跳"),
+ DICT("/open/v1/api/dictionary_datas","字典查询"),
+ USER_DEVICE_RELATION("/open/v1/api/user_device_relationships","用户设备关联关系");
+
+ private String url;
+ private String name;
+
+ AvUrlEnums(String url, String name) {
+ this.url = url;
+ this.name = name;
+ }
+
+ public String getUrl() {
+ return url;
+ }
+
+ public void setUrl(String url) {
+ this.url = url;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+}
diff --git a/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/http/AvDefaultHttpHeaderHandler.java b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/http/AvDefaultHttpHeaderHandler.java
new file mode 100644
index 0000000..53f0a5c
--- /dev/null
+++ b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/http/AvDefaultHttpHeaderHandler.java
@@ -0,0 +1,14 @@
+package com.casic.missiles.modular.device.http;
+
+import cn.hutool.core.util.StrUtil;
+import com.casic.missiles.modular.system.handler.DefaultHttpHeaderHandler;
+import org.apache.http.client.methods.HttpRequestBase;
+
+public class AvDefaultHttpHeaderHandler extends DefaultHttpHeaderHandler {
+ public void setHeader(HttpRequestBase base, String token) {
+ base.addHeader("Content-type", DEFAULT_CONTEXTTYPE);
+ if (StrUtil.isNotEmpty(token)) {
+ base.addHeader("X-OApi-Token", token);
+ }
+ }
+}
diff --git a/README.md b/README.md
index 430796e..8dbc9a5 100644
--- a/README.md
+++ b/README.md
@@ -9,3 +9,7 @@
#### 其他
>* [git地址](http://192.168.0.203:8080/gitbucket)
>* [本地免登地址](http://localhost:8083/route/mockToken)
+
+AView 对接问题
+1.用户设备关联关系
+ 对应返回 device_list是否为设备国标号
\ No newline at end of file
diff --git a/casic-device-sync/casic-device-aview/pom.xml b/casic-device-sync/casic-device-aview/pom.xml
index 0a3c5fa..94fb9e5 100644
--- a/casic-device-sync/casic-device-aview/pom.xml
+++ b/casic-device-sync/casic-device-aview/pom.xml
@@ -33,6 +33,21 @@
${boot.version}
provided
+
+ com.casic
+ casic-http
+ ${core.version}
+
+
+ com.casic
+ casic-admin-group
+ ${admin.version}
+
+
+ com.casic
+ casic-server
+ ${pro.version}
+
diff --git a/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/controller/AvRouteController.java b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/controller/AvRouteController.java
new file mode 100644
index 0000000..195cba2
--- /dev/null
+++ b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/controller/AvRouteController.java
@@ -0,0 +1,45 @@
+package com.casic.missiles.modular.device.controller;
+
+import com.casic.missiles.model.response.dto.ResponseDataDTO;
+import com.casic.missiles.modular.device.dto.stream.StreamRequestDTO;
+import com.casic.missiles.modular.device.service.IAvSyncService;
+import io.swagger.annotations.Api;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+
+@Api(tags = "AV平台代理接口")
+@RestController
+@RequestMapping("/route")
+public class AvRouteController {
+ @Resource
+ private IAvSyncService avSyncService;
+
+ @PostMapping("/open/v1/api/streams")
+ public Object streams(@RequestBody StreamRequestDTO requestDTO) {
+ Object object = avSyncService.getStreams(requestDTO);
+ if (object == null) {
+ ResponseDataDTO respDTO = ResponseDataDTO.error("流读取失败,请稍后重试!");
+ respDTO.setMessage("流读取失败,请稍后重试!");
+ return respDTO;
+ }
+ return ResponseDataDTO.success(avSyncService.getStreams(requestDTO));
+ }
+
+ @DeleteMapping("/open/v1/api/streams/{id}")
+ public Object stopStreams(@PathVariable("id") String id) {
+ Object object = avSyncService.stopStreams(id);
+ return ResponseDataDTO.success(object);
+ }
+
+ @PostMapping("/open/v1/api/streams/{id}/heart")
+ public Object heart(@PathVariable("id") String id) {
+ Object object = avSyncService.heart(id);
+ if (object == null) {
+ ResponseDataDTO respDTO = ResponseDataDTO.error("流心跳失败,请稍后重试!");
+ respDTO.setMessage("流心跳失败,请稍后重试!");
+ return respDTO;
+ }
+ return ResponseDataDTO.success(object);
+ }
+}
\ No newline at end of file
diff --git a/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/AvDeviceDTO.java b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/AvDeviceDTO.java
new file mode 100644
index 0000000..97bde9f
--- /dev/null
+++ b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/AvDeviceDTO.java
@@ -0,0 +1,49 @@
+package com.casic.missiles.modular.device.dto;
+
+import com.alibaba.fastjson.annotation.JSONField;
+import lombok.Data;
+
+/**
+ * 艾薇设备对象DTO
+ */
+@Data
+public class AvDeviceDTO {
+ // 设备ID
+ private Long id;
+
+ // 设备名称
+ private String name;
+
+ // 设备唯一国标序列号
+ private String sn;
+
+ // 设备类型
+ private Integer type;
+
+ // 设备版本号
+ private String version;
+
+ // 安全等级
+ @JSONField(name = "secure_level")
+ private String secureLevel;
+
+ // 设备状态
+ private Integer status;
+
+ // 云台类型
+ private Integer ptzType;
+
+ // 朝向
+ private Integer orientation;
+
+ // 创建时间
+ @JSONField(name = "gmt_created")
+ private String gmtCreated;
+
+ // 修改时间
+ @JSONField(name = "gmt_modified")
+ private String gmtModified;
+
+ // 数据状态
+ private Integer state;
+}
diff --git a/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/AvPageResponse.java b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/AvPageResponse.java
new file mode 100644
index 0000000..9a05183
--- /dev/null
+++ b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/AvPageResponse.java
@@ -0,0 +1,10 @@
+package com.casic.missiles.modular.device.dto;
+
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class AvPageResponse {
+ private List items;
+}
diff --git a/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/DeviceRelationshipDTO.java b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/DeviceRelationshipDTO.java
new file mode 100644
index 0000000..098dda4
--- /dev/null
+++ b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/DeviceRelationshipDTO.java
@@ -0,0 +1,12 @@
+package com.casic.missiles.modular.device.dto;
+
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class DeviceRelationshipDTO {
+ private Long user_id;
+ private String device_list;
+ private List deviceList;
+}
diff --git a/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/page/AvPageRep.java b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/page/AvPageRep.java
new file mode 100644
index 0000000..74e6a9b
--- /dev/null
+++ b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/page/AvPageRep.java
@@ -0,0 +1,9 @@
+package com.casic.missiles.modular.device.dto.page;
+
+import lombok.Data;
+
+@Data
+public class AvPageRep {
+ private Integer total;
+ private T list;
+}
diff --git a/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/page/AvPageRequest.java b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/page/AvPageRequest.java
new file mode 100644
index 0000000..900ae4a
--- /dev/null
+++ b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/page/AvPageRequest.java
@@ -0,0 +1,14 @@
+package com.casic.missiles.modular.device.dto.page;
+
+import lombok.Data;
+
+/**
+ * 分页请求DTO
+ */
+@Data
+public class AvPageRequest {
+ private int page;
+ private int paging;
+ private int limit;
+
+}
diff --git a/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/page/AvResponseDTO.java b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/page/AvResponseDTO.java
new file mode 100644
index 0000000..f1c1e7a
--- /dev/null
+++ b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/page/AvResponseDTO.java
@@ -0,0 +1,15 @@
+package com.casic.missiles.modular.device.dto.page;
+
+import lombok.Data;
+
+/**
+ * mvp返回基类封装
+ *
+ * @param
+ */
+@Data
+public class AvResponseDTO {
+ private T data;
+ private Integer code;
+ private String msg;
+}
diff --git a/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/stream/StreamRequestDTO.java b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/stream/StreamRequestDTO.java
new file mode 100644
index 0000000..69e88ce
--- /dev/null
+++ b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/stream/StreamRequestDTO.java
@@ -0,0 +1,12 @@
+package com.casic.missiles.modular.device.dto.stream;
+
+import lombok.Data;
+
+@Data
+public class StreamRequestDTO {
+ private String device_id;
+ private String stream_type;
+ private String quality;
+ private int from;
+ private int to;
+}
diff --git a/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/stream/StreamStopRequestDTO.java b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/stream/StreamStopRequestDTO.java
new file mode 100644
index 0000000..9cf94b1
--- /dev/null
+++ b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/stream/StreamStopRequestDTO.java
@@ -0,0 +1,11 @@
+package com.casic.missiles.modular.device.dto.stream;
+
+import lombok.Data;
+
+@Data
+public class StreamStopRequestDTO {
+ private String id;
+ private String type;
+ private StreamRequestDTO request;
+ private String url;
+}
diff --git a/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/enums/AvDataStateEnum.java b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/enums/AvDataStateEnum.java
new file mode 100644
index 0000000..e1a6658
--- /dev/null
+++ b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/enums/AvDataStateEnum.java
@@ -0,0 +1,72 @@
+package com.casic.missiles.modular.device.enums;
+
+/**
+ * 数据状态
+ *
+ * @author lwh
+ * @Date 2017年1月10日 下午9:54:13
+ */
+public enum AvDataStateEnum {
+
+ TYPE0(0, "有效",0),
+ DEL(1, "无效",1);
+
+ Integer code;
+ String message;
+ Integer type;
+ AvDataStateEnum(Integer code, String message, Integer type) {
+ this.code = code;
+ this.message = message;
+ this.type = type;
+ }
+
+ public Integer getCode() {
+ return code;
+ }
+
+ public void setCode(Integer code) {
+ this.code = code;
+ }
+
+ public String getMessage() {
+ return message;
+ }
+
+ public void setMessage(String message) {
+ this.message = message;
+ }
+
+ public Integer getType() {
+ return type;
+ }
+
+ public void setType(Integer type) {
+ this.type = type;
+ }
+
+ public static String valueOfs(Integer value) {
+ if (value == null) {
+ return "";
+ } else {
+ for (AvDataStateEnum ms : AvDataStateEnum.values()) {
+ if (ms.getCode().equals(value)) {
+ return ms.getMessage();
+ }
+ }
+ return "";
+ }
+ }
+
+ public static AvDataStateEnum valueOfType(Integer value) {
+ if (value == null) {
+ return TYPE0;
+ } else {
+ for (AvDataStateEnum ms : AvDataStateEnum.values()) {
+ if (ms.getCode().equals(value)) {
+ return ms;
+ }
+ }
+ return TYPE0;
+ }
+ }
+}
diff --git a/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/enums/AvPtzTypeEnum.java b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/enums/AvPtzTypeEnum.java
new file mode 100644
index 0000000..fdcb08d
--- /dev/null
+++ b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/enums/AvPtzTypeEnum.java
@@ -0,0 +1,73 @@
+package com.casic.missiles.modular.device.enums;
+
+/**
+ * wvp设备类型转换
+ *
+ * @author lwh
+ * @Date 2017年1月10日 下午9:54:13
+ */
+public enum AvPtzTypeEnum {
+
+ TYPE0(0, "枪机",0),
+ TYPE1(1, "半球",1),
+ TYPE2(2, "球机",2);
+
+ Integer code;
+ String message;
+ Integer type;
+ AvPtzTypeEnum(Integer code, String message, Integer type) {
+ this.code = code;
+ this.message = message;
+ this.type = type;
+ }
+
+ public Integer getCode() {
+ return code;
+ }
+
+ public void setCode(Integer code) {
+ this.code = code;
+ }
+
+ public String getMessage() {
+ return message;
+ }
+
+ public void setMessage(String message) {
+ this.message = message;
+ }
+
+ public Integer getType() {
+ return type;
+ }
+
+ public void setType(Integer type) {
+ this.type = type;
+ }
+
+ public static String valueOfs(Integer value) {
+ if (value == null) {
+ return "";
+ } else {
+ for (AvPtzTypeEnum ms : AvPtzTypeEnum.values()) {
+ if (ms.getCode().equals(value)) {
+ return ms.getMessage();
+ }
+ }
+ return "";
+ }
+ }
+
+ public static AvPtzTypeEnum valueOfType(Integer value) {
+ if (value == null) {
+ return TYPE0;
+ } else {
+ for (AvPtzTypeEnum ms : AvPtzTypeEnum.values()) {
+ if (ms.getCode().equals(value)) {
+ return ms;
+ }
+ }
+ return TYPE0;
+ }
+ }
+}
diff --git a/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/enums/AvSecretLevelEnum.java b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/enums/AvSecretLevelEnum.java
new file mode 100644
index 0000000..39e8524
--- /dev/null
+++ b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/enums/AvSecretLevelEnum.java
@@ -0,0 +1,60 @@
+package com.casic.missiles.modular.device.enums;
+
+/**
+ * Av主数据密集对应关系枚举
+ *
+ * @author lwh
+ * @Date 2017年1月10日 下午9:54:13
+ */
+public enum AvSecretLevelEnum {
+ s("999", "未定密", 999, "未定密"),
+ s0("0", "公开", 0, "公开"),
+ s1("1", "内部", 1, "内部"),
+ s2("2", "秘密", 2, "秘密"),
+ s3("3", "机密", 3, "机密");
+
+ String code;
+ Integer currCode;
+ String message;
+ String currMsg;
+
+ AvSecretLevelEnum(String code, String message, Integer currCode, String currMsg) {
+ this.code = code;
+ this.currCode = currCode;
+ this.message = message;
+ this.currMsg = currMsg;
+ }
+
+ public Integer getCurrCode() {
+ return currCode;
+ }
+
+ public String getCode() {
+ return code;
+ }
+
+ public void setCode(String code) {
+ this.code = code;
+ }
+
+ public String getMessage() {
+ return message;
+ }
+
+ public void setMessage(String message) {
+ this.message = message;
+ }
+
+ public static AvSecretLevelEnum valueOfCode(String value) {
+ if (value == null) {
+ return s0;
+ } else {
+ for (AvSecretLevelEnum ms : AvSecretLevelEnum.values()) {
+ if (ms.getCode().equals(value)) {
+ return ms;
+ }
+ }
+ return s0;
+ }
+ }
+}
diff --git a/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/enums/AvStatusTypeEnum.java b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/enums/AvStatusTypeEnum.java
new file mode 100644
index 0000000..ddccd52
--- /dev/null
+++ b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/enums/AvStatusTypeEnum.java
@@ -0,0 +1,72 @@
+package com.casic.missiles.modular.device.enums;
+
+/**
+ * wvp设备类型转换
+ *
+ * @author lwh
+ * @Date 2017年1月10日 下午9:54:13
+ */
+public enum AvStatusTypeEnum {
+
+ TYPE0(0, "离线",0),
+ TYPE1(1, "在线",1);
+
+ Integer code;
+ String message;
+ Integer type;
+ AvStatusTypeEnum(Integer code, String message, Integer type) {
+ this.code = code;
+ this.message = message;
+ this.type = type;
+ }
+
+ public Integer getCode() {
+ return code;
+ }
+
+ public void setCode(Integer code) {
+ this.code = code;
+ }
+
+ public String getMessage() {
+ return message;
+ }
+
+ public void setMessage(String message) {
+ this.message = message;
+ }
+
+ public Integer getType() {
+ return type;
+ }
+
+ public void setType(Integer type) {
+ this.type = type;
+ }
+
+ public static String valueOfs(Integer value) {
+ if (value == null) {
+ return "";
+ } else {
+ for (AvStatusTypeEnum ms : AvStatusTypeEnum.values()) {
+ if (ms.getCode().equals(value)) {
+ return ms.getMessage();
+ }
+ }
+ return "";
+ }
+ }
+
+ public static AvStatusTypeEnum valueOfType(Integer value) {
+ if (value == null) {
+ return TYPE0;
+ } else {
+ for (AvStatusTypeEnum ms : AvStatusTypeEnum.values()) {
+ if (ms.getCode().equals(value)) {
+ return ms;
+ }
+ }
+ return TYPE0;
+ }
+ }
+}
diff --git a/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/enums/AvUrlEnums.java b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/enums/AvUrlEnums.java
new file mode 100644
index 0000000..04b38ad
--- /dev/null
+++ b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/enums/AvUrlEnums.java
@@ -0,0 +1,37 @@
+package com.casic.missiles.modular.device.enums;
+
+/**
+ * 设备媒体
+ */
+public enum AvUrlEnums {
+ DEVICE("/open/v1/api/devices","设备信息查询"),
+ STREAM("/open/v1/api/streams","创建流"),
+ STREAM_STOP("/open/v1/api/streams/%s","停止流"),
+ HEART("/open/v1/api/streams/%s/heartbeat","发送心跳"),
+ DICT("/open/v1/api/dictionary_datas","字典查询"),
+ USER_DEVICE_RELATION("/open/v1/api/user_device_relationships","用户设备关联关系");
+
+ private String url;
+ private String name;
+
+ AvUrlEnums(String url, String name) {
+ this.url = url;
+ this.name = name;
+ }
+
+ public String getUrl() {
+ return url;
+ }
+
+ public void setUrl(String url) {
+ this.url = url;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+}
diff --git a/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/http/AvDefaultHttpHeaderHandler.java b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/http/AvDefaultHttpHeaderHandler.java
new file mode 100644
index 0000000..53f0a5c
--- /dev/null
+++ b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/http/AvDefaultHttpHeaderHandler.java
@@ -0,0 +1,14 @@
+package com.casic.missiles.modular.device.http;
+
+import cn.hutool.core.util.StrUtil;
+import com.casic.missiles.modular.system.handler.DefaultHttpHeaderHandler;
+import org.apache.http.client.methods.HttpRequestBase;
+
+public class AvDefaultHttpHeaderHandler extends DefaultHttpHeaderHandler {
+ public void setHeader(HttpRequestBase base, String token) {
+ base.addHeader("Content-type", DEFAULT_CONTEXTTYPE);
+ if (StrUtil.isNotEmpty(token)) {
+ base.addHeader("X-OApi-Token", token);
+ }
+ }
+}
diff --git a/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/http/HttpGetWithEntity.java b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/http/HttpGetWithEntity.java
new file mode 100644
index 0000000..b8abf8f
--- /dev/null
+++ b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/http/HttpGetWithEntity.java
@@ -0,0 +1,20 @@
+package com.casic.missiles.modular.device.http;
+
+import org.apache.http.client.methods.HttpEntityEnclosingRequestBase;
+
+import java.net.URI;
+
+public class HttpGetWithEntity extends HttpEntityEnclosingRequestBase {
+
+ public HttpGetWithEntity(URI uri) {
+ this.setURI(uri);
+ }
+
+ public HttpGetWithEntity(String uri) {
+ this.setURI(URI.create(uri));
+ }
+
+ public String getMethod() {
+ return "GET";
+ }
+}
diff --git a/README.md b/README.md
index 430796e..8dbc9a5 100644
--- a/README.md
+++ b/README.md
@@ -9,3 +9,7 @@
#### 其他
>* [git地址](http://192.168.0.203:8080/gitbucket)
>* [本地免登地址](http://localhost:8083/route/mockToken)
+
+AView 对接问题
+1.用户设备关联关系
+ 对应返回 device_list是否为设备国标号
\ No newline at end of file
diff --git a/casic-device-sync/casic-device-aview/pom.xml b/casic-device-sync/casic-device-aview/pom.xml
index 0a3c5fa..94fb9e5 100644
--- a/casic-device-sync/casic-device-aview/pom.xml
+++ b/casic-device-sync/casic-device-aview/pom.xml
@@ -33,6 +33,21 @@
${boot.version}
provided
+
+ com.casic
+ casic-http
+ ${core.version}
+
+
+ com.casic
+ casic-admin-group
+ ${admin.version}
+
+
+ com.casic
+ casic-server
+ ${pro.version}
+
diff --git a/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/controller/AvRouteController.java b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/controller/AvRouteController.java
new file mode 100644
index 0000000..195cba2
--- /dev/null
+++ b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/controller/AvRouteController.java
@@ -0,0 +1,45 @@
+package com.casic.missiles.modular.device.controller;
+
+import com.casic.missiles.model.response.dto.ResponseDataDTO;
+import com.casic.missiles.modular.device.dto.stream.StreamRequestDTO;
+import com.casic.missiles.modular.device.service.IAvSyncService;
+import io.swagger.annotations.Api;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+
+@Api(tags = "AV平台代理接口")
+@RestController
+@RequestMapping("/route")
+public class AvRouteController {
+ @Resource
+ private IAvSyncService avSyncService;
+
+ @PostMapping("/open/v1/api/streams")
+ public Object streams(@RequestBody StreamRequestDTO requestDTO) {
+ Object object = avSyncService.getStreams(requestDTO);
+ if (object == null) {
+ ResponseDataDTO respDTO = ResponseDataDTO.error("流读取失败,请稍后重试!");
+ respDTO.setMessage("流读取失败,请稍后重试!");
+ return respDTO;
+ }
+ return ResponseDataDTO.success(avSyncService.getStreams(requestDTO));
+ }
+
+ @DeleteMapping("/open/v1/api/streams/{id}")
+ public Object stopStreams(@PathVariable("id") String id) {
+ Object object = avSyncService.stopStreams(id);
+ return ResponseDataDTO.success(object);
+ }
+
+ @PostMapping("/open/v1/api/streams/{id}/heart")
+ public Object heart(@PathVariable("id") String id) {
+ Object object = avSyncService.heart(id);
+ if (object == null) {
+ ResponseDataDTO respDTO = ResponseDataDTO.error("流心跳失败,请稍后重试!");
+ respDTO.setMessage("流心跳失败,请稍后重试!");
+ return respDTO;
+ }
+ return ResponseDataDTO.success(object);
+ }
+}
\ No newline at end of file
diff --git a/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/AvDeviceDTO.java b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/AvDeviceDTO.java
new file mode 100644
index 0000000..97bde9f
--- /dev/null
+++ b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/AvDeviceDTO.java
@@ -0,0 +1,49 @@
+package com.casic.missiles.modular.device.dto;
+
+import com.alibaba.fastjson.annotation.JSONField;
+import lombok.Data;
+
+/**
+ * 艾薇设备对象DTO
+ */
+@Data
+public class AvDeviceDTO {
+ // 设备ID
+ private Long id;
+
+ // 设备名称
+ private String name;
+
+ // 设备唯一国标序列号
+ private String sn;
+
+ // 设备类型
+ private Integer type;
+
+ // 设备版本号
+ private String version;
+
+ // 安全等级
+ @JSONField(name = "secure_level")
+ private String secureLevel;
+
+ // 设备状态
+ private Integer status;
+
+ // 云台类型
+ private Integer ptzType;
+
+ // 朝向
+ private Integer orientation;
+
+ // 创建时间
+ @JSONField(name = "gmt_created")
+ private String gmtCreated;
+
+ // 修改时间
+ @JSONField(name = "gmt_modified")
+ private String gmtModified;
+
+ // 数据状态
+ private Integer state;
+}
diff --git a/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/AvPageResponse.java b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/AvPageResponse.java
new file mode 100644
index 0000000..9a05183
--- /dev/null
+++ b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/AvPageResponse.java
@@ -0,0 +1,10 @@
+package com.casic.missiles.modular.device.dto;
+
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class AvPageResponse {
+ private List items;
+}
diff --git a/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/DeviceRelationshipDTO.java b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/DeviceRelationshipDTO.java
new file mode 100644
index 0000000..098dda4
--- /dev/null
+++ b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/DeviceRelationshipDTO.java
@@ -0,0 +1,12 @@
+package com.casic.missiles.modular.device.dto;
+
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class DeviceRelationshipDTO {
+ private Long user_id;
+ private String device_list;
+ private List deviceList;
+}
diff --git a/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/page/AvPageRep.java b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/page/AvPageRep.java
new file mode 100644
index 0000000..74e6a9b
--- /dev/null
+++ b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/page/AvPageRep.java
@@ -0,0 +1,9 @@
+package com.casic.missiles.modular.device.dto.page;
+
+import lombok.Data;
+
+@Data
+public class AvPageRep {
+ private Integer total;
+ private T list;
+}
diff --git a/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/page/AvPageRequest.java b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/page/AvPageRequest.java
new file mode 100644
index 0000000..900ae4a
--- /dev/null
+++ b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/page/AvPageRequest.java
@@ -0,0 +1,14 @@
+package com.casic.missiles.modular.device.dto.page;
+
+import lombok.Data;
+
+/**
+ * 分页请求DTO
+ */
+@Data
+public class AvPageRequest {
+ private int page;
+ private int paging;
+ private int limit;
+
+}
diff --git a/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/page/AvResponseDTO.java b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/page/AvResponseDTO.java
new file mode 100644
index 0000000..f1c1e7a
--- /dev/null
+++ b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/page/AvResponseDTO.java
@@ -0,0 +1,15 @@
+package com.casic.missiles.modular.device.dto.page;
+
+import lombok.Data;
+
+/**
+ * mvp返回基类封装
+ *
+ * @param
+ */
+@Data
+public class AvResponseDTO {
+ private T data;
+ private Integer code;
+ private String msg;
+}
diff --git a/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/stream/StreamRequestDTO.java b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/stream/StreamRequestDTO.java
new file mode 100644
index 0000000..69e88ce
--- /dev/null
+++ b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/stream/StreamRequestDTO.java
@@ -0,0 +1,12 @@
+package com.casic.missiles.modular.device.dto.stream;
+
+import lombok.Data;
+
+@Data
+public class StreamRequestDTO {
+ private String device_id;
+ private String stream_type;
+ private String quality;
+ private int from;
+ private int to;
+}
diff --git a/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/stream/StreamStopRequestDTO.java b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/stream/StreamStopRequestDTO.java
new file mode 100644
index 0000000..9cf94b1
--- /dev/null
+++ b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/stream/StreamStopRequestDTO.java
@@ -0,0 +1,11 @@
+package com.casic.missiles.modular.device.dto.stream;
+
+import lombok.Data;
+
+@Data
+public class StreamStopRequestDTO {
+ private String id;
+ private String type;
+ private StreamRequestDTO request;
+ private String url;
+}
diff --git a/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/enums/AvDataStateEnum.java b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/enums/AvDataStateEnum.java
new file mode 100644
index 0000000..e1a6658
--- /dev/null
+++ b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/enums/AvDataStateEnum.java
@@ -0,0 +1,72 @@
+package com.casic.missiles.modular.device.enums;
+
+/**
+ * 数据状态
+ *
+ * @author lwh
+ * @Date 2017年1月10日 下午9:54:13
+ */
+public enum AvDataStateEnum {
+
+ TYPE0(0, "有效",0),
+ DEL(1, "无效",1);
+
+ Integer code;
+ String message;
+ Integer type;
+ AvDataStateEnum(Integer code, String message, Integer type) {
+ this.code = code;
+ this.message = message;
+ this.type = type;
+ }
+
+ public Integer getCode() {
+ return code;
+ }
+
+ public void setCode(Integer code) {
+ this.code = code;
+ }
+
+ public String getMessage() {
+ return message;
+ }
+
+ public void setMessage(String message) {
+ this.message = message;
+ }
+
+ public Integer getType() {
+ return type;
+ }
+
+ public void setType(Integer type) {
+ this.type = type;
+ }
+
+ public static String valueOfs(Integer value) {
+ if (value == null) {
+ return "";
+ } else {
+ for (AvDataStateEnum ms : AvDataStateEnum.values()) {
+ if (ms.getCode().equals(value)) {
+ return ms.getMessage();
+ }
+ }
+ return "";
+ }
+ }
+
+ public static AvDataStateEnum valueOfType(Integer value) {
+ if (value == null) {
+ return TYPE0;
+ } else {
+ for (AvDataStateEnum ms : AvDataStateEnum.values()) {
+ if (ms.getCode().equals(value)) {
+ return ms;
+ }
+ }
+ return TYPE0;
+ }
+ }
+}
diff --git a/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/enums/AvPtzTypeEnum.java b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/enums/AvPtzTypeEnum.java
new file mode 100644
index 0000000..fdcb08d
--- /dev/null
+++ b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/enums/AvPtzTypeEnum.java
@@ -0,0 +1,73 @@
+package com.casic.missiles.modular.device.enums;
+
+/**
+ * wvp设备类型转换
+ *
+ * @author lwh
+ * @Date 2017年1月10日 下午9:54:13
+ */
+public enum AvPtzTypeEnum {
+
+ TYPE0(0, "枪机",0),
+ TYPE1(1, "半球",1),
+ TYPE2(2, "球机",2);
+
+ Integer code;
+ String message;
+ Integer type;
+ AvPtzTypeEnum(Integer code, String message, Integer type) {
+ this.code = code;
+ this.message = message;
+ this.type = type;
+ }
+
+ public Integer getCode() {
+ return code;
+ }
+
+ public void setCode(Integer code) {
+ this.code = code;
+ }
+
+ public String getMessage() {
+ return message;
+ }
+
+ public void setMessage(String message) {
+ this.message = message;
+ }
+
+ public Integer getType() {
+ return type;
+ }
+
+ public void setType(Integer type) {
+ this.type = type;
+ }
+
+ public static String valueOfs(Integer value) {
+ if (value == null) {
+ return "";
+ } else {
+ for (AvPtzTypeEnum ms : AvPtzTypeEnum.values()) {
+ if (ms.getCode().equals(value)) {
+ return ms.getMessage();
+ }
+ }
+ return "";
+ }
+ }
+
+ public static AvPtzTypeEnum valueOfType(Integer value) {
+ if (value == null) {
+ return TYPE0;
+ } else {
+ for (AvPtzTypeEnum ms : AvPtzTypeEnum.values()) {
+ if (ms.getCode().equals(value)) {
+ return ms;
+ }
+ }
+ return TYPE0;
+ }
+ }
+}
diff --git a/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/enums/AvSecretLevelEnum.java b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/enums/AvSecretLevelEnum.java
new file mode 100644
index 0000000..39e8524
--- /dev/null
+++ b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/enums/AvSecretLevelEnum.java
@@ -0,0 +1,60 @@
+package com.casic.missiles.modular.device.enums;
+
+/**
+ * Av主数据密集对应关系枚举
+ *
+ * @author lwh
+ * @Date 2017年1月10日 下午9:54:13
+ */
+public enum AvSecretLevelEnum {
+ s("999", "未定密", 999, "未定密"),
+ s0("0", "公开", 0, "公开"),
+ s1("1", "内部", 1, "内部"),
+ s2("2", "秘密", 2, "秘密"),
+ s3("3", "机密", 3, "机密");
+
+ String code;
+ Integer currCode;
+ String message;
+ String currMsg;
+
+ AvSecretLevelEnum(String code, String message, Integer currCode, String currMsg) {
+ this.code = code;
+ this.currCode = currCode;
+ this.message = message;
+ this.currMsg = currMsg;
+ }
+
+ public Integer getCurrCode() {
+ return currCode;
+ }
+
+ public String getCode() {
+ return code;
+ }
+
+ public void setCode(String code) {
+ this.code = code;
+ }
+
+ public String getMessage() {
+ return message;
+ }
+
+ public void setMessage(String message) {
+ this.message = message;
+ }
+
+ public static AvSecretLevelEnum valueOfCode(String value) {
+ if (value == null) {
+ return s0;
+ } else {
+ for (AvSecretLevelEnum ms : AvSecretLevelEnum.values()) {
+ if (ms.getCode().equals(value)) {
+ return ms;
+ }
+ }
+ return s0;
+ }
+ }
+}
diff --git a/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/enums/AvStatusTypeEnum.java b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/enums/AvStatusTypeEnum.java
new file mode 100644
index 0000000..ddccd52
--- /dev/null
+++ b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/enums/AvStatusTypeEnum.java
@@ -0,0 +1,72 @@
+package com.casic.missiles.modular.device.enums;
+
+/**
+ * wvp设备类型转换
+ *
+ * @author lwh
+ * @Date 2017年1月10日 下午9:54:13
+ */
+public enum AvStatusTypeEnum {
+
+ TYPE0(0, "离线",0),
+ TYPE1(1, "在线",1);
+
+ Integer code;
+ String message;
+ Integer type;
+ AvStatusTypeEnum(Integer code, String message, Integer type) {
+ this.code = code;
+ this.message = message;
+ this.type = type;
+ }
+
+ public Integer getCode() {
+ return code;
+ }
+
+ public void setCode(Integer code) {
+ this.code = code;
+ }
+
+ public String getMessage() {
+ return message;
+ }
+
+ public void setMessage(String message) {
+ this.message = message;
+ }
+
+ public Integer getType() {
+ return type;
+ }
+
+ public void setType(Integer type) {
+ this.type = type;
+ }
+
+ public static String valueOfs(Integer value) {
+ if (value == null) {
+ return "";
+ } else {
+ for (AvStatusTypeEnum ms : AvStatusTypeEnum.values()) {
+ if (ms.getCode().equals(value)) {
+ return ms.getMessage();
+ }
+ }
+ return "";
+ }
+ }
+
+ public static AvStatusTypeEnum valueOfType(Integer value) {
+ if (value == null) {
+ return TYPE0;
+ } else {
+ for (AvStatusTypeEnum ms : AvStatusTypeEnum.values()) {
+ if (ms.getCode().equals(value)) {
+ return ms;
+ }
+ }
+ return TYPE0;
+ }
+ }
+}
diff --git a/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/enums/AvUrlEnums.java b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/enums/AvUrlEnums.java
new file mode 100644
index 0000000..04b38ad
--- /dev/null
+++ b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/enums/AvUrlEnums.java
@@ -0,0 +1,37 @@
+package com.casic.missiles.modular.device.enums;
+
+/**
+ * 设备媒体
+ */
+public enum AvUrlEnums {
+ DEVICE("/open/v1/api/devices","设备信息查询"),
+ STREAM("/open/v1/api/streams","创建流"),
+ STREAM_STOP("/open/v1/api/streams/%s","停止流"),
+ HEART("/open/v1/api/streams/%s/heartbeat","发送心跳"),
+ DICT("/open/v1/api/dictionary_datas","字典查询"),
+ USER_DEVICE_RELATION("/open/v1/api/user_device_relationships","用户设备关联关系");
+
+ private String url;
+ private String name;
+
+ AvUrlEnums(String url, String name) {
+ this.url = url;
+ this.name = name;
+ }
+
+ public String getUrl() {
+ return url;
+ }
+
+ public void setUrl(String url) {
+ this.url = url;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+}
diff --git a/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/http/AvDefaultHttpHeaderHandler.java b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/http/AvDefaultHttpHeaderHandler.java
new file mode 100644
index 0000000..53f0a5c
--- /dev/null
+++ b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/http/AvDefaultHttpHeaderHandler.java
@@ -0,0 +1,14 @@
+package com.casic.missiles.modular.device.http;
+
+import cn.hutool.core.util.StrUtil;
+import com.casic.missiles.modular.system.handler.DefaultHttpHeaderHandler;
+import org.apache.http.client.methods.HttpRequestBase;
+
+public class AvDefaultHttpHeaderHandler extends DefaultHttpHeaderHandler {
+ public void setHeader(HttpRequestBase base, String token) {
+ base.addHeader("Content-type", DEFAULT_CONTEXTTYPE);
+ if (StrUtil.isNotEmpty(token)) {
+ base.addHeader("X-OApi-Token", token);
+ }
+ }
+}
diff --git a/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/http/HttpGetWithEntity.java b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/http/HttpGetWithEntity.java
new file mode 100644
index 0000000..b8abf8f
--- /dev/null
+++ b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/http/HttpGetWithEntity.java
@@ -0,0 +1,20 @@
+package com.casic.missiles.modular.device.http;
+
+import org.apache.http.client.methods.HttpEntityEnclosingRequestBase;
+
+import java.net.URI;
+
+public class HttpGetWithEntity extends HttpEntityEnclosingRequestBase {
+
+ public HttpGetWithEntity(URI uri) {
+ this.setURI(uri);
+ }
+
+ public HttpGetWithEntity(String uri) {
+ this.setURI(URI.create(uri));
+ }
+
+ public String getMethod() {
+ return "GET";
+ }
+}
diff --git a/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/service/IAvSyncService.java b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/service/IAvSyncService.java
new file mode 100644
index 0000000..13c3203
--- /dev/null
+++ b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/service/IAvSyncService.java
@@ -0,0 +1,39 @@
+package com.casic.missiles.modular.device.service;
+
+import com.casic.missiles.modular.device.dto.stream.StreamRequestDTO;
+
+public interface IAvSyncService {
+ /**
+ * Dc706设备信息同步
+ */
+ void syncDcDevices(String token);
+
+ /**
+ * 创建流
+ *
+ * @param streamRequestDTO
+ * @return
+ */
+ Object getStreams(StreamRequestDTO streamRequestDTO);
+
+ /**
+ * 停止流
+ *
+ * @param id
+ * @return
+ */
+ Object stopStreams(String id);
+
+ /**
+ * 发送心跳
+ *
+ * @param id 设备国标号
+ * @return
+ */
+ Object heart(String id);
+
+ /**
+ * 设备权限更新
+ */
+ void loadUserDeviceRelationships();
+}
diff --git a/README.md b/README.md
index 430796e..8dbc9a5 100644
--- a/README.md
+++ b/README.md
@@ -9,3 +9,7 @@
#### 其他
>* [git地址](http://192.168.0.203:8080/gitbucket)
>* [本地免登地址](http://localhost:8083/route/mockToken)
+
+AView 对接问题
+1.用户设备关联关系
+ 对应返回 device_list是否为设备国标号
\ No newline at end of file
diff --git a/casic-device-sync/casic-device-aview/pom.xml b/casic-device-sync/casic-device-aview/pom.xml
index 0a3c5fa..94fb9e5 100644
--- a/casic-device-sync/casic-device-aview/pom.xml
+++ b/casic-device-sync/casic-device-aview/pom.xml
@@ -33,6 +33,21 @@
${boot.version}
provided
+
+ com.casic
+ casic-http
+ ${core.version}
+
+
+ com.casic
+ casic-admin-group
+ ${admin.version}
+
+
+ com.casic
+ casic-server
+ ${pro.version}
+
diff --git a/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/controller/AvRouteController.java b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/controller/AvRouteController.java
new file mode 100644
index 0000000..195cba2
--- /dev/null
+++ b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/controller/AvRouteController.java
@@ -0,0 +1,45 @@
+package com.casic.missiles.modular.device.controller;
+
+import com.casic.missiles.model.response.dto.ResponseDataDTO;
+import com.casic.missiles.modular.device.dto.stream.StreamRequestDTO;
+import com.casic.missiles.modular.device.service.IAvSyncService;
+import io.swagger.annotations.Api;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+
+@Api(tags = "AV平台代理接口")
+@RestController
+@RequestMapping("/route")
+public class AvRouteController {
+ @Resource
+ private IAvSyncService avSyncService;
+
+ @PostMapping("/open/v1/api/streams")
+ public Object streams(@RequestBody StreamRequestDTO requestDTO) {
+ Object object = avSyncService.getStreams(requestDTO);
+ if (object == null) {
+ ResponseDataDTO respDTO = ResponseDataDTO.error("流读取失败,请稍后重试!");
+ respDTO.setMessage("流读取失败,请稍后重试!");
+ return respDTO;
+ }
+ return ResponseDataDTO.success(avSyncService.getStreams(requestDTO));
+ }
+
+ @DeleteMapping("/open/v1/api/streams/{id}")
+ public Object stopStreams(@PathVariable("id") String id) {
+ Object object = avSyncService.stopStreams(id);
+ return ResponseDataDTO.success(object);
+ }
+
+ @PostMapping("/open/v1/api/streams/{id}/heart")
+ public Object heart(@PathVariable("id") String id) {
+ Object object = avSyncService.heart(id);
+ if (object == null) {
+ ResponseDataDTO respDTO = ResponseDataDTO.error("流心跳失败,请稍后重试!");
+ respDTO.setMessage("流心跳失败,请稍后重试!");
+ return respDTO;
+ }
+ return ResponseDataDTO.success(object);
+ }
+}
\ No newline at end of file
diff --git a/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/AvDeviceDTO.java b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/AvDeviceDTO.java
new file mode 100644
index 0000000..97bde9f
--- /dev/null
+++ b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/AvDeviceDTO.java
@@ -0,0 +1,49 @@
+package com.casic.missiles.modular.device.dto;
+
+import com.alibaba.fastjson.annotation.JSONField;
+import lombok.Data;
+
+/**
+ * 艾薇设备对象DTO
+ */
+@Data
+public class AvDeviceDTO {
+ // 设备ID
+ private Long id;
+
+ // 设备名称
+ private String name;
+
+ // 设备唯一国标序列号
+ private String sn;
+
+ // 设备类型
+ private Integer type;
+
+ // 设备版本号
+ private String version;
+
+ // 安全等级
+ @JSONField(name = "secure_level")
+ private String secureLevel;
+
+ // 设备状态
+ private Integer status;
+
+ // 云台类型
+ private Integer ptzType;
+
+ // 朝向
+ private Integer orientation;
+
+ // 创建时间
+ @JSONField(name = "gmt_created")
+ private String gmtCreated;
+
+ // 修改时间
+ @JSONField(name = "gmt_modified")
+ private String gmtModified;
+
+ // 数据状态
+ private Integer state;
+}
diff --git a/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/AvPageResponse.java b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/AvPageResponse.java
new file mode 100644
index 0000000..9a05183
--- /dev/null
+++ b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/AvPageResponse.java
@@ -0,0 +1,10 @@
+package com.casic.missiles.modular.device.dto;
+
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class AvPageResponse {
+ private List items;
+}
diff --git a/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/DeviceRelationshipDTO.java b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/DeviceRelationshipDTO.java
new file mode 100644
index 0000000..098dda4
--- /dev/null
+++ b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/DeviceRelationshipDTO.java
@@ -0,0 +1,12 @@
+package com.casic.missiles.modular.device.dto;
+
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class DeviceRelationshipDTO {
+ private Long user_id;
+ private String device_list;
+ private List deviceList;
+}
diff --git a/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/page/AvPageRep.java b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/page/AvPageRep.java
new file mode 100644
index 0000000..74e6a9b
--- /dev/null
+++ b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/page/AvPageRep.java
@@ -0,0 +1,9 @@
+package com.casic.missiles.modular.device.dto.page;
+
+import lombok.Data;
+
+@Data
+public class AvPageRep {
+ private Integer total;
+ private T list;
+}
diff --git a/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/page/AvPageRequest.java b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/page/AvPageRequest.java
new file mode 100644
index 0000000..900ae4a
--- /dev/null
+++ b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/page/AvPageRequest.java
@@ -0,0 +1,14 @@
+package com.casic.missiles.modular.device.dto.page;
+
+import lombok.Data;
+
+/**
+ * 分页请求DTO
+ */
+@Data
+public class AvPageRequest {
+ private int page;
+ private int paging;
+ private int limit;
+
+}
diff --git a/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/page/AvResponseDTO.java b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/page/AvResponseDTO.java
new file mode 100644
index 0000000..f1c1e7a
--- /dev/null
+++ b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/page/AvResponseDTO.java
@@ -0,0 +1,15 @@
+package com.casic.missiles.modular.device.dto.page;
+
+import lombok.Data;
+
+/**
+ * mvp返回基类封装
+ *
+ * @param
+ */
+@Data
+public class AvResponseDTO {
+ private T data;
+ private Integer code;
+ private String msg;
+}
diff --git a/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/stream/StreamRequestDTO.java b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/stream/StreamRequestDTO.java
new file mode 100644
index 0000000..69e88ce
--- /dev/null
+++ b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/stream/StreamRequestDTO.java
@@ -0,0 +1,12 @@
+package com.casic.missiles.modular.device.dto.stream;
+
+import lombok.Data;
+
+@Data
+public class StreamRequestDTO {
+ private String device_id;
+ private String stream_type;
+ private String quality;
+ private int from;
+ private int to;
+}
diff --git a/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/stream/StreamStopRequestDTO.java b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/stream/StreamStopRequestDTO.java
new file mode 100644
index 0000000..9cf94b1
--- /dev/null
+++ b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/stream/StreamStopRequestDTO.java
@@ -0,0 +1,11 @@
+package com.casic.missiles.modular.device.dto.stream;
+
+import lombok.Data;
+
+@Data
+public class StreamStopRequestDTO {
+ private String id;
+ private String type;
+ private StreamRequestDTO request;
+ private String url;
+}
diff --git a/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/enums/AvDataStateEnum.java b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/enums/AvDataStateEnum.java
new file mode 100644
index 0000000..e1a6658
--- /dev/null
+++ b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/enums/AvDataStateEnum.java
@@ -0,0 +1,72 @@
+package com.casic.missiles.modular.device.enums;
+
+/**
+ * 数据状态
+ *
+ * @author lwh
+ * @Date 2017年1月10日 下午9:54:13
+ */
+public enum AvDataStateEnum {
+
+ TYPE0(0, "有效",0),
+ DEL(1, "无效",1);
+
+ Integer code;
+ String message;
+ Integer type;
+ AvDataStateEnum(Integer code, String message, Integer type) {
+ this.code = code;
+ this.message = message;
+ this.type = type;
+ }
+
+ public Integer getCode() {
+ return code;
+ }
+
+ public void setCode(Integer code) {
+ this.code = code;
+ }
+
+ public String getMessage() {
+ return message;
+ }
+
+ public void setMessage(String message) {
+ this.message = message;
+ }
+
+ public Integer getType() {
+ return type;
+ }
+
+ public void setType(Integer type) {
+ this.type = type;
+ }
+
+ public static String valueOfs(Integer value) {
+ if (value == null) {
+ return "";
+ } else {
+ for (AvDataStateEnum ms : AvDataStateEnum.values()) {
+ if (ms.getCode().equals(value)) {
+ return ms.getMessage();
+ }
+ }
+ return "";
+ }
+ }
+
+ public static AvDataStateEnum valueOfType(Integer value) {
+ if (value == null) {
+ return TYPE0;
+ } else {
+ for (AvDataStateEnum ms : AvDataStateEnum.values()) {
+ if (ms.getCode().equals(value)) {
+ return ms;
+ }
+ }
+ return TYPE0;
+ }
+ }
+}
diff --git a/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/enums/AvPtzTypeEnum.java b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/enums/AvPtzTypeEnum.java
new file mode 100644
index 0000000..fdcb08d
--- /dev/null
+++ b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/enums/AvPtzTypeEnum.java
@@ -0,0 +1,73 @@
+package com.casic.missiles.modular.device.enums;
+
+/**
+ * wvp设备类型转换
+ *
+ * @author lwh
+ * @Date 2017年1月10日 下午9:54:13
+ */
+public enum AvPtzTypeEnum {
+
+ TYPE0(0, "枪机",0),
+ TYPE1(1, "半球",1),
+ TYPE2(2, "球机",2);
+
+ Integer code;
+ String message;
+ Integer type;
+ AvPtzTypeEnum(Integer code, String message, Integer type) {
+ this.code = code;
+ this.message = message;
+ this.type = type;
+ }
+
+ public Integer getCode() {
+ return code;
+ }
+
+ public void setCode(Integer code) {
+ this.code = code;
+ }
+
+ public String getMessage() {
+ return message;
+ }
+
+ public void setMessage(String message) {
+ this.message = message;
+ }
+
+ public Integer getType() {
+ return type;
+ }
+
+ public void setType(Integer type) {
+ this.type = type;
+ }
+
+ public static String valueOfs(Integer value) {
+ if (value == null) {
+ return "";
+ } else {
+ for (AvPtzTypeEnum ms : AvPtzTypeEnum.values()) {
+ if (ms.getCode().equals(value)) {
+ return ms.getMessage();
+ }
+ }
+ return "";
+ }
+ }
+
+ public static AvPtzTypeEnum valueOfType(Integer value) {
+ if (value == null) {
+ return TYPE0;
+ } else {
+ for (AvPtzTypeEnum ms : AvPtzTypeEnum.values()) {
+ if (ms.getCode().equals(value)) {
+ return ms;
+ }
+ }
+ return TYPE0;
+ }
+ }
+}
diff --git a/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/enums/AvSecretLevelEnum.java b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/enums/AvSecretLevelEnum.java
new file mode 100644
index 0000000..39e8524
--- /dev/null
+++ b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/enums/AvSecretLevelEnum.java
@@ -0,0 +1,60 @@
+package com.casic.missiles.modular.device.enums;
+
+/**
+ * Av主数据密集对应关系枚举
+ *
+ * @author lwh
+ * @Date 2017年1月10日 下午9:54:13
+ */
+public enum AvSecretLevelEnum {
+ s("999", "未定密", 999, "未定密"),
+ s0("0", "公开", 0, "公开"),
+ s1("1", "内部", 1, "内部"),
+ s2("2", "秘密", 2, "秘密"),
+ s3("3", "机密", 3, "机密");
+
+ String code;
+ Integer currCode;
+ String message;
+ String currMsg;
+
+ AvSecretLevelEnum(String code, String message, Integer currCode, String currMsg) {
+ this.code = code;
+ this.currCode = currCode;
+ this.message = message;
+ this.currMsg = currMsg;
+ }
+
+ public Integer getCurrCode() {
+ return currCode;
+ }
+
+ public String getCode() {
+ return code;
+ }
+
+ public void setCode(String code) {
+ this.code = code;
+ }
+
+ public String getMessage() {
+ return message;
+ }
+
+ public void setMessage(String message) {
+ this.message = message;
+ }
+
+ public static AvSecretLevelEnum valueOfCode(String value) {
+ if (value == null) {
+ return s0;
+ } else {
+ for (AvSecretLevelEnum ms : AvSecretLevelEnum.values()) {
+ if (ms.getCode().equals(value)) {
+ return ms;
+ }
+ }
+ return s0;
+ }
+ }
+}
diff --git a/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/enums/AvStatusTypeEnum.java b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/enums/AvStatusTypeEnum.java
new file mode 100644
index 0000000..ddccd52
--- /dev/null
+++ b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/enums/AvStatusTypeEnum.java
@@ -0,0 +1,72 @@
+package com.casic.missiles.modular.device.enums;
+
+/**
+ * wvp设备类型转换
+ *
+ * @author lwh
+ * @Date 2017年1月10日 下午9:54:13
+ */
+public enum AvStatusTypeEnum {
+
+ TYPE0(0, "离线",0),
+ TYPE1(1, "在线",1);
+
+ Integer code;
+ String message;
+ Integer type;
+ AvStatusTypeEnum(Integer code, String message, Integer type) {
+ this.code = code;
+ this.message = message;
+ this.type = type;
+ }
+
+ public Integer getCode() {
+ return code;
+ }
+
+ public void setCode(Integer code) {
+ this.code = code;
+ }
+
+ public String getMessage() {
+ return message;
+ }
+
+ public void setMessage(String message) {
+ this.message = message;
+ }
+
+ public Integer getType() {
+ return type;
+ }
+
+ public void setType(Integer type) {
+ this.type = type;
+ }
+
+ public static String valueOfs(Integer value) {
+ if (value == null) {
+ return "";
+ } else {
+ for (AvStatusTypeEnum ms : AvStatusTypeEnum.values()) {
+ if (ms.getCode().equals(value)) {
+ return ms.getMessage();
+ }
+ }
+ return "";
+ }
+ }
+
+ public static AvStatusTypeEnum valueOfType(Integer value) {
+ if (value == null) {
+ return TYPE0;
+ } else {
+ for (AvStatusTypeEnum ms : AvStatusTypeEnum.values()) {
+ if (ms.getCode().equals(value)) {
+ return ms;
+ }
+ }
+ return TYPE0;
+ }
+ }
+}
diff --git a/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/enums/AvUrlEnums.java b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/enums/AvUrlEnums.java
new file mode 100644
index 0000000..04b38ad
--- /dev/null
+++ b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/enums/AvUrlEnums.java
@@ -0,0 +1,37 @@
+package com.casic.missiles.modular.device.enums;
+
+/**
+ * 设备媒体
+ */
+public enum AvUrlEnums {
+ DEVICE("/open/v1/api/devices","设备信息查询"),
+ STREAM("/open/v1/api/streams","创建流"),
+ STREAM_STOP("/open/v1/api/streams/%s","停止流"),
+ HEART("/open/v1/api/streams/%s/heartbeat","发送心跳"),
+ DICT("/open/v1/api/dictionary_datas","字典查询"),
+ USER_DEVICE_RELATION("/open/v1/api/user_device_relationships","用户设备关联关系");
+
+ private String url;
+ private String name;
+
+ AvUrlEnums(String url, String name) {
+ this.url = url;
+ this.name = name;
+ }
+
+ public String getUrl() {
+ return url;
+ }
+
+ public void setUrl(String url) {
+ this.url = url;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+}
diff --git a/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/http/AvDefaultHttpHeaderHandler.java b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/http/AvDefaultHttpHeaderHandler.java
new file mode 100644
index 0000000..53f0a5c
--- /dev/null
+++ b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/http/AvDefaultHttpHeaderHandler.java
@@ -0,0 +1,14 @@
+package com.casic.missiles.modular.device.http;
+
+import cn.hutool.core.util.StrUtil;
+import com.casic.missiles.modular.system.handler.DefaultHttpHeaderHandler;
+import org.apache.http.client.methods.HttpRequestBase;
+
+public class AvDefaultHttpHeaderHandler extends DefaultHttpHeaderHandler {
+ public void setHeader(HttpRequestBase base, String token) {
+ base.addHeader("Content-type", DEFAULT_CONTEXTTYPE);
+ if (StrUtil.isNotEmpty(token)) {
+ base.addHeader("X-OApi-Token", token);
+ }
+ }
+}
diff --git a/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/http/HttpGetWithEntity.java b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/http/HttpGetWithEntity.java
new file mode 100644
index 0000000..b8abf8f
--- /dev/null
+++ b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/http/HttpGetWithEntity.java
@@ -0,0 +1,20 @@
+package com.casic.missiles.modular.device.http;
+
+import org.apache.http.client.methods.HttpEntityEnclosingRequestBase;
+
+import java.net.URI;
+
+public class HttpGetWithEntity extends HttpEntityEnclosingRequestBase {
+
+ public HttpGetWithEntity(URI uri) {
+ this.setURI(uri);
+ }
+
+ public HttpGetWithEntity(String uri) {
+ this.setURI(URI.create(uri));
+ }
+
+ public String getMethod() {
+ return "GET";
+ }
+}
diff --git a/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/service/IAvSyncService.java b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/service/IAvSyncService.java
new file mode 100644
index 0000000..13c3203
--- /dev/null
+++ b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/service/IAvSyncService.java
@@ -0,0 +1,39 @@
+package com.casic.missiles.modular.device.service;
+
+import com.casic.missiles.modular.device.dto.stream.StreamRequestDTO;
+
+public interface IAvSyncService {
+ /**
+ * Dc706设备信息同步
+ */
+ void syncDcDevices(String token);
+
+ /**
+ * 创建流
+ *
+ * @param streamRequestDTO
+ * @return
+ */
+ Object getStreams(StreamRequestDTO streamRequestDTO);
+
+ /**
+ * 停止流
+ *
+ * @param id
+ * @return
+ */
+ Object stopStreams(String id);
+
+ /**
+ * 发送心跳
+ *
+ * @param id 设备国标号
+ * @return
+ */
+ Object heart(String id);
+
+ /**
+ * 设备权限更新
+ */
+ void loadUserDeviceRelationships();
+}
diff --git a/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/service/impl/AvSyncServiceImpl.java b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/service/impl/AvSyncServiceImpl.java
new file mode 100644
index 0000000..25e3340
--- /dev/null
+++ b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/service/impl/AvSyncServiceImpl.java
@@ -0,0 +1,179 @@
+package com.casic.missiles.modular.device.service.impl;
+
+import cn.hutool.core.collection.CollectionUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.casic.missiles.core.application.service.AbstractUserService;
+import com.casic.missiles.modular.device.dto.AvDeviceDTO;
+import com.casic.missiles.modular.device.dto.DeviceRelationshipDTO;
+import com.casic.missiles.modular.device.dto.page.AvPageRequest;
+import com.casic.missiles.modular.device.dto.stream.StreamRequestDTO;
+import com.casic.missiles.modular.device.enums.AvDataStateEnum;
+import com.casic.missiles.modular.device.enums.AvPtzTypeEnum;
+import com.casic.missiles.modular.device.enums.AvSecretLevelEnum;
+import com.casic.missiles.modular.device.enums.AvStatusTypeEnum;
+import com.casic.missiles.modular.device.model.BusDeviceInfo;
+import com.casic.missiles.modular.device.service.IAvSyncService;
+import com.casic.missiles.modular.device.service.IBusDeviceInfoService;
+import com.casic.missiles.modular.device.service.ISysGroupDeviceService;
+import com.casic.missiles.modular.device.util.AvUtil;
+import com.casic.missiles.modular.system.model.SysUserGroup;
+import com.casic.missiles.modular.system.model.User;
+import com.casic.missiles.modular.system.service.ISysUserGroupService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import javax.annotation.Resource;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+import java.util.stream.Collectors;
+@Slf4j
+@Service
+public class AvSyncServiceImpl implements IAvSyncService {
+ @Value("${casic.video.av.url:-1}")
+ private String avUrl;
+ @Value("${casic.video.av.token:-1}")
+ private String avToken;
+ @Resource
+ private IBusDeviceInfoService deviceInfoService;
+ @Resource
+ private AbstractUserService abstractUserService;
+
+ @Resource
+ private ISysUserGroupService userGroupService;
+ @Resource
+ private ISysGroupDeviceService sysGroupDeviceService;
+
+ @Override
+ public void syncDcDevices(String token) {
+ AvPageRequest avPageRequest = new AvPageRequest();
+ avPageRequest.setPage(1);
+ avPageRequest.setPaging(1);
+
+ //全量查询设备信息
+ List deviceDTOS = AvUtil.selectDevices(avUrl, token, avPageRequest);
+
+ if (CollectionUtil.isNotEmpty(deviceDTOS)) {
+ for (AvDeviceDTO dcDeviceDTO : deviceDTOS) {
+ BusDeviceInfo busDeviceInfo = this.convertDevice(dcDeviceDTO);
+
+ LambdaQueryWrapper query = new LambdaQueryWrapper<>();
+ query.eq(BusDeviceInfo::getCameraIndexCode, dcDeviceDTO.getSn());
+ this.deviceInfoService.saveOrUpdate(busDeviceInfo, query);
+ }
+
+ List deviceSns = deviceDTOS.stream().filter(dto -> AvDataStateEnum.DEL.equals(dto.getState())).map(AvDeviceDTO::getSn).collect(Collectors.toList());
+
+ LambdaQueryWrapper query = new LambdaQueryWrapper<>();
+ query.in(BusDeviceInfo::getCameraIndexCode, deviceSns);
+ if (CollectionUtil.isNotEmpty(deviceSns)) {
+ this.deviceInfoService.remove(query);
+ }
+ }
+
+// AvUtil.dict(avUrl,avToken);
+ }
+
+ /**
+ * 流地址请求
+ *
+ * @param streamRequestDTO
+ * @return
+ */
+ @Override
+ public Object getStreams(StreamRequestDTO streamRequestDTO) {
+ return AvUtil.selectStreams(avUrl, avToken, streamRequestDTO);
+ }
+
+ @Override
+ public Object stopStreams(String id) {
+ return AvUtil.stopStreams(avUrl, avToken, id);
+ }
+
+ @Override
+ public Object heart(String id) {
+ return AvUtil.heart(avUrl, avToken, id);
+ }
+
+ @Transactional
+ @Override
+ public void loadUserDeviceRelationships() {
+
+ List relationshipDTOS = AvUtil.userDeviceRelationships(avUrl, avToken);
+ log.info("loadUserDeviceRelationships: {}", relationshipDTOS);
+
+ for (DeviceRelationshipDTO relationshipDTO : relationshipDTOS) {
+
+ //检索用户信息
+ LambdaQueryWrapper query = new LambdaQueryWrapper<>();
+ query.eq(User::getSyncId, relationshipDTO.getUser_id());
+ List users = abstractUserService.list(query);
+
+ if (users != null&&users.size() > 0) {
+ User user = users.get(0);
+ //创建用户组
+ LambdaQueryWrapper groupQuery = new LambdaQueryWrapper<>();
+ String groupName = user.getName() + user.getId();
+ groupQuery.eq(SysUserGroup::getGroupName, groupName);
+ SysUserGroup sysUserGroup = userGroupService.getOne(groupQuery);
+
+ if (sysUserGroup == null) {
+ sysUserGroup = genSysUserGroup(groupName, user);
+ List userIds = new ArrayList<>();
+ userIds.add(user.getId());
+ userGroupService.createSysUserGroup(sysUserGroup, userIds);
+ }
+
+ LambdaQueryWrapper deviceQuery = new LambdaQueryWrapper<>();
+ deviceQuery.in(BusDeviceInfo::getCameraIndexCode, relationshipDTO.getDeviceList());
+ List busDeviceInfos = deviceInfoService.list(deviceQuery);
+
+ if (CollectionUtil.isNotEmpty(busDeviceInfos)) {
+ List list = busDeviceInfos.stream().map(BusDeviceInfo::getId).collect(Collectors.toList());
+ sysGroupDeviceService.batchIncremental(sysUserGroup.getId(), list);
+ }
+
+ }else{
+ log.error("loadUserDeviceRelationships is empty: {}", relationshipDTO.getUser_id());
+ }
+ }
+ }
+
+ private SysUserGroup genSysUserGroup(String groupName, User user) {
+ SysUserGroup sysUserGroup = new SysUserGroup();
+ sysUserGroup.setGroupName(groupName);
+ sysUserGroup.setCreateTime(new Date());
+ sysUserGroup.setCreateId(user.getId());
+ sysUserGroup.setDeptId(user.getDeptId());
+ sysUserGroup.setDescription("默认创建分组,不可修改!");
+ sysUserGroup.setSafe(0);
+ return sysUserGroup;
+ }
+
+ /**
+ * 设备类型数据转换
+ *
+ * @param dto 艾薇设备信息
+ * @return
+ */
+ private BusDeviceInfo convertDevice(AvDeviceDTO dto) {
+ BusDeviceInfo info = new BusDeviceInfo();
+ info.setCreateTime(new Date());
+ info.setUpdateTime(new Date());
+
+ //转换为本地密级编码
+ info.setSecretLevel(AvSecretLevelEnum.valueOfCode(dto.getSecureLevel()).getCurrCode());
+
+ info.setDeviceStatus(AvStatusTypeEnum.valueOfType(dto.getStatus()).getType());
+ info.setCameraIndexCode(dto.getSn());
+ info.setMonitorName(dto.getName());
+
+ //PTZ type类型
+ info.setDeviceType(AvPtzTypeEnum.valueOfType(dto.getPtzType()).getType() + "");
+ info.setBfFlag(0);
+
+ return info;
+ }
+}
diff --git a/README.md b/README.md
index 430796e..8dbc9a5 100644
--- a/README.md
+++ b/README.md
@@ -9,3 +9,7 @@
#### 其他
>* [git地址](http://192.168.0.203:8080/gitbucket)
>* [本地免登地址](http://localhost:8083/route/mockToken)
+
+AView 对接问题
+1.用户设备关联关系
+ 对应返回 device_list是否为设备国标号
\ No newline at end of file
diff --git a/casic-device-sync/casic-device-aview/pom.xml b/casic-device-sync/casic-device-aview/pom.xml
index 0a3c5fa..94fb9e5 100644
--- a/casic-device-sync/casic-device-aview/pom.xml
+++ b/casic-device-sync/casic-device-aview/pom.xml
@@ -33,6 +33,21 @@
${boot.version}
provided
+
+ com.casic
+ casic-http
+ ${core.version}
+
+
+ com.casic
+ casic-admin-group
+ ${admin.version}
+
+
+ com.casic
+ casic-server
+ ${pro.version}
+
diff --git a/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/controller/AvRouteController.java b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/controller/AvRouteController.java
new file mode 100644
index 0000000..195cba2
--- /dev/null
+++ b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/controller/AvRouteController.java
@@ -0,0 +1,45 @@
+package com.casic.missiles.modular.device.controller;
+
+import com.casic.missiles.model.response.dto.ResponseDataDTO;
+import com.casic.missiles.modular.device.dto.stream.StreamRequestDTO;
+import com.casic.missiles.modular.device.service.IAvSyncService;
+import io.swagger.annotations.Api;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+
+@Api(tags = "AV平台代理接口")
+@RestController
+@RequestMapping("/route")
+public class AvRouteController {
+ @Resource
+ private IAvSyncService avSyncService;
+
+ @PostMapping("/open/v1/api/streams")
+ public Object streams(@RequestBody StreamRequestDTO requestDTO) {
+ Object object = avSyncService.getStreams(requestDTO);
+ if (object == null) {
+ ResponseDataDTO respDTO = ResponseDataDTO.error("流读取失败,请稍后重试!");
+ respDTO.setMessage("流读取失败,请稍后重试!");
+ return respDTO;
+ }
+ return ResponseDataDTO.success(avSyncService.getStreams(requestDTO));
+ }
+
+ @DeleteMapping("/open/v1/api/streams/{id}")
+ public Object stopStreams(@PathVariable("id") String id) {
+ Object object = avSyncService.stopStreams(id);
+ return ResponseDataDTO.success(object);
+ }
+
+ @PostMapping("/open/v1/api/streams/{id}/heart")
+ public Object heart(@PathVariable("id") String id) {
+ Object object = avSyncService.heart(id);
+ if (object == null) {
+ ResponseDataDTO respDTO = ResponseDataDTO.error("流心跳失败,请稍后重试!");
+ respDTO.setMessage("流心跳失败,请稍后重试!");
+ return respDTO;
+ }
+ return ResponseDataDTO.success(object);
+ }
+}
\ No newline at end of file
diff --git a/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/AvDeviceDTO.java b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/AvDeviceDTO.java
new file mode 100644
index 0000000..97bde9f
--- /dev/null
+++ b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/AvDeviceDTO.java
@@ -0,0 +1,49 @@
+package com.casic.missiles.modular.device.dto;
+
+import com.alibaba.fastjson.annotation.JSONField;
+import lombok.Data;
+
+/**
+ * 艾薇设备对象DTO
+ */
+@Data
+public class AvDeviceDTO {
+ // 设备ID
+ private Long id;
+
+ // 设备名称
+ private String name;
+
+ // 设备唯一国标序列号
+ private String sn;
+
+ // 设备类型
+ private Integer type;
+
+ // 设备版本号
+ private String version;
+
+ // 安全等级
+ @JSONField(name = "secure_level")
+ private String secureLevel;
+
+ // 设备状态
+ private Integer status;
+
+ // 云台类型
+ private Integer ptzType;
+
+ // 朝向
+ private Integer orientation;
+
+ // 创建时间
+ @JSONField(name = "gmt_created")
+ private String gmtCreated;
+
+ // 修改时间
+ @JSONField(name = "gmt_modified")
+ private String gmtModified;
+
+ // 数据状态
+ private Integer state;
+}
diff --git a/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/AvPageResponse.java b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/AvPageResponse.java
new file mode 100644
index 0000000..9a05183
--- /dev/null
+++ b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/AvPageResponse.java
@@ -0,0 +1,10 @@
+package com.casic.missiles.modular.device.dto;
+
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class AvPageResponse {
+ private List items;
+}
diff --git a/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/DeviceRelationshipDTO.java b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/DeviceRelationshipDTO.java
new file mode 100644
index 0000000..098dda4
--- /dev/null
+++ b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/DeviceRelationshipDTO.java
@@ -0,0 +1,12 @@
+package com.casic.missiles.modular.device.dto;
+
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class DeviceRelationshipDTO {
+ private Long user_id;
+ private String device_list;
+ private List deviceList;
+}
diff --git a/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/page/AvPageRep.java b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/page/AvPageRep.java
new file mode 100644
index 0000000..74e6a9b
--- /dev/null
+++ b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/page/AvPageRep.java
@@ -0,0 +1,9 @@
+package com.casic.missiles.modular.device.dto.page;
+
+import lombok.Data;
+
+@Data
+public class AvPageRep {
+ private Integer total;
+ private T list;
+}
diff --git a/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/page/AvPageRequest.java b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/page/AvPageRequest.java
new file mode 100644
index 0000000..900ae4a
--- /dev/null
+++ b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/page/AvPageRequest.java
@@ -0,0 +1,14 @@
+package com.casic.missiles.modular.device.dto.page;
+
+import lombok.Data;
+
+/**
+ * 分页请求DTO
+ */
+@Data
+public class AvPageRequest {
+ private int page;
+ private int paging;
+ private int limit;
+
+}
diff --git a/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/page/AvResponseDTO.java b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/page/AvResponseDTO.java
new file mode 100644
index 0000000..f1c1e7a
--- /dev/null
+++ b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/page/AvResponseDTO.java
@@ -0,0 +1,15 @@
+package com.casic.missiles.modular.device.dto.page;
+
+import lombok.Data;
+
+/**
+ * mvp返回基类封装
+ *
+ * @param
+ */
+@Data
+public class AvResponseDTO {
+ private T data;
+ private Integer code;
+ private String msg;
+}
diff --git a/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/stream/StreamRequestDTO.java b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/stream/StreamRequestDTO.java
new file mode 100644
index 0000000..69e88ce
--- /dev/null
+++ b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/stream/StreamRequestDTO.java
@@ -0,0 +1,12 @@
+package com.casic.missiles.modular.device.dto.stream;
+
+import lombok.Data;
+
+@Data
+public class StreamRequestDTO {
+ private String device_id;
+ private String stream_type;
+ private String quality;
+ private int from;
+ private int to;
+}
diff --git a/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/stream/StreamStopRequestDTO.java b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/stream/StreamStopRequestDTO.java
new file mode 100644
index 0000000..9cf94b1
--- /dev/null
+++ b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/stream/StreamStopRequestDTO.java
@@ -0,0 +1,11 @@
+package com.casic.missiles.modular.device.dto.stream;
+
+import lombok.Data;
+
+@Data
+public class StreamStopRequestDTO {
+ private String id;
+ private String type;
+ private StreamRequestDTO request;
+ private String url;
+}
diff --git a/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/enums/AvDataStateEnum.java b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/enums/AvDataStateEnum.java
new file mode 100644
index 0000000..e1a6658
--- /dev/null
+++ b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/enums/AvDataStateEnum.java
@@ -0,0 +1,72 @@
+package com.casic.missiles.modular.device.enums;
+
+/**
+ * 数据状态
+ *
+ * @author lwh
+ * @Date 2017年1月10日 下午9:54:13
+ */
+public enum AvDataStateEnum {
+
+ TYPE0(0, "有效",0),
+ DEL(1, "无效",1);
+
+ Integer code;
+ String message;
+ Integer type;
+ AvDataStateEnum(Integer code, String message, Integer type) {
+ this.code = code;
+ this.message = message;
+ this.type = type;
+ }
+
+ public Integer getCode() {
+ return code;
+ }
+
+ public void setCode(Integer code) {
+ this.code = code;
+ }
+
+ public String getMessage() {
+ return message;
+ }
+
+ public void setMessage(String message) {
+ this.message = message;
+ }
+
+ public Integer getType() {
+ return type;
+ }
+
+ public void setType(Integer type) {
+ this.type = type;
+ }
+
+ public static String valueOfs(Integer value) {
+ if (value == null) {
+ return "";
+ } else {
+ for (AvDataStateEnum ms : AvDataStateEnum.values()) {
+ if (ms.getCode().equals(value)) {
+ return ms.getMessage();
+ }
+ }
+ return "";
+ }
+ }
+
+ public static AvDataStateEnum valueOfType(Integer value) {
+ if (value == null) {
+ return TYPE0;
+ } else {
+ for (AvDataStateEnum ms : AvDataStateEnum.values()) {
+ if (ms.getCode().equals(value)) {
+ return ms;
+ }
+ }
+ return TYPE0;
+ }
+ }
+}
diff --git a/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/enums/AvPtzTypeEnum.java b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/enums/AvPtzTypeEnum.java
new file mode 100644
index 0000000..fdcb08d
--- /dev/null
+++ b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/enums/AvPtzTypeEnum.java
@@ -0,0 +1,73 @@
+package com.casic.missiles.modular.device.enums;
+
+/**
+ * wvp设备类型转换
+ *
+ * @author lwh
+ * @Date 2017年1月10日 下午9:54:13
+ */
+public enum AvPtzTypeEnum {
+
+ TYPE0(0, "枪机",0),
+ TYPE1(1, "半球",1),
+ TYPE2(2, "球机",2);
+
+ Integer code;
+ String message;
+ Integer type;
+ AvPtzTypeEnum(Integer code, String message, Integer type) {
+ this.code = code;
+ this.message = message;
+ this.type = type;
+ }
+
+ public Integer getCode() {
+ return code;
+ }
+
+ public void setCode(Integer code) {
+ this.code = code;
+ }
+
+ public String getMessage() {
+ return message;
+ }
+
+ public void setMessage(String message) {
+ this.message = message;
+ }
+
+ public Integer getType() {
+ return type;
+ }
+
+ public void setType(Integer type) {
+ this.type = type;
+ }
+
+ public static String valueOfs(Integer value) {
+ if (value == null) {
+ return "";
+ } else {
+ for (AvPtzTypeEnum ms : AvPtzTypeEnum.values()) {
+ if (ms.getCode().equals(value)) {
+ return ms.getMessage();
+ }
+ }
+ return "";
+ }
+ }
+
+ public static AvPtzTypeEnum valueOfType(Integer value) {
+ if (value == null) {
+ return TYPE0;
+ } else {
+ for (AvPtzTypeEnum ms : AvPtzTypeEnum.values()) {
+ if (ms.getCode().equals(value)) {
+ return ms;
+ }
+ }
+ return TYPE0;
+ }
+ }
+}
diff --git a/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/enums/AvSecretLevelEnum.java b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/enums/AvSecretLevelEnum.java
new file mode 100644
index 0000000..39e8524
--- /dev/null
+++ b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/enums/AvSecretLevelEnum.java
@@ -0,0 +1,60 @@
+package com.casic.missiles.modular.device.enums;
+
+/**
+ * Av主数据密集对应关系枚举
+ *
+ * @author lwh
+ * @Date 2017年1月10日 下午9:54:13
+ */
+public enum AvSecretLevelEnum {
+ s("999", "未定密", 999, "未定密"),
+ s0("0", "公开", 0, "公开"),
+ s1("1", "内部", 1, "内部"),
+ s2("2", "秘密", 2, "秘密"),
+ s3("3", "机密", 3, "机密");
+
+ String code;
+ Integer currCode;
+ String message;
+ String currMsg;
+
+ AvSecretLevelEnum(String code, String message, Integer currCode, String currMsg) {
+ this.code = code;
+ this.currCode = currCode;
+ this.message = message;
+ this.currMsg = currMsg;
+ }
+
+ public Integer getCurrCode() {
+ return currCode;
+ }
+
+ public String getCode() {
+ return code;
+ }
+
+ public void setCode(String code) {
+ this.code = code;
+ }
+
+ public String getMessage() {
+ return message;
+ }
+
+ public void setMessage(String message) {
+ this.message = message;
+ }
+
+ public static AvSecretLevelEnum valueOfCode(String value) {
+ if (value == null) {
+ return s0;
+ } else {
+ for (AvSecretLevelEnum ms : AvSecretLevelEnum.values()) {
+ if (ms.getCode().equals(value)) {
+ return ms;
+ }
+ }
+ return s0;
+ }
+ }
+}
diff --git a/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/enums/AvStatusTypeEnum.java b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/enums/AvStatusTypeEnum.java
new file mode 100644
index 0000000..ddccd52
--- /dev/null
+++ b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/enums/AvStatusTypeEnum.java
@@ -0,0 +1,72 @@
+package com.casic.missiles.modular.device.enums;
+
+/**
+ * wvp设备类型转换
+ *
+ * @author lwh
+ * @Date 2017年1月10日 下午9:54:13
+ */
+public enum AvStatusTypeEnum {
+
+ TYPE0(0, "离线",0),
+ TYPE1(1, "在线",1);
+
+ Integer code;
+ String message;
+ Integer type;
+ AvStatusTypeEnum(Integer code, String message, Integer type) {
+ this.code = code;
+ this.message = message;
+ this.type = type;
+ }
+
+ public Integer getCode() {
+ return code;
+ }
+
+ public void setCode(Integer code) {
+ this.code = code;
+ }
+
+ public String getMessage() {
+ return message;
+ }
+
+ public void setMessage(String message) {
+ this.message = message;
+ }
+
+ public Integer getType() {
+ return type;
+ }
+
+ public void setType(Integer type) {
+ this.type = type;
+ }
+
+ public static String valueOfs(Integer value) {
+ if (value == null) {
+ return "";
+ } else {
+ for (AvStatusTypeEnum ms : AvStatusTypeEnum.values()) {
+ if (ms.getCode().equals(value)) {
+ return ms.getMessage();
+ }
+ }
+ return "";
+ }
+ }
+
+ public static AvStatusTypeEnum valueOfType(Integer value) {
+ if (value == null) {
+ return TYPE0;
+ } else {
+ for (AvStatusTypeEnum ms : AvStatusTypeEnum.values()) {
+ if (ms.getCode().equals(value)) {
+ return ms;
+ }
+ }
+ return TYPE0;
+ }
+ }
+}
diff --git a/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/enums/AvUrlEnums.java b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/enums/AvUrlEnums.java
new file mode 100644
index 0000000..04b38ad
--- /dev/null
+++ b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/enums/AvUrlEnums.java
@@ -0,0 +1,37 @@
+package com.casic.missiles.modular.device.enums;
+
+/**
+ * 设备媒体
+ */
+public enum AvUrlEnums {
+ DEVICE("/open/v1/api/devices","设备信息查询"),
+ STREAM("/open/v1/api/streams","创建流"),
+ STREAM_STOP("/open/v1/api/streams/%s","停止流"),
+ HEART("/open/v1/api/streams/%s/heartbeat","发送心跳"),
+ DICT("/open/v1/api/dictionary_datas","字典查询"),
+ USER_DEVICE_RELATION("/open/v1/api/user_device_relationships","用户设备关联关系");
+
+ private String url;
+ private String name;
+
+ AvUrlEnums(String url, String name) {
+ this.url = url;
+ this.name = name;
+ }
+
+ public String getUrl() {
+ return url;
+ }
+
+ public void setUrl(String url) {
+ this.url = url;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+}
diff --git a/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/http/AvDefaultHttpHeaderHandler.java b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/http/AvDefaultHttpHeaderHandler.java
new file mode 100644
index 0000000..53f0a5c
--- /dev/null
+++ b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/http/AvDefaultHttpHeaderHandler.java
@@ -0,0 +1,14 @@
+package com.casic.missiles.modular.device.http;
+
+import cn.hutool.core.util.StrUtil;
+import com.casic.missiles.modular.system.handler.DefaultHttpHeaderHandler;
+import org.apache.http.client.methods.HttpRequestBase;
+
+public class AvDefaultHttpHeaderHandler extends DefaultHttpHeaderHandler {
+ public void setHeader(HttpRequestBase base, String token) {
+ base.addHeader("Content-type", DEFAULT_CONTEXTTYPE);
+ if (StrUtil.isNotEmpty(token)) {
+ base.addHeader("X-OApi-Token", token);
+ }
+ }
+}
diff --git a/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/http/HttpGetWithEntity.java b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/http/HttpGetWithEntity.java
new file mode 100644
index 0000000..b8abf8f
--- /dev/null
+++ b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/http/HttpGetWithEntity.java
@@ -0,0 +1,20 @@
+package com.casic.missiles.modular.device.http;
+
+import org.apache.http.client.methods.HttpEntityEnclosingRequestBase;
+
+import java.net.URI;
+
+public class HttpGetWithEntity extends HttpEntityEnclosingRequestBase {
+
+ public HttpGetWithEntity(URI uri) {
+ this.setURI(uri);
+ }
+
+ public HttpGetWithEntity(String uri) {
+ this.setURI(URI.create(uri));
+ }
+
+ public String getMethod() {
+ return "GET";
+ }
+}
diff --git a/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/service/IAvSyncService.java b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/service/IAvSyncService.java
new file mode 100644
index 0000000..13c3203
--- /dev/null
+++ b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/service/IAvSyncService.java
@@ -0,0 +1,39 @@
+package com.casic.missiles.modular.device.service;
+
+import com.casic.missiles.modular.device.dto.stream.StreamRequestDTO;
+
+public interface IAvSyncService {
+ /**
+ * Dc706设备信息同步
+ */
+ void syncDcDevices(String token);
+
+ /**
+ * 创建流
+ *
+ * @param streamRequestDTO
+ * @return
+ */
+ Object getStreams(StreamRequestDTO streamRequestDTO);
+
+ /**
+ * 停止流
+ *
+ * @param id
+ * @return
+ */
+ Object stopStreams(String id);
+
+ /**
+ * 发送心跳
+ *
+ * @param id 设备国标号
+ * @return
+ */
+ Object heart(String id);
+
+ /**
+ * 设备权限更新
+ */
+ void loadUserDeviceRelationships();
+}
diff --git a/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/service/impl/AvSyncServiceImpl.java b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/service/impl/AvSyncServiceImpl.java
new file mode 100644
index 0000000..25e3340
--- /dev/null
+++ b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/service/impl/AvSyncServiceImpl.java
@@ -0,0 +1,179 @@
+package com.casic.missiles.modular.device.service.impl;
+
+import cn.hutool.core.collection.CollectionUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.casic.missiles.core.application.service.AbstractUserService;
+import com.casic.missiles.modular.device.dto.AvDeviceDTO;
+import com.casic.missiles.modular.device.dto.DeviceRelationshipDTO;
+import com.casic.missiles.modular.device.dto.page.AvPageRequest;
+import com.casic.missiles.modular.device.dto.stream.StreamRequestDTO;
+import com.casic.missiles.modular.device.enums.AvDataStateEnum;
+import com.casic.missiles.modular.device.enums.AvPtzTypeEnum;
+import com.casic.missiles.modular.device.enums.AvSecretLevelEnum;
+import com.casic.missiles.modular.device.enums.AvStatusTypeEnum;
+import com.casic.missiles.modular.device.model.BusDeviceInfo;
+import com.casic.missiles.modular.device.service.IAvSyncService;
+import com.casic.missiles.modular.device.service.IBusDeviceInfoService;
+import com.casic.missiles.modular.device.service.ISysGroupDeviceService;
+import com.casic.missiles.modular.device.util.AvUtil;
+import com.casic.missiles.modular.system.model.SysUserGroup;
+import com.casic.missiles.modular.system.model.User;
+import com.casic.missiles.modular.system.service.ISysUserGroupService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import javax.annotation.Resource;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+import java.util.stream.Collectors;
+@Slf4j
+@Service
+public class AvSyncServiceImpl implements IAvSyncService {
+ @Value("${casic.video.av.url:-1}")
+ private String avUrl;
+ @Value("${casic.video.av.token:-1}")
+ private String avToken;
+ @Resource
+ private IBusDeviceInfoService deviceInfoService;
+ @Resource
+ private AbstractUserService abstractUserService;
+
+ @Resource
+ private ISysUserGroupService userGroupService;
+ @Resource
+ private ISysGroupDeviceService sysGroupDeviceService;
+
+ @Override
+ public void syncDcDevices(String token) {
+ AvPageRequest avPageRequest = new AvPageRequest();
+ avPageRequest.setPage(1);
+ avPageRequest.setPaging(1);
+
+ //全量查询设备信息
+ List deviceDTOS = AvUtil.selectDevices(avUrl, token, avPageRequest);
+
+ if (CollectionUtil.isNotEmpty(deviceDTOS)) {
+ for (AvDeviceDTO dcDeviceDTO : deviceDTOS) {
+ BusDeviceInfo busDeviceInfo = this.convertDevice(dcDeviceDTO);
+
+ LambdaQueryWrapper query = new LambdaQueryWrapper<>();
+ query.eq(BusDeviceInfo::getCameraIndexCode, dcDeviceDTO.getSn());
+ this.deviceInfoService.saveOrUpdate(busDeviceInfo, query);
+ }
+
+ List deviceSns = deviceDTOS.stream().filter(dto -> AvDataStateEnum.DEL.equals(dto.getState())).map(AvDeviceDTO::getSn).collect(Collectors.toList());
+
+ LambdaQueryWrapper query = new LambdaQueryWrapper<>();
+ query.in(BusDeviceInfo::getCameraIndexCode, deviceSns);
+ if (CollectionUtil.isNotEmpty(deviceSns)) {
+ this.deviceInfoService.remove(query);
+ }
+ }
+
+// AvUtil.dict(avUrl,avToken);
+ }
+
+ /**
+ * 流地址请求
+ *
+ * @param streamRequestDTO
+ * @return
+ */
+ @Override
+ public Object getStreams(StreamRequestDTO streamRequestDTO) {
+ return AvUtil.selectStreams(avUrl, avToken, streamRequestDTO);
+ }
+
+ @Override
+ public Object stopStreams(String id) {
+ return AvUtil.stopStreams(avUrl, avToken, id);
+ }
+
+ @Override
+ public Object heart(String id) {
+ return AvUtil.heart(avUrl, avToken, id);
+ }
+
+ @Transactional
+ @Override
+ public void loadUserDeviceRelationships() {
+
+ List relationshipDTOS = AvUtil.userDeviceRelationships(avUrl, avToken);
+ log.info("loadUserDeviceRelationships: {}", relationshipDTOS);
+
+ for (DeviceRelationshipDTO relationshipDTO : relationshipDTOS) {
+
+ //检索用户信息
+ LambdaQueryWrapper query = new LambdaQueryWrapper<>();
+ query.eq(User::getSyncId, relationshipDTO.getUser_id());
+ List users = abstractUserService.list(query);
+
+ if (users != null&&users.size() > 0) {
+ User user = users.get(0);
+ //创建用户组
+ LambdaQueryWrapper groupQuery = new LambdaQueryWrapper<>();
+ String groupName = user.getName() + user.getId();
+ groupQuery.eq(SysUserGroup::getGroupName, groupName);
+ SysUserGroup sysUserGroup = userGroupService.getOne(groupQuery);
+
+ if (sysUserGroup == null) {
+ sysUserGroup = genSysUserGroup(groupName, user);
+ List userIds = new ArrayList<>();
+ userIds.add(user.getId());
+ userGroupService.createSysUserGroup(sysUserGroup, userIds);
+ }
+
+ LambdaQueryWrapper deviceQuery = new LambdaQueryWrapper<>();
+ deviceQuery.in(BusDeviceInfo::getCameraIndexCode, relationshipDTO.getDeviceList());
+ List busDeviceInfos = deviceInfoService.list(deviceQuery);
+
+ if (CollectionUtil.isNotEmpty(busDeviceInfos)) {
+ List list = busDeviceInfos.stream().map(BusDeviceInfo::getId).collect(Collectors.toList());
+ sysGroupDeviceService.batchIncremental(sysUserGroup.getId(), list);
+ }
+
+ }else{
+ log.error("loadUserDeviceRelationships is empty: {}", relationshipDTO.getUser_id());
+ }
+ }
+ }
+
+ private SysUserGroup genSysUserGroup(String groupName, User user) {
+ SysUserGroup sysUserGroup = new SysUserGroup();
+ sysUserGroup.setGroupName(groupName);
+ sysUserGroup.setCreateTime(new Date());
+ sysUserGroup.setCreateId(user.getId());
+ sysUserGroup.setDeptId(user.getDeptId());
+ sysUserGroup.setDescription("默认创建分组,不可修改!");
+ sysUserGroup.setSafe(0);
+ return sysUserGroup;
+ }
+
+ /**
+ * 设备类型数据转换
+ *
+ * @param dto 艾薇设备信息
+ * @return
+ */
+ private BusDeviceInfo convertDevice(AvDeviceDTO dto) {
+ BusDeviceInfo info = new BusDeviceInfo();
+ info.setCreateTime(new Date());
+ info.setUpdateTime(new Date());
+
+ //转换为本地密级编码
+ info.setSecretLevel(AvSecretLevelEnum.valueOfCode(dto.getSecureLevel()).getCurrCode());
+
+ info.setDeviceStatus(AvStatusTypeEnum.valueOfType(dto.getStatus()).getType());
+ info.setCameraIndexCode(dto.getSn());
+ info.setMonitorName(dto.getName());
+
+ //PTZ type类型
+ info.setDeviceType(AvPtzTypeEnum.valueOfType(dto.getPtzType()).getType() + "");
+ info.setBfFlag(0);
+
+ return info;
+ }
+}
diff --git a/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/util/AvHttpUtils.java b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/util/AvHttpUtils.java
new file mode 100644
index 0000000..083d88a
--- /dev/null
+++ b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/util/AvHttpUtils.java
@@ -0,0 +1,331 @@
+package com.casic.missiles.modular.device.util;
+
+import com.alibaba.fastjson.JSONObject;
+import com.casic.missiles.modular.device.http.HttpGetWithEntity;
+import com.casic.missiles.modular.system.handler.DefaultHttpHeaderHandler;
+import org.apache.http.NameValuePair;
+import org.apache.http.client.entity.UrlEncodedFormEntity;
+import org.apache.http.client.methods.CloseableHttpResponse;
+import org.apache.http.client.methods.HttpDelete;
+import org.apache.http.client.methods.HttpGet;
+import org.apache.http.client.methods.HttpPost;
+import org.apache.http.entity.ContentType;
+import org.apache.http.entity.StringEntity;
+import org.apache.http.impl.client.CloseableHttpClient;
+import org.apache.http.impl.client.HttpClients;
+import org.apache.http.message.BasicNameValuePair;
+import org.apache.http.util.EntityUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.io.IOException;
+import java.io.UnsupportedEncodingException;
+import java.net.URLEncoder;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+
+public class AvHttpUtils {
+
+ public static String sendGetJson(String url, Map param, String token, DefaultHttpHeaderHandler handler) {
+ try {
+ StringBuffer query = new StringBuffer();
+ String var14 = sendGetEntityData(url, handler.getChartSet(), param, token, handler);
+ return var14;
+ } catch (Exception var10) {
+ Exception e = var10;
+ e.printStackTrace();
+ System.out.println("发送GET请求出现异常!" + e);
+ return "";
+ } finally {
+ ;
+ }
+ }
+ public static String sendGet(String url, Map param, String token, DefaultHttpHeaderHandler handler) {
+ try {
+ StringBuffer query = new StringBuffer();
+ Iterator var5 = param.entrySet().iterator();
+
+ while(var5.hasNext()) {
+ Map.Entry kv = (Map.Entry)var5.next();
+ query.append(URLEncoder.encode((String)kv.getKey(), handler.getChartSet()) + "=");
+ query.append(URLEncoder.encode((String)kv.getValue(), handler.getChartSet()) + "&");
+ }
+
+ if (query.lastIndexOf("&") > 0) {
+ query.deleteCharAt(query.length() - 1);
+ }
+
+ String urlNameString = url + "?" + query.toString();
+ String var14 = sendGetData(urlNameString, handler.getChartSet(), token, handler);
+ return var14;
+ } catch (Exception var10) {
+ Exception e = var10;
+ e.printStackTrace();
+ System.out.println("发送GET请求出现异常!" + e);
+ return "";
+ } finally {
+ ;
+ }
+ }
+ public static String sendPost(String url, Map param, String token, DefaultHttpHeaderHandler httpHeaderHandler) {
+ return sendPostDataByMap(url, param, "utf8", token, httpHeaderHandler);
+ }
+ public static String sendPostDataByMap(String url, Map map, String encoding, String token, DefaultHttpHeaderHandler httpHeaderHandler) {
+ String result = "";
+ CloseableHttpResponse response = null;
+ CloseableHttpClient httpClient = null;
+ HttpPost httpPost = null;
+
+ try {
+ httpClient = HttpClients.createDefault();
+ httpPost = new HttpPost(url);
+ httpPost.setHeader("User-Agent", "Mozilla/4.0 (compatible; MSIE 5.0; Windows NT; DigExt)");
+ httpHeaderHandler.setHeader(httpPost, token);
+ if (httpHeaderHandler.isJson()) {
+ jsonParams(map, httpPost);
+ } else {
+ formParams(map, httpPost, httpHeaderHandler.getChartSet());
+ }
+
+ response = httpClient.execute(httpPost);
+ if (response.getStatusLine().getStatusCode() == 200) {
+ result = EntityUtils.toString(response.getEntity(), httpHeaderHandler.getChartSet());
+ }
+ } catch (Exception var22) {
+ Exception e = var22;
+ System.out.println("发送GET请求出现异常!" + e);
+ e.printStackTrace();
+ } finally {
+ IOException e;
+ try {
+ if (response != null) {
+ response.close();
+ }
+
+ httpPost.releaseConnection();
+ httpClient.close();
+ } catch (IOException var21) {
+ e = var21;
+ e.printStackTrace();
+ }
+
+ if (httpClient != null) {
+ try {
+ httpClient.close();
+ } catch (IOException var20) {
+ e = var20;
+ e.printStackTrace();
+ }
+ }
+
+ }
+
+ return result;
+ }
+ public static String sendGetData(String url, String encoding, String token, DefaultHttpHeaderHandler httpHeaderHandler) {
+ String result = "";
+ CloseableHttpResponse response = null;
+ if (httpHeaderHandler == null) {
+ httpHeaderHandler = new DefaultHttpHeaderHandler();
+ }
+
+ CloseableHttpClient httpClient = null;
+
+ try {
+ httpClient = HttpClients.createDefault();
+ HttpGet httpGet = new HttpGet(url);
+ httpHeaderHandler.setHeader(httpGet, token);
+ response = httpClient.execute(httpGet);
+ if (response.getStatusLine().getStatusCode() == 200) {
+ result = EntityUtils.toString(response.getEntity(), encoding);
+ }
+ } catch (Exception var20) {
+ Exception e = var20;
+ e.printStackTrace();
+ System.out.println("发送GET请求出现异常!" + e);
+ } finally {
+ IOException e;
+ if (response != null) {
+ try {
+ response.close();
+ } catch (IOException var19) {
+ e = var19;
+ e.printStackTrace();
+ }
+ }
+
+ if (httpClient != null) {
+ try {
+ httpClient.close();
+ } catch (IOException var18) {
+ e = var18;
+ e.printStackTrace();
+ }
+ }
+
+ }
+
+ return result;
+ }
+ public static String sendGetEntityData(String url, String encoding, Map param, String token, DefaultHttpHeaderHandler httpHeaderHandler) {
+ String result = "";
+ CloseableHttpResponse response = null;
+ if (httpHeaderHandler == null) {
+ httpHeaderHandler = new DefaultHttpHeaderHandler();
+ }
+ CloseableHttpClient httpClient =null;
+ try {
+ httpClient = HttpClients.createDefault();
+ HttpGetWithEntity httpGet = new HttpGetWithEntity(url);
+ httpHeaderHandler.setHeader(httpGet, token);
+ if (httpHeaderHandler.isJson()) {
+ jsonParams(param, httpGet);
+ } else {
+ formParams(param, httpGet, httpHeaderHandler.getChartSet());
+ }
+ response = httpClient.execute(httpGet);
+ if (response.getStatusLine().getStatusCode() == 200) {
+ result = EntityUtils.toString(response.getEntity(), encoding);
+ }
+ } catch (Exception var16) {
+ Exception e = var16;
+ e.printStackTrace();
+ System.out.println("发送GET请求出现异常!" + e);
+ } finally {
+ if (response != null) {
+ try {
+ response.close();
+ } catch (IOException var15) {
+ IOException e = var15;
+ e.printStackTrace();
+ }
+ }
+ if (httpClient != null) {
+ try {
+ httpClient.close();
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ }
+
+ }
+
+ return result;
+ }
+
+ public static String sendDelete(String url, Map param, String token, DefaultHttpHeaderHandler handler) {
+ try {
+ StringBuffer query = new StringBuffer();
+ Iterator var5 = param.entrySet().iterator();
+
+ while (var5.hasNext()) {
+ Map.Entry kv = (Map.Entry) var5.next();
+ query.append(URLEncoder.encode((String) kv.getKey(), handler.getChartSet()) + "=");
+ query.append(URLEncoder.encode((String) kv.getValue(), handler.getChartSet()) + "&");
+ }
+
+ if (query.lastIndexOf("&") > 0) {
+ query.deleteCharAt(query.length() - 1);
+ }
+ String urlNameString = url + "?" + query.toString();
+ String var14 = sendDeleteData(urlNameString, handler.getChartSet(), token, handler);
+ return var14;
+ } catch (Exception var10) {
+ Exception e = var10;
+ e.printStackTrace();
+ System.out.println("发送GET请求出现异常!" + e);
+ return "";
+ } finally {
+ ;
+ }
+ }
+ private static final Logger logger = LoggerFactory.getLogger(AvUtil.class);
+ /**
+ * http 请求
+ *
+ * @param url
+ * @param encoding
+ * @param token
+ * @param httpHeaderHandler
+ * @return
+ */
+ public static String sendDeleteData(String url, String encoding, String token, DefaultHttpHeaderHandler httpHeaderHandler) {
+ String result = "";
+ CloseableHttpResponse response = null;
+ if (httpHeaderHandler == null) {
+ httpHeaderHandler = new DefaultHttpHeaderHandler();
+ }
+ CloseableHttpClient httpClient = null;
+ try {
+ httpClient = HttpClients.createDefault();
+ HttpDelete httpGet = new HttpDelete(url);
+ httpHeaderHandler.setHeader(httpGet, token);
+ response = httpClient.execute(httpGet);
+ if (response.getStatusLine().getStatusCode() == 200) {
+ logger.info("----------------------------------:"+EntityUtils.toString(response.getEntity(), encoding));
+ result = EntityUtils.toString(response.getEntity(), encoding);
+ }
+ } catch (Exception var16) {
+ Exception e = var16;
+ e.printStackTrace();
+ } finally {
+ if (response != null) {
+ try {
+ response.close();
+ } catch (IOException var15) {
+ IOException e = var15;
+ e.printStackTrace();
+ }
+ }
+ if (httpClient != null) {
+ try {
+ httpClient.close();
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ }
+ }
+ return result;
+ }
+ public static void jsonParams(Map map, HttpPost post) {
+ String paramJson = JSONObject.toJSONString(map);
+ StringEntity stringEntity = new StringEntity(paramJson, ContentType.create("application/json", "UTF-8"));
+ post.setEntity(stringEntity);
+ }
+
+ public static void formParams(Map map, HttpPost post, String chartSet) throws UnsupportedEncodingException {
+ List nameValuePairs = new ArrayList();
+ if (map != null) {
+ Iterator var4 = map.entrySet().iterator();
+
+ while(var4.hasNext()) {
+ Map.Entry entry = (Map.Entry)var4.next();
+ nameValuePairs.add(new BasicNameValuePair((String)entry.getKey(), (String)entry.getValue()));
+ }
+ }
+
+ post.setEntity(new UrlEncodedFormEntity(nameValuePairs, chartSet));
+ }
+ public static void jsonParams(Map map, HttpGetWithEntity post) {
+ String paramJson = JSONObject.toJSONString(map);
+ StringEntity stringEntity = new StringEntity(paramJson, ContentType.create("application/json", "UTF-8"));
+
+ post.setEntity(stringEntity);
+ }
+
+ public static void formParams(Map map, HttpGetWithEntity post, String chartSet) throws UnsupportedEncodingException {
+ List nameValuePairs = new ArrayList();
+ if (map != null) {
+ Iterator var4 = map.entrySet().iterator();
+
+ while (var4.hasNext()) {
+ Map.Entry entry = (Map.Entry) var4.next();
+ nameValuePairs.add(new BasicNameValuePair((String) entry.getKey(), (String) entry.getValue()));
+ }
+ }
+
+ post.setEntity(new UrlEncodedFormEntity(nameValuePairs, chartSet));
+ }
+}
\ No newline at end of file
diff --git a/README.md b/README.md
index 430796e..8dbc9a5 100644
--- a/README.md
+++ b/README.md
@@ -9,3 +9,7 @@
#### 其他
>* [git地址](http://192.168.0.203:8080/gitbucket)
>* [本地免登地址](http://localhost:8083/route/mockToken)
+
+AView 对接问题
+1.用户设备关联关系
+ 对应返回 device_list是否为设备国标号
\ No newline at end of file
diff --git a/casic-device-sync/casic-device-aview/pom.xml b/casic-device-sync/casic-device-aview/pom.xml
index 0a3c5fa..94fb9e5 100644
--- a/casic-device-sync/casic-device-aview/pom.xml
+++ b/casic-device-sync/casic-device-aview/pom.xml
@@ -33,6 +33,21 @@
${boot.version}
provided
+
+ com.casic
+ casic-http
+ ${core.version}
+
+
+ com.casic
+ casic-admin-group
+ ${admin.version}
+
+
+ com.casic
+ casic-server
+ ${pro.version}
+
diff --git a/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/controller/AvRouteController.java b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/controller/AvRouteController.java
new file mode 100644
index 0000000..195cba2
--- /dev/null
+++ b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/controller/AvRouteController.java
@@ -0,0 +1,45 @@
+package com.casic.missiles.modular.device.controller;
+
+import com.casic.missiles.model.response.dto.ResponseDataDTO;
+import com.casic.missiles.modular.device.dto.stream.StreamRequestDTO;
+import com.casic.missiles.modular.device.service.IAvSyncService;
+import io.swagger.annotations.Api;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+
+@Api(tags = "AV平台代理接口")
+@RestController
+@RequestMapping("/route")
+public class AvRouteController {
+ @Resource
+ private IAvSyncService avSyncService;
+
+ @PostMapping("/open/v1/api/streams")
+ public Object streams(@RequestBody StreamRequestDTO requestDTO) {
+ Object object = avSyncService.getStreams(requestDTO);
+ if (object == null) {
+ ResponseDataDTO respDTO = ResponseDataDTO.error("流读取失败,请稍后重试!");
+ respDTO.setMessage("流读取失败,请稍后重试!");
+ return respDTO;
+ }
+ return ResponseDataDTO.success(avSyncService.getStreams(requestDTO));
+ }
+
+ @DeleteMapping("/open/v1/api/streams/{id}")
+ public Object stopStreams(@PathVariable("id") String id) {
+ Object object = avSyncService.stopStreams(id);
+ return ResponseDataDTO.success(object);
+ }
+
+ @PostMapping("/open/v1/api/streams/{id}/heart")
+ public Object heart(@PathVariable("id") String id) {
+ Object object = avSyncService.heart(id);
+ if (object == null) {
+ ResponseDataDTO respDTO = ResponseDataDTO.error("流心跳失败,请稍后重试!");
+ respDTO.setMessage("流心跳失败,请稍后重试!");
+ return respDTO;
+ }
+ return ResponseDataDTO.success(object);
+ }
+}
\ No newline at end of file
diff --git a/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/AvDeviceDTO.java b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/AvDeviceDTO.java
new file mode 100644
index 0000000..97bde9f
--- /dev/null
+++ b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/AvDeviceDTO.java
@@ -0,0 +1,49 @@
+package com.casic.missiles.modular.device.dto;
+
+import com.alibaba.fastjson.annotation.JSONField;
+import lombok.Data;
+
+/**
+ * 艾薇设备对象DTO
+ */
+@Data
+public class AvDeviceDTO {
+ // 设备ID
+ private Long id;
+
+ // 设备名称
+ private String name;
+
+ // 设备唯一国标序列号
+ private String sn;
+
+ // 设备类型
+ private Integer type;
+
+ // 设备版本号
+ private String version;
+
+ // 安全等级
+ @JSONField(name = "secure_level")
+ private String secureLevel;
+
+ // 设备状态
+ private Integer status;
+
+ // 云台类型
+ private Integer ptzType;
+
+ // 朝向
+ private Integer orientation;
+
+ // 创建时间
+ @JSONField(name = "gmt_created")
+ private String gmtCreated;
+
+ // 修改时间
+ @JSONField(name = "gmt_modified")
+ private String gmtModified;
+
+ // 数据状态
+ private Integer state;
+}
diff --git a/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/AvPageResponse.java b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/AvPageResponse.java
new file mode 100644
index 0000000..9a05183
--- /dev/null
+++ b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/AvPageResponse.java
@@ -0,0 +1,10 @@
+package com.casic.missiles.modular.device.dto;
+
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class AvPageResponse {
+ private List items;
+}
diff --git a/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/DeviceRelationshipDTO.java b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/DeviceRelationshipDTO.java
new file mode 100644
index 0000000..098dda4
--- /dev/null
+++ b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/DeviceRelationshipDTO.java
@@ -0,0 +1,12 @@
+package com.casic.missiles.modular.device.dto;
+
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class DeviceRelationshipDTO {
+ private Long user_id;
+ private String device_list;
+ private List deviceList;
+}
diff --git a/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/page/AvPageRep.java b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/page/AvPageRep.java
new file mode 100644
index 0000000..74e6a9b
--- /dev/null
+++ b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/page/AvPageRep.java
@@ -0,0 +1,9 @@
+package com.casic.missiles.modular.device.dto.page;
+
+import lombok.Data;
+
+@Data
+public class AvPageRep {
+ private Integer total;
+ private T list;
+}
diff --git a/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/page/AvPageRequest.java b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/page/AvPageRequest.java
new file mode 100644
index 0000000..900ae4a
--- /dev/null
+++ b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/page/AvPageRequest.java
@@ -0,0 +1,14 @@
+package com.casic.missiles.modular.device.dto.page;
+
+import lombok.Data;
+
+/**
+ * 分页请求DTO
+ */
+@Data
+public class AvPageRequest {
+ private int page;
+ private int paging;
+ private int limit;
+
+}
diff --git a/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/page/AvResponseDTO.java b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/page/AvResponseDTO.java
new file mode 100644
index 0000000..f1c1e7a
--- /dev/null
+++ b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/page/AvResponseDTO.java
@@ -0,0 +1,15 @@
+package com.casic.missiles.modular.device.dto.page;
+
+import lombok.Data;
+
+/**
+ * mvp返回基类封装
+ *
+ * @param
+ */
+@Data
+public class AvResponseDTO {
+ private T data;
+ private Integer code;
+ private String msg;
+}
diff --git a/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/stream/StreamRequestDTO.java b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/stream/StreamRequestDTO.java
new file mode 100644
index 0000000..69e88ce
--- /dev/null
+++ b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/stream/StreamRequestDTO.java
@@ -0,0 +1,12 @@
+package com.casic.missiles.modular.device.dto.stream;
+
+import lombok.Data;
+
+@Data
+public class StreamRequestDTO {
+ private String device_id;
+ private String stream_type;
+ private String quality;
+ private int from;
+ private int to;
+}
diff --git a/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/stream/StreamStopRequestDTO.java b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/stream/StreamStopRequestDTO.java
new file mode 100644
index 0000000..9cf94b1
--- /dev/null
+++ b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/stream/StreamStopRequestDTO.java
@@ -0,0 +1,11 @@
+package com.casic.missiles.modular.device.dto.stream;
+
+import lombok.Data;
+
+@Data
+public class StreamStopRequestDTO {
+ private String id;
+ private String type;
+ private StreamRequestDTO request;
+ private String url;
+}
diff --git a/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/enums/AvDataStateEnum.java b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/enums/AvDataStateEnum.java
new file mode 100644
index 0000000..e1a6658
--- /dev/null
+++ b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/enums/AvDataStateEnum.java
@@ -0,0 +1,72 @@
+package com.casic.missiles.modular.device.enums;
+
+/**
+ * 数据状态
+ *
+ * @author lwh
+ * @Date 2017年1月10日 下午9:54:13
+ */
+public enum AvDataStateEnum {
+
+ TYPE0(0, "有效",0),
+ DEL(1, "无效",1);
+
+ Integer code;
+ String message;
+ Integer type;
+ AvDataStateEnum(Integer code, String message, Integer type) {
+ this.code = code;
+ this.message = message;
+ this.type = type;
+ }
+
+ public Integer getCode() {
+ return code;
+ }
+
+ public void setCode(Integer code) {
+ this.code = code;
+ }
+
+ public String getMessage() {
+ return message;
+ }
+
+ public void setMessage(String message) {
+ this.message = message;
+ }
+
+ public Integer getType() {
+ return type;
+ }
+
+ public void setType(Integer type) {
+ this.type = type;
+ }
+
+ public static String valueOfs(Integer value) {
+ if (value == null) {
+ return "";
+ } else {
+ for (AvDataStateEnum ms : AvDataStateEnum.values()) {
+ if (ms.getCode().equals(value)) {
+ return ms.getMessage();
+ }
+ }
+ return "";
+ }
+ }
+
+ public static AvDataStateEnum valueOfType(Integer value) {
+ if (value == null) {
+ return TYPE0;
+ } else {
+ for (AvDataStateEnum ms : AvDataStateEnum.values()) {
+ if (ms.getCode().equals(value)) {
+ return ms;
+ }
+ }
+ return TYPE0;
+ }
+ }
+}
diff --git a/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/enums/AvPtzTypeEnum.java b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/enums/AvPtzTypeEnum.java
new file mode 100644
index 0000000..fdcb08d
--- /dev/null
+++ b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/enums/AvPtzTypeEnum.java
@@ -0,0 +1,73 @@
+package com.casic.missiles.modular.device.enums;
+
+/**
+ * wvp设备类型转换
+ *
+ * @author lwh
+ * @Date 2017年1月10日 下午9:54:13
+ */
+public enum AvPtzTypeEnum {
+
+ TYPE0(0, "枪机",0),
+ TYPE1(1, "半球",1),
+ TYPE2(2, "球机",2);
+
+ Integer code;
+ String message;
+ Integer type;
+ AvPtzTypeEnum(Integer code, String message, Integer type) {
+ this.code = code;
+ this.message = message;
+ this.type = type;
+ }
+
+ public Integer getCode() {
+ return code;
+ }
+
+ public void setCode(Integer code) {
+ this.code = code;
+ }
+
+ public String getMessage() {
+ return message;
+ }
+
+ public void setMessage(String message) {
+ this.message = message;
+ }
+
+ public Integer getType() {
+ return type;
+ }
+
+ public void setType(Integer type) {
+ this.type = type;
+ }
+
+ public static String valueOfs(Integer value) {
+ if (value == null) {
+ return "";
+ } else {
+ for (AvPtzTypeEnum ms : AvPtzTypeEnum.values()) {
+ if (ms.getCode().equals(value)) {
+ return ms.getMessage();
+ }
+ }
+ return "";
+ }
+ }
+
+ public static AvPtzTypeEnum valueOfType(Integer value) {
+ if (value == null) {
+ return TYPE0;
+ } else {
+ for (AvPtzTypeEnum ms : AvPtzTypeEnum.values()) {
+ if (ms.getCode().equals(value)) {
+ return ms;
+ }
+ }
+ return TYPE0;
+ }
+ }
+}
diff --git a/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/enums/AvSecretLevelEnum.java b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/enums/AvSecretLevelEnum.java
new file mode 100644
index 0000000..39e8524
--- /dev/null
+++ b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/enums/AvSecretLevelEnum.java
@@ -0,0 +1,60 @@
+package com.casic.missiles.modular.device.enums;
+
+/**
+ * Av主数据密集对应关系枚举
+ *
+ * @author lwh
+ * @Date 2017年1月10日 下午9:54:13
+ */
+public enum AvSecretLevelEnum {
+ s("999", "未定密", 999, "未定密"),
+ s0("0", "公开", 0, "公开"),
+ s1("1", "内部", 1, "内部"),
+ s2("2", "秘密", 2, "秘密"),
+ s3("3", "机密", 3, "机密");
+
+ String code;
+ Integer currCode;
+ String message;
+ String currMsg;
+
+ AvSecretLevelEnum(String code, String message, Integer currCode, String currMsg) {
+ this.code = code;
+ this.currCode = currCode;
+ this.message = message;
+ this.currMsg = currMsg;
+ }
+
+ public Integer getCurrCode() {
+ return currCode;
+ }
+
+ public String getCode() {
+ return code;
+ }
+
+ public void setCode(String code) {
+ this.code = code;
+ }
+
+ public String getMessage() {
+ return message;
+ }
+
+ public void setMessage(String message) {
+ this.message = message;
+ }
+
+ public static AvSecretLevelEnum valueOfCode(String value) {
+ if (value == null) {
+ return s0;
+ } else {
+ for (AvSecretLevelEnum ms : AvSecretLevelEnum.values()) {
+ if (ms.getCode().equals(value)) {
+ return ms;
+ }
+ }
+ return s0;
+ }
+ }
+}
diff --git a/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/enums/AvStatusTypeEnum.java b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/enums/AvStatusTypeEnum.java
new file mode 100644
index 0000000..ddccd52
--- /dev/null
+++ b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/enums/AvStatusTypeEnum.java
@@ -0,0 +1,72 @@
+package com.casic.missiles.modular.device.enums;
+
+/**
+ * wvp设备类型转换
+ *
+ * @author lwh
+ * @Date 2017年1月10日 下午9:54:13
+ */
+public enum AvStatusTypeEnum {
+
+ TYPE0(0, "离线",0),
+ TYPE1(1, "在线",1);
+
+ Integer code;
+ String message;
+ Integer type;
+ AvStatusTypeEnum(Integer code, String message, Integer type) {
+ this.code = code;
+ this.message = message;
+ this.type = type;
+ }
+
+ public Integer getCode() {
+ return code;
+ }
+
+ public void setCode(Integer code) {
+ this.code = code;
+ }
+
+ public String getMessage() {
+ return message;
+ }
+
+ public void setMessage(String message) {
+ this.message = message;
+ }
+
+ public Integer getType() {
+ return type;
+ }
+
+ public void setType(Integer type) {
+ this.type = type;
+ }
+
+ public static String valueOfs(Integer value) {
+ if (value == null) {
+ return "";
+ } else {
+ for (AvStatusTypeEnum ms : AvStatusTypeEnum.values()) {
+ if (ms.getCode().equals(value)) {
+ return ms.getMessage();
+ }
+ }
+ return "";
+ }
+ }
+
+ public static AvStatusTypeEnum valueOfType(Integer value) {
+ if (value == null) {
+ return TYPE0;
+ } else {
+ for (AvStatusTypeEnum ms : AvStatusTypeEnum.values()) {
+ if (ms.getCode().equals(value)) {
+ return ms;
+ }
+ }
+ return TYPE0;
+ }
+ }
+}
diff --git a/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/enums/AvUrlEnums.java b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/enums/AvUrlEnums.java
new file mode 100644
index 0000000..04b38ad
--- /dev/null
+++ b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/enums/AvUrlEnums.java
@@ -0,0 +1,37 @@
+package com.casic.missiles.modular.device.enums;
+
+/**
+ * 设备媒体
+ */
+public enum AvUrlEnums {
+ DEVICE("/open/v1/api/devices","设备信息查询"),
+ STREAM("/open/v1/api/streams","创建流"),
+ STREAM_STOP("/open/v1/api/streams/%s","停止流"),
+ HEART("/open/v1/api/streams/%s/heartbeat","发送心跳"),
+ DICT("/open/v1/api/dictionary_datas","字典查询"),
+ USER_DEVICE_RELATION("/open/v1/api/user_device_relationships","用户设备关联关系");
+
+ private String url;
+ private String name;
+
+ AvUrlEnums(String url, String name) {
+ this.url = url;
+ this.name = name;
+ }
+
+ public String getUrl() {
+ return url;
+ }
+
+ public void setUrl(String url) {
+ this.url = url;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+}
diff --git a/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/http/AvDefaultHttpHeaderHandler.java b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/http/AvDefaultHttpHeaderHandler.java
new file mode 100644
index 0000000..53f0a5c
--- /dev/null
+++ b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/http/AvDefaultHttpHeaderHandler.java
@@ -0,0 +1,14 @@
+package com.casic.missiles.modular.device.http;
+
+import cn.hutool.core.util.StrUtil;
+import com.casic.missiles.modular.system.handler.DefaultHttpHeaderHandler;
+import org.apache.http.client.methods.HttpRequestBase;
+
+public class AvDefaultHttpHeaderHandler extends DefaultHttpHeaderHandler {
+ public void setHeader(HttpRequestBase base, String token) {
+ base.addHeader("Content-type", DEFAULT_CONTEXTTYPE);
+ if (StrUtil.isNotEmpty(token)) {
+ base.addHeader("X-OApi-Token", token);
+ }
+ }
+}
diff --git a/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/http/HttpGetWithEntity.java b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/http/HttpGetWithEntity.java
new file mode 100644
index 0000000..b8abf8f
--- /dev/null
+++ b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/http/HttpGetWithEntity.java
@@ -0,0 +1,20 @@
+package com.casic.missiles.modular.device.http;
+
+import org.apache.http.client.methods.HttpEntityEnclosingRequestBase;
+
+import java.net.URI;
+
+public class HttpGetWithEntity extends HttpEntityEnclosingRequestBase {
+
+ public HttpGetWithEntity(URI uri) {
+ this.setURI(uri);
+ }
+
+ public HttpGetWithEntity(String uri) {
+ this.setURI(URI.create(uri));
+ }
+
+ public String getMethod() {
+ return "GET";
+ }
+}
diff --git a/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/service/IAvSyncService.java b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/service/IAvSyncService.java
new file mode 100644
index 0000000..13c3203
--- /dev/null
+++ b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/service/IAvSyncService.java
@@ -0,0 +1,39 @@
+package com.casic.missiles.modular.device.service;
+
+import com.casic.missiles.modular.device.dto.stream.StreamRequestDTO;
+
+public interface IAvSyncService {
+ /**
+ * Dc706设备信息同步
+ */
+ void syncDcDevices(String token);
+
+ /**
+ * 创建流
+ *
+ * @param streamRequestDTO
+ * @return
+ */
+ Object getStreams(StreamRequestDTO streamRequestDTO);
+
+ /**
+ * 停止流
+ *
+ * @param id
+ * @return
+ */
+ Object stopStreams(String id);
+
+ /**
+ * 发送心跳
+ *
+ * @param id 设备国标号
+ * @return
+ */
+ Object heart(String id);
+
+ /**
+ * 设备权限更新
+ */
+ void loadUserDeviceRelationships();
+}
diff --git a/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/service/impl/AvSyncServiceImpl.java b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/service/impl/AvSyncServiceImpl.java
new file mode 100644
index 0000000..25e3340
--- /dev/null
+++ b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/service/impl/AvSyncServiceImpl.java
@@ -0,0 +1,179 @@
+package com.casic.missiles.modular.device.service.impl;
+
+import cn.hutool.core.collection.CollectionUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.casic.missiles.core.application.service.AbstractUserService;
+import com.casic.missiles.modular.device.dto.AvDeviceDTO;
+import com.casic.missiles.modular.device.dto.DeviceRelationshipDTO;
+import com.casic.missiles.modular.device.dto.page.AvPageRequest;
+import com.casic.missiles.modular.device.dto.stream.StreamRequestDTO;
+import com.casic.missiles.modular.device.enums.AvDataStateEnum;
+import com.casic.missiles.modular.device.enums.AvPtzTypeEnum;
+import com.casic.missiles.modular.device.enums.AvSecretLevelEnum;
+import com.casic.missiles.modular.device.enums.AvStatusTypeEnum;
+import com.casic.missiles.modular.device.model.BusDeviceInfo;
+import com.casic.missiles.modular.device.service.IAvSyncService;
+import com.casic.missiles.modular.device.service.IBusDeviceInfoService;
+import com.casic.missiles.modular.device.service.ISysGroupDeviceService;
+import com.casic.missiles.modular.device.util.AvUtil;
+import com.casic.missiles.modular.system.model.SysUserGroup;
+import com.casic.missiles.modular.system.model.User;
+import com.casic.missiles.modular.system.service.ISysUserGroupService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import javax.annotation.Resource;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+import java.util.stream.Collectors;
+@Slf4j
+@Service
+public class AvSyncServiceImpl implements IAvSyncService {
+ @Value("${casic.video.av.url:-1}")
+ private String avUrl;
+ @Value("${casic.video.av.token:-1}")
+ private String avToken;
+ @Resource
+ private IBusDeviceInfoService deviceInfoService;
+ @Resource
+ private AbstractUserService abstractUserService;
+
+ @Resource
+ private ISysUserGroupService userGroupService;
+ @Resource
+ private ISysGroupDeviceService sysGroupDeviceService;
+
+ @Override
+ public void syncDcDevices(String token) {
+ AvPageRequest avPageRequest = new AvPageRequest();
+ avPageRequest.setPage(1);
+ avPageRequest.setPaging(1);
+
+ //全量查询设备信息
+ List deviceDTOS = AvUtil.selectDevices(avUrl, token, avPageRequest);
+
+ if (CollectionUtil.isNotEmpty(deviceDTOS)) {
+ for (AvDeviceDTO dcDeviceDTO : deviceDTOS) {
+ BusDeviceInfo busDeviceInfo = this.convertDevice(dcDeviceDTO);
+
+ LambdaQueryWrapper query = new LambdaQueryWrapper<>();
+ query.eq(BusDeviceInfo::getCameraIndexCode, dcDeviceDTO.getSn());
+ this.deviceInfoService.saveOrUpdate(busDeviceInfo, query);
+ }
+
+ List deviceSns = deviceDTOS.stream().filter(dto -> AvDataStateEnum.DEL.equals(dto.getState())).map(AvDeviceDTO::getSn).collect(Collectors.toList());
+
+ LambdaQueryWrapper query = new LambdaQueryWrapper<>();
+ query.in(BusDeviceInfo::getCameraIndexCode, deviceSns);
+ if (CollectionUtil.isNotEmpty(deviceSns)) {
+ this.deviceInfoService.remove(query);
+ }
+ }
+
+// AvUtil.dict(avUrl,avToken);
+ }
+
+ /**
+ * 流地址请求
+ *
+ * @param streamRequestDTO
+ * @return
+ */
+ @Override
+ public Object getStreams(StreamRequestDTO streamRequestDTO) {
+ return AvUtil.selectStreams(avUrl, avToken, streamRequestDTO);
+ }
+
+ @Override
+ public Object stopStreams(String id) {
+ return AvUtil.stopStreams(avUrl, avToken, id);
+ }
+
+ @Override
+ public Object heart(String id) {
+ return AvUtil.heart(avUrl, avToken, id);
+ }
+
+ @Transactional
+ @Override
+ public void loadUserDeviceRelationships() {
+
+ List relationshipDTOS = AvUtil.userDeviceRelationships(avUrl, avToken);
+ log.info("loadUserDeviceRelationships: {}", relationshipDTOS);
+
+ for (DeviceRelationshipDTO relationshipDTO : relationshipDTOS) {
+
+ //检索用户信息
+ LambdaQueryWrapper query = new LambdaQueryWrapper<>();
+ query.eq(User::getSyncId, relationshipDTO.getUser_id());
+ List users = abstractUserService.list(query);
+
+ if (users != null&&users.size() > 0) {
+ User user = users.get(0);
+ //创建用户组
+ LambdaQueryWrapper groupQuery = new LambdaQueryWrapper<>();
+ String groupName = user.getName() + user.getId();
+ groupQuery.eq(SysUserGroup::getGroupName, groupName);
+ SysUserGroup sysUserGroup = userGroupService.getOne(groupQuery);
+
+ if (sysUserGroup == null) {
+ sysUserGroup = genSysUserGroup(groupName, user);
+ List userIds = new ArrayList<>();
+ userIds.add(user.getId());
+ userGroupService.createSysUserGroup(sysUserGroup, userIds);
+ }
+
+ LambdaQueryWrapper deviceQuery = new LambdaQueryWrapper<>();
+ deviceQuery.in(BusDeviceInfo::getCameraIndexCode, relationshipDTO.getDeviceList());
+ List busDeviceInfos = deviceInfoService.list(deviceQuery);
+
+ if (CollectionUtil.isNotEmpty(busDeviceInfos)) {
+ List list = busDeviceInfos.stream().map(BusDeviceInfo::getId).collect(Collectors.toList());
+ sysGroupDeviceService.batchIncremental(sysUserGroup.getId(), list);
+ }
+
+ }else{
+ log.error("loadUserDeviceRelationships is empty: {}", relationshipDTO.getUser_id());
+ }
+ }
+ }
+
+ private SysUserGroup genSysUserGroup(String groupName, User user) {
+ SysUserGroup sysUserGroup = new SysUserGroup();
+ sysUserGroup.setGroupName(groupName);
+ sysUserGroup.setCreateTime(new Date());
+ sysUserGroup.setCreateId(user.getId());
+ sysUserGroup.setDeptId(user.getDeptId());
+ sysUserGroup.setDescription("默认创建分组,不可修改!");
+ sysUserGroup.setSafe(0);
+ return sysUserGroup;
+ }
+
+ /**
+ * 设备类型数据转换
+ *
+ * @param dto 艾薇设备信息
+ * @return
+ */
+ private BusDeviceInfo convertDevice(AvDeviceDTO dto) {
+ BusDeviceInfo info = new BusDeviceInfo();
+ info.setCreateTime(new Date());
+ info.setUpdateTime(new Date());
+
+ //转换为本地密级编码
+ info.setSecretLevel(AvSecretLevelEnum.valueOfCode(dto.getSecureLevel()).getCurrCode());
+
+ info.setDeviceStatus(AvStatusTypeEnum.valueOfType(dto.getStatus()).getType());
+ info.setCameraIndexCode(dto.getSn());
+ info.setMonitorName(dto.getName());
+
+ //PTZ type类型
+ info.setDeviceType(AvPtzTypeEnum.valueOfType(dto.getPtzType()).getType() + "");
+ info.setBfFlag(0);
+
+ return info;
+ }
+}
diff --git a/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/util/AvHttpUtils.java b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/util/AvHttpUtils.java
new file mode 100644
index 0000000..083d88a
--- /dev/null
+++ b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/util/AvHttpUtils.java
@@ -0,0 +1,331 @@
+package com.casic.missiles.modular.device.util;
+
+import com.alibaba.fastjson.JSONObject;
+import com.casic.missiles.modular.device.http.HttpGetWithEntity;
+import com.casic.missiles.modular.system.handler.DefaultHttpHeaderHandler;
+import org.apache.http.NameValuePair;
+import org.apache.http.client.entity.UrlEncodedFormEntity;
+import org.apache.http.client.methods.CloseableHttpResponse;
+import org.apache.http.client.methods.HttpDelete;
+import org.apache.http.client.methods.HttpGet;
+import org.apache.http.client.methods.HttpPost;
+import org.apache.http.entity.ContentType;
+import org.apache.http.entity.StringEntity;
+import org.apache.http.impl.client.CloseableHttpClient;
+import org.apache.http.impl.client.HttpClients;
+import org.apache.http.message.BasicNameValuePair;
+import org.apache.http.util.EntityUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.io.IOException;
+import java.io.UnsupportedEncodingException;
+import java.net.URLEncoder;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+
+public class AvHttpUtils {
+
+ public static String sendGetJson(String url, Map param, String token, DefaultHttpHeaderHandler handler) {
+ try {
+ StringBuffer query = new StringBuffer();
+ String var14 = sendGetEntityData(url, handler.getChartSet(), param, token, handler);
+ return var14;
+ } catch (Exception var10) {
+ Exception e = var10;
+ e.printStackTrace();
+ System.out.println("发送GET请求出现异常!" + e);
+ return "";
+ } finally {
+ ;
+ }
+ }
+ public static String sendGet(String url, Map param, String token, DefaultHttpHeaderHandler handler) {
+ try {
+ StringBuffer query = new StringBuffer();
+ Iterator var5 = param.entrySet().iterator();
+
+ while(var5.hasNext()) {
+ Map.Entry kv = (Map.Entry)var5.next();
+ query.append(URLEncoder.encode((String)kv.getKey(), handler.getChartSet()) + "=");
+ query.append(URLEncoder.encode((String)kv.getValue(), handler.getChartSet()) + "&");
+ }
+
+ if (query.lastIndexOf("&") > 0) {
+ query.deleteCharAt(query.length() - 1);
+ }
+
+ String urlNameString = url + "?" + query.toString();
+ String var14 = sendGetData(urlNameString, handler.getChartSet(), token, handler);
+ return var14;
+ } catch (Exception var10) {
+ Exception e = var10;
+ e.printStackTrace();
+ System.out.println("发送GET请求出现异常!" + e);
+ return "";
+ } finally {
+ ;
+ }
+ }
+ public static String sendPost(String url, Map param, String token, DefaultHttpHeaderHandler httpHeaderHandler) {
+ return sendPostDataByMap(url, param, "utf8", token, httpHeaderHandler);
+ }
+ public static String sendPostDataByMap(String url, Map map, String encoding, String token, DefaultHttpHeaderHandler httpHeaderHandler) {
+ String result = "";
+ CloseableHttpResponse response = null;
+ CloseableHttpClient httpClient = null;
+ HttpPost httpPost = null;
+
+ try {
+ httpClient = HttpClients.createDefault();
+ httpPost = new HttpPost(url);
+ httpPost.setHeader("User-Agent", "Mozilla/4.0 (compatible; MSIE 5.0; Windows NT; DigExt)");
+ httpHeaderHandler.setHeader(httpPost, token);
+ if (httpHeaderHandler.isJson()) {
+ jsonParams(map, httpPost);
+ } else {
+ formParams(map, httpPost, httpHeaderHandler.getChartSet());
+ }
+
+ response = httpClient.execute(httpPost);
+ if (response.getStatusLine().getStatusCode() == 200) {
+ result = EntityUtils.toString(response.getEntity(), httpHeaderHandler.getChartSet());
+ }
+ } catch (Exception var22) {
+ Exception e = var22;
+ System.out.println("发送GET请求出现异常!" + e);
+ e.printStackTrace();
+ } finally {
+ IOException e;
+ try {
+ if (response != null) {
+ response.close();
+ }
+
+ httpPost.releaseConnection();
+ httpClient.close();
+ } catch (IOException var21) {
+ e = var21;
+ e.printStackTrace();
+ }
+
+ if (httpClient != null) {
+ try {
+ httpClient.close();
+ } catch (IOException var20) {
+ e = var20;
+ e.printStackTrace();
+ }
+ }
+
+ }
+
+ return result;
+ }
+ public static String sendGetData(String url, String encoding, String token, DefaultHttpHeaderHandler httpHeaderHandler) {
+ String result = "";
+ CloseableHttpResponse response = null;
+ if (httpHeaderHandler == null) {
+ httpHeaderHandler = new DefaultHttpHeaderHandler();
+ }
+
+ CloseableHttpClient httpClient = null;
+
+ try {
+ httpClient = HttpClients.createDefault();
+ HttpGet httpGet = new HttpGet(url);
+ httpHeaderHandler.setHeader(httpGet, token);
+ response = httpClient.execute(httpGet);
+ if (response.getStatusLine().getStatusCode() == 200) {
+ result = EntityUtils.toString(response.getEntity(), encoding);
+ }
+ } catch (Exception var20) {
+ Exception e = var20;
+ e.printStackTrace();
+ System.out.println("发送GET请求出现异常!" + e);
+ } finally {
+ IOException e;
+ if (response != null) {
+ try {
+ response.close();
+ } catch (IOException var19) {
+ e = var19;
+ e.printStackTrace();
+ }
+ }
+
+ if (httpClient != null) {
+ try {
+ httpClient.close();
+ } catch (IOException var18) {
+ e = var18;
+ e.printStackTrace();
+ }
+ }
+
+ }
+
+ return result;
+ }
+ public static String sendGetEntityData(String url, String encoding, Map param, String token, DefaultHttpHeaderHandler httpHeaderHandler) {
+ String result = "";
+ CloseableHttpResponse response = null;
+ if (httpHeaderHandler == null) {
+ httpHeaderHandler = new DefaultHttpHeaderHandler();
+ }
+ CloseableHttpClient httpClient =null;
+ try {
+ httpClient = HttpClients.createDefault();
+ HttpGetWithEntity httpGet = new HttpGetWithEntity(url);
+ httpHeaderHandler.setHeader(httpGet, token);
+ if (httpHeaderHandler.isJson()) {
+ jsonParams(param, httpGet);
+ } else {
+ formParams(param, httpGet, httpHeaderHandler.getChartSet());
+ }
+ response = httpClient.execute(httpGet);
+ if (response.getStatusLine().getStatusCode() == 200) {
+ result = EntityUtils.toString(response.getEntity(), encoding);
+ }
+ } catch (Exception var16) {
+ Exception e = var16;
+ e.printStackTrace();
+ System.out.println("发送GET请求出现异常!" + e);
+ } finally {
+ if (response != null) {
+ try {
+ response.close();
+ } catch (IOException var15) {
+ IOException e = var15;
+ e.printStackTrace();
+ }
+ }
+ if (httpClient != null) {
+ try {
+ httpClient.close();
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ }
+
+ }
+
+ return result;
+ }
+
+ public static String sendDelete(String url, Map param, String token, DefaultHttpHeaderHandler handler) {
+ try {
+ StringBuffer query = new StringBuffer();
+ Iterator var5 = param.entrySet().iterator();
+
+ while (var5.hasNext()) {
+ Map.Entry kv = (Map.Entry) var5.next();
+ query.append(URLEncoder.encode((String) kv.getKey(), handler.getChartSet()) + "=");
+ query.append(URLEncoder.encode((String) kv.getValue(), handler.getChartSet()) + "&");
+ }
+
+ if (query.lastIndexOf("&") > 0) {
+ query.deleteCharAt(query.length() - 1);
+ }
+ String urlNameString = url + "?" + query.toString();
+ String var14 = sendDeleteData(urlNameString, handler.getChartSet(), token, handler);
+ return var14;
+ } catch (Exception var10) {
+ Exception e = var10;
+ e.printStackTrace();
+ System.out.println("发送GET请求出现异常!" + e);
+ return "";
+ } finally {
+ ;
+ }
+ }
+ private static final Logger logger = LoggerFactory.getLogger(AvUtil.class);
+ /**
+ * http 请求
+ *
+ * @param url
+ * @param encoding
+ * @param token
+ * @param httpHeaderHandler
+ * @return
+ */
+ public static String sendDeleteData(String url, String encoding, String token, DefaultHttpHeaderHandler httpHeaderHandler) {
+ String result = "";
+ CloseableHttpResponse response = null;
+ if (httpHeaderHandler == null) {
+ httpHeaderHandler = new DefaultHttpHeaderHandler();
+ }
+ CloseableHttpClient httpClient = null;
+ try {
+ httpClient = HttpClients.createDefault();
+ HttpDelete httpGet = new HttpDelete(url);
+ httpHeaderHandler.setHeader(httpGet, token);
+ response = httpClient.execute(httpGet);
+ if (response.getStatusLine().getStatusCode() == 200) {
+ logger.info("----------------------------------:"+EntityUtils.toString(response.getEntity(), encoding));
+ result = EntityUtils.toString(response.getEntity(), encoding);
+ }
+ } catch (Exception var16) {
+ Exception e = var16;
+ e.printStackTrace();
+ } finally {
+ if (response != null) {
+ try {
+ response.close();
+ } catch (IOException var15) {
+ IOException e = var15;
+ e.printStackTrace();
+ }
+ }
+ if (httpClient != null) {
+ try {
+ httpClient.close();
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ }
+ }
+ return result;
+ }
+ public static void jsonParams(Map map, HttpPost post) {
+ String paramJson = JSONObject.toJSONString(map);
+ StringEntity stringEntity = new StringEntity(paramJson, ContentType.create("application/json", "UTF-8"));
+ post.setEntity(stringEntity);
+ }
+
+ public static void formParams(Map map, HttpPost post, String chartSet) throws UnsupportedEncodingException {
+ List nameValuePairs = new ArrayList();
+ if (map != null) {
+ Iterator var4 = map.entrySet().iterator();
+
+ while(var4.hasNext()) {
+ Map.Entry entry = (Map.Entry)var4.next();
+ nameValuePairs.add(new BasicNameValuePair((String)entry.getKey(), (String)entry.getValue()));
+ }
+ }
+
+ post.setEntity(new UrlEncodedFormEntity(nameValuePairs, chartSet));
+ }
+ public static void jsonParams(Map map, HttpGetWithEntity post) {
+ String paramJson = JSONObject.toJSONString(map);
+ StringEntity stringEntity = new StringEntity(paramJson, ContentType.create("application/json", "UTF-8"));
+
+ post.setEntity(stringEntity);
+ }
+
+ public static void formParams(Map map, HttpGetWithEntity post, String chartSet) throws UnsupportedEncodingException {
+ List nameValuePairs = new ArrayList();
+ if (map != null) {
+ Iterator var4 = map.entrySet().iterator();
+
+ while (var4.hasNext()) {
+ Map.Entry entry = (Map.Entry) var4.next();
+ nameValuePairs.add(new BasicNameValuePair((String) entry.getKey(), (String) entry.getValue()));
+ }
+ }
+
+ post.setEntity(new UrlEncodedFormEntity(nameValuePairs, chartSet));
+ }
+}
\ No newline at end of file
diff --git a/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/util/AvUtil.java b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/util/AvUtil.java
new file mode 100644
index 0000000..9575627
--- /dev/null
+++ b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/util/AvUtil.java
@@ -0,0 +1,171 @@
+package com.casic.missiles.modular.device.util;
+
+import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.util.StrUtil;
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.TypeReference;
+import com.casic.missiles.modular.device.dto.AvDeviceDTO;
+import com.casic.missiles.modular.device.dto.AvPageResponse;
+import com.casic.missiles.modular.device.dto.DeviceRelationshipDTO;
+import com.casic.missiles.modular.device.dto.page.AvPageRequest;
+import com.casic.missiles.modular.device.dto.stream.StreamRequestDTO;
+import com.casic.missiles.modular.device.enums.AvUrlEnums;
+import com.casic.missiles.modular.device.http.AvDefaultHttpHeaderHandler;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 艾薇对接工具类
+ */
+public class AvUtil {
+ private static final Logger logger = LoggerFactory.getLogger(AvUtil.class);
+
+ /**
+ * 设备列表读取
+ *
+ * @param baseUrl av流媒体地址
+ * @param token 认证令牌
+ * @param pageRequest 请求体
+ * @return
+ */
+ public static List selectDevices(String baseUrl, String token, AvPageRequest pageRequest) {
+ AvDefaultHttpHeaderHandler dcDefaultHttpHeaderHandler = new AvDefaultHttpHeaderHandler();
+ dcDefaultHttpHeaderHandler.setJson(true);
+ Map param = new HashMap<>();
+ param.put("page", pageRequest.getPage() + "");
+ param.put("paging", pageRequest.getPaging() + "");
+ param.put("limit", "100000");
+ param.put("token", token);
+ String res = AvHttpUtils.sendGet(baseUrl + AvUrlEnums.DEVICE.getUrl(), param, token, dcDefaultHttpHeaderHandler);
+ logger.info("selectDevices:{}", res);
+ if (StrUtil.isEmpty(res)) {
+ logger.error("av device sync error!");
+ }
+ AvPageResponse deviceDTOS = JSON.parseObject(res, new TypeReference() {
+ });
+ return deviceDTOS.getItems();
+ }
+
+ /**
+ * 创建流
+ *
+ * @param baseUrl av流媒体地址
+ * @param token 认证令牌
+ * @param streamRequestDTO 请求体
+ * @return
+ */
+ public static Object selectStreams(String baseUrl, String token, StreamRequestDTO streamRequestDTO) {
+
+ Map param = new HashMap<>();
+ param.put("device_id", streamRequestDTO.getDevice_id() + "");
+ param.put("stream_type", streamRequestDTO.getStream_type() + "");
+ param.put("quality", streamRequestDTO.getQuality() + "");
+ param.put("token", token);
+ param.put("from", streamRequestDTO.getFrom() + "");
+ param.put("to", streamRequestDTO.getTo() + "");
+ logger.info("url:{}", baseUrl + AvUrlEnums.STREAM.getUrl());
+ AvDefaultHttpHeaderHandler dcDefaultHttpHeaderHandler = new AvDefaultHttpHeaderHandler();
+ dcDefaultHttpHeaderHandler.setJson(true);
+ String res = AvHttpUtils.sendPost(baseUrl + AvUrlEnums.STREAM.getUrl(), param, token, dcDefaultHttpHeaderHandler);
+
+ if (StrUtil.isEmpty(res)) {
+ logger.error("av stream error:{}", streamRequestDTO.getDevice_id());
+ return null;
+ }
+ return JSON.parseObject(res);
+ }
+
+ /**
+ * 发送心跳
+ *
+ * @param avUrl
+ * @param avToken
+ * @return
+ */
+ public static Object dict(String avUrl, String avToken) {
+ AvDefaultHttpHeaderHandler dcDefaultHttpHeaderHandler = new AvDefaultHttpHeaderHandler();
+ dcDefaultHttpHeaderHandler.setJson(true);
+ Map param = new HashMap<>();
+ String res = AvHttpUtils.sendGet(avUrl + AvUrlEnums.DICT.getUrl(), param, avToken, dcDefaultHttpHeaderHandler);
+ logger.info("av dict:{}", res);
+ return null;
+ }
+
+ /**
+ * 发送心跳
+ *
+ * @param avUrl
+ * @param avToken
+ * @param id
+ * @return
+ */
+ public static Object heart(String avUrl, String avToken, String id) {
+ AvDefaultHttpHeaderHandler dcDefaultHttpHeaderHandler = new AvDefaultHttpHeaderHandler();
+ dcDefaultHttpHeaderHandler.setJson(true);
+ Map param = new HashMap<>();
+// param.put("id", id);
+// param.put("token", avToken);
+ String res = AvHttpUtils.sendGet(avUrl + String.format(AvUrlEnums.HEART.getUrl(), id), param, avToken, dcDefaultHttpHeaderHandler);
+ if (StrUtil.isEmpty(res)) {
+ logger.error("av heart error:{}", id);
+ return null;
+ }
+ return JSON.parseObject(res);
+ }
+
+ /**
+ * 停止流
+ *
+ * @param avUrl 艾薇流媒体地址
+ * @param avToken 认证令牌
+ * @param id 国标ID
+ * @return
+ */
+ public static Object stopStreams(String avUrl, String avToken, String id) {
+ AvDefaultHttpHeaderHandler dcDefaultHttpHeaderHandler = new AvDefaultHttpHeaderHandler();
+ dcDefaultHttpHeaderHandler.setJson(true);
+ Map param = new HashMap<>();
+ //param.put("id", id);
+ String res = AvHttpUtils.sendDelete(avUrl + String.format(AvUrlEnums.STREAM_STOP.getUrl(), id), param, avToken, dcDefaultHttpHeaderHandler);
+
+ if (StrUtil.isEmpty(res)) {
+ logger.error("av stopStreams error:{}", id);
+ return null;
+ }
+ return JSON.parseObject(res);
+ }
+
+ /**
+ * 用户设备关系
+ *
+ * @param avUrl 艾薇流媒体地址
+ * @param avToken 认证令牌
+ * @return
+ */
+ public static List userDeviceRelationships(String avUrl, String avToken) {
+
+ AvDefaultHttpHeaderHandler avDefaultHttpHeaderHandler = new AvDefaultHttpHeaderHandler();
+ avDefaultHttpHeaderHandler.setJson(true);
+ Map param = new HashMap<>();
+ String res = AvHttpUtils.sendGetJson(avUrl + AvUrlEnums.USER_DEVICE_RELATION.getUrl(), param, avToken, avDefaultHttpHeaderHandler);
+ if (StrUtil.isEmpty(res)) {
+ logger.error("av userDeviceRelationships error");
+ return null;
+ }
+
+ List deviceDTOS = JSON.parseObject(res, new TypeReference>() {
+ });
+ if (CollectionUtil.isNotEmpty(deviceDTOS)) {
+ for (DeviceRelationshipDTO deviceDTO : deviceDTOS) {
+ if (StrUtil.isNotEmpty(deviceDTO.getDevice_list())) {
+ deviceDTO.setDeviceList(StrUtil.split(deviceDTO.getDevice_list(), ","));
+ }
+ }
+ }
+ return deviceDTOS;
+ }
+}
\ No newline at end of file
diff --git a/README.md b/README.md
index 430796e..8dbc9a5 100644
--- a/README.md
+++ b/README.md
@@ -9,3 +9,7 @@
#### 其他
>* [git地址](http://192.168.0.203:8080/gitbucket)
>* [本地免登地址](http://localhost:8083/route/mockToken)
+
+AView 对接问题
+1.用户设备关联关系
+ 对应返回 device_list是否为设备国标号
\ No newline at end of file
diff --git a/casic-device-sync/casic-device-aview/pom.xml b/casic-device-sync/casic-device-aview/pom.xml
index 0a3c5fa..94fb9e5 100644
--- a/casic-device-sync/casic-device-aview/pom.xml
+++ b/casic-device-sync/casic-device-aview/pom.xml
@@ -33,6 +33,21 @@
${boot.version}
provided
+
+ com.casic
+ casic-http
+ ${core.version}
+
+
+ com.casic
+ casic-admin-group
+ ${admin.version}
+
+
+ com.casic
+ casic-server
+ ${pro.version}
+
diff --git a/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/controller/AvRouteController.java b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/controller/AvRouteController.java
new file mode 100644
index 0000000..195cba2
--- /dev/null
+++ b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/controller/AvRouteController.java
@@ -0,0 +1,45 @@
+package com.casic.missiles.modular.device.controller;
+
+import com.casic.missiles.model.response.dto.ResponseDataDTO;
+import com.casic.missiles.modular.device.dto.stream.StreamRequestDTO;
+import com.casic.missiles.modular.device.service.IAvSyncService;
+import io.swagger.annotations.Api;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+
+@Api(tags = "AV平台代理接口")
+@RestController
+@RequestMapping("/route")
+public class AvRouteController {
+ @Resource
+ private IAvSyncService avSyncService;
+
+ @PostMapping("/open/v1/api/streams")
+ public Object streams(@RequestBody StreamRequestDTO requestDTO) {
+ Object object = avSyncService.getStreams(requestDTO);
+ if (object == null) {
+ ResponseDataDTO respDTO = ResponseDataDTO.error("流读取失败,请稍后重试!");
+ respDTO.setMessage("流读取失败,请稍后重试!");
+ return respDTO;
+ }
+ return ResponseDataDTO.success(avSyncService.getStreams(requestDTO));
+ }
+
+ @DeleteMapping("/open/v1/api/streams/{id}")
+ public Object stopStreams(@PathVariable("id") String id) {
+ Object object = avSyncService.stopStreams(id);
+ return ResponseDataDTO.success(object);
+ }
+
+ @PostMapping("/open/v1/api/streams/{id}/heart")
+ public Object heart(@PathVariable("id") String id) {
+ Object object = avSyncService.heart(id);
+ if (object == null) {
+ ResponseDataDTO respDTO = ResponseDataDTO.error("流心跳失败,请稍后重试!");
+ respDTO.setMessage("流心跳失败,请稍后重试!");
+ return respDTO;
+ }
+ return ResponseDataDTO.success(object);
+ }
+}
\ No newline at end of file
diff --git a/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/AvDeviceDTO.java b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/AvDeviceDTO.java
new file mode 100644
index 0000000..97bde9f
--- /dev/null
+++ b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/AvDeviceDTO.java
@@ -0,0 +1,49 @@
+package com.casic.missiles.modular.device.dto;
+
+import com.alibaba.fastjson.annotation.JSONField;
+import lombok.Data;
+
+/**
+ * 艾薇设备对象DTO
+ */
+@Data
+public class AvDeviceDTO {
+ // 设备ID
+ private Long id;
+
+ // 设备名称
+ private String name;
+
+ // 设备唯一国标序列号
+ private String sn;
+
+ // 设备类型
+ private Integer type;
+
+ // 设备版本号
+ private String version;
+
+ // 安全等级
+ @JSONField(name = "secure_level")
+ private String secureLevel;
+
+ // 设备状态
+ private Integer status;
+
+ // 云台类型
+ private Integer ptzType;
+
+ // 朝向
+ private Integer orientation;
+
+ // 创建时间
+ @JSONField(name = "gmt_created")
+ private String gmtCreated;
+
+ // 修改时间
+ @JSONField(name = "gmt_modified")
+ private String gmtModified;
+
+ // 数据状态
+ private Integer state;
+}
diff --git a/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/AvPageResponse.java b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/AvPageResponse.java
new file mode 100644
index 0000000..9a05183
--- /dev/null
+++ b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/AvPageResponse.java
@@ -0,0 +1,10 @@
+package com.casic.missiles.modular.device.dto;
+
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class AvPageResponse {
+ private List items;
+}
diff --git a/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/DeviceRelationshipDTO.java b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/DeviceRelationshipDTO.java
new file mode 100644
index 0000000..098dda4
--- /dev/null
+++ b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/DeviceRelationshipDTO.java
@@ -0,0 +1,12 @@
+package com.casic.missiles.modular.device.dto;
+
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class DeviceRelationshipDTO {
+ private Long user_id;
+ private String device_list;
+ private List deviceList;
+}
diff --git a/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/page/AvPageRep.java b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/page/AvPageRep.java
new file mode 100644
index 0000000..74e6a9b
--- /dev/null
+++ b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/page/AvPageRep.java
@@ -0,0 +1,9 @@
+package com.casic.missiles.modular.device.dto.page;
+
+import lombok.Data;
+
+@Data
+public class AvPageRep {
+ private Integer total;
+ private T list;
+}
diff --git a/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/page/AvPageRequest.java b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/page/AvPageRequest.java
new file mode 100644
index 0000000..900ae4a
--- /dev/null
+++ b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/page/AvPageRequest.java
@@ -0,0 +1,14 @@
+package com.casic.missiles.modular.device.dto.page;
+
+import lombok.Data;
+
+/**
+ * 分页请求DTO
+ */
+@Data
+public class AvPageRequest {
+ private int page;
+ private int paging;
+ private int limit;
+
+}
diff --git a/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/page/AvResponseDTO.java b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/page/AvResponseDTO.java
new file mode 100644
index 0000000..f1c1e7a
--- /dev/null
+++ b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/page/AvResponseDTO.java
@@ -0,0 +1,15 @@
+package com.casic.missiles.modular.device.dto.page;
+
+import lombok.Data;
+
+/**
+ * mvp返回基类封装
+ *
+ * @param
+ */
+@Data
+public class AvResponseDTO {
+ private T data;
+ private Integer code;
+ private String msg;
+}
diff --git a/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/stream/StreamRequestDTO.java b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/stream/StreamRequestDTO.java
new file mode 100644
index 0000000..69e88ce
--- /dev/null
+++ b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/stream/StreamRequestDTO.java
@@ -0,0 +1,12 @@
+package com.casic.missiles.modular.device.dto.stream;
+
+import lombok.Data;
+
+@Data
+public class StreamRequestDTO {
+ private String device_id;
+ private String stream_type;
+ private String quality;
+ private int from;
+ private int to;
+}
diff --git a/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/stream/StreamStopRequestDTO.java b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/stream/StreamStopRequestDTO.java
new file mode 100644
index 0000000..9cf94b1
--- /dev/null
+++ b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/stream/StreamStopRequestDTO.java
@@ -0,0 +1,11 @@
+package com.casic.missiles.modular.device.dto.stream;
+
+import lombok.Data;
+
+@Data
+public class StreamStopRequestDTO {
+ private String id;
+ private String type;
+ private StreamRequestDTO request;
+ private String url;
+}
diff --git a/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/enums/AvDataStateEnum.java b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/enums/AvDataStateEnum.java
new file mode 100644
index 0000000..e1a6658
--- /dev/null
+++ b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/enums/AvDataStateEnum.java
@@ -0,0 +1,72 @@
+package com.casic.missiles.modular.device.enums;
+
+/**
+ * 数据状态
+ *
+ * @author lwh
+ * @Date 2017年1月10日 下午9:54:13
+ */
+public enum AvDataStateEnum {
+
+ TYPE0(0, "有效",0),
+ DEL(1, "无效",1);
+
+ Integer code;
+ String message;
+ Integer type;
+ AvDataStateEnum(Integer code, String message, Integer type) {
+ this.code = code;
+ this.message = message;
+ this.type = type;
+ }
+
+ public Integer getCode() {
+ return code;
+ }
+
+ public void setCode(Integer code) {
+ this.code = code;
+ }
+
+ public String getMessage() {
+ return message;
+ }
+
+ public void setMessage(String message) {
+ this.message = message;
+ }
+
+ public Integer getType() {
+ return type;
+ }
+
+ public void setType(Integer type) {
+ this.type = type;
+ }
+
+ public static String valueOfs(Integer value) {
+ if (value == null) {
+ return "";
+ } else {
+ for (AvDataStateEnum ms : AvDataStateEnum.values()) {
+ if (ms.getCode().equals(value)) {
+ return ms.getMessage();
+ }
+ }
+ return "";
+ }
+ }
+
+ public static AvDataStateEnum valueOfType(Integer value) {
+ if (value == null) {
+ return TYPE0;
+ } else {
+ for (AvDataStateEnum ms : AvDataStateEnum.values()) {
+ if (ms.getCode().equals(value)) {
+ return ms;
+ }
+ }
+ return TYPE0;
+ }
+ }
+}
diff --git a/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/enums/AvPtzTypeEnum.java b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/enums/AvPtzTypeEnum.java
new file mode 100644
index 0000000..fdcb08d
--- /dev/null
+++ b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/enums/AvPtzTypeEnum.java
@@ -0,0 +1,73 @@
+package com.casic.missiles.modular.device.enums;
+
+/**
+ * wvp设备类型转换
+ *
+ * @author lwh
+ * @Date 2017年1月10日 下午9:54:13
+ */
+public enum AvPtzTypeEnum {
+
+ TYPE0(0, "枪机",0),
+ TYPE1(1, "半球",1),
+ TYPE2(2, "球机",2);
+
+ Integer code;
+ String message;
+ Integer type;
+ AvPtzTypeEnum(Integer code, String message, Integer type) {
+ this.code = code;
+ this.message = message;
+ this.type = type;
+ }
+
+ public Integer getCode() {
+ return code;
+ }
+
+ public void setCode(Integer code) {
+ this.code = code;
+ }
+
+ public String getMessage() {
+ return message;
+ }
+
+ public void setMessage(String message) {
+ this.message = message;
+ }
+
+ public Integer getType() {
+ return type;
+ }
+
+ public void setType(Integer type) {
+ this.type = type;
+ }
+
+ public static String valueOfs(Integer value) {
+ if (value == null) {
+ return "";
+ } else {
+ for (AvPtzTypeEnum ms : AvPtzTypeEnum.values()) {
+ if (ms.getCode().equals(value)) {
+ return ms.getMessage();
+ }
+ }
+ return "";
+ }
+ }
+
+ public static AvPtzTypeEnum valueOfType(Integer value) {
+ if (value == null) {
+ return TYPE0;
+ } else {
+ for (AvPtzTypeEnum ms : AvPtzTypeEnum.values()) {
+ if (ms.getCode().equals(value)) {
+ return ms;
+ }
+ }
+ return TYPE0;
+ }
+ }
+}
diff --git a/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/enums/AvSecretLevelEnum.java b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/enums/AvSecretLevelEnum.java
new file mode 100644
index 0000000..39e8524
--- /dev/null
+++ b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/enums/AvSecretLevelEnum.java
@@ -0,0 +1,60 @@
+package com.casic.missiles.modular.device.enums;
+
+/**
+ * Av主数据密集对应关系枚举
+ *
+ * @author lwh
+ * @Date 2017年1月10日 下午9:54:13
+ */
+public enum AvSecretLevelEnum {
+ s("999", "未定密", 999, "未定密"),
+ s0("0", "公开", 0, "公开"),
+ s1("1", "内部", 1, "内部"),
+ s2("2", "秘密", 2, "秘密"),
+ s3("3", "机密", 3, "机密");
+
+ String code;
+ Integer currCode;
+ String message;
+ String currMsg;
+
+ AvSecretLevelEnum(String code, String message, Integer currCode, String currMsg) {
+ this.code = code;
+ this.currCode = currCode;
+ this.message = message;
+ this.currMsg = currMsg;
+ }
+
+ public Integer getCurrCode() {
+ return currCode;
+ }
+
+ public String getCode() {
+ return code;
+ }
+
+ public void setCode(String code) {
+ this.code = code;
+ }
+
+ public String getMessage() {
+ return message;
+ }
+
+ public void setMessage(String message) {
+ this.message = message;
+ }
+
+ public static AvSecretLevelEnum valueOfCode(String value) {
+ if (value == null) {
+ return s0;
+ } else {
+ for (AvSecretLevelEnum ms : AvSecretLevelEnum.values()) {
+ if (ms.getCode().equals(value)) {
+ return ms;
+ }
+ }
+ return s0;
+ }
+ }
+}
diff --git a/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/enums/AvStatusTypeEnum.java b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/enums/AvStatusTypeEnum.java
new file mode 100644
index 0000000..ddccd52
--- /dev/null
+++ b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/enums/AvStatusTypeEnum.java
@@ -0,0 +1,72 @@
+package com.casic.missiles.modular.device.enums;
+
+/**
+ * wvp设备类型转换
+ *
+ * @author lwh
+ * @Date 2017年1月10日 下午9:54:13
+ */
+public enum AvStatusTypeEnum {
+
+ TYPE0(0, "离线",0),
+ TYPE1(1, "在线",1);
+
+ Integer code;
+ String message;
+ Integer type;
+ AvStatusTypeEnum(Integer code, String message, Integer type) {
+ this.code = code;
+ this.message = message;
+ this.type = type;
+ }
+
+ public Integer getCode() {
+ return code;
+ }
+
+ public void setCode(Integer code) {
+ this.code = code;
+ }
+
+ public String getMessage() {
+ return message;
+ }
+
+ public void setMessage(String message) {
+ this.message = message;
+ }
+
+ public Integer getType() {
+ return type;
+ }
+
+ public void setType(Integer type) {
+ this.type = type;
+ }
+
+ public static String valueOfs(Integer value) {
+ if (value == null) {
+ return "";
+ } else {
+ for (AvStatusTypeEnum ms : AvStatusTypeEnum.values()) {
+ if (ms.getCode().equals(value)) {
+ return ms.getMessage();
+ }
+ }
+ return "";
+ }
+ }
+
+ public static AvStatusTypeEnum valueOfType(Integer value) {
+ if (value == null) {
+ return TYPE0;
+ } else {
+ for (AvStatusTypeEnum ms : AvStatusTypeEnum.values()) {
+ if (ms.getCode().equals(value)) {
+ return ms;
+ }
+ }
+ return TYPE0;
+ }
+ }
+}
diff --git a/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/enums/AvUrlEnums.java b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/enums/AvUrlEnums.java
new file mode 100644
index 0000000..04b38ad
--- /dev/null
+++ b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/enums/AvUrlEnums.java
@@ -0,0 +1,37 @@
+package com.casic.missiles.modular.device.enums;
+
+/**
+ * 设备媒体
+ */
+public enum AvUrlEnums {
+ DEVICE("/open/v1/api/devices","设备信息查询"),
+ STREAM("/open/v1/api/streams","创建流"),
+ STREAM_STOP("/open/v1/api/streams/%s","停止流"),
+ HEART("/open/v1/api/streams/%s/heartbeat","发送心跳"),
+ DICT("/open/v1/api/dictionary_datas","字典查询"),
+ USER_DEVICE_RELATION("/open/v1/api/user_device_relationships","用户设备关联关系");
+
+ private String url;
+ private String name;
+
+ AvUrlEnums(String url, String name) {
+ this.url = url;
+ this.name = name;
+ }
+
+ public String getUrl() {
+ return url;
+ }
+
+ public void setUrl(String url) {
+ this.url = url;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+}
diff --git a/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/http/AvDefaultHttpHeaderHandler.java b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/http/AvDefaultHttpHeaderHandler.java
new file mode 100644
index 0000000..53f0a5c
--- /dev/null
+++ b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/http/AvDefaultHttpHeaderHandler.java
@@ -0,0 +1,14 @@
+package com.casic.missiles.modular.device.http;
+
+import cn.hutool.core.util.StrUtil;
+import com.casic.missiles.modular.system.handler.DefaultHttpHeaderHandler;
+import org.apache.http.client.methods.HttpRequestBase;
+
+public class AvDefaultHttpHeaderHandler extends DefaultHttpHeaderHandler {
+ public void setHeader(HttpRequestBase base, String token) {
+ base.addHeader("Content-type", DEFAULT_CONTEXTTYPE);
+ if (StrUtil.isNotEmpty(token)) {
+ base.addHeader("X-OApi-Token", token);
+ }
+ }
+}
diff --git a/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/http/HttpGetWithEntity.java b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/http/HttpGetWithEntity.java
new file mode 100644
index 0000000..b8abf8f
--- /dev/null
+++ b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/http/HttpGetWithEntity.java
@@ -0,0 +1,20 @@
+package com.casic.missiles.modular.device.http;
+
+import org.apache.http.client.methods.HttpEntityEnclosingRequestBase;
+
+import java.net.URI;
+
+public class HttpGetWithEntity extends HttpEntityEnclosingRequestBase {
+
+ public HttpGetWithEntity(URI uri) {
+ this.setURI(uri);
+ }
+
+ public HttpGetWithEntity(String uri) {
+ this.setURI(URI.create(uri));
+ }
+
+ public String getMethod() {
+ return "GET";
+ }
+}
diff --git a/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/service/IAvSyncService.java b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/service/IAvSyncService.java
new file mode 100644
index 0000000..13c3203
--- /dev/null
+++ b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/service/IAvSyncService.java
@@ -0,0 +1,39 @@
+package com.casic.missiles.modular.device.service;
+
+import com.casic.missiles.modular.device.dto.stream.StreamRequestDTO;
+
+public interface IAvSyncService {
+ /**
+ * Dc706设备信息同步
+ */
+ void syncDcDevices(String token);
+
+ /**
+ * 创建流
+ *
+ * @param streamRequestDTO
+ * @return
+ */
+ Object getStreams(StreamRequestDTO streamRequestDTO);
+
+ /**
+ * 停止流
+ *
+ * @param id
+ * @return
+ */
+ Object stopStreams(String id);
+
+ /**
+ * 发送心跳
+ *
+ * @param id 设备国标号
+ * @return
+ */
+ Object heart(String id);
+
+ /**
+ * 设备权限更新
+ */
+ void loadUserDeviceRelationships();
+}
diff --git a/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/service/impl/AvSyncServiceImpl.java b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/service/impl/AvSyncServiceImpl.java
new file mode 100644
index 0000000..25e3340
--- /dev/null
+++ b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/service/impl/AvSyncServiceImpl.java
@@ -0,0 +1,179 @@
+package com.casic.missiles.modular.device.service.impl;
+
+import cn.hutool.core.collection.CollectionUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.casic.missiles.core.application.service.AbstractUserService;
+import com.casic.missiles.modular.device.dto.AvDeviceDTO;
+import com.casic.missiles.modular.device.dto.DeviceRelationshipDTO;
+import com.casic.missiles.modular.device.dto.page.AvPageRequest;
+import com.casic.missiles.modular.device.dto.stream.StreamRequestDTO;
+import com.casic.missiles.modular.device.enums.AvDataStateEnum;
+import com.casic.missiles.modular.device.enums.AvPtzTypeEnum;
+import com.casic.missiles.modular.device.enums.AvSecretLevelEnum;
+import com.casic.missiles.modular.device.enums.AvStatusTypeEnum;
+import com.casic.missiles.modular.device.model.BusDeviceInfo;
+import com.casic.missiles.modular.device.service.IAvSyncService;
+import com.casic.missiles.modular.device.service.IBusDeviceInfoService;
+import com.casic.missiles.modular.device.service.ISysGroupDeviceService;
+import com.casic.missiles.modular.device.util.AvUtil;
+import com.casic.missiles.modular.system.model.SysUserGroup;
+import com.casic.missiles.modular.system.model.User;
+import com.casic.missiles.modular.system.service.ISysUserGroupService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import javax.annotation.Resource;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+import java.util.stream.Collectors;
+@Slf4j
+@Service
+public class AvSyncServiceImpl implements IAvSyncService {
+ @Value("${casic.video.av.url:-1}")
+ private String avUrl;
+ @Value("${casic.video.av.token:-1}")
+ private String avToken;
+ @Resource
+ private IBusDeviceInfoService deviceInfoService;
+ @Resource
+ private AbstractUserService abstractUserService;
+
+ @Resource
+ private ISysUserGroupService userGroupService;
+ @Resource
+ private ISysGroupDeviceService sysGroupDeviceService;
+
+ @Override
+ public void syncDcDevices(String token) {
+ AvPageRequest avPageRequest = new AvPageRequest();
+ avPageRequest.setPage(1);
+ avPageRequest.setPaging(1);
+
+ //全量查询设备信息
+ List deviceDTOS = AvUtil.selectDevices(avUrl, token, avPageRequest);
+
+ if (CollectionUtil.isNotEmpty(deviceDTOS)) {
+ for (AvDeviceDTO dcDeviceDTO : deviceDTOS) {
+ BusDeviceInfo busDeviceInfo = this.convertDevice(dcDeviceDTO);
+
+ LambdaQueryWrapper query = new LambdaQueryWrapper<>();
+ query.eq(BusDeviceInfo::getCameraIndexCode, dcDeviceDTO.getSn());
+ this.deviceInfoService.saveOrUpdate(busDeviceInfo, query);
+ }
+
+ List deviceSns = deviceDTOS.stream().filter(dto -> AvDataStateEnum.DEL.equals(dto.getState())).map(AvDeviceDTO::getSn).collect(Collectors.toList());
+
+ LambdaQueryWrapper query = new LambdaQueryWrapper<>();
+ query.in(BusDeviceInfo::getCameraIndexCode, deviceSns);
+ if (CollectionUtil.isNotEmpty(deviceSns)) {
+ this.deviceInfoService.remove(query);
+ }
+ }
+
+// AvUtil.dict(avUrl,avToken);
+ }
+
+ /**
+ * 流地址请求
+ *
+ * @param streamRequestDTO
+ * @return
+ */
+ @Override
+ public Object getStreams(StreamRequestDTO streamRequestDTO) {
+ return AvUtil.selectStreams(avUrl, avToken, streamRequestDTO);
+ }
+
+ @Override
+ public Object stopStreams(String id) {
+ return AvUtil.stopStreams(avUrl, avToken, id);
+ }
+
+ @Override
+ public Object heart(String id) {
+ return AvUtil.heart(avUrl, avToken, id);
+ }
+
+ @Transactional
+ @Override
+ public void loadUserDeviceRelationships() {
+
+ List relationshipDTOS = AvUtil.userDeviceRelationships(avUrl, avToken);
+ log.info("loadUserDeviceRelationships: {}", relationshipDTOS);
+
+ for (DeviceRelationshipDTO relationshipDTO : relationshipDTOS) {
+
+ //检索用户信息
+ LambdaQueryWrapper query = new LambdaQueryWrapper<>();
+ query.eq(User::getSyncId, relationshipDTO.getUser_id());
+ List users = abstractUserService.list(query);
+
+ if (users != null&&users.size() > 0) {
+ User user = users.get(0);
+ //创建用户组
+ LambdaQueryWrapper groupQuery = new LambdaQueryWrapper<>();
+ String groupName = user.getName() + user.getId();
+ groupQuery.eq(SysUserGroup::getGroupName, groupName);
+ SysUserGroup sysUserGroup = userGroupService.getOne(groupQuery);
+
+ if (sysUserGroup == null) {
+ sysUserGroup = genSysUserGroup(groupName, user);
+ List userIds = new ArrayList<>();
+ userIds.add(user.getId());
+ userGroupService.createSysUserGroup(sysUserGroup, userIds);
+ }
+
+ LambdaQueryWrapper deviceQuery = new LambdaQueryWrapper<>();
+ deviceQuery.in(BusDeviceInfo::getCameraIndexCode, relationshipDTO.getDeviceList());
+ List busDeviceInfos = deviceInfoService.list(deviceQuery);
+
+ if (CollectionUtil.isNotEmpty(busDeviceInfos)) {
+ List list = busDeviceInfos.stream().map(BusDeviceInfo::getId).collect(Collectors.toList());
+ sysGroupDeviceService.batchIncremental(sysUserGroup.getId(), list);
+ }
+
+ }else{
+ log.error("loadUserDeviceRelationships is empty: {}", relationshipDTO.getUser_id());
+ }
+ }
+ }
+
+ private SysUserGroup genSysUserGroup(String groupName, User user) {
+ SysUserGroup sysUserGroup = new SysUserGroup();
+ sysUserGroup.setGroupName(groupName);
+ sysUserGroup.setCreateTime(new Date());
+ sysUserGroup.setCreateId(user.getId());
+ sysUserGroup.setDeptId(user.getDeptId());
+ sysUserGroup.setDescription("默认创建分组,不可修改!");
+ sysUserGroup.setSafe(0);
+ return sysUserGroup;
+ }
+
+ /**
+ * 设备类型数据转换
+ *
+ * @param dto 艾薇设备信息
+ * @return
+ */
+ private BusDeviceInfo convertDevice(AvDeviceDTO dto) {
+ BusDeviceInfo info = new BusDeviceInfo();
+ info.setCreateTime(new Date());
+ info.setUpdateTime(new Date());
+
+ //转换为本地密级编码
+ info.setSecretLevel(AvSecretLevelEnum.valueOfCode(dto.getSecureLevel()).getCurrCode());
+
+ info.setDeviceStatus(AvStatusTypeEnum.valueOfType(dto.getStatus()).getType());
+ info.setCameraIndexCode(dto.getSn());
+ info.setMonitorName(dto.getName());
+
+ //PTZ type类型
+ info.setDeviceType(AvPtzTypeEnum.valueOfType(dto.getPtzType()).getType() + "");
+ info.setBfFlag(0);
+
+ return info;
+ }
+}
diff --git a/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/util/AvHttpUtils.java b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/util/AvHttpUtils.java
new file mode 100644
index 0000000..083d88a
--- /dev/null
+++ b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/util/AvHttpUtils.java
@@ -0,0 +1,331 @@
+package com.casic.missiles.modular.device.util;
+
+import com.alibaba.fastjson.JSONObject;
+import com.casic.missiles.modular.device.http.HttpGetWithEntity;
+import com.casic.missiles.modular.system.handler.DefaultHttpHeaderHandler;
+import org.apache.http.NameValuePair;
+import org.apache.http.client.entity.UrlEncodedFormEntity;
+import org.apache.http.client.methods.CloseableHttpResponse;
+import org.apache.http.client.methods.HttpDelete;
+import org.apache.http.client.methods.HttpGet;
+import org.apache.http.client.methods.HttpPost;
+import org.apache.http.entity.ContentType;
+import org.apache.http.entity.StringEntity;
+import org.apache.http.impl.client.CloseableHttpClient;
+import org.apache.http.impl.client.HttpClients;
+import org.apache.http.message.BasicNameValuePair;
+import org.apache.http.util.EntityUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.io.IOException;
+import java.io.UnsupportedEncodingException;
+import java.net.URLEncoder;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+
+public class AvHttpUtils {
+
+ public static String sendGetJson(String url, Map param, String token, DefaultHttpHeaderHandler handler) {
+ try {
+ StringBuffer query = new StringBuffer();
+ String var14 = sendGetEntityData(url, handler.getChartSet(), param, token, handler);
+ return var14;
+ } catch (Exception var10) {
+ Exception e = var10;
+ e.printStackTrace();
+ System.out.println("发送GET请求出现异常!" + e);
+ return "";
+ } finally {
+ ;
+ }
+ }
+ public static String sendGet(String url, Map param, String token, DefaultHttpHeaderHandler handler) {
+ try {
+ StringBuffer query = new StringBuffer();
+ Iterator var5 = param.entrySet().iterator();
+
+ while(var5.hasNext()) {
+ Map.Entry kv = (Map.Entry)var5.next();
+ query.append(URLEncoder.encode((String)kv.getKey(), handler.getChartSet()) + "=");
+ query.append(URLEncoder.encode((String)kv.getValue(), handler.getChartSet()) + "&");
+ }
+
+ if (query.lastIndexOf("&") > 0) {
+ query.deleteCharAt(query.length() - 1);
+ }
+
+ String urlNameString = url + "?" + query.toString();
+ String var14 = sendGetData(urlNameString, handler.getChartSet(), token, handler);
+ return var14;
+ } catch (Exception var10) {
+ Exception e = var10;
+ e.printStackTrace();
+ System.out.println("发送GET请求出现异常!" + e);
+ return "";
+ } finally {
+ ;
+ }
+ }
+ public static String sendPost(String url, Map param, String token, DefaultHttpHeaderHandler httpHeaderHandler) {
+ return sendPostDataByMap(url, param, "utf8", token, httpHeaderHandler);
+ }
+ public static String sendPostDataByMap(String url, Map map, String encoding, String token, DefaultHttpHeaderHandler httpHeaderHandler) {
+ String result = "";
+ CloseableHttpResponse response = null;
+ CloseableHttpClient httpClient = null;
+ HttpPost httpPost = null;
+
+ try {
+ httpClient = HttpClients.createDefault();
+ httpPost = new HttpPost(url);
+ httpPost.setHeader("User-Agent", "Mozilla/4.0 (compatible; MSIE 5.0; Windows NT; DigExt)");
+ httpHeaderHandler.setHeader(httpPost, token);
+ if (httpHeaderHandler.isJson()) {
+ jsonParams(map, httpPost);
+ } else {
+ formParams(map, httpPost, httpHeaderHandler.getChartSet());
+ }
+
+ response = httpClient.execute(httpPost);
+ if (response.getStatusLine().getStatusCode() == 200) {
+ result = EntityUtils.toString(response.getEntity(), httpHeaderHandler.getChartSet());
+ }
+ } catch (Exception var22) {
+ Exception e = var22;
+ System.out.println("发送GET请求出现异常!" + e);
+ e.printStackTrace();
+ } finally {
+ IOException e;
+ try {
+ if (response != null) {
+ response.close();
+ }
+
+ httpPost.releaseConnection();
+ httpClient.close();
+ } catch (IOException var21) {
+ e = var21;
+ e.printStackTrace();
+ }
+
+ if (httpClient != null) {
+ try {
+ httpClient.close();
+ } catch (IOException var20) {
+ e = var20;
+ e.printStackTrace();
+ }
+ }
+
+ }
+
+ return result;
+ }
+ public static String sendGetData(String url, String encoding, String token, DefaultHttpHeaderHandler httpHeaderHandler) {
+ String result = "";
+ CloseableHttpResponse response = null;
+ if (httpHeaderHandler == null) {
+ httpHeaderHandler = new DefaultHttpHeaderHandler();
+ }
+
+ CloseableHttpClient httpClient = null;
+
+ try {
+ httpClient = HttpClients.createDefault();
+ HttpGet httpGet = new HttpGet(url);
+ httpHeaderHandler.setHeader(httpGet, token);
+ response = httpClient.execute(httpGet);
+ if (response.getStatusLine().getStatusCode() == 200) {
+ result = EntityUtils.toString(response.getEntity(), encoding);
+ }
+ } catch (Exception var20) {
+ Exception e = var20;
+ e.printStackTrace();
+ System.out.println("发送GET请求出现异常!" + e);
+ } finally {
+ IOException e;
+ if (response != null) {
+ try {
+ response.close();
+ } catch (IOException var19) {
+ e = var19;
+ e.printStackTrace();
+ }
+ }
+
+ if (httpClient != null) {
+ try {
+ httpClient.close();
+ } catch (IOException var18) {
+ e = var18;
+ e.printStackTrace();
+ }
+ }
+
+ }
+
+ return result;
+ }
+ public static String sendGetEntityData(String url, String encoding, Map param, String token, DefaultHttpHeaderHandler httpHeaderHandler) {
+ String result = "";
+ CloseableHttpResponse response = null;
+ if (httpHeaderHandler == null) {
+ httpHeaderHandler = new DefaultHttpHeaderHandler();
+ }
+ CloseableHttpClient httpClient =null;
+ try {
+ httpClient = HttpClients.createDefault();
+ HttpGetWithEntity httpGet = new HttpGetWithEntity(url);
+ httpHeaderHandler.setHeader(httpGet, token);
+ if (httpHeaderHandler.isJson()) {
+ jsonParams(param, httpGet);
+ } else {
+ formParams(param, httpGet, httpHeaderHandler.getChartSet());
+ }
+ response = httpClient.execute(httpGet);
+ if (response.getStatusLine().getStatusCode() == 200) {
+ result = EntityUtils.toString(response.getEntity(), encoding);
+ }
+ } catch (Exception var16) {
+ Exception e = var16;
+ e.printStackTrace();
+ System.out.println("发送GET请求出现异常!" + e);
+ } finally {
+ if (response != null) {
+ try {
+ response.close();
+ } catch (IOException var15) {
+ IOException e = var15;
+ e.printStackTrace();
+ }
+ }
+ if (httpClient != null) {
+ try {
+ httpClient.close();
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ }
+
+ }
+
+ return result;
+ }
+
+ public static String sendDelete(String url, Map param, String token, DefaultHttpHeaderHandler handler) {
+ try {
+ StringBuffer query = new StringBuffer();
+ Iterator var5 = param.entrySet().iterator();
+
+ while (var5.hasNext()) {
+ Map.Entry kv = (Map.Entry) var5.next();
+ query.append(URLEncoder.encode((String) kv.getKey(), handler.getChartSet()) + "=");
+ query.append(URLEncoder.encode((String) kv.getValue(), handler.getChartSet()) + "&");
+ }
+
+ if (query.lastIndexOf("&") > 0) {
+ query.deleteCharAt(query.length() - 1);
+ }
+ String urlNameString = url + "?" + query.toString();
+ String var14 = sendDeleteData(urlNameString, handler.getChartSet(), token, handler);
+ return var14;
+ } catch (Exception var10) {
+ Exception e = var10;
+ e.printStackTrace();
+ System.out.println("发送GET请求出现异常!" + e);
+ return "";
+ } finally {
+ ;
+ }
+ }
+ private static final Logger logger = LoggerFactory.getLogger(AvUtil.class);
+ /**
+ * http 请求
+ *
+ * @param url
+ * @param encoding
+ * @param token
+ * @param httpHeaderHandler
+ * @return
+ */
+ public static String sendDeleteData(String url, String encoding, String token, DefaultHttpHeaderHandler httpHeaderHandler) {
+ String result = "";
+ CloseableHttpResponse response = null;
+ if (httpHeaderHandler == null) {
+ httpHeaderHandler = new DefaultHttpHeaderHandler();
+ }
+ CloseableHttpClient httpClient = null;
+ try {
+ httpClient = HttpClients.createDefault();
+ HttpDelete httpGet = new HttpDelete(url);
+ httpHeaderHandler.setHeader(httpGet, token);
+ response = httpClient.execute(httpGet);
+ if (response.getStatusLine().getStatusCode() == 200) {
+ logger.info("----------------------------------:"+EntityUtils.toString(response.getEntity(), encoding));
+ result = EntityUtils.toString(response.getEntity(), encoding);
+ }
+ } catch (Exception var16) {
+ Exception e = var16;
+ e.printStackTrace();
+ } finally {
+ if (response != null) {
+ try {
+ response.close();
+ } catch (IOException var15) {
+ IOException e = var15;
+ e.printStackTrace();
+ }
+ }
+ if (httpClient != null) {
+ try {
+ httpClient.close();
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ }
+ }
+ return result;
+ }
+ public static void jsonParams(Map map, HttpPost post) {
+ String paramJson = JSONObject.toJSONString(map);
+ StringEntity stringEntity = new StringEntity(paramJson, ContentType.create("application/json", "UTF-8"));
+ post.setEntity(stringEntity);
+ }
+
+ public static void formParams(Map map, HttpPost post, String chartSet) throws UnsupportedEncodingException {
+ List nameValuePairs = new ArrayList();
+ if (map != null) {
+ Iterator var4 = map.entrySet().iterator();
+
+ while(var4.hasNext()) {
+ Map.Entry entry = (Map.Entry)var4.next();
+ nameValuePairs.add(new BasicNameValuePair((String)entry.getKey(), (String)entry.getValue()));
+ }
+ }
+
+ post.setEntity(new UrlEncodedFormEntity(nameValuePairs, chartSet));
+ }
+ public static void jsonParams(Map map, HttpGetWithEntity post) {
+ String paramJson = JSONObject.toJSONString(map);
+ StringEntity stringEntity = new StringEntity(paramJson, ContentType.create("application/json", "UTF-8"));
+
+ post.setEntity(stringEntity);
+ }
+
+ public static void formParams(Map map, HttpGetWithEntity post, String chartSet) throws UnsupportedEncodingException {
+ List nameValuePairs = new ArrayList();
+ if (map != null) {
+ Iterator var4 = map.entrySet().iterator();
+
+ while (var4.hasNext()) {
+ Map.Entry entry = (Map.Entry) var4.next();
+ nameValuePairs.add(new BasicNameValuePair((String) entry.getKey(), (String) entry.getValue()));
+ }
+ }
+
+ post.setEntity(new UrlEncodedFormEntity(nameValuePairs, chartSet));
+ }
+}
\ No newline at end of file
diff --git a/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/util/AvUtil.java b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/util/AvUtil.java
new file mode 100644
index 0000000..9575627
--- /dev/null
+++ b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/util/AvUtil.java
@@ -0,0 +1,171 @@
+package com.casic.missiles.modular.device.util;
+
+import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.util.StrUtil;
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.TypeReference;
+import com.casic.missiles.modular.device.dto.AvDeviceDTO;
+import com.casic.missiles.modular.device.dto.AvPageResponse;
+import com.casic.missiles.modular.device.dto.DeviceRelationshipDTO;
+import com.casic.missiles.modular.device.dto.page.AvPageRequest;
+import com.casic.missiles.modular.device.dto.stream.StreamRequestDTO;
+import com.casic.missiles.modular.device.enums.AvUrlEnums;
+import com.casic.missiles.modular.device.http.AvDefaultHttpHeaderHandler;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 艾薇对接工具类
+ */
+public class AvUtil {
+ private static final Logger logger = LoggerFactory.getLogger(AvUtil.class);
+
+ /**
+ * 设备列表读取
+ *
+ * @param baseUrl av流媒体地址
+ * @param token 认证令牌
+ * @param pageRequest 请求体
+ * @return
+ */
+ public static List selectDevices(String baseUrl, String token, AvPageRequest pageRequest) {
+ AvDefaultHttpHeaderHandler dcDefaultHttpHeaderHandler = new AvDefaultHttpHeaderHandler();
+ dcDefaultHttpHeaderHandler.setJson(true);
+ Map param = new HashMap<>();
+ param.put("page", pageRequest.getPage() + "");
+ param.put("paging", pageRequest.getPaging() + "");
+ param.put("limit", "100000");
+ param.put("token", token);
+ String res = AvHttpUtils.sendGet(baseUrl + AvUrlEnums.DEVICE.getUrl(), param, token, dcDefaultHttpHeaderHandler);
+ logger.info("selectDevices:{}", res);
+ if (StrUtil.isEmpty(res)) {
+ logger.error("av device sync error!");
+ }
+ AvPageResponse deviceDTOS = JSON.parseObject(res, new TypeReference() {
+ });
+ return deviceDTOS.getItems();
+ }
+
+ /**
+ * 创建流
+ *
+ * @param baseUrl av流媒体地址
+ * @param token 认证令牌
+ * @param streamRequestDTO 请求体
+ * @return
+ */
+ public static Object selectStreams(String baseUrl, String token, StreamRequestDTO streamRequestDTO) {
+
+ Map param = new HashMap<>();
+ param.put("device_id", streamRequestDTO.getDevice_id() + "");
+ param.put("stream_type", streamRequestDTO.getStream_type() + "");
+ param.put("quality", streamRequestDTO.getQuality() + "");
+ param.put("token", token);
+ param.put("from", streamRequestDTO.getFrom() + "");
+ param.put("to", streamRequestDTO.getTo() + "");
+ logger.info("url:{}", baseUrl + AvUrlEnums.STREAM.getUrl());
+ AvDefaultHttpHeaderHandler dcDefaultHttpHeaderHandler = new AvDefaultHttpHeaderHandler();
+ dcDefaultHttpHeaderHandler.setJson(true);
+ String res = AvHttpUtils.sendPost(baseUrl + AvUrlEnums.STREAM.getUrl(), param, token, dcDefaultHttpHeaderHandler);
+
+ if (StrUtil.isEmpty(res)) {
+ logger.error("av stream error:{}", streamRequestDTO.getDevice_id());
+ return null;
+ }
+ return JSON.parseObject(res);
+ }
+
+ /**
+ * 发送心跳
+ *
+ * @param avUrl
+ * @param avToken
+ * @return
+ */
+ public static Object dict(String avUrl, String avToken) {
+ AvDefaultHttpHeaderHandler dcDefaultHttpHeaderHandler = new AvDefaultHttpHeaderHandler();
+ dcDefaultHttpHeaderHandler.setJson(true);
+ Map param = new HashMap<>();
+ String res = AvHttpUtils.sendGet(avUrl + AvUrlEnums.DICT.getUrl(), param, avToken, dcDefaultHttpHeaderHandler);
+ logger.info("av dict:{}", res);
+ return null;
+ }
+
+ /**
+ * 发送心跳
+ *
+ * @param avUrl
+ * @param avToken
+ * @param id
+ * @return
+ */
+ public static Object heart(String avUrl, String avToken, String id) {
+ AvDefaultHttpHeaderHandler dcDefaultHttpHeaderHandler = new AvDefaultHttpHeaderHandler();
+ dcDefaultHttpHeaderHandler.setJson(true);
+ Map param = new HashMap<>();
+// param.put("id", id);
+// param.put("token", avToken);
+ String res = AvHttpUtils.sendGet(avUrl + String.format(AvUrlEnums.HEART.getUrl(), id), param, avToken, dcDefaultHttpHeaderHandler);
+ if (StrUtil.isEmpty(res)) {
+ logger.error("av heart error:{}", id);
+ return null;
+ }
+ return JSON.parseObject(res);
+ }
+
+ /**
+ * 停止流
+ *
+ * @param avUrl 艾薇流媒体地址
+ * @param avToken 认证令牌
+ * @param id 国标ID
+ * @return
+ */
+ public static Object stopStreams(String avUrl, String avToken, String id) {
+ AvDefaultHttpHeaderHandler dcDefaultHttpHeaderHandler = new AvDefaultHttpHeaderHandler();
+ dcDefaultHttpHeaderHandler.setJson(true);
+ Map param = new HashMap<>();
+ //param.put("id", id);
+ String res = AvHttpUtils.sendDelete(avUrl + String.format(AvUrlEnums.STREAM_STOP.getUrl(), id), param, avToken, dcDefaultHttpHeaderHandler);
+
+ if (StrUtil.isEmpty(res)) {
+ logger.error("av stopStreams error:{}", id);
+ return null;
+ }
+ return JSON.parseObject(res);
+ }
+
+ /**
+ * 用户设备关系
+ *
+ * @param avUrl 艾薇流媒体地址
+ * @param avToken 认证令牌
+ * @return
+ */
+ public static List userDeviceRelationships(String avUrl, String avToken) {
+
+ AvDefaultHttpHeaderHandler avDefaultHttpHeaderHandler = new AvDefaultHttpHeaderHandler();
+ avDefaultHttpHeaderHandler.setJson(true);
+ Map param = new HashMap<>();
+ String res = AvHttpUtils.sendGetJson(avUrl + AvUrlEnums.USER_DEVICE_RELATION.getUrl(), param, avToken, avDefaultHttpHeaderHandler);
+ if (StrUtil.isEmpty(res)) {
+ logger.error("av userDeviceRelationships error");
+ return null;
+ }
+
+ List deviceDTOS = JSON.parseObject(res, new TypeReference>() {
+ });
+ if (CollectionUtil.isNotEmpty(deviceDTOS)) {
+ for (DeviceRelationshipDTO deviceDTO : deviceDTOS) {
+ if (StrUtil.isNotEmpty(deviceDTO.getDevice_list())) {
+ deviceDTO.setDeviceList(StrUtil.split(deviceDTO.getDevice_list(), ","));
+ }
+ }
+ }
+ return deviceDTOS;
+ }
+}
\ No newline at end of file
diff --git a/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/task/AvTask.java b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/task/AvTask.java
new file mode 100644
index 0000000..46ccc41
--- /dev/null
+++ b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/task/AvTask.java
@@ -0,0 +1,46 @@
+package com.casic.missiles.modular.task;
+
+import com.casic.missiles.modular.device.service.IAvSyncService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.scheduling.annotation.Scheduled;
+import org.springframework.stereotype.Component;
+
+import javax.annotation.Resource;
+
+@Slf4j
+@Component
+public class AvTask {
+
+ @Resource
+ private IAvSyncService deviceStatusService;
+ @Value("${casic.video.av.open:-1}")
+ private Boolean open;
+ @Value("${casic.video.av.token:-1}")
+ private String token;
+
+ /**
+ * 设备信息同步0
+ * 每30分钟采集一次
+ */
+ @Scheduled(cron = "${casic.video.av.deviceCorn}")
+ public void device() {
+ //更新组织机构信息
+ log.info("av sdk 设备信息同步");
+ if (open) {
+ deviceStatusService.syncDcDevices(token);
+ }
+ log.info("av sdk 设备同步结束");
+ }
+
+ @Scheduled(cron = "${casic.video.av.deviceStatusCorn}")
+ public void deviceRefreshToken() {
+ //更新组织机构信息
+ log.info("av 设备状态刷新");
+ if (open) {
+ deviceStatusService.loadUserDeviceRelationships();
+ }
+
+ log.info("av 设备状态刷新");
+ }
+}
\ No newline at end of file
diff --git a/README.md b/README.md
index 430796e..8dbc9a5 100644
--- a/README.md
+++ b/README.md
@@ -9,3 +9,7 @@
#### 其他
>* [git地址](http://192.168.0.203:8080/gitbucket)
>* [本地免登地址](http://localhost:8083/route/mockToken)
+
+AView 对接问题
+1.用户设备关联关系
+ 对应返回 device_list是否为设备国标号
\ No newline at end of file
diff --git a/casic-device-sync/casic-device-aview/pom.xml b/casic-device-sync/casic-device-aview/pom.xml
index 0a3c5fa..94fb9e5 100644
--- a/casic-device-sync/casic-device-aview/pom.xml
+++ b/casic-device-sync/casic-device-aview/pom.xml
@@ -33,6 +33,21 @@
${boot.version}
provided
+
+ com.casic
+ casic-http
+ ${core.version}
+
+
+ com.casic
+ casic-admin-group
+ ${admin.version}
+
+
+ com.casic
+ casic-server
+ ${pro.version}
+
diff --git a/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/controller/AvRouteController.java b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/controller/AvRouteController.java
new file mode 100644
index 0000000..195cba2
--- /dev/null
+++ b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/controller/AvRouteController.java
@@ -0,0 +1,45 @@
+package com.casic.missiles.modular.device.controller;
+
+import com.casic.missiles.model.response.dto.ResponseDataDTO;
+import com.casic.missiles.modular.device.dto.stream.StreamRequestDTO;
+import com.casic.missiles.modular.device.service.IAvSyncService;
+import io.swagger.annotations.Api;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+
+@Api(tags = "AV平台代理接口")
+@RestController
+@RequestMapping("/route")
+public class AvRouteController {
+ @Resource
+ private IAvSyncService avSyncService;
+
+ @PostMapping("/open/v1/api/streams")
+ public Object streams(@RequestBody StreamRequestDTO requestDTO) {
+ Object object = avSyncService.getStreams(requestDTO);
+ if (object == null) {
+ ResponseDataDTO respDTO = ResponseDataDTO.error("流读取失败,请稍后重试!");
+ respDTO.setMessage("流读取失败,请稍后重试!");
+ return respDTO;
+ }
+ return ResponseDataDTO.success(avSyncService.getStreams(requestDTO));
+ }
+
+ @DeleteMapping("/open/v1/api/streams/{id}")
+ public Object stopStreams(@PathVariable("id") String id) {
+ Object object = avSyncService.stopStreams(id);
+ return ResponseDataDTO.success(object);
+ }
+
+ @PostMapping("/open/v1/api/streams/{id}/heart")
+ public Object heart(@PathVariable("id") String id) {
+ Object object = avSyncService.heart(id);
+ if (object == null) {
+ ResponseDataDTO respDTO = ResponseDataDTO.error("流心跳失败,请稍后重试!");
+ respDTO.setMessage("流心跳失败,请稍后重试!");
+ return respDTO;
+ }
+ return ResponseDataDTO.success(object);
+ }
+}
\ No newline at end of file
diff --git a/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/AvDeviceDTO.java b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/AvDeviceDTO.java
new file mode 100644
index 0000000..97bde9f
--- /dev/null
+++ b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/AvDeviceDTO.java
@@ -0,0 +1,49 @@
+package com.casic.missiles.modular.device.dto;
+
+import com.alibaba.fastjson.annotation.JSONField;
+import lombok.Data;
+
+/**
+ * 艾薇设备对象DTO
+ */
+@Data
+public class AvDeviceDTO {
+ // 设备ID
+ private Long id;
+
+ // 设备名称
+ private String name;
+
+ // 设备唯一国标序列号
+ private String sn;
+
+ // 设备类型
+ private Integer type;
+
+ // 设备版本号
+ private String version;
+
+ // 安全等级
+ @JSONField(name = "secure_level")
+ private String secureLevel;
+
+ // 设备状态
+ private Integer status;
+
+ // 云台类型
+ private Integer ptzType;
+
+ // 朝向
+ private Integer orientation;
+
+ // 创建时间
+ @JSONField(name = "gmt_created")
+ private String gmtCreated;
+
+ // 修改时间
+ @JSONField(name = "gmt_modified")
+ private String gmtModified;
+
+ // 数据状态
+ private Integer state;
+}
diff --git a/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/AvPageResponse.java b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/AvPageResponse.java
new file mode 100644
index 0000000..9a05183
--- /dev/null
+++ b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/AvPageResponse.java
@@ -0,0 +1,10 @@
+package com.casic.missiles.modular.device.dto;
+
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class AvPageResponse {
+ private List items;
+}
diff --git a/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/DeviceRelationshipDTO.java b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/DeviceRelationshipDTO.java
new file mode 100644
index 0000000..098dda4
--- /dev/null
+++ b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/DeviceRelationshipDTO.java
@@ -0,0 +1,12 @@
+package com.casic.missiles.modular.device.dto;
+
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class DeviceRelationshipDTO {
+ private Long user_id;
+ private String device_list;
+ private List deviceList;
+}
diff --git a/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/page/AvPageRep.java b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/page/AvPageRep.java
new file mode 100644
index 0000000..74e6a9b
--- /dev/null
+++ b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/page/AvPageRep.java
@@ -0,0 +1,9 @@
+package com.casic.missiles.modular.device.dto.page;
+
+import lombok.Data;
+
+@Data
+public class AvPageRep {
+ private Integer total;
+ private T list;
+}
diff --git a/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/page/AvPageRequest.java b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/page/AvPageRequest.java
new file mode 100644
index 0000000..900ae4a
--- /dev/null
+++ b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/page/AvPageRequest.java
@@ -0,0 +1,14 @@
+package com.casic.missiles.modular.device.dto.page;
+
+import lombok.Data;
+
+/**
+ * 分页请求DTO
+ */
+@Data
+public class AvPageRequest {
+ private int page;
+ private int paging;
+ private int limit;
+
+}
diff --git a/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/page/AvResponseDTO.java b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/page/AvResponseDTO.java
new file mode 100644
index 0000000..f1c1e7a
--- /dev/null
+++ b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/page/AvResponseDTO.java
@@ -0,0 +1,15 @@
+package com.casic.missiles.modular.device.dto.page;
+
+import lombok.Data;
+
+/**
+ * mvp返回基类封装
+ *
+ * @param
+ */
+@Data
+public class AvResponseDTO {
+ private T data;
+ private Integer code;
+ private String msg;
+}
diff --git a/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/stream/StreamRequestDTO.java b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/stream/StreamRequestDTO.java
new file mode 100644
index 0000000..69e88ce
--- /dev/null
+++ b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/stream/StreamRequestDTO.java
@@ -0,0 +1,12 @@
+package com.casic.missiles.modular.device.dto.stream;
+
+import lombok.Data;
+
+@Data
+public class StreamRequestDTO {
+ private String device_id;
+ private String stream_type;
+ private String quality;
+ private int from;
+ private int to;
+}
diff --git a/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/stream/StreamStopRequestDTO.java b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/stream/StreamStopRequestDTO.java
new file mode 100644
index 0000000..9cf94b1
--- /dev/null
+++ b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/dto/stream/StreamStopRequestDTO.java
@@ -0,0 +1,11 @@
+package com.casic.missiles.modular.device.dto.stream;
+
+import lombok.Data;
+
+@Data
+public class StreamStopRequestDTO {
+ private String id;
+ private String type;
+ private StreamRequestDTO request;
+ private String url;
+}
diff --git a/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/enums/AvDataStateEnum.java b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/enums/AvDataStateEnum.java
new file mode 100644
index 0000000..e1a6658
--- /dev/null
+++ b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/enums/AvDataStateEnum.java
@@ -0,0 +1,72 @@
+package com.casic.missiles.modular.device.enums;
+
+/**
+ * 数据状态
+ *
+ * @author lwh
+ * @Date 2017年1月10日 下午9:54:13
+ */
+public enum AvDataStateEnum {
+
+ TYPE0(0, "有效",0),
+ DEL(1, "无效",1);
+
+ Integer code;
+ String message;
+ Integer type;
+ AvDataStateEnum(Integer code, String message, Integer type) {
+ this.code = code;
+ this.message = message;
+ this.type = type;
+ }
+
+ public Integer getCode() {
+ return code;
+ }
+
+ public void setCode(Integer code) {
+ this.code = code;
+ }
+
+ public String getMessage() {
+ return message;
+ }
+
+ public void setMessage(String message) {
+ this.message = message;
+ }
+
+ public Integer getType() {
+ return type;
+ }
+
+ public void setType(Integer type) {
+ this.type = type;
+ }
+
+ public static String valueOfs(Integer value) {
+ if (value == null) {
+ return "";
+ } else {
+ for (AvDataStateEnum ms : AvDataStateEnum.values()) {
+ if (ms.getCode().equals(value)) {
+ return ms.getMessage();
+ }
+ }
+ return "";
+ }
+ }
+
+ public static AvDataStateEnum valueOfType(Integer value) {
+ if (value == null) {
+ return TYPE0;
+ } else {
+ for (AvDataStateEnum ms : AvDataStateEnum.values()) {
+ if (ms.getCode().equals(value)) {
+ return ms;
+ }
+ }
+ return TYPE0;
+ }
+ }
+}
diff --git a/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/enums/AvPtzTypeEnum.java b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/enums/AvPtzTypeEnum.java
new file mode 100644
index 0000000..fdcb08d
--- /dev/null
+++ b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/enums/AvPtzTypeEnum.java
@@ -0,0 +1,73 @@
+package com.casic.missiles.modular.device.enums;
+
+/**
+ * wvp设备类型转换
+ *
+ * @author lwh
+ * @Date 2017年1月10日 下午9:54:13
+ */
+public enum AvPtzTypeEnum {
+
+ TYPE0(0, "枪机",0),
+ TYPE1(1, "半球",1),
+ TYPE2(2, "球机",2);
+
+ Integer code;
+ String message;
+ Integer type;
+ AvPtzTypeEnum(Integer code, String message, Integer type) {
+ this.code = code;
+ this.message = message;
+ this.type = type;
+ }
+
+ public Integer getCode() {
+ return code;
+ }
+
+ public void setCode(Integer code) {
+ this.code = code;
+ }
+
+ public String getMessage() {
+ return message;
+ }
+
+ public void setMessage(String message) {
+ this.message = message;
+ }
+
+ public Integer getType() {
+ return type;
+ }
+
+ public void setType(Integer type) {
+ this.type = type;
+ }
+
+ public static String valueOfs(Integer value) {
+ if (value == null) {
+ return "";
+ } else {
+ for (AvPtzTypeEnum ms : AvPtzTypeEnum.values()) {
+ if (ms.getCode().equals(value)) {
+ return ms.getMessage();
+ }
+ }
+ return "";
+ }
+ }
+
+ public static AvPtzTypeEnum valueOfType(Integer value) {
+ if (value == null) {
+ return TYPE0;
+ } else {
+ for (AvPtzTypeEnum ms : AvPtzTypeEnum.values()) {
+ if (ms.getCode().equals(value)) {
+ return ms;
+ }
+ }
+ return TYPE0;
+ }
+ }
+}
diff --git a/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/enums/AvSecretLevelEnum.java b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/enums/AvSecretLevelEnum.java
new file mode 100644
index 0000000..39e8524
--- /dev/null
+++ b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/enums/AvSecretLevelEnum.java
@@ -0,0 +1,60 @@
+package com.casic.missiles.modular.device.enums;
+
+/**
+ * Av主数据密集对应关系枚举
+ *
+ * @author lwh
+ * @Date 2017年1月10日 下午9:54:13
+ */
+public enum AvSecretLevelEnum {
+ s("999", "未定密", 999, "未定密"),
+ s0("0", "公开", 0, "公开"),
+ s1("1", "内部", 1, "内部"),
+ s2("2", "秘密", 2, "秘密"),
+ s3("3", "机密", 3, "机密");
+
+ String code;
+ Integer currCode;
+ String message;
+ String currMsg;
+
+ AvSecretLevelEnum(String code, String message, Integer currCode, String currMsg) {
+ this.code = code;
+ this.currCode = currCode;
+ this.message = message;
+ this.currMsg = currMsg;
+ }
+
+ public Integer getCurrCode() {
+ return currCode;
+ }
+
+ public String getCode() {
+ return code;
+ }
+
+ public void setCode(String code) {
+ this.code = code;
+ }
+
+ public String getMessage() {
+ return message;
+ }
+
+ public void setMessage(String message) {
+ this.message = message;
+ }
+
+ public static AvSecretLevelEnum valueOfCode(String value) {
+ if (value == null) {
+ return s0;
+ } else {
+ for (AvSecretLevelEnum ms : AvSecretLevelEnum.values()) {
+ if (ms.getCode().equals(value)) {
+ return ms;
+ }
+ }
+ return s0;
+ }
+ }
+}
diff --git a/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/enums/AvStatusTypeEnum.java b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/enums/AvStatusTypeEnum.java
new file mode 100644
index 0000000..ddccd52
--- /dev/null
+++ b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/enums/AvStatusTypeEnum.java
@@ -0,0 +1,72 @@
+package com.casic.missiles.modular.device.enums;
+
+/**
+ * wvp设备类型转换
+ *
+ * @author lwh
+ * @Date 2017年1月10日 下午9:54:13
+ */
+public enum AvStatusTypeEnum {
+
+ TYPE0(0, "离线",0),
+ TYPE1(1, "在线",1);
+
+ Integer code;
+ String message;
+ Integer type;
+ AvStatusTypeEnum(Integer code, String message, Integer type) {
+ this.code = code;
+ this.message = message;
+ this.type = type;
+ }
+
+ public Integer getCode() {
+ return code;
+ }
+
+ public void setCode(Integer code) {
+ this.code = code;
+ }
+
+ public String getMessage() {
+ return message;
+ }
+
+ public void setMessage(String message) {
+ this.message = message;
+ }
+
+ public Integer getType() {
+ return type;
+ }
+
+ public void setType(Integer type) {
+ this.type = type;
+ }
+
+ public static String valueOfs(Integer value) {
+ if (value == null) {
+ return "";
+ } else {
+ for (AvStatusTypeEnum ms : AvStatusTypeEnum.values()) {
+ if (ms.getCode().equals(value)) {
+ return ms.getMessage();
+ }
+ }
+ return "";
+ }
+ }
+
+ public static AvStatusTypeEnum valueOfType(Integer value) {
+ if (value == null) {
+ return TYPE0;
+ } else {
+ for (AvStatusTypeEnum ms : AvStatusTypeEnum.values()) {
+ if (ms.getCode().equals(value)) {
+ return ms;
+ }
+ }
+ return TYPE0;
+ }
+ }
+}
diff --git a/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/enums/AvUrlEnums.java b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/enums/AvUrlEnums.java
new file mode 100644
index 0000000..04b38ad
--- /dev/null
+++ b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/enums/AvUrlEnums.java
@@ -0,0 +1,37 @@
+package com.casic.missiles.modular.device.enums;
+
+/**
+ * 设备媒体
+ */
+public enum AvUrlEnums {
+ DEVICE("/open/v1/api/devices","设备信息查询"),
+ STREAM("/open/v1/api/streams","创建流"),
+ STREAM_STOP("/open/v1/api/streams/%s","停止流"),
+ HEART("/open/v1/api/streams/%s/heartbeat","发送心跳"),
+ DICT("/open/v1/api/dictionary_datas","字典查询"),
+ USER_DEVICE_RELATION("/open/v1/api/user_device_relationships","用户设备关联关系");
+
+ private String url;
+ private String name;
+
+ AvUrlEnums(String url, String name) {
+ this.url = url;
+ this.name = name;
+ }
+
+ public String getUrl() {
+ return url;
+ }
+
+ public void setUrl(String url) {
+ this.url = url;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+}
diff --git a/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/http/AvDefaultHttpHeaderHandler.java b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/http/AvDefaultHttpHeaderHandler.java
new file mode 100644
index 0000000..53f0a5c
--- /dev/null
+++ b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/http/AvDefaultHttpHeaderHandler.java
@@ -0,0 +1,14 @@
+package com.casic.missiles.modular.device.http;
+
+import cn.hutool.core.util.StrUtil;
+import com.casic.missiles.modular.system.handler.DefaultHttpHeaderHandler;
+import org.apache.http.client.methods.HttpRequestBase;
+
+public class AvDefaultHttpHeaderHandler extends DefaultHttpHeaderHandler {
+ public void setHeader(HttpRequestBase base, String token) {
+ base.addHeader("Content-type", DEFAULT_CONTEXTTYPE);
+ if (StrUtil.isNotEmpty(token)) {
+ base.addHeader("X-OApi-Token", token);
+ }
+ }
+}
diff --git a/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/http/HttpGetWithEntity.java b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/http/HttpGetWithEntity.java
new file mode 100644
index 0000000..b8abf8f
--- /dev/null
+++ b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/http/HttpGetWithEntity.java
@@ -0,0 +1,20 @@
+package com.casic.missiles.modular.device.http;
+
+import org.apache.http.client.methods.HttpEntityEnclosingRequestBase;
+
+import java.net.URI;
+
+public class HttpGetWithEntity extends HttpEntityEnclosingRequestBase {
+
+ public HttpGetWithEntity(URI uri) {
+ this.setURI(uri);
+ }
+
+ public HttpGetWithEntity(String uri) {
+ this.setURI(URI.create(uri));
+ }
+
+ public String getMethod() {
+ return "GET";
+ }
+}
diff --git a/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/service/IAvSyncService.java b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/service/IAvSyncService.java
new file mode 100644
index 0000000..13c3203
--- /dev/null
+++ b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/service/IAvSyncService.java
@@ -0,0 +1,39 @@
+package com.casic.missiles.modular.device.service;
+
+import com.casic.missiles.modular.device.dto.stream.StreamRequestDTO;
+
+public interface IAvSyncService {
+ /**
+ * Dc706设备信息同步
+ */
+ void syncDcDevices(String token);
+
+ /**
+ * 创建流
+ *
+ * @param streamRequestDTO
+ * @return
+ */
+ Object getStreams(StreamRequestDTO streamRequestDTO);
+
+ /**
+ * 停止流
+ *
+ * @param id
+ * @return
+ */
+ Object stopStreams(String id);
+
+ /**
+ * 发送心跳
+ *
+ * @param id 设备国标号
+ * @return
+ */
+ Object heart(String id);
+
+ /**
+ * 设备权限更新
+ */
+ void loadUserDeviceRelationships();
+}
diff --git a/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/service/impl/AvSyncServiceImpl.java b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/service/impl/AvSyncServiceImpl.java
new file mode 100644
index 0000000..25e3340
--- /dev/null
+++ b/casic-device-sync/casic-device-aview/src/main/java/com/casic/missiles/modular/device/service/impl/AvSyncServiceImpl.java
@@ -0,0 +1,179 @@
+package com.casic.missiles.modular.device.service.impl;
+
+import cn.hutool.core.collection.CollectionUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.casic.missiles.core.application.service.AbstractUserService;
+import com.casic.missiles.modular.device.dto.AvDeviceDTO;
+import com.casic.missiles.modular.device.dto.DeviceRelationshipDTO;
+import com.casic.missiles.modular.device.dto.page.AvPageRequest;
+import com.casic.missiles.modular.device.dto.stream.StreamRequestDTO;
+import com.casic.missiles.modular.device.enums.AvDataStateEnum;
+import com.casic.missiles.modular.device.enums.AvPtzTypeEnum;
+import com.casic.missiles.modular.device.enums.AvSecretLevelEnum;
+import com.casic.missiles.modular.device.enums.AvStatusTypeEnum;
+import com.casic.missiles.modular.device.model.BusDeviceInfo;
+import com.casic.missiles.modular.device.service.IAvSyncService;
+import com.casic.missiles.modular.device.service.IBusDeviceInfoService;
+import com.casic.missiles.modular.device.service.ISysGroupDeviceService;
+import com.casic.missiles.modular.device.util.AvUtil;
+import com.casic.missiles.modular.system.model.SysUserGroup;
+import com.casic.missiles.modular.system.model.User;
+import com.casic.missiles.modular.system.service.ISysUserGroupService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import javax.annotation.Resource;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+import java.util.stream.Collectors;
+@Slf4j
+@Service
+public class AvSyncServiceImpl implements IAvSyncService {
+ @Value("${casic.video.av.url:-1}")
+ private String avUrl;
+ @Value("${casic.video.av.token:-1}")
+ private String avToken;
+ @Resource
+ private IBusDeviceInfoService deviceInfoService;
+ @Resource
+ private AbstractUserService abstractUserService;
+
+ @Resource
+ private ISysUserGroupService userGroupService;
+ @Resource
+ private ISysGroupDeviceService sysGroupDeviceService;
+
+ @Override
+ public void syncDcDevices(String token) {
+ AvPageRequest avPageRequest = new AvPageRequest();
+ avPageRequest.setPage(1);
+ avPageRequest.setPaging(1);
+
+ //全量查询设备信息
+ List deviceDTOS = AvUtil.selectDevices(avUrl, token, avPageRequest);
+
+ if (CollectionUtil.isNotEmpty(deviceDTOS)) {
+ for (AvDeviceDTO dcDeviceDTO : deviceDTOS) {
+ BusDeviceInfo busDeviceInfo = this.convertDevice(dcDeviceDTO);
+
+ LambdaQueryWrapper