Browse Source

修改 海康逻辑

weiximei 6 years ago
parent
commit
7cd825703d

+ 6
- 6
CODE/smart-community/app-api/src/main/java/com/community/huiju/AppApplication.java View File

44
 	/**
44
 	/**
45
 	 * 文件上传临时路径
45
 	 * 文件上传临时路径
46
 	 */
46
 	 */
47
-	@Bean
48
-	public MultipartConfigElement multipartConfigElement() {
49
-		MultipartConfigFactory factory = new MultipartConfigFactory();
50
-		factory.setLocation("/tmp/smart-community");
51
-		return factory.createMultipartConfig();
52
-	}
47
+//	@Bean
48
+//	public MultipartConfigElement multipartConfigElement() {
49
+//		MultipartConfigFactory factory = new MultipartConfigFactory();
50
+//		factory.setLocation("/tmp/smart-community");
51
+//		return factory.createMultipartConfig();
52
+//	}
53
 
53
 
54
 }
54
 }

+ 24
- 4
CODE/smart-community/app-api/src/main/java/com/community/huiju/controller/HkController.java View File

6
 import com.community.commom.session.UserElement;
6
 import com.community.commom.session.UserElement;
7
 import com.community.huiju.model.HkVisitorBill;
7
 import com.community.huiju.model.HkVisitorBill;
8
 import com.community.huiju.service.IHKService;
8
 import com.community.huiju.service.IHKService;
9
-import io.swagger.annotations.Api;
10
-import io.swagger.annotations.ApiImplicitParam;
11
-import io.swagger.annotations.ApiImplicitParams;
12
-import io.swagger.annotations.ApiOperation;
9
+import com.community.huiju.service.ISenCartId;
10
+import io.swagger.annotations.*;
13
 import org.springframework.beans.factory.annotation.Autowired;
11
 import org.springframework.beans.factory.annotation.Autowired;
14
 import org.springframework.cloud.context.config.annotation.RefreshScope;
12
 import org.springframework.cloud.context.config.annotation.RefreshScope;
15
 import org.springframework.web.bind.annotation.*;
13
 import org.springframework.web.bind.annotation.*;
14
+import org.springframework.web.multipart.MultipartFile;
16
 
15
 
17
 import javax.servlet.http.HttpServletRequest;
16
 import javax.servlet.http.HttpServletRequest;
18
 import javax.servlet.http.HttpSession;
17
 import javax.servlet.http.HttpSession;
30
 	@Autowired
29
 	@Autowired
31
 	private IHKService ihkService;
30
 	private IHKService ihkService;
32
 
31
 
32
+	@Autowired
33
+	private ISenCartId iSenCartId;
34
+
33
 	@ApiOperation(value = "发送访客账单", notes = "发送访客账单")
35
 	@ApiOperation(value = "发送访客账单", notes = "发送访客账单")
34
 	@ApiImplicitParams({ @ApiImplicitParam(paramType = "body", name = "hkVisitorBill", dataType = "String",value = "billNum: 账单号,reservationNum:预约单号,plateNum:出场车牌号,leaveTime:出场时间,billFee:账单金额")})
36
 	@ApiImplicitParams({ @ApiImplicitParam(paramType = "body", name = "hkVisitorBill", dataType = "String",value = "billNum: 账单号,reservationNum:预约单号,plateNum:出场车牌号,leaveTime:出场时间,billFee:账单金额")})
35
 	@RequestMapping(value = "/sendVisitorBill",method = RequestMethod.POST)
37
 	@RequestMapping(value = "/sendVisitorBill",method = RequestMethod.POST)
72
 		return responseBean;
74
 		return responseBean;
73
 	}
75
 	}
74
 
76
 
77
+	@ApiOperation(value = "添加人员并卡卡")
78
+	@RequestMapping(value = "/addUserAndOpenCart", method = RequestMethod.POST)
79
+	public ResponseBean addUser(@RequestParam("communityId") Integer communityId) {
80
+		ResponseBean responseBean = new ResponseBean();
81
+		responseBean = iSenCartId.addUserAndAddCartId(communityId);
82
+		return responseBean;
83
+	}
84
+
85
+	@RequestMapping(value = "/addUserOne", method = RequestMethod.POST)
86
+	@ApiOperation(value = "根据人员为主下发,测试用的")
87
+	public ResponseBean addUserOne(@ApiParam(value = "file" ,required = true) MultipartFile uploadFile,
88
+								   @RequestParam(required = false) Integer communityId) {
89
+
90
+		ResponseBean responseBean = new ResponseBean();
91
+		responseBean = iSenCartId.addUserOne(communityId, uploadFile);
92
+		return responseBean;
93
+
94
+	}
75
 
95
 
76
 }
96
 }

+ 2
- 2
CODE/smart-community/app-api/src/main/java/com/community/huiju/dao/TaUserHkMapper.java View File

21
     int updateByPrimaryKey(TaUserHk record);
21
     int updateByPrimaryKey(TaUserHk record);
22
 
22
 
23
     @ResultMap("BaseResultMap")
23
     @ResultMap("BaseResultMap")
24
-    @Select("select * from ta_user_hk where ta_user_id = #{userId} and community_id = #{communityId}")
25
-    TaUserHk selectByUserIdAndCommunityId(@Param("userId") Integer userId, @Param("communityId") Integer communityId);
24
+    @Select("select * from ta_user_hk where ta_user_id = #{userVerifyId} and community_id = #{communityId}")
25
+    TaUserHk selectByUserVerifyIdAndCommunityId(@Param("userVerifyId") Integer userVerifyId, @Param("communityId") Integer communityId);
26
 
26
 
27
 }
27
 }

+ 23
- 0
CODE/smart-community/app-api/src/main/java/com/community/huiju/dao/TaUserMapper.java View File

3
 import com.community.huiju.model.TaUser;
3
 import com.community.huiju.model.TaUser;
4
 import org.apache.ibatis.annotations.Mapper;
4
 import org.apache.ibatis.annotations.Mapper;
5
 import org.apache.ibatis.annotations.Param;
5
 import org.apache.ibatis.annotations.Param;
6
+import org.apache.ibatis.annotations.ResultMap;
7
+import org.apache.ibatis.annotations.Select;
6
 
8
 
7
 import java.util.List;
9
 import java.util.List;
8
 import java.util.Map;
10
 import java.util.Map;
78
     List<TaUser> getByLoginNameList(@Param("loginName") String loginName);
80
     List<TaUser> getByLoginNameList(@Param("loginName") String loginName);
79
 	
81
 	
80
 	TaUser getByOpenId(@Param("openid") String openid);
82
 	TaUser getByOpenId(@Param("openid") String openid);
83
+
84
+    /**
85
+     * 查询已审核通过的,但是没有 海康id 的用户
86
+     * @param communityId
87
+     * @return
88
+     */
89
+    @ResultMap("BaseResultMap")
90
+    @Select("SELECT " +
91
+            "tuv.id as userVerifyId, " +
92
+            "tuv.unit_id as unitId, " +
93
+            " tau.* " +
94
+            "FROM " +
95
+            " ta_user_verify tuv " +
96
+            " LEFT JOIN ta_user tau ON tuv.user_id = tau.id " +
97
+            " LEFT JOIN ta_user_hk tuh on tuv.user_id = tuh.ta_user_id " +
98
+            "WHERE " +
99
+            " tuv.verify_status = 1 " +
100
+            " AND tuv.community_id = #{communityId} " +
101
+            " and tuh.hk_user_id is NULL")
102
+    List<TaUser> selectNotHKuserId(@Param("communityId") Integer communityId);
103
+
81
 }
104
 }

+ 13
- 0
CODE/smart-community/app-api/src/main/java/com/community/huiju/model/TaUser.java View File

82
      */
82
      */
83
     private String faceImg;
83
     private String faceImg;
84
 
84
 
85
+    /**
86
+     * 单元id
87
+     */
88
+    private Integer unitId;
89
+
85
     public void setHouseList(List<TpBuildingOwnerInfo> houseList) {
90
     public void setHouseList(List<TpBuildingOwnerInfo> houseList) {
86
         this.houseList = houseList;
91
         this.houseList = houseList;
87
     }
92
     }
329
     public void setFaceImg(String faceImg) {
334
     public void setFaceImg(String faceImg) {
330
         this.faceImg = faceImg;
335
         this.faceImg = faceImg;
331
     }
336
     }
337
+
338
+    public Integer getUnitId() {
339
+        return unitId;
340
+    }
341
+
342
+    public void setUnitId(Integer unitId) {
343
+        this.unitId = unitId;
344
+    }
332
 }
345
 }

+ 18
- 1
CODE/smart-community/app-api/src/main/java/com/community/huiju/service/IHKService.java View File

2
 
2
 
3
 import com.community.commom.mode.ResponseBean;
3
 import com.community.commom.mode.ResponseBean;
4
 import com.community.commom.session.UserElement;
4
 import com.community.commom.session.UserElement;
5
+import com.community.huiju.model.TaUserHk;
6
+import com.community.huiju.model.TaUserVerify;
7
+import com.community.huiju.model.TpEquipmentTree;
8
+import com.community.huiju.model.TpUnitHkSetting;
5
 
9
 
6
 /**
10
 /**
7
  * 海康 业务
11
  * 海康 业务
17
     ResponseBean pushPerson(String appUserId, Integer userVerifyId);
21
     ResponseBean pushPerson(String appUserId, Integer userVerifyId);
18
 
22
 
19
     /**
23
     /**
20
-     * 下发门禁权限
24
+     * 添加门禁权限 和 下发门禁权限
25
+     * @return
26
+     */
27
+    ResponseBean addAuthoritiesAnddownloadAuthorityByPersonIds(TaUserVerify userVerify, TaUserHk taUserHk, TpEquipmentTree tpEquipmentTree);
28
+
29
+
30
+    /**
31
+     * 下发门禁权限(异动方式)
21
      * @return
32
      * @return
22
      */
33
      */
23
     ResponseBean downloadAuthorityByDeviceUuids();
34
     ResponseBean downloadAuthorityByDeviceUuids();
30
      */
41
      */
31
     ResponseBean syncControl(UserElement userElement, Integer equipmentId);
42
     ResponseBean syncControl(UserElement userElement, Integer equipmentId);
32
 
43
 
44
+    /**
45
+     * 下发 可视对讲 权限
46
+     * @return
47
+     */
48
+    ResponseBean visualIntercomPermissions(TpUnitHkSetting unitHkSetting, TpEquipmentTree tpEquipmentTree, TaUserHk taUserHk, TaUserVerify userVerify);
49
+
33
 }
50
 }

+ 26
- 0
CODE/smart-community/app-api/src/main/java/com/community/huiju/service/ISenCartId.java View File

1
+package com.community.huiju.service;
2
+
3
+import com.community.commom.mode.ResponseBean;
4
+import org.springframework.web.multipart.MultipartFile;
5
+
6
+/**
7
+ * 添加人员,建卡
8
+ *
9
+ * @author weiximei on 2019-06-21
10
+ */
11
+public interface ISenCartId {
12
+
13
+    /**
14
+     * 添加人员,建卡
15
+     * @param communityId
16
+     * @return
17
+     */
18
+    ResponseBean addUserAndAddCartId(Integer communityId);
19
+
20
+    /**
21
+     * 添加人员,用于测试以人员的方式下发
22
+     * @return
23
+     */
24
+    ResponseBean addUserOne(Integer communityId, MultipartFile uploadFile);
25
+
26
+}

+ 77
- 37
CODE/smart-community/app-api/src/main/java/com/community/huiju/service/impl/FaceServicelimpl.java View File

79
     @Autowired
79
     @Autowired
80
     private TaUserHkMapper taUserHkMapper;
80
     private TaUserHkMapper taUserHkMapper;
81
 
81
 
82
+    @Autowired
83
+    private TpUnitHkSettingMapper tpUnitHkSettingMapper;
84
+
82
     @Override
85
     @Override
83
     @Transactional(rollbackFor = Exception.class)
86
     @Transactional(rollbackFor = Exception.class)
84
     public ResponseBean addFace(UserElement userElement, MultipartFile uploadFile, Integer otherUserId) {
87
     public ResponseBean addFace(UserElement userElement, MultipartFile uploadFile, Integer otherUserId) {
85
-        TpEquipmentTree tpEquipmentTree = tpEquipmentTreeMapper.selectByCommunityId(userElement.getCommunityId());
86
         ResponseBean responseBean = new ResponseBean();
88
         ResponseBean responseBean = new ResponseBean();
87
         /*审核房产是否通过*/
89
         /*审核房产是否通过*/
88
         TaUserVerify taUserVerify= infoExist(userElement.getUserVerifyId());
90
         TaUserVerify taUserVerify= infoExist(userElement.getUserVerifyId());
111
         }
113
         }
112
         Integer activeUser = otherUserId == null ? userElement.getId() : otherUserId;
114
         Integer activeUser = otherUserId == null ? userElement.getId() : otherUserId;
113
 
115
 
114
-        /**
115
-         * 删除的时候,将所有的海康设备的关联关系删除了,需要重新下发一次
116
-         */
117
-        // 下发门禁
118
-        ihkService.pushPerson(activeUser + "", userVerifyId);
119
-
120
         TaUser user = taUserMapper.selectByPrimaryKey(activeUser);
116
         TaUser user = taUserMapper.selectByPrimaryKey(activeUser);
121
         TaFace taFace = new TaFace();
117
         TaFace taFace = new TaFace();
122
         taFace.setFaceImg(faceImg);
118
         taFace.setFaceImg(faceImg);
128
         taFace.setUpdateDate(new Date());
124
         taFace.setUpdateDate(new Date());
129
 
125
 
130
         /*验证身份*/
126
         /*验证身份*/
131
-        responseBean = addVerify(activeUser, userVerifyId, uploadFile, faceImg, taFace, tpEquipmentTree);
127
+        responseBean = addVerify(activeUser, userVerifyId, uploadFile, faceImg, taFace);
132
         return responseBean;
128
         return responseBean;
133
     }
129
     }
134
 
130
 
143
     @Override
139
     @Override
144
     @Transactional(rollbackFor = Exception.class)
140
     @Transactional(rollbackFor = Exception.class)
145
     public ResponseBean upDateFace(UserElement userElement, MultipartFile uploadFile, Integer otherUserId) {
141
     public ResponseBean upDateFace(UserElement userElement, MultipartFile uploadFile, Integer otherUserId) {
146
-        TpEquipmentTree tpEquipmentTree = tpEquipmentTreeMapper.selectByCommunityId(userElement.getCommunityId());
142
+
147
         ResponseBean responseBean = new ResponseBean();
143
         ResponseBean responseBean = new ResponseBean();
148
         // 人脸图片地址url
144
         // 人脸图片地址url
149
         String faceImg = img(uploadFile);
145
         String faceImg = img(uploadFile);
159
         }
155
         }
160
 
156
 
161
         // 海康数据
157
         // 海康数据
162
-        TaUserHk taUserHk = taUserHkMapper.selectByUserIdAndCommunityId(userElement.getId(), userElement.getCommunityId());
158
+        TaUserHk taUserHk = taUserHkMapper.selectByUserVerifyIdAndCommunityId(userVerifyId, userElement.getCommunityId());
163
 
159
 
164
-        /**
165
-         * 删除的时候,将所有的海康设备的关联关系删除了,需要重新下发一次
166
-         */
160
+        // 审核数据
167
         TaUserVerify userVerify = taUserVerifyMapper.selectByPrimaryKey(userVerifyId);
161
         TaUserVerify userVerify = taUserVerifyMapper.selectByPrimaryKey(userVerifyId);
168
-        // 下发门禁
169
-        ihkService.pushPerson(activeUser + "", userVerifyId);
162
+        // 海康权限信息
163
+        TpUnitHkSetting tpUnitHkSetting = getUnitHkSetting(userVerify.getCommunityId(), userVerify.getUnitId());
164
+
165
+        // 设备树
166
+        TpEquipmentTree tpEquipmentTree = tpEquipmentTreeMapper.selectByCommunityId(userVerify.getCommunityId());
167
+
168
+
170
 
169
 
171
         //当前修改的id否存在
170
         //当前修改的id否存在
172
         TaFace face = taFaceMapper.getByUserVerifyId(userVerifyId);
171
         TaFace face = taFaceMapper.getByUserVerifyId(userVerifyId);
179
         face.setFaceImg(faceImg);
178
         face.setFaceImg(faceImg);
180
         face.setUpdateUser(userElement.getId());
179
         face.setUpdateUser(userElement.getId());
181
         face.setUpdateDate(new Date());
180
         face.setUpdateDate(new Date());
182
-        ResponseBean resps = checKout(faceImg, face, false, uploadFile, activeUser, userVerify.getCommunityId(), userVerify.getRoomNoId(), userVerify.getUnitId(), tpEquipmentTree.getAppkey(), tpEquipmentTree.getSecret(), tpEquipmentTree.getHttpServer(), tpEquipmentTree.getOpUserUuid(), taUserHk);
181
+        ResponseBean resps = checKout(faceImg, face, false, uploadFile, taUserHk, tpUnitHkSetting, tpEquipmentTree, userVerify);
183
         if (resps.getCode().equals("0")) {
182
         if (resps.getCode().equals("0")) {
184
             resps.addSuccess((Object) faceImg);
183
             resps.addSuccess((Object) faceImg);
185
         } else {
184
         } else {
194
      * @param taFace
193
      * @param taFace
195
      * @param isA
194
      * @param isA
196
      * @param uploadFile
195
      * @param uploadFile
197
-     * @param userId
198
-     * @param communityId
199
-     * @param roomNoId
200
-     * @param unitId
201
-     * @param appkey
202
-     * @param secret
203
-     * @param openapi_ip_port_http 海康服务器地址
196
+     * @param taUserHk
197
+     * @param unitHkSetting
198
+     * @param tpEquipmentTree
199
+     * @param userVerify
204
      * @return
200
      * @return
205
      */
201
      */
206
-    public ResponseBean checKout(String faceImg, TaFace taFace, boolean isA, MultipartFile uploadFile, Integer userId, Integer communityId, Integer roomNoId, Integer unitId, String  appkey, String secret, String openapi_ip_port_http, String opUserUuid, TaUserHk taUserHk) {
202
+    public ResponseBean checKout(String faceImg, TaFace taFace, boolean isA, MultipartFile uploadFile, TaUserHk taUserHk, TpUnitHkSetting unitHkSetting, TpEquipmentTree tpEquipmentTree, TaUserVerify userVerify) {
207
         ResponseBean responseBean = new ResponseBean();
203
         ResponseBean responseBean = new ResponseBean();
208
-        TaUser user = taUserMapper.selectByPrimaryKey(userId);
204
+
205
+        if (null == unitHkSetting) {
206
+            responseBean.addError("海康权限信息 未配置");
207
+            return responseBean;
208
+        }
209
+
210
+        if (null == tpEquipmentTree) {
211
+            responseBean.addError("设备树 未配置");
212
+            return responseBean;
213
+        }
214
+
215
+        if (null == userVerify) {
216
+            responseBean.addError("审核数据 不能为null");
217
+            return responseBean;
218
+        }
219
+
220
+
221
+        TaUser user = taUserMapper.selectByPrimaryKey(userVerify.getUserId());
209
         if (taUserHk.getHkUserId() == null) {
222
         if (taUserHk.getHkUserId() == null) {
210
             responseBean.addError("海康人员ID不存在,无法录入");
223
             responseBean.addError("海康人员ID不存在,无法录入");
211
-            log.error("本地库人员ID:{}  的海康人员ID不存在", userId);
224
+            log.error("本地库人员ID:{}  的海康人员ID不存在", userVerify.getUserId());
212
             return responseBean;
225
             return responseBean;
213
         }
226
         }
214
         AESDecode aesd = new AESDecode();
227
         AESDecode aesd = new AESDecode();
219
             Integer type = (Integer) jsonObject.get("errno");
232
             Integer type = (Integer) jsonObject.get("errno");
220
             Integer faceNum = (Integer) jsonObject.get("face_num");
233
             Integer faceNum = (Integer) jsonObject.get("face_num");
221
 
234
 
222
-            /*推送海康*/
223
-            String data = HKOpenApi.HKpersonGroupId(uploadFile, taUserHk.getHkUserId(), taUserHk.getHkPersonNo(), user.getUserName(), taUserHk.getHkCardNo(), appkey, secret, openapi_ip_port_http, opUserUuid);
235
+            // 修改人脸操作
236
+            String data = HKOpenApi.HKpersonGroupId(uploadFile, taUserHk.getHkUserId(), taUserHk.getHkPersonNo(), user.getUserName(), taUserHk.getHkCardNo(), tpEquipmentTree.getAppkey(), tpEquipmentTree.getSecret(), tpEquipmentTree.getHttpServer(), tpEquipmentTree.getOpUserUuid());
224
             /*boolean isA为true进行添加,为false进行修改*/
237
             /*boolean isA为true进行添加,为false进行修改*/
225
             if (0 == type && 1 == faceNum) {
238
             if (0 == type && 1 == faceNum) {
226
                 if (null == data) {
239
                 if (null == data) {
227
                     log.error("海康人脸推送失败!");
240
                     log.error("海康人脸推送失败!");
228
                     throw new RuntimeException("人脸推送失败!");
241
                     throw new RuntimeException("人脸推送失败!");
229
                 }
242
                 }
243
+
244
+                // 下发卡权限
245
+                // 下发可是对讲卡权限
246
+                ihkService.visualIntercomPermissions(unitHkSetting, tpEquipmentTree, taUserHk, userVerify);
247
+
230
                 if (isA) {
248
                 if (isA) {
231
                     taFaceMapper.insertSelective(taFace);
249
                     taFaceMapper.insertSelective(taFace);
232
                 } else {
250
                 } else {
233
                     taFaceMapper.updateByPrimaryKeySelective(taFace);
251
                     taFaceMapper.updateByPrimaryKeySelective(taFace);
234
                 }
252
                 }
253
+
254
+                // 等待 1s
255
+                Thread.sleep(1000);
256
+
235
                 responseBean.addSuccess("操作成功");
257
                 responseBean.addSuccess("操作成功");
236
 
258
 
237
-                // 设备树
238
-                TpEquipmentTree tpEquipmentTree = tpEquipmentTreeMapper.selectByCommunityId(communityId);
259
+
239
                 // 所有设备
260
                 // 所有设备
240
                 // List<TpEquipment> tpEquipments = tpEquipmentMapper.selectByCommunityIdAndUnitId(communityId, unitId, 4);
261
                 // List<TpEquipment> tpEquipments = tpEquipmentMapper.selectByCommunityIdAndUnitId(communityId, unitId, 4);
241
-                List<TpEquipment> tpEquipments = tpEquipmentMapper.selectByCommunityIdAndUnitIdAndFace(communityId, unitId, 4);
262
+                List<TpEquipment> tpEquipments = tpEquipmentMapper.selectByCommunityIdAndUnitIdAndFace(tpEquipmentTree.getCommunityId(), userVerify.getUnitId(), 4);
242
                 if (CollectionUtils.isNotEmpty(tpEquipments)) {
263
                 if (CollectionUtils.isNotEmpty(tpEquipments)) {
243
                     List<Map<String, Object>> equipmentUUID = getEquipmentUUID(tpEquipments);
264
                     List<Map<String, Object>> equipmentUUID = getEquipmentUUID(tpEquipments);
244
                     StringBuilder doorUuids = new StringBuilder();
265
                     StringBuilder doorUuids = new StringBuilder();
262
                     map.put("openapi_ip_port_http", tpEquipmentTree.getHttpServer());
283
                     map.put("openapi_ip_port_http", tpEquipmentTree.getHttpServer());
263
                     HKOpenApi.downloadFaceAndFingerInfos(map);
284
                     HKOpenApi.downloadFaceAndFingerInfos(map);
264
 
285
 
265
-                    // 等待 2s
266
-                    Thread.sleep(2000);
286
+
267
                 }
287
                 }
268
 
288
 
269
 
289
 
274
                 // TODO 根据期楼栋号,来查询出门口机
294
                 // TODO 根据期楼栋号,来查询出门口机
275
 
295
 
276
                 // 单元门口机
296
                 // 单元门口机
277
-                List<TpEquipment> visualEquipments = tpEquipmentMapper.selectByCommunityIdAndUnitId(communityId, unitId, 3);
297
+                List<TpEquipment> visualEquipments = tpEquipmentMapper.selectByCommunityIdAndUnitId(tpEquipmentTree.getCommunityId(), userVerify.getUnitId(), 3);
278
                 if (CollectionUtils.isNotEmpty(visualEquipments)) {
298
                 if (CollectionUtils.isNotEmpty(visualEquipments)) {
279
                     List<String> visualList = visualEquipments.stream()
299
                     List<String> visualList = visualEquipments.stream()
280
                             .map(e-> tpConfigurationMapper.selectByPrimaryKey(e.getUuidId()).getConfigurationValue())
300
                             .map(e-> tpConfigurationMapper.selectByPrimaryKey(e.getUuidId()).getConfigurationValue())
389
     /**
409
     /**
390
      * 各种身份校验
410
      * 各种身份校验
391
      */
411
      */
392
-    public ResponseBean addVerify(Integer userid, Integer userVerifyId, MultipartFile uploadFile, String faceImg, TaFace taFace, TpEquipmentTree tpEquipmentTree) {
412
+    public ResponseBean addVerify(Integer userid, Integer userVerifyId, MultipartFile uploadFile, String faceImg, TaFace taFace) {
393
         ResponseBean response = new ResponseBean();
413
         ResponseBean response = new ResponseBean();
394
 
414
 
395
         TaUserVerify userVerify = taUserVerifyMapper.selectByPrimaryKey(userVerifyId);
415
         TaUserVerify userVerify = taUserVerifyMapper.selectByPrimaryKey(userVerifyId);
397
             response.addError("当前房产审核记录不存在!");
417
             response.addError("当前房产审核记录不存在!");
398
             return response;
418
             return response;
399
         }
419
         }
420
+
400
         TaUser taUser = taUserMapper.selectByPrimaryKey(userid);
421
         TaUser taUser = taUserMapper.selectByPrimaryKey(userid);
401
 
422
 
402
         //身份为家属租客,状态为已停用
423
         //身份为家属租客,状态为已停用
406
         }
427
         }
407
 
428
 
408
         // 海康数据
429
         // 海康数据
409
-        TaUserHk taUserHk = taUserHkMapper.selectByUserIdAndCommunityId(userVerify.getUserId(), userVerify.getCommunityId());
430
+        TaUserHk taUserHk = taUserHkMapper.selectByUserVerifyIdAndCommunityId(userVerify.getId(), userVerify.getCommunityId());
431
+
432
+        // 海康权限信息
433
+        TpUnitHkSetting tpUnitHkSetting = getUnitHkSetting(userVerify.getCommunityId(), userVerify.getUnitId());
434
+
435
+        // 设备树
436
+        TpEquipmentTree tpEquipmentTree = tpEquipmentTreeMapper.selectByCommunityId(userVerify.getCommunityId());
437
+
410
 
438
 
411
         //查询当前用户是否有人脸记录
439
         //查询当前用户是否有人脸记录
412
         TaFace face = taFaceMapper.getByUserVerifyId(userVerifyId);
440
         TaFace face = taFaceMapper.getByUserVerifyId(userVerifyId);
413
         if (null == face) {
441
         if (null == face) {
414
             boolean isA = true;
442
             boolean isA = true;
415
             if (Constant.EFFECTIVE_STATUS.equals(taUser.getStatus())) {
443
             if (Constant.EFFECTIVE_STATUS.equals(taUser.getStatus())) {
416
-                ResponseBean responseBean = checKout(faceImg, taFace, isA, uploadFile, userid, userVerify.getCommunityId(), userVerify.getRoomNoId(), userVerify.getUnitId(),tpEquipmentTree.getAppkey(), tpEquipmentTree.getSecret(), tpEquipmentTree.getHttpServer(), tpEquipmentTree.getOpUserUuid(), taUserHk);
444
+                ResponseBean responseBean = checKout(faceImg, taFace, isA, uploadFile, taUserHk, tpUnitHkSetting, tpEquipmentTree, userVerify);
417
                 if (responseBean.getCode().equals("0")) {
445
                 if (responseBean.getCode().equals("0")) {
418
                     responseBean.addSuccess("图片录入成功");
446
                     responseBean.addSuccess("图片录入成功");
419
                 } else {
447
                 } else {
426
         return response;
454
         return response;
427
     }
455
     }
428
 
456
 
457
+    /**
458
+     * 海康权限组
459
+     * @return
460
+     */
461
+    private TpUnitHkSetting getUnitHkSetting(Integer communityId, Integer unitId) {
462
+        TpUnitHkSetting tpUnitHkSetting = tpUnitHkSettingMapper.selectByCommunityIdAndUnitId(communityId, unitId);
463
+        if (null == tpUnitHkSetting) {
464
+            throw new WisdomException("权限组未配置");
465
+        }
466
+        return tpUnitHkSetting;
467
+    }
468
+
429
     @Override
469
     @Override
430
     @Transactional(rollbackFor = Exception.class)
470
     @Transactional(rollbackFor = Exception.class)
431
     public ResponseBean addWelcomeFace(MultipartFile uploadFile, TaUser user) {
471
     public ResponseBean addWelcomeFace(MultipartFile uploadFile, TaUser user) {

+ 92
- 38
CODE/smart-community/app-api/src/main/java/com/community/huiju/service/impl/HKServiceImpl.java View File

87
         }
87
         }
88
 
88
 
89
         // 海康数据
89
         // 海康数据
90
-        TaUserHk taUserHk = taUserHkMapper.selectByUserIdAndCommunityId(userVerify.getUserId(), userVerify.getCommunityId());
90
+        TaUserHk taUserHk = taUserHkMapper.selectByUserVerifyIdAndCommunityId(userVerify.getId(), userVerify.getCommunityId());
91
         if (null == taUserHk) {
91
         if (null == taUserHk) {
92
             taUserHk = new TaUserHk();
92
             taUserHk = new TaUserHk();
93
         }
93
         }
95
         // 海康权限信息
95
         // 海康权限信息
96
         TpUnitHkSetting unitHkSetting = getUnitHkSetting(userVerify.getCommunityId(), userVerify.getUnitId());
96
         TpUnitHkSetting unitHkSetting = getUnitHkSetting(userVerify.getCommunityId(), userVerify.getUnitId());
97
 
97
 
98
+        // 设备树
98
         TpEquipmentTree tpEquipmentTree = tpEquipmentTreeMapper.selectByCommunityId(userVerify.getCommunityId());
99
         TpEquipmentTree tpEquipmentTree = tpEquipmentTreeMapper.selectByCommunityId(userVerify.getCommunityId());
99
 
100
 
100
         // 这两个值一般都是同时存在的
101
         // 这两个值一般都是同时存在的
107
              * 2.根据部门编号推送 海康
108
              * 2.根据部门编号推送 海康
108
              */
109
              */
109
             taUserMapper.updateByPrimaryKeySelective(user);
110
             taUserMapper.updateByPrimaryKeySelective(user);
110
-            addUserAndOpenCard(responseBean, user, tpEquipmentTree, taUserHk, unitHkSetting);
111
+            addUserAndOpenCard(responseBean, user, tpEquipmentTree, taUserHk, unitHkSetting, userVerify);
111
         }
112
         }
112
 
113
 
113
         // 卡片操作
114
         // 卡片操作
123
         }
124
         }
124
 
125
 
125
 
126
 
127
+        // 判断是否成功
128
+        if ("0".equals(responseBean.getCode())) {
129
+            responseBean.addSuccess("操作成功!");
130
+            return responseBean;
131
+        }
132
+        throw new WisdomException("操作失败!");
133
+    }
126
 
134
 
127
-        // 推送海康
128
 
135
 
129
-        // 给用户添加 海康门禁权限
136
+    @Override
137
+    public ResponseBean addAuthoritiesAnddownloadAuthorityByPersonIds(TaUserVerify userVerify, TaUserHk taUserHk, TpEquipmentTree tpEquipmentTree) {
130
 
138
 
139
+        ResponseBean responseBean = new ResponseBean();
140
+
141
+        // 给用户添加 海康门禁权限
131
         List<TpEquipment> tpEquipments = tpEquipmentMapper.selectByCommunityIdAndUnitId(userVerify.getCommunityId(), userVerify.getUnitId(), 4);
142
         List<TpEquipment> tpEquipments = tpEquipmentMapper.selectByCommunityIdAndUnitId(userVerify.getCommunityId(), userVerify.getUnitId(), 4);
132
         List<Map<String, Object>> equipmentUUID = getEquipmentUUID(tpEquipments);
143
         List<Map<String, Object>> equipmentUUID = getEquipmentUUID(tpEquipments);
133
         StringBuilder doorUuids = new StringBuilder();
144
         StringBuilder doorUuids = new StringBuilder();
140
         });
151
         });
141
 
152
 
142
         if (org.apache.commons.lang3.StringUtils.isNotBlank(doorUuids)) {
153
         if (org.apache.commons.lang3.StringUtils.isNotBlank(doorUuids)) {
143
-
144
             Map<String, Object> map = Maps.newHashMap();
154
             Map<String, Object> map = Maps.newHashMap();
145
             map.put("personIds",String.valueOf(taUserHk.getHkUserId()));
155
             map.put("personIds",String.valueOf(taUserHk.getHkUserId()));
146
             map.put("doorUuids", doorUuids.substring(0, doorUuids.lastIndexOf(",")));
156
             map.put("doorUuids", doorUuids.substring(0, doorUuids.lastIndexOf(",")));
148
             map.put("appkey", tpEquipmentTree.getAppkey());
158
             map.put("appkey", tpEquipmentTree.getAppkey());
149
             map.put("openapi_ip_port_http", tpEquipmentTree.getHttpServer());
159
             map.put("openapi_ip_port_http", tpEquipmentTree.getHttpServer());
150
             map.put("opUserUuid", tpEquipmentTree.getOpUserUuid());
160
             map.put("opUserUuid", tpEquipmentTree.getOpUserUuid());
151
-            HKOpenApi.addAuthoritiesByPersonIds(map);
161
+            String addAuthoritiesJSONString = HKOpenApi.addAuthoritiesByPersonIds(map);
162
+            validHKError(addAuthoritiesJSONString);
152
 
163
 
153
             // 下发门禁权限
164
             // 下发门禁权限
154
             Map<String, Object> downloadAuthorityByPersonIdsMap = Maps.newHashMap();
165
             Map<String, Object> downloadAuthorityByPersonIdsMap = Maps.newHashMap();
160
             downloadAuthorityByPersonIdsMap.put("appkey", tpEquipmentTree.getAppkey());
171
             downloadAuthorityByPersonIdsMap.put("appkey", tpEquipmentTree.getAppkey());
161
             downloadAuthorityByPersonIdsMap.put("openapi_ip_port_http", tpEquipmentTree.getHttpServer());
172
             downloadAuthorityByPersonIdsMap.put("openapi_ip_port_http", tpEquipmentTree.getHttpServer());
162
             downloadAuthorityByPersonIdsMap.put("opUserUuid", tpEquipmentTree.getOpUserUuid());
173
             downloadAuthorityByPersonIdsMap.put("opUserUuid", tpEquipmentTree.getOpUserUuid());
163
-            HKOpenApi.downloadAuthorityByPersonIds(downloadAuthorityByPersonIdsMap);
164
-
174
+            String downloadAuthorityJSON = HKOpenApi.downloadAuthorityByPersonIds(downloadAuthorityByPersonIdsMap);
175
+            validHKError(downloadAuthorityJSON);
165
         }
176
         }
166
 
177
 
167
-        //--------- 可视对讲 ----------
168
-
169
-        Map<String,Object> addOutDoorAuthMap = Maps.newHashMap();
170
-        // app用户权限勿动
171
-        addOutDoorAuthMap.put("authName", unitHkSetting.getPermissionId());
172
-        addOutDoorAuthMap.put("personIds", Arrays.asList(taUserHk.getHkUserId()));
173
-        addOutDoorAuthMap.put("secret", tpEquipmentTree.getSecret());
174
-        addOutDoorAuthMap.put("appkey", tpEquipmentTree.getAppkey());
175
-        addOutDoorAuthMap.put("openapi_ip_port_http", tpEquipmentTree.getHttpServer());
176
-        addOutDoorAuthMap.put("opUserUuid", tpEquipmentTree.getOpUserUuid());
177
-
178
-        // 单元门口机
179
-        List<TpEquipment> visualEquipments = tpEquipmentMapper.selectByCommunityIdAndUnitId(userVerify.getCommunityId(), userVerify.getUnitId(), 3);
180
-        List<String> visualList = visualEquipments.stream()
181
-                .map(e-> tpConfigurationMapper.selectByPrimaryKey(e.getUuidId()).getConfigurationValue())
182
-                .collect(Collectors.toList());
183
-//        List<String> visualList = new ArrayList<>();
184
-//        visualList.add("10010100000");
185
-        addOutDoorAuthMap.put("longNums", visualList);
186
-        // 可视对讲下发 权限
187
-        visualIntercomPermissions(addOutDoorAuthMap);
188
-        if ("0".equals(responseBean.getCode())) {
189
-            responseBean.addSuccess("操作成功!");
190
-            return responseBean;
191
-        }
192
-        throw new WisdomException("操作失败!");
178
+        responseBean.addSuccess("操作成功!");
179
+        return responseBean;
193
     }
180
     }
194
 
181
 
195
     @Override
182
     @Override
209
      * @param response
196
      * @param response
210
      * @param user
197
      * @param user
211
      */
198
      */
212
-    private void addUserAndOpenCard(ResponseBean response, TaUser user, TpEquipmentTree tpEquipmentTree, TaUserHk taUserHk, TpUnitHkSetting unitHkSetting) {
199
+    private void addUserAndOpenCard(ResponseBean response, TaUser user, TpEquipmentTree tpEquipmentTree, TaUserHk taUserHk, TpUnitHkSetting unitHkSetting, TaUserVerify userVerify) {
213
 //        Map<String, Object> parDept = Maps.newHashMap();
200
 //        Map<String, Object> parDept = Maps.newHashMap();
214
 //        parDept.put("pageNo", 1);
201
 //        parDept.put("pageNo", 1);
215
 //        parDept.put("pageSize", 100);
202
 //        parDept.put("pageSize", 100);
244
 
231
 
245
             int row = 0;
232
             int row = 0;
246
             if (null == taUserHk.getId()) {
233
             if (null == taUserHk.getId()) {
247
-                taUserHk.setTaUserId(user.getId());
234
+                // 存储的是审核id
235
+                taUserHk.setTaUserId(userVerify.getId());
248
                 taUserHk.setCommunityId(tpEquipmentTree.getCommunityId());
236
                 taUserHk.setCommunityId(tpEquipmentTree.getCommunityId());
237
+                taUserHk.setCreateDate(new Date());
238
+                taUserHk.setUpdateDate(new Date());
249
                 // 存储海康人员ID
239
                 // 存储海康人员ID
250
                 row = taUserHkMapper.insertSelective(taUserHk);
240
                 row = taUserHkMapper.insertSelective(taUserHk);
251
             } else {
241
             } else {
354
         return response;
344
         return response;
355
     }
345
     }
356
 
346
 
347
+    /**
348
+     * 校验错误
349
+     * @param json
350
+     */
351
+    private void validHKError(String json) {
352
+        Map<String, Object> resultMap = JSONObject.parseObject(json, HashMap.class);
353
+        Integer errorCode = (Integer) resultMap.get("errorCode");
354
+        if (errorCode.intValue() != 0) {
355
+            throw new RuntimeException(String.valueOf(resultMap.get("errorMessage")));
356
+        }
357
+    }
358
+
357
     /**
359
     /**
358
      * 获取部门 uuid
360
      * 获取部门 uuid
359
      * <p>
361
      * <p>
388
      *
390
      *
389
      * @param map
391
      * @param map
390
      */
392
      */
391
-    private void visualIntercomPermissions(Map<String,Object> map) {
393
+    private String visualIntercomPermissions(Map<String,Object> map) {
392
         // TODO 目前下发的 authName权限组是我们自定义的, 后面肯定是按照小区的 期楼栋号来设置的
394
         // TODO 目前下发的 authName权限组是我们自定义的, 后面肯定是按照小区的 期楼栋号来设置的
393
         // TODO longNums设备编号, 可视对讲的机器编号, 应该根据 期楼栋号 下面的机器编号来设置的
395
         // TODO longNums设备编号, 可视对讲的机器编号, 应该根据 期楼栋号 下面的机器编号来设置的
394
 
396
 
395
         //--------- 可视对讲 ----------
397
         //--------- 可视对讲 ----------
396
 
398
 
397
         // 可视对讲 根据人员 ID 集添加权限并下发
399
         // 可视对讲 根据人员 ID 集添加权限并下发
398
-        HKOpenApi.addOutDoorAuth(map);
400
+        return HKOpenApi.addOutDoorAuth(map);
399
 
401
 
400
     }
402
     }
401
 
403
 
469
         responseBean.addError("操作失败!");
471
         responseBean.addError("操作失败!");
470
         return responseBean;
472
         return responseBean;
471
     }
473
     }
474
+
475
+    @Override
476
+    public ResponseBean visualIntercomPermissions(TpUnitHkSetting unitHkSetting, TpEquipmentTree tpEquipmentTree, TaUserHk taUserHk, TaUserVerify userVerify) {
477
+
478
+        ResponseBean responseBean = new ResponseBean();
479
+
480
+        if (null == unitHkSetting) {
481
+            responseBean.addError("海康权限信息 未配置");
482
+            return responseBean;
483
+        }
484
+
485
+        if (null == tpEquipmentTree) {
486
+            responseBean.addError("设备树 未配置");
487
+            return responseBean;
488
+        }
489
+
490
+        if (null == userVerify) {
491
+            responseBean.addError("审核数据 不能为null");
492
+            return responseBean;
493
+        }
494
+
495
+        //--------- 可视对讲 ----------
496
+
497
+        Map<String,Object> addOutDoorAuthMap = Maps.newHashMap();
498
+        // app用户权限勿动
499
+        addOutDoorAuthMap.put("authName", unitHkSetting.getPermissionId());
500
+        addOutDoorAuthMap.put("personIds", Arrays.asList(taUserHk.getHkUserId()));
501
+        addOutDoorAuthMap.put("secret", tpEquipmentTree.getSecret());
502
+        addOutDoorAuthMap.put("appkey", tpEquipmentTree.getAppkey());
503
+        addOutDoorAuthMap.put("openapi_ip_port_http", tpEquipmentTree.getHttpServer());
504
+        addOutDoorAuthMap.put("opUserUuid", tpEquipmentTree.getOpUserUuid());
505
+
506
+        // 单元门口机
507
+        List<TpEquipment> visualEquipments = tpEquipmentMapper.selectByCommunityIdAndUnitId(userVerify.getCommunityId(), userVerify.getUnitId(), 3);
508
+        List<String> visualList = visualEquipments.stream()
509
+                .map(e-> tpConfigurationMapper.selectByPrimaryKey(e.getUuidId()).getConfigurationValue())
510
+                .collect(Collectors.toList());
511
+//        List<String> visualList = new ArrayList<>();
512
+//        visualList.add("10010100000");
513
+        addOutDoorAuthMap.put("longNums", visualList);
514
+        // 可视对讲下发 权限
515
+        String permissionsJSON = visualIntercomPermissions(addOutDoorAuthMap);
516
+        JSONObject addCardsJsonObject = JSONObject.parseObject(permissionsJSON);
517
+        Integer addCardsResultCode = addCardsJsonObject.getInteger("errorCode");
518
+        if (0 == addCardsResultCode.intValue()) {
519
+            responseBean.addSuccess("操作成功!");
520
+            return responseBean;
521
+        }
522
+
523
+        responseBean.addError("操作失败");
524
+        throw new RuntimeException(addCardsJsonObject.getString("errorMessage"));
525
+    }
472
 }
526
 }

+ 414
- 0
CODE/smart-community/app-api/src/main/java/com/community/huiju/service/impl/SenCartIdImpl.java View File

1
+package com.community.huiju.service.impl;
2
+
3
+import com.alibaba.fastjson.JSONObject;
4
+import com.community.commom.hk.HKOpenApi;
5
+import com.community.commom.mode.ResponseBean;
6
+import com.community.commom.uuid.IdGen;
7
+import com.community.huiju.dao.*;
8
+import com.community.huiju.exception.WisdomException;
9
+import com.community.huiju.model.*;
10
+import com.community.huiju.service.IHKService;
11
+import com.community.huiju.service.ISenCartId;
12
+import com.google.common.collect.Maps;
13
+import lombok.extern.slf4j.Slf4j;
14
+import org.apache.commons.collections.CollectionUtils;
15
+import org.apache.commons.lang.StringUtils;
16
+import org.bouncycastle.cms.PasswordRecipientId;
17
+import org.springframework.beans.factory.annotation.Autowired;
18
+import org.springframework.stereotype.Service;
19
+import org.springframework.web.multipart.MultipartFile;
20
+
21
+import java.text.ParseException;
22
+import java.text.SimpleDateFormat;
23
+import java.time.LocalDate;
24
+import java.util.*;
25
+import java.util.stream.Collectors;
26
+
27
+/**
28
+ * weiximei on 2019-06-21
29
+ */
30
+@Service
31
+@Slf4j
32
+public class SenCartIdImpl implements ISenCartId {
33
+
34
+    @Autowired
35
+    private IHKService ihkService;
36
+
37
+    @Autowired
38
+    private TaUserMapper taUserMapper;
39
+
40
+    @Autowired
41
+    private TpUnitHkSettingMapper tpUnitHkSettingMapper;
42
+
43
+
44
+    @Autowired
45
+    private TpEquipmentTreeMapper tpEquipmentTreeMapper;
46
+
47
+    private IdGen idGen = IdGen.get();
48
+
49
+    @Autowired
50
+    private TaUserHkMapper taUserHkMapper;
51
+
52
+    @Autowired
53
+    private TpEquipmentMapper tpEquipmentMapper;
54
+
55
+    @Autowired
56
+    private TpConfigurationMapper tpConfigurationMapper;
57
+
58
+    @Override
59
+    public ResponseBean addUserAndAddCartId(Integer communityId) {
60
+        ResponseBean responseBean = new ResponseBean();
61
+
62
+        // 查询审核已通过的,但是没有海康id的
63
+        List<TaUser> taUserList = taUserMapper.selectNotHKuserId(communityId);
64
+
65
+        for (TaUser user : taUserList) {
66
+
67
+            // 海康权限信息
68
+            TpUnitHkSetting unitHkSetting = getUnitHkSetting(communityId, user.getUnitId());
69
+
70
+            TpEquipmentTree tpEquipmentTree = tpEquipmentTreeMapper.selectByCommunityId(communityId);
71
+
72
+            TaUserHk taUserHk = new TaUserHk();
73
+            // 设置 海康id
74
+            taUserHk.setHkPersonNo(idGen.nextId());
75
+            /**
76
+             * 1.获取部门(比如 住户)
77
+             * 2.根据部门编号推送 海康
78
+             */
79
+            taUserMapper.updateByPrimaryKeySelective(user);
80
+            addUserAndOpenCard(responseBean, user, tpEquipmentTree, taUserHk, unitHkSetting);
81
+
82
+
83
+            // 卡片操作
84
+
85
+            // 添加卡片
86
+            responseBean = addCards(taUserHk, tpEquipmentTree);
87
+
88
+            // 开卡
89
+            responseBean = openCard(taUserHk.getHkUserId(), Long.valueOf(taUserHk.getHkCardNo()), null,tpEquipmentTree);
90
+
91
+        }
92
+
93
+        responseBean.addSuccess("操作成功!");
94
+        return responseBean;
95
+    }
96
+
97
+
98
+    /**
99
+     * 海康权限组
100
+     * @return
101
+     */
102
+    private TpUnitHkSetting getUnitHkSetting(Integer communityId, Integer unitId) {
103
+        TpUnitHkSetting tpUnitHkSetting = tpUnitHkSettingMapper.selectByCommunityIdAndUnitId(communityId, unitId);
104
+        if (null == tpUnitHkSetting) {
105
+            throw new WisdomException("权限组未配置");
106
+        }
107
+        return tpUnitHkSetting;
108
+    }
109
+
110
+    /**
111
+     * 公共方法
112
+     * 添加人员
113
+     *
114
+     * @param response
115
+     * @param user
116
+     */
117
+    private void addUserAndOpenCard(ResponseBean response, TaUser user, TpEquipmentTree tpEquipmentTree, TaUserHk taUserHk, TpUnitHkSetting unitHkSetting) {
118
+//        Map<String, Object> parDept = Maps.newHashMap();
119
+//        parDept.put("pageNo", 1);
120
+//        parDept.put("pageSize", 100);
121
+//        parDept.put("deptName", Constant.DEPT_RESIDENTS);
122
+//        parDept.put("openapi_ip_port_http", tpEquipmentTree.getHttpServer());
123
+//        parDept.put("appkey", tpEquipmentTree.getAppkey());
124
+//        parDept.put("secret", tpEquipmentTree.getSecret());
125
+//        parDept.put("opUserUuid", tpEquipmentTree.getOpUserUuid());
126
+        // 部门UUID
127
+        //String deptUuid = getDeptUUID(parDept);
128
+
129
+        // 添加人员
130
+        Map<String, Object> parUser = Maps.newHashMap();
131
+        parUser.put("personNo", taUserHk.getHkPersonNo());
132
+        parUser.put("personName", user.getUserName());
133
+        // parUser.put("phoneNo", user.getLoginName());
134
+        parUser.put("remark", user.getLoginName());
135
+        parUser.put("deptUuid", unitHkSetting.getDepartmentId());
136
+        parUser.put("secret", tpEquipmentTree.getSecret());
137
+        parUser.put("appkey", tpEquipmentTree.getAppkey());
138
+        parUser.put("openapi_ip_port_http", tpEquipmentTree.getHttpServer());
139
+        parUser.put("opUserUuid", tpEquipmentTree.getOpUserUuid());
140
+        Map<String, Object> resultMap = JSONObject.parseObject(HKOpenApi.addUser(parUser), HashMap.class);
141
+        Integer errorCode = (Integer) resultMap.get("errorCode");
142
+        if (errorCode == 0) {
143
+            Map<String, Object> resultDataMap = (Map<String, Object>) resultMap.get("data");
144
+
145
+            // 海康人员ID
146
+            Integer personId = (Integer) resultDataMap.get("personId");
147
+
148
+            taUserHk.setHkUserId(personId);
149
+
150
+            int row = 0;
151
+            if (null == taUserHk.getId()) {
152
+                taUserHk.setTaUserId(user.getId());
153
+                taUserHk.setCommunityId(tpEquipmentTree.getCommunityId());
154
+                // 存储海康人员ID
155
+                row = taUserHkMapper.insertSelective(taUserHk);
156
+            } else {
157
+                row = taUserHkMapper.updateByPrimaryKeySelective(taUserHk);
158
+            }
159
+
160
+            if (row > 0) {
161
+                response.addSuccess("操作成功!");
162
+            } else {
163
+                response.addError("操作失败");
164
+                throw new RuntimeException("数据库添加 家属/租客 人员失败!");
165
+            }
166
+
167
+        } else {
168
+            String errorMessage = String.valueOf(resultMap.get("errorMessage"));
169
+            response.addError(errorMessage);
170
+            log.error("海康添加人员失败! {}", errorMessage);
171
+            throw new RuntimeException(errorMessage);
172
+        }
173
+    }
174
+
175
+    /**
176
+     * 添加卡片
177
+     * @return
178
+     */
179
+    public ResponseBean addCards(TaUserHk taUserHk, TpEquipmentTree tpEquipmentTree) {
180
+
181
+        ResponseBean response = new ResponseBean();
182
+
183
+        // 开卡 卡号
184
+        long cardNo = System.currentTimeMillis();
185
+
186
+        // 添加卡片
187
+        Map<String,Object> addCardsMap = new HashMap<>();
188
+        addCardsMap.put("secret", tpEquipmentTree.getSecret());
189
+        addCardsMap.put("appkey", tpEquipmentTree.getAppkey());
190
+        addCardsMap.put("openapi_ip_port_http", tpEquipmentTree.getHttpServer());
191
+        addCardsMap.put("startCardNo", cardNo);
192
+        addCardsMap.put("endCardNo", cardNo);
193
+        addCardsMap.put("opUserUuid", tpEquipmentTree.getOpUserUuid());
194
+        String addCardsJSON = HKOpenApi.addCards(addCardsMap);
195
+        JSONObject addCardsJsonObject = JSONObject.parseObject(addCardsJSON);
196
+        Integer addCardsResultCode = addCardsJsonObject.getInteger("errorCode");
197
+        if (0 != addCardsResultCode) {
198
+            response.addError("操作失败");
199
+            throw new RuntimeException(addCardsJsonObject.getString("errorMessage"));
200
+        }
201
+
202
+        // 卡片入库
203
+        taUserHk.setHkCardNo(cardNo + "");
204
+        taUserHkMapper.updateByPrimaryKeySelective(taUserHk);
205
+        return response;
206
+    }
207
+
208
+    /**
209
+     * 卡片开卡
210
+     *
211
+     * @param personId 人员海康id
212
+     * @param cardNo 卡号
213
+     * @param expirationTime    有效期为多少? 单位为 年
214
+     * @return
215
+     */
216
+    private ResponseBean openCard(Integer personId, Long cardNo, Integer expirationTime, TpEquipmentTree tpEquipmentTree) {
217
+        ResponseBean response = new ResponseBean();
218
+
219
+        SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
220
+        LocalDate today = LocalDate.now();
221
+        int year = today.getYear();
222
+        // 加上20, 表示加上20年,默认
223
+        if (null == expirationTime || expirationTime <= 0) {
224
+            year += 20;
225
+        } else {
226
+            year += expirationTime;
227
+        }
228
+        int month = today.getMonthValue();
229
+        int day = today.getDayOfMonth();
230
+
231
+        Long time = null;
232
+        try {
233
+            time = formatter.parse(year + "-" + month + "-" + day).getTime();
234
+        } catch (ParseException e) {
235
+            e.printStackTrace();
236
+        }
237
+
238
+        // 开卡
239
+        Map<String, Object> parOpenCard = Maps.newHashMap();
240
+        parOpenCard.put("personId", personId);
241
+        parOpenCard.put("cardNo", cardNo);
242
+        parOpenCard.put("startTime", System.currentTimeMillis());
243
+        parOpenCard.put("endTime", time);
244
+        parOpenCard.put("secret", tpEquipmentTree.getSecret());
245
+        parOpenCard.put("appkey", tpEquipmentTree.getAppkey());
246
+        parOpenCard.put("openapi_ip_port_http", tpEquipmentTree.getHttpServer());
247
+        parOpenCard.put("opUserUuid", tpEquipmentTree.getOpUserUuid());
248
+        JSONObject openCardJSON = JSONObject.parseObject(HKOpenApi.openCard(parOpenCard));
249
+        int code = (int) openCardJSON.get("errorCode");
250
+        if (code == 0) {
251
+            response.addSuccess("操作成功!");
252
+        } else {
253
+            String errorMessage = String.valueOf(openCardJSON.get("errorMessage"));
254
+            response.addError(errorMessage);
255
+            log.error("开卡失败! {}", errorMessage);
256
+            throw new RuntimeException(errorMessage);
257
+        }
258
+
259
+        return response;
260
+    }
261
+
262
+    @Override
263
+    public ResponseBean addUserOne(Integer communityId, MultipartFile uploadFile) {
264
+        ResponseBean responseBean = new ResponseBean();
265
+
266
+
267
+        TaUser user = new TaUser();
268
+        user.setLoginName("15677789713");
269
+        user.setUnitId(110);
270
+        user.setHkPersonNo(idGen.nextId());
271
+        user.setUserName("魏熙美测试1");
272
+
273
+        // 海康权限信息
274
+        TpUnitHkSetting unitHkSetting = getUnitHkSetting(communityId, user.getUnitId());
275
+        TpEquipmentTree tpEquipmentTree = tpEquipmentTreeMapper.selectByCommunityId(communityId);
276
+
277
+        // =================== 添加人员 ===========================
278
+//        Map<String, Object> parUser = Maps.newHashMap();
279
+//        parUser.put("personNo", user.getHkPersonNo());
280
+//        parUser.put("personName", user.getUserName());
281
+//        // parUser.put("phoneNo", user.getLoginName());
282
+//        parUser.put("remark", user.getLoginName());
283
+//        parUser.put("deptUuid", unitHkSetting.getDepartmentId());
284
+//        parUser.put("secret", tpEquipmentTree.getSecret());
285
+//        parUser.put("appkey", tpEquipmentTree.getAppkey());
286
+//        parUser.put("openapi_ip_port_http", tpEquipmentTree.getHttpServer());
287
+//        parUser.put("opUserUuid", tpEquipmentTree.getOpUserUuid());
288
+//        Map<String, Object> resultMap = JSONObject.parseObject(HKOpenApi.addUser(parUser), HashMap.class);
289
+//        Integer errorCode = (Integer) resultMap.get("errorCode");
290
+//        if (errorCode != 0) {
291
+//            responseBean.addError("人员添加 操作失败");
292
+//            throw new RuntimeException(String.valueOf(resultMap.get("errorMessage")));
293
+//        }
294
+//        Map<String, Object> resultDataMap = (Map<String, Object>) resultMap.get("data");
295
+//        // 海康人员ID
296
+//        Integer personId = (Integer) resultDataMap.get("personId");
297
+//        user.setHkUserId(personId);
298
+//
299
+//        // =================== 添加卡片 =====================
300
+//
301
+//        // 开卡 卡号
302
+//        long cardNo = System.currentTimeMillis();
303
+//        // 添加卡片
304
+//        Map<String,Object> addCardsMap = new HashMap<>();
305
+//        addCardsMap.put("secret", tpEquipmentTree.getSecret());
306
+//        addCardsMap.put("appkey", tpEquipmentTree.getAppkey());
307
+//        addCardsMap.put("openapi_ip_port_http", tpEquipmentTree.getHttpServer());
308
+//        addCardsMap.put("startCardNo", cardNo);
309
+//        addCardsMap.put("endCardNo", cardNo);
310
+//        addCardsMap.put("opUserUuid", tpEquipmentTree.getOpUserUuid());
311
+//        String addCardsJSON = HKOpenApi.addCards(addCardsMap);
312
+//        JSONObject addCardsJsonObject = JSONObject.parseObject(addCardsJSON);
313
+//        Integer addCardsResultCode = addCardsJsonObject.getInteger("errorCode");
314
+//        if (0 != addCardsResultCode) {
315
+//            responseBean.addError("操作失败");
316
+//            throw new RuntimeException(addCardsJsonObject.getString("errorMessage"));
317
+//        }
318
+//
319
+//        user.setHkCardNo(cardNo + "");
320
+//
321
+//        // ============== 人员绑定卡片 ======================
322
+//
323
+//        SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
324
+//        LocalDate today = LocalDate.now();
325
+//        int year = today.getYear();
326
+//        // 加上20, 表示加上20年,默认
327
+//        year += 20;
328
+//
329
+//        int month = today.getMonthValue();
330
+//        int day = today.getDayOfMonth();
331
+//
332
+//        Long time = null;
333
+//        try {
334
+//            time = formatter.parse(year + "-" + month + "-" + day).getTime();
335
+//        } catch (ParseException e) {
336
+//            e.printStackTrace();
337
+//        }
338
+//
339
+//        // 开卡
340
+//        Map<String, Object> parOpenCard = Maps.newHashMap();
341
+//        parOpenCard.put("personId", user.getHkUserId());
342
+//        parOpenCard.put("cardNo", Long.valueOf(cardNo));
343
+//        parOpenCard.put("startTime", System.currentTimeMillis());
344
+//        parOpenCard.put("endTime", time);
345
+//        parOpenCard.put("secret", tpEquipmentTree.getSecret());
346
+//        parOpenCard.put("appkey", tpEquipmentTree.getAppkey());
347
+//        parOpenCard.put("openapi_ip_port_http", tpEquipmentTree.getHttpServer());
348
+//        parOpenCard.put("opUserUuid", tpEquipmentTree.getOpUserUuid());
349
+//        JSONObject openCardJSON = JSONObject.parseObject(HKOpenApi.openCard(parOpenCard));
350
+//        int code = (int) openCardJSON.get("errorCode");
351
+//        if (code != 0) {
352
+//            String errorMessage = String.valueOf(openCardJSON.get("errorMessage"));
353
+//            responseBean.addError(errorMessage);
354
+//            log.error("人员绑定开卡失败! {}", errorMessage);
355
+//            throw new RuntimeException(errorMessage);
356
+//        }
357
+
358
+
359
+
360
+        // ============= 修改人脸 ==================
361
+        String data = HKOpenApi.HKpersonGroupId(uploadFile, 1236, 1142018896048422912L, user.getUserName(), "1561113497593", tpEquipmentTree.getAppkey(), tpEquipmentTree.getSecret(), tpEquipmentTree.getHttpServer(), tpEquipmentTree.getOpUserUuid());
362
+
363
+
364
+        //=================== 下发可是对讲卡权限 =====================
365
+
366
+        //--------- 可视对讲 ----------
367
+
368
+//        Map<String,Object> addOutDoorAuthMap = Maps.newHashMap();
369
+//        // app用户权限勿动 unitHkSetting.getPermissionId()
370
+//        addOutDoorAuthMap.put("authName", "魏熙美测试1");
371
+//        addOutDoorAuthMap.put("personIds", Arrays.asList(user.getHkUserId()));
372
+//        addOutDoorAuthMap.put("secret", tpEquipmentTree.getSecret());
373
+//        addOutDoorAuthMap.put("appkey", tpEquipmentTree.getAppkey());
374
+//        addOutDoorAuthMap.put("openapi_ip_port_http", tpEquipmentTree.getHttpServer());
375
+//        addOutDoorAuthMap.put("opUserUuid", tpEquipmentTree.getOpUserUuid());
376
+//
377
+//        // 单元门口机
378
+//        List<TpEquipment> visualEquipments = tpEquipmentMapper.selectByCommunityIdAndUnitId(communityId, user.getUnitId(), 3);
379
+//        // 可是对讲设备号
380
+//        List<String> visualList = visualEquipments.stream()
381
+//                .map(e-> tpConfigurationMapper.selectByPrimaryKey(e.getUuidId()).getConfigurationValue())
382
+//                .collect(Collectors.toList());
383
+////        List<String> visualList = new ArrayList<>();
384
+////        visualList.add("10030100001");
385
+//        addOutDoorAuthMap.put("longNums", visualList); // visualList
386
+//        // 可视对讲下发 权限
387
+//         String addOutDoorAuthJSONString = HKOpenApi.addOutDoorAuth(addOutDoorAuthMap);
388
+//        JSONObject addOutDoorAuthJSON = JSONObject.parseObject(addOutDoorAuthJSONString);
389
+//        int addOutDoorAuthJSONCode = (int) addOutDoorAuthJSON.get("errorCode");
390
+//        if (addOutDoorAuthJSONCode != 0 ) {
391
+//            String errorMessage = String.valueOf(addOutDoorAuthJSON.get("errorMessage"));
392
+//            responseBean.addError(errorMessage);
393
+//            log.error("可视对讲下发 权限失败! {}", errorMessage);
394
+//            throw new RuntimeException(errorMessage);
395
+//        }
396
+
397
+//        try {
398
+//            Thread.sleep(1000);
399
+//        } catch (InterruptedException e) {
400
+//            e.printStackTrace();
401
+//        }
402
+
403
+        // ================ 可是对讲人脸权限下发 ==============
404
+
405
+        //可视对讲时 指定人员人脸权限下载
406
+//        List<Integer> userIdList = new ArrayList<>();
407
+//        userIdList.add(user.getHkUserId());
408
+//
409
+//        HKOpenApi.visualIntercom(tpEquipmentTree.getOpUserUuid(), 1, userIdList, visualList, tpEquipmentTree.getAppkey(), tpEquipmentTree.getSecret(), tpEquipmentTree.getHttpServer());
410
+//
411
+//        responseBean.addSuccess("操作成功!");
412
+        return responseBean;
413
+    }
414
+}

+ 30
- 1
CODE/smart-community/app-api/src/main/java/com/community/huiju/service/impl/TaUserServiceImpl.java View File

173
     @Autowired
173
     @Autowired
174
     private TaUserHkMapper taUserHkMapper;
174
     private TaUserHkMapper taUserHkMapper;
175
 
175
 
176
+    @Autowired
177
+    private TpUnitHkSettingMapper tpUnitHkSettingMapper;
178
+
176
     @Override
179
     @Override
177
     @Transactional(rollbackFor = Exception.class)
180
     @Transactional(rollbackFor = Exception.class)
178
     public ResponseBean login(String loginName, String code, HttpSession session) {
181
     public ResponseBean login(String loginName, String code, HttpSession session) {
577
         if ("1".equals(response.getCode())) {
580
         if ("1".equals(response.getCode())) {
578
             throw new WisdomException("推送HK失败!");
581
             throw new WisdomException("推送HK失败!");
579
         }
582
         }
583
+
584
+//        // 海康权限信息
585
+//        TpUnitHkSetting unitHkSetting = getUnitHkSetting(userVerify.getCommunityId(), userVerify.getUnitId());
586
+//
587
+//        TpEquipmentTree tpEquipmentTree = tpEquipmentTreeMapper.selectByCommunityId(userVerify.getCommunityId());
588
+//
589
+//        TaUserHk taUserHk = taUserHkMapper.selectByUserVerifyIdAndCommunityId(userVerify.getId(), userElement.getCommunityId());
590
+//
591
+//        // 下发可是对讲卡权限
592
+//        response = ihkService.visualIntercomPermissions(unitHkSetting, tpEquipmentTree, taUserHk, userVerify);
593
+//        if ("1".equals(response.getCode())) {
594
+//            throw new WisdomException("可视对讲卡权限下发失败!");
595
+//        }
596
+
580
         // 推送消息
597
         // 推送消息
581
         String[] messageArr= new messagePush().messagePushAll( );
598
         String[] messageArr= new messagePush().messagePushAll( );
582
         for (String count : messageArr) {
599
         for (String count : messageArr) {
602
         return response;
619
         return response;
603
     }
620
     }
604
 
621
 
622
+    /**
623
+     * 海康权限组
624
+     * @return
625
+     */
626
+    private TpUnitHkSetting getUnitHkSetting(Integer communityId, Integer unitId) {
627
+        TpUnitHkSetting tpUnitHkSetting = tpUnitHkSettingMapper.selectByCommunityIdAndUnitId(communityId, unitId);
628
+        if (null == tpUnitHkSetting) {
629
+            throw new WisdomException("权限组未配置");
630
+        }
631
+        return tpUnitHkSetting;
632
+    }
633
+
605
     /**
634
     /**
606
      * 查询 楼栋信息
635
      * 查询 楼栋信息
607
      *      根据小区Id, 栋,单元,楼层,房号, 手机号
636
      *      根据小区Id, 栋,单元,楼层,房号, 手机号
1098
         taUserVO.setVerifyStatus(userVerify.getVerifyStatus());
1127
         taUserVO.setVerifyStatus(userVerify.getVerifyStatus());
1099
 
1128
 
1100
         // 设置海康数据
1129
         // 设置海康数据
1101
-        TaUserHk taUserHk = taUserHkMapper.selectByUserIdAndCommunityId(taUserVO.getId(), userVerify.getCommunityId());
1130
+        TaUserHk taUserHk = taUserHkMapper.selectByUserVerifyIdAndCommunityId(userVerify.getId(), userVerify.getCommunityId());
1102
         if (null != taUserHk) {
1131
         if (null != taUserHk) {
1103
             taUserVO.setHkUserId(taUserHk.getHkUserId() + "");
1132
             taUserVO.setHkUserId(taUserHk.getHkUserId() + "");
1104
             taUserVO.setHkPersonNo(taUserHk.getHkPersonNo() + "");
1133
             taUserVO.setHkPersonNo(taUserHk.getHkPersonNo() + "");

+ 1
- 1
CODE/smart-community/app-api/src/main/java/com/community/huiju/service/impl/TaVistorServiceImpl.java View File

154
         // 获取设备树,里面有 opUserId
154
         // 获取设备树,里面有 opUserId
155
         TpEquipmentTree tpEquipmentTree = tpEquipmentTreeMapper.selectByCommunityId(communityId);
155
         TpEquipmentTree tpEquipmentTree = tpEquipmentTreeMapper.selectByCommunityId(communityId);
156
 
156
 
157
-        TaUserHk taUserHk = taUserHkMapper.selectByUserIdAndCommunityId(userId, communityId);
157
+        TaUserHk taUserHk = taUserHkMapper.selectByUserVerifyIdAndCommunityId(userElement.getUserVerifyId(), communityId);
158
 
158
 
159
         String result = HKOpenApi.temporaryRegister(visitor.getVisitorName(),visitor.getVisitorTel(),
159
         String result = HKOpenApi.temporaryRegister(visitor.getVisitorName(),visitor.getVisitorTel(),
160
                 Integer.valueOf(visitor.getVisitorNum()),visitor.getVisitorStartTime().getTime(),
160
                 Integer.valueOf(visitor.getVisitorNum()),visitor.getVisitorStartTime().getTime(),