Procházet zdrojové kódy

修改 海康逻辑

weiximei před 6 roky
rodič
revize
7cd825703d

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

@@ -44,11 +44,11 @@ public class AppApplication {
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 Zobrazit soubor

@@ -6,13 +6,12 @@ import com.community.commom.mode.ResponseBean;
6 6
 import com.community.commom.session.UserElement;
7 7
 import com.community.huiju.model.HkVisitorBill;
8 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 11
 import org.springframework.beans.factory.annotation.Autowired;
14 12
 import org.springframework.cloud.context.config.annotation.RefreshScope;
15 13
 import org.springframework.web.bind.annotation.*;
14
+import org.springframework.web.multipart.MultipartFile;
16 15
 
17 16
 import javax.servlet.http.HttpServletRequest;
18 17
 import javax.servlet.http.HttpSession;
@@ -30,6 +29,9 @@ public class HkController extends BaseController {
30 29
 	@Autowired
31 30
 	private IHKService ihkService;
32 31
 
32
+	@Autowired
33
+	private ISenCartId iSenCartId;
34
+
33 35
 	@ApiOperation(value = "发送访客账单", notes = "发送访客账单")
34 36
 	@ApiImplicitParams({ @ApiImplicitParam(paramType = "body", name = "hkVisitorBill", dataType = "String",value = "billNum: 账单号,reservationNum:预约单号,plateNum:出场车牌号,leaveTime:出场时间,billFee:账单金额")})
35 37
 	@RequestMapping(value = "/sendVisitorBill",method = RequestMethod.POST)
@@ -72,5 +74,23 @@ public class HkController extends BaseController {
72 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 Zobrazit soubor

@@ -21,7 +21,7 @@ public interface TaUserHkMapper {
21 21
     int updateByPrimaryKey(TaUserHk record);
22 22
 
23 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 Zobrazit soubor

@@ -3,6 +3,8 @@ package com.community.huiju.dao;
3 3
 import com.community.huiju.model.TaUser;
4 4
 import org.apache.ibatis.annotations.Mapper;
5 5
 import org.apache.ibatis.annotations.Param;
6
+import org.apache.ibatis.annotations.ResultMap;
7
+import org.apache.ibatis.annotations.Select;
6 8
 
7 9
 import java.util.List;
8 10
 import java.util.Map;
@@ -78,4 +80,25 @@ public interface TaUserMapper {
78 80
     List<TaUser> getByLoginNameList(@Param("loginName") String loginName);
79 81
 	
80 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 Zobrazit soubor

@@ -82,6 +82,11 @@ public class TaUser {
82 82
      */
83 83
     private String faceImg;
84 84
 
85
+    /**
86
+     * 单元id
87
+     */
88
+    private Integer unitId;
89
+
85 90
     public void setHouseList(List<TpBuildingOwnerInfo> houseList) {
86 91
         this.houseList = houseList;
87 92
     }
@@ -329,4 +334,12 @@ public class TaUser {
329 334
     public void setFaceImg(String faceImg) {
330 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 Zobrazit soubor

@@ -2,6 +2,10 @@ package com.community.huiju.service;
2 2
 
3 3
 import com.community.commom.mode.ResponseBean;
4 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,7 +21,14 @@ public interface IHKService {
17 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 32
      * @return
22 33
      */
23 34
     ResponseBean downloadAuthorityByDeviceUuids();
@@ -30,4 +41,10 @@ public interface IHKService {
30 41
      */
31 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 Zobrazit soubor

@@ -0,0 +1,26 @@
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 Zobrazit soubor

@@ -79,10 +79,12 @@ public class FaceServicelimpl implements FaceServiceI {
79 79
     @Autowired
80 80
     private TaUserHkMapper taUserHkMapper;
81 81
 
82
+    @Autowired
83
+    private TpUnitHkSettingMapper tpUnitHkSettingMapper;
84
+
82 85
     @Override
83 86
     @Transactional(rollbackFor = Exception.class)
84 87
     public ResponseBean addFace(UserElement userElement, MultipartFile uploadFile, Integer otherUserId) {
85
-        TpEquipmentTree tpEquipmentTree = tpEquipmentTreeMapper.selectByCommunityId(userElement.getCommunityId());
86 88
         ResponseBean responseBean = new ResponseBean();
87 89
         /*审核房产是否通过*/
88 90
         TaUserVerify taUserVerify= infoExist(userElement.getUserVerifyId());
@@ -111,12 +113,6 @@ public class FaceServicelimpl implements FaceServiceI {
111 113
         }
112 114
         Integer activeUser = otherUserId == null ? userElement.getId() : otherUserId;
113 115
 
114
-        /**
115
-         * 删除的时候,将所有的海康设备的关联关系删除了,需要重新下发一次
116
-         */
117
-        // 下发门禁
118
-        ihkService.pushPerson(activeUser + "", userVerifyId);
119
-
120 116
         TaUser user = taUserMapper.selectByPrimaryKey(activeUser);
121 117
         TaFace taFace = new TaFace();
122 118
         taFace.setFaceImg(faceImg);
@@ -128,7 +124,7 @@ public class FaceServicelimpl implements FaceServiceI {
128 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 128
         return responseBean;
133 129
     }
134 130
 
@@ -143,7 +139,7 @@ public class FaceServicelimpl implements FaceServiceI {
143 139
     @Override
144 140
     @Transactional(rollbackFor = Exception.class)
145 141
     public ResponseBean upDateFace(UserElement userElement, MultipartFile uploadFile, Integer otherUserId) {
146
-        TpEquipmentTree tpEquipmentTree = tpEquipmentTreeMapper.selectByCommunityId(userElement.getCommunityId());
142
+
147 143
         ResponseBean responseBean = new ResponseBean();
148 144
         // 人脸图片地址url
149 145
         String faceImg = img(uploadFile);
@@ -159,14 +155,17 @@ public class FaceServicelimpl implements FaceServiceI {
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 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 170
         //当前修改的id否存在
172 171
         TaFace face = taFaceMapper.getByUserVerifyId(userVerifyId);
@@ -179,7 +178,7 @@ public class FaceServicelimpl implements FaceServiceI {
179 178
         face.setFaceImg(faceImg);
180 179
         face.setUpdateUser(userElement.getId());
181 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 182
         if (resps.getCode().equals("0")) {
184 183
             resps.addSuccess((Object) faceImg);
185 184
         } else {
@@ -194,21 +193,35 @@ public class FaceServicelimpl implements FaceServiceI {
194 193
      * @param taFace
195 194
      * @param isA
196 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 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 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 222
         if (taUserHk.getHkUserId() == null) {
210 223
             responseBean.addError("海康人员ID不存在,无法录入");
211
-            log.error("本地库人员ID:{}  的海康人员ID不存在", userId);
224
+            log.error("本地库人员ID:{}  的海康人员ID不存在", userVerify.getUserId());
212 225
             return responseBean;
213 226
         }
214 227
         AESDecode aesd = new AESDecode();
@@ -219,26 +232,34 @@ public class FaceServicelimpl implements FaceServiceI {
219 232
             Integer type = (Integer) jsonObject.get("errno");
220 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 237
             /*boolean isA为true进行添加,为false进行修改*/
225 238
             if (0 == type && 1 == faceNum) {
226 239
                 if (null == data) {
227 240
                     log.error("海康人脸推送失败!");
228 241
                     throw new RuntimeException("人脸推送失败!");
229 242
                 }
243
+
244
+                // 下发卡权限
245
+                // 下发可是对讲卡权限
246
+                ihkService.visualIntercomPermissions(unitHkSetting, tpEquipmentTree, taUserHk, userVerify);
247
+
230 248
                 if (isA) {
231 249
                     taFaceMapper.insertSelective(taFace);
232 250
                 } else {
233 251
                     taFaceMapper.updateByPrimaryKeySelective(taFace);
234 252
                 }
253
+
254
+                // 等待 1s
255
+                Thread.sleep(1000);
256
+
235 257
                 responseBean.addSuccess("操作成功");
236 258
 
237
-                // 设备树
238
-                TpEquipmentTree tpEquipmentTree = tpEquipmentTreeMapper.selectByCommunityId(communityId);
259
+
239 260
                 // 所有设备
240 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 263
                 if (CollectionUtils.isNotEmpty(tpEquipments)) {
243 264
                     List<Map<String, Object>> equipmentUUID = getEquipmentUUID(tpEquipments);
244 265
                     StringBuilder doorUuids = new StringBuilder();
@@ -262,8 +283,7 @@ public class FaceServicelimpl implements FaceServiceI {
262 283
                     map.put("openapi_ip_port_http", tpEquipmentTree.getHttpServer());
263 284
                     HKOpenApi.downloadFaceAndFingerInfos(map);
264 285
 
265
-                    // 等待 2s
266
-                    Thread.sleep(2000);
286
+
267 287
                 }
268 288
 
269 289
 
@@ -274,7 +294,7 @@ public class FaceServicelimpl implements FaceServiceI {
274 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 298
                 if (CollectionUtils.isNotEmpty(visualEquipments)) {
279 299
                     List<String> visualList = visualEquipments.stream()
280 300
                             .map(e-> tpConfigurationMapper.selectByPrimaryKey(e.getUuidId()).getConfigurationValue())
@@ -389,7 +409,7 @@ public class FaceServicelimpl implements FaceServiceI {
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 413
         ResponseBean response = new ResponseBean();
394 414
 
395 415
         TaUserVerify userVerify = taUserVerifyMapper.selectByPrimaryKey(userVerifyId);
@@ -397,6 +417,7 @@ public class FaceServicelimpl implements FaceServiceI {
397 417
             response.addError("当前房产审核记录不存在!");
398 418
             return response;
399 419
         }
420
+
400 421
         TaUser taUser = taUserMapper.selectByPrimaryKey(userid);
401 422
 
402 423
         //身份为家属租客,状态为已停用
@@ -406,14 +427,21 @@ public class FaceServicelimpl implements FaceServiceI {
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 440
         TaFace face = taFaceMapper.getByUserVerifyId(userVerifyId);
413 441
         if (null == face) {
414 442
             boolean isA = true;
415 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 445
                 if (responseBean.getCode().equals("0")) {
418 446
                     responseBean.addSuccess("图片录入成功");
419 447
                 } else {
@@ -426,6 +454,18 @@ public class FaceServicelimpl implements FaceServiceI {
426 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 469
     @Override
430 470
     @Transactional(rollbackFor = Exception.class)
431 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 Zobrazit soubor

@@ -87,7 +87,7 @@ public class HKServiceImpl implements IHKService {
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 91
         if (null == taUserHk) {
92 92
             taUserHk = new TaUserHk();
93 93
         }
@@ -95,6 +95,7 @@ public class HKServiceImpl implements IHKService {
95 95
         // 海康权限信息
96 96
         TpUnitHkSetting unitHkSetting = getUnitHkSetting(userVerify.getCommunityId(), userVerify.getUnitId());
97 97
 
98
+        // 设备树
98 99
         TpEquipmentTree tpEquipmentTree = tpEquipmentTreeMapper.selectByCommunityId(userVerify.getCommunityId());
99 100
 
100 101
         // 这两个值一般都是同时存在的
@@ -107,7 +108,7 @@ public class HKServiceImpl implements IHKService {
107 108
              * 2.根据部门编号推送 海康
108 109
              */
109 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,11 +124,21 @@ public class HKServiceImpl implements IHKService {
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 142
         List<TpEquipment> tpEquipments = tpEquipmentMapper.selectByCommunityIdAndUnitId(userVerify.getCommunityId(), userVerify.getUnitId(), 4);
132 143
         List<Map<String, Object>> equipmentUUID = getEquipmentUUID(tpEquipments);
133 144
         StringBuilder doorUuids = new StringBuilder();
@@ -140,7 +151,6 @@ public class HKServiceImpl implements IHKService {
140 151
         });
141 152
 
142 153
         if (org.apache.commons.lang3.StringUtils.isNotBlank(doorUuids)) {
143
-
144 154
             Map<String, Object> map = Maps.newHashMap();
145 155
             map.put("personIds",String.valueOf(taUserHk.getHkUserId()));
146 156
             map.put("doorUuids", doorUuids.substring(0, doorUuids.lastIndexOf(",")));
@@ -148,7 +158,8 @@ public class HKServiceImpl implements IHKService {
148 158
             map.put("appkey", tpEquipmentTree.getAppkey());
149 159
             map.put("openapi_ip_port_http", tpEquipmentTree.getHttpServer());
150 160
             map.put("opUserUuid", tpEquipmentTree.getOpUserUuid());
151
-            HKOpenApi.addAuthoritiesByPersonIds(map);
161
+            String addAuthoritiesJSONString = HKOpenApi.addAuthoritiesByPersonIds(map);
162
+            validHKError(addAuthoritiesJSONString);
152 163
 
153 164
             // 下发门禁权限
154 165
             Map<String, Object> downloadAuthorityByPersonIdsMap = Maps.newHashMap();
@@ -160,36 +171,12 @@ public class HKServiceImpl implements IHKService {
160 171
             downloadAuthorityByPersonIdsMap.put("appkey", tpEquipmentTree.getAppkey());
161 172
             downloadAuthorityByPersonIdsMap.put("openapi_ip_port_http", tpEquipmentTree.getHttpServer());
162 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 182
     @Override
@@ -209,7 +196,7 @@ public class HKServiceImpl implements IHKService {
209 196
      * @param response
210 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 200
 //        Map<String, Object> parDept = Maps.newHashMap();
214 201
 //        parDept.put("pageNo", 1);
215 202
 //        parDept.put("pageSize", 100);
@@ -244,8 +231,11 @@ public class HKServiceImpl implements IHKService {
244 231
 
245 232
             int row = 0;
246 233
             if (null == taUserHk.getId()) {
247
-                taUserHk.setTaUserId(user.getId());
234
+                // 存储的是审核id
235
+                taUserHk.setTaUserId(userVerify.getId());
248 236
                 taUserHk.setCommunityId(tpEquipmentTree.getCommunityId());
237
+                taUserHk.setCreateDate(new Date());
238
+                taUserHk.setUpdateDate(new Date());
249 239
                 // 存储海康人员ID
250 240
                 row = taUserHkMapper.insertSelective(taUserHk);
251 241
             } else {
@@ -354,6 +344,18 @@ public class HKServiceImpl implements IHKService {
354 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 360
      * 获取部门 uuid
359 361
      * <p>
@@ -388,14 +390,14 @@ public class HKServiceImpl implements IHKService {
388 390
      *
389 391
      * @param map
390 392
      */
391
-    private void visualIntercomPermissions(Map<String,Object> map) {
393
+    private String visualIntercomPermissions(Map<String,Object> map) {
392 394
         // TODO 目前下发的 authName权限组是我们自定义的, 后面肯定是按照小区的 期楼栋号来设置的
393 395
         // TODO longNums设备编号, 可视对讲的机器编号, 应该根据 期楼栋号 下面的机器编号来设置的
394 396
 
395 397
         //--------- 可视对讲 ----------
396 398
 
397 399
         // 可视对讲 根据人员 ID 集添加权限并下发
398
-        HKOpenApi.addOutDoorAuth(map);
400
+        return HKOpenApi.addOutDoorAuth(map);
399 401
 
400 402
     }
401 403
 
@@ -469,4 +471,56 @@ public class HKServiceImpl implements IHKService {
469 471
         responseBean.addError("操作失败!");
470 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 Zobrazit soubor

@@ -0,0 +1,414 @@
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 Zobrazit soubor

@@ -173,6 +173,9 @@ public class TaUserServiceImpl implements ITaUserService {
173 173
     @Autowired
174 174
     private TaUserHkMapper taUserHkMapper;
175 175
 
176
+    @Autowired
177
+    private TpUnitHkSettingMapper tpUnitHkSettingMapper;
178
+
176 179
     @Override
177 180
     @Transactional(rollbackFor = Exception.class)
178 181
     public ResponseBean login(String loginName, String code, HttpSession session) {
@@ -577,6 +580,20 @@ public class TaUserServiceImpl implements ITaUserService {
577 580
         if ("1".equals(response.getCode())) {
578 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 598
         String[] messageArr= new messagePush().messagePushAll( );
582 599
         for (String count : messageArr) {
@@ -602,6 +619,18 @@ public class TaUserServiceImpl implements ITaUserService {
602 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 636
      *      根据小区Id, 栋,单元,楼层,房号, 手机号
@@ -1098,7 +1127,7 @@ public class TaUserServiceImpl implements ITaUserService {
1098 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 1131
         if (null != taUserHk) {
1103 1132
             taUserVO.setHkUserId(taUserHk.getHkUserId() + "");
1104 1133
             taUserVO.setHkPersonNo(taUserHk.getHkPersonNo() + "");

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

@@ -154,7 +154,7 @@ public class TaVistorServiceImpl implements TaVistorServiceI {
154 154
         // 获取设备树,里面有 opUserId
155 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 159
         String result = HKOpenApi.temporaryRegister(visitor.getVisitorName(),visitor.getVisitorTel(),
160 160
                 Integer.valueOf(visitor.getVisitorNum()),visitor.getVisitorStartTime().getTime(),