dingxin 6 年前
父节点
当前提交
185214695e

+ 134
- 25
CODE/smart-community/app-api/src/main/java/com/community/huiju/common/hk/HKOpenApi.java 查看文件

@@ -659,7 +659,7 @@ public class HKOpenApi {
659 659
     }
660 660
 
661 661
     /**
662
-     * 根据中心UUID集分页获取门口机
662
+     * 可视对讲 根据中心UUID集分页获取门口机
663 663
      *
664 664
      * pageNo 当前页码
665 665
      *
@@ -681,27 +681,27 @@ public class HKOpenApi {
681 681
         parMap.put("time", System.currentTimeMillis());
682 682
         parMap.put("pageNo", map.get("pageNo"));
683 683
         parMap.put("pageSize", map.get("pageSize"));
684
-        parMap.put("opUserUuid", HKConstant.OP_USER_UUID);
684
+        parMap.put("opUserUuid", map.get("opUserUuid") == null?HKConstant.OP_USER_UUID:map.get("opUserUuid"));
685 685
         parMap.put("unitUuids", map.get("unitUuids"));
686 686
 
687 687
         String params = JSON.toJSONString(parMap);
688
-        log.info("根据中心UUID集分页获取门口机 请求参数:{}",params);
688
+        log.info("可视对讲 根据中心UUID集分页获取门口机 请求参数:{}",params);
689 689
 
690 690
         String data = null;
691 691
         try {
692 692
             data = HttpClientSSLUtils.doPost(url + "?token=" + Digests.buildToken(url + "?" + params, params, HKConstant.SECRET), params);
693
-            log.info("根据中心UUID集分页获取门口机:{}",data);
693
+            log.info("可视对讲 根据中心UUID集分页获取门口机:{}",data);
694 694
         } catch (Exception e) {
695 695
             e.printStackTrace();
696
-            log.error("根据中心UUID集分页获取门口机 请求失败:{}",e);
697
-            throw new RuntimeException("根据中心UUID集分页获取门口机失败!");
696
+            log.error("可视对讲 根据中心UUID集分页获取门口机 请求失败:{}",e);
697
+            throw new RuntimeException("可视对讲 根据中心UUID集分页获取门口机失败!");
698 698
         }
699 699
         return data;
700 700
 
701 701
     }
702 702
 
703 703
     /**
704
-     * 异步反控开门【V2.8.2】
704
+     * 可视对讲 异步反控开门【V2.8.2】
705 705
      *
706 706
      * opUserUuid 操作用户UUID 详见opUserUuid的获取
707 707
      *
@@ -716,20 +716,20 @@ public class HKOpenApi {
716 716
         Map<String, Object> parMap = new HashMap<>();
717 717
         parMap.put("appkey", HKConstant.APPKEY);
718 718
         parMap.put("time", System.currentTimeMillis());
719
-        parMap.put("opUserUuid", HKConstant.OP_USER_UUID);
719
+        parMap.put("opUserUuid", map.get("opUserUuid") == null?HKConstant.OP_USER_UUID:map.get("opUserUuid"));
720 720
         parMap.put("longNums", map.get("longNums"));
721 721
 
722 722
         String params = JSON.toJSONString(parMap);
723
-        log.info("异步反控开门 请求参数:{}",params);
723
+        log.info("可视对讲 异步反控开门 请求参数:{}",params);
724 724
 
725 725
         String data = null;
726 726
         try {
727 727
             data = HttpClientSSLUtils.doPost(url + "?token=" + Digests.buildToken(url + "?" + params, params, HKConstant.SECRET), params);
728
-            log.info("异步反控开门:{}",data);
728
+            log.info("可视对讲 异步反控开门:{}",data);
729 729
         } catch (Exception e) {
730 730
             e.printStackTrace();
731
-            log.error("异步反控开门 请求失败:{}",e);
732
-            throw new RuntimeException("异步反控开门失败!");
731
+            log.error("可视对讲 异步反控开门 请求失败:{}",e);
732
+            throw new RuntimeException("可视对讲 异步反控开门失败!");
733 733
         }
734 734
         return data;
735 735
     }
@@ -742,27 +742,136 @@ public class HKOpenApi {
742 742
      * @param longNums
743 743
      * @return
744 744
      */
745
-    public static String visualIntercom(String opUserUuid, Integer opType,List<Integer> personIds,List<String> longNums ){
745
+    public static String visualIntercom(String opUserUuid, Integer opType,List<Integer> personIds,List<String> longNums ) {
746 746
         String url = HKConstant.OPENAPI_IP_PORT_HTTP + HKConstant.DOWNLOADFACE;
747
-       HashMap map= new HashMap<>();
748
-       map.put("appkey",HKConstant.APPKEY);
749
-       map.put("time",System.currentTimeMillis());
750
-       map.put("opUserUuid",opUserUuid == null?HKConstant.OP_USER_UUID:opUserUuid);
751
-       map.put("opType",opType);
752
-       map.put("personIds",personIds);
753
-       map.put("longNums",longNums);
747
+        HashMap map = new HashMap<>();
748
+        map.put("appkey", HKConstant.APPKEY);
749
+        map.put("time", System.currentTimeMillis());
750
+        map.put("opUserUuid", opUserUuid == null ? HKConstant.OP_USER_UUID : opUserUuid);
751
+        map.put("opType", opType);
752
+        map.put("personIds", personIds);
753
+        map.put("longNums", longNums);
754 754
         String param = JSON.toJSONString(map);
755
-        log.info("人脸下发请求参数:"+param);
755
+        log.info("人脸下发请求参数:" + param);
756 756
         String data = null;
757 757
         try {
758 758
             data = HttpClientSSLUtils.doPost(url + "?token=" + Digests.buildToken(url + "?" + param, param, HKConstant.SECRET), param);
759
-            log.info("可视对讲人脸权限下发:{}",data);
759
+            log.info("可视对讲人脸权限下发:{}", data);
760 760
         } catch (Exception e) {
761 761
             e.printStackTrace();
762
-            log.error("可视对讲人脸权限下发错误:{}",e);
762
+            log.error("可视对讲人脸权限下发错误:{}", e);
763 763
             throw new RuntimeException("下发错误!");
764 764
         }
765
-    return null;
766
-}
765
+        return null;
766
+    }
767
+    /**
768
+     * 可视对讲 根据人员 ID 集添加权限并下发
769
+     *
770
+     * opUserUuid 操作用户 UUID String 是
771
+     * authName 权限组名称 String 是
772
+     * personIds 人员 ID 集合 List<Integer>是 不超过 400
773
+     * longNums 设备长号集合 List<String>是 不超过 400
774
+     *
775
+     * @param map
776
+     * @return
777
+     */
778
+    public static String addOutDoorAuth(Map<String, Object> map) {
779
+        String url = HKConstant.OPENAPI_IP_PORT_HTTP + HKConstant.ADDOUTDOORAUTH;
780
+
781
+        Map<String, Object> parMap = new HashMap<>();
782
+        parMap.put("appkey", HKConstant.APPKEY);
783
+        parMap.put("time", System.currentTimeMillis());
784
+        parMap.put("opUserUuid", map.get("opUserUuid") == null?HKConstant.OP_USER_UUID:map.get("opUserUuid"));
785
+        parMap.put("authName", map.get("authName"));
786
+        parMap.put("personIds", map.get("personIds"));
787
+        parMap.put("longNums", map.get("longNums"));
788
+
789
+        String params = JSON.toJSONString(parMap);
790
+        log.info("可视对讲 根据人员 ID 集添加权限并下发 请求参数:{}",params);
791
+
792
+        String data = null;
793
+        try {
794
+            data = HttpClientSSLUtils.doPost(url + "?token=" + Digests.buildToken(url + "?" + params, params, HKConstant.SECRET), params);
795
+            log.info("可视对讲 根据人员 ID 集添加权限并下发:{}",data);
796
+        } catch (Exception e) {
797
+            e.printStackTrace();
798
+            log.error("可视对讲 根据人员 ID 集添加权限并下发 请求失败:{}",e);
799
+            throw new RuntimeException("可视对讲 根据人员 ID 集添加权限并下发失败!");
800
+        }
801
+        return data;
802
+    }
803
+
804
+    /**
805
+     * 可视对讲 根据人员 ID 集删除权限并下发
806
+     *
807
+     * opUserUuid 操作用户 UUID String 是
808
+     * operateType  操作类型 Integer 是 2 为根据人员-门口机删除权限 (忽略不写, 方法里面已经写上)
809
+     * personIds 人员 ID 集合 List<Integer>是 不超过 400
810
+     * longNums 设备长号集合 List<String>是 不超过 400
811
+     *
812
+     * @param map
813
+     * @return
814
+     */
815
+    public static String delOutDoorAuth(Map<String, Object> map) {
816
+        String url = HKConstant.OPENAPI_IP_PORT_HTTP + HKConstant.DELOUTDOORAUTH;
817
+
818
+        Map<String, Object> parMap = new HashMap<>();
819
+        parMap.put("appkey", HKConstant.APPKEY);
820
+        parMap.put("time", System.currentTimeMillis());
821
+        parMap.put("opUserUuid", map.get("opUserUuid") == null?HKConstant.OP_USER_UUID:map.get("opUserUuid"));
822
+        parMap.put("operateType", 2);
823
+        parMap.put("personIds", map.get("personIds"));
824
+        parMap.put("longNums", map.get("longNums"));
825
+
826
+        String params = JSON.toJSONString(parMap);
827
+        log.info("可视对讲 根据人员 ID 集删除权限并下发 请求参数:{}",params);
828
+
829
+        String data = null;
830
+        try {
831
+            data = HttpClientSSLUtils.doPost(url + "?token=" + Digests.buildToken(url + "?" + params, params, HKConstant.SECRET), params);
832
+            log.info("可视对讲 根据人员 ID 集删除权限并下发:{}",data);
833
+        } catch (Exception e) {
834
+            e.printStackTrace();
835
+            log.error("可视对讲 根据人员 ID 集删除权限并下发 请求失败:{}",e);
836
+            throw new RuntimeException("可视对讲 根据人员 ID 集删除权限并下发失败!");
837
+        }
838
+        return data;
839
+    }
767 840
 
841
+    /**
842
+     * 可视对讲 指定人员指纹权限下载
843
+     *
844
+     * opUserUuid 操作用户 UUID String 是
845
+     * opType 操作类型 Integer 是 1 为下发权限;2 为删除权限
846
+     * personIds 人员 ID 集合 List<Integer>是 不超过 400
847
+     * longNums 设备长号集合 List<String>是 不超过 400
848
+     *
849
+     * @param map
850
+     * @return
851
+     */
852
+    public static String downloadFinger(Map<String, Object> map) {
853
+        String url = HKConstant.OPENAPI_IP_PORT_HTTP + HKConstant.DOWNLOADFINGER;
854
+
855
+        Map<String, Object> parMap = new HashMap<>();
856
+        parMap.put("appkey", HKConstant.APPKEY);
857
+        parMap.put("time", System.currentTimeMillis());
858
+        parMap.put("opUserUuid", map.get("opUserUuid") == null?HKConstant.OP_USER_UUID:map.get("opUserUuid"));
859
+        parMap.put("opType", map.get("opType"));
860
+        parMap.put("personIds", map.get("personIds"));
861
+        parMap.put("longNums", map.get("longNums"));
862
+
863
+        String params = JSON.toJSONString(parMap);
864
+        log.info("可视对讲 指定人员指纹权限下载 请求参数:{}",params);
865
+
866
+        String data = null;
867
+        try {
868
+            data = HttpClientSSLUtils.doPost(url + "?token=" + Digests.buildToken(url + "?" + params, params, HKConstant.SECRET), params);
869
+            log.info("可视对讲 指定人员指纹权限下载:{}",data);
870
+        } catch (Exception e) {
871
+            e.printStackTrace();
872
+            log.error("可视对讲 指定人员指纹权限下载 请求失败:{}",e);
873
+            throw new RuntimeException("可视对讲 指定人员指纹权限下载失败!");
874
+        }
875
+        return data;
876
+    }
768 877
 }

+ 42
- 0
CODE/smart-community/app-api/src/main/java/com/community/huiju/controller/VisualIntercomContrller.java 查看文件

@@ -0,0 +1,42 @@
1
+package com.community.huiju.controller;
2
+
3
+import com.community.commom.constant.Constant;
4
+import com.community.commom.mode.ResponseBean;
5
+import com.community.commom.session.UserElement;
6
+import com.community.huiju.service.IVisualIntercomService;
7
+import io.swagger.annotations.Api;
8
+import io.swagger.annotations.ApiImplicitParam;
9
+import io.swagger.annotations.ApiImplicitParams;
10
+import io.swagger.annotations.ApiOperation;
11
+import org.springframework.beans.factory.annotation.Autowired;
12
+import org.springframework.cloud.context.config.annotation.RefreshScope;
13
+import org.springframework.web.bind.annotation.RequestMapping;
14
+import org.springframework.web.bind.annotation.RequestMethod;
15
+import org.springframework.web.bind.annotation.RestController;
16
+
17
+import javax.servlet.http.HttpServletRequest;
18
+import javax.servlet.http.HttpSession;
19
+
20
+@RestController
21
+@RefreshScope
22
+@RequestMapping("/")
23
+@Api(value = "可视对讲 API", description = "可视对讲 API")
24
+public class VisualIntercomContrller extends BaseController {
25
+
26
+    @Autowired
27
+    private IVisualIntercomService iVisualIntercomService;
28
+
29
+    @ApiOperation(value = "门口机开门", notes = "门口机开门")
30
+    @ApiImplicitParams({
31
+            @ApiImplicitParam(dataTypeClass = String.class, paramType = "header", name = "X-Auth-Token", value = "token")
32
+    })
33
+    @RequestMapping(value = "/visual/syncControl", method = RequestMethod.GET)
34
+    public ResponseBean syncControl(HttpServletRequest request, HttpSession session){
35
+        ResponseBean responseBean = new ResponseBean();
36
+        UserElement userElement = (UserElement) session.getAttribute(Constant.APP_USER_SESSION);
37
+        responseBean = iVisualIntercomService.syncControl(userElement);
38
+        return responseBean;
39
+    }
40
+
41
+
42
+}

+ 22
- 0
CODE/smart-community/app-api/src/main/java/com/community/huiju/service/IVisualIntercomService.java 查看文件

@@ -0,0 +1,22 @@
1
+package com.community.huiju.service;
2
+
3
+import com.community.commom.mode.ResponseBean;
4
+import com.community.commom.session.UserElement;
5
+
6
+/**
7
+ * 可视对讲的业务
8
+ * @author weiximei
9
+ */
10
+public interface IVisualIntercomService {
11
+
12
+    /**
13
+     * 反控开门
14
+     *
15
+     *      app端, 发送开门指令
16
+     *
17
+     * @param userElement 用户信息体
18
+     * @return
19
+     */
20
+    ResponseBean syncControl(UserElement userElement);
21
+
22
+}

+ 23
- 0
CODE/smart-community/app-api/src/main/java/com/community/huiju/service/impl/TaUserServiceImpl.java 查看文件

@@ -232,6 +232,29 @@ public class TaUserServiceImpl implements ITaUserService {
232 232
         // 下发门禁权限
233 233
         HKOpenApi.downloadAuthorityByDeviceUuids();
234 234
 
235
+        // TODO 目前下发的 authName权限组是我们自定义的, 后面肯定是按照小区的 期楼栋号来设置的
236
+        // TODO longNums设备编号, 可视对讲的机器编号, 应该根据 期楼栋号 下面的机器编号来设置的
237
+
238
+        //--------- 可视对讲 ----------
239
+
240
+        // 可视对讲 根据人员 ID 集添加权限并下发
241
+        Map<String, Object> addOutDoorAuthMap = new HashMap<>();
242
+        addOutDoorAuthMap.put("authName", "荟居");
243
+        addOutDoorAuthMap.put("personIds", Arrays.asList(user.getHkUserId()));
244
+        addOutDoorAuthMap.put("longNums", Arrays.asList("10010100000"));
245
+        // 可视对讲 根据人员 ID 集添加权限并下发
246
+        HKOpenApi.addOutDoorAuth(addOutDoorAuthMap);
247
+
248
+        // 可视对讲 指定人员指纹权限下载
249
+//        Map<String, Object> downloadFingerMap = new HashMap<>();
250
+//        // opType 操作类型 Integer 是 1 为下发权限;2 为删除权限
251
+//        downloadFingerMap.put("opType", 1);
252
+//        downloadFingerMap.put("personIds", Arrays.asList(user.getHkUserId()));
253
+//        downloadFingerMap.put("longNums", Arrays.asList("10010100000"));
254
+//        // 可视对讲 指定人员指纹权限下载
255
+//        HKOpenApi.downloadFinger(downloadFingerMap);
256
+
257
+
235 258
 
236 259
         TaUserVO taUserVO = new TaUserVO();
237 260
         BeanUtils.copyProperties(user,taUserVO);

+ 40
- 0
CODE/smart-community/app-api/src/main/java/com/community/huiju/service/impl/VisualIntercomServiceImpl.java 查看文件

@@ -0,0 +1,40 @@
1
+package com.community.huiju.service.impl;
2
+
3
+import com.alibaba.fastjson.JSONObject;
4
+import com.beust.jcommander.internal.Maps;
5
+import com.community.commom.mode.ResponseBean;
6
+import com.community.commom.session.UserElement;
7
+import com.community.huiju.common.hk.HKOpenApi;
8
+import com.community.huiju.service.IVisualIntercomService;
9
+import org.springframework.stereotype.Service;
10
+
11
+import java.util.Map;
12
+
13
+/**
14
+ * 可视对讲的业务实现
15
+ * @author weiximei
16
+ */
17
+@Service
18
+public class VisualIntercomServiceImpl implements IVisualIntercomService {
19
+
20
+
21
+    @Override
22
+    public ResponseBean syncControl(UserElement userElement) {
23
+        ResponseBean responseBean = new ResponseBean();
24
+
25
+        // TODO 这里应该根据 小区期楼栋号查询出这个楼栋下面的门口机, 然后发送开门
26
+
27
+        Map<String,Object> parMap = Maps.newHashMap();
28
+        // TODO 只有一个设备, 临时固定的编号
29
+        parMap.put("longNums", "10010100000");
30
+        String data = HKOpenApi.syncControl(parMap);
31
+        JSONObject jsonObject = JSONObject.parseObject(data);
32
+        int errorCode = jsonObject.getInteger("errorCode");
33
+        if (errorCode == 0) {
34
+            responseBean.addSuccess("操作成功!");
35
+            return responseBean;
36
+        }
37
+        responseBean.addError("操作失败!");
38
+        return responseBean;
39
+    }
40
+}