dingxin 6 lat temu
rodzic
commit
c7ec65a110

+ 0
- 18
CODE/smart-community/property-api/src/main/java/com/community/huiju/service/IHKService.java Wyświetl plik

@@ -1,18 +0,0 @@
1
-package com.community.huiju.service;
2
-
3
-import com.community.commom.mode.ResponseBean;
4
-
5
-/**
6
- * 海康 业务
7
- * @author weiximei
8
- */
9
-public interface IHKService {
10
-
11
-    /**
12
-     * 推送海康人员
13
-     * @param appUserId
14
-     * @return
15
-     */
16
-    ResponseBean pushPerson(String appUserId);
17
-
18
-}

+ 0
- 227
CODE/smart-community/property-api/src/main/java/com/community/huiju/service/impl/HKServiceImpl.java Wyświetl plik

@@ -1,227 +0,0 @@
1
-package com.community.huiju.service.impl;
2
-
3
-import com.alibaba.fastjson.JSONArray;
4
-import com.alibaba.fastjson.JSONObject;
5
-import com.community.commom.constant.Constant;
6
-import com.community.commom.hk.HKOpenApi;
7
-import com.community.commom.mode.ResponseBean;
8
-import com.community.commom.uuid.IdGen;
9
-import com.community.huiju.dao.TaUserMapper;
10
-import com.community.huiju.exception.WisdomException;
11
-import com.community.huiju.model.TaUser;
12
-import com.community.huiju.service.IHKService;
13
-import com.google.common.collect.Lists;
14
-import com.google.common.collect.Maps;
15
-import lombok.extern.slf4j.Slf4j;
16
-import org.springframework.beans.factory.annotation.Autowired;
17
-import org.springframework.stereotype.Service;
18
-import org.springframework.transaction.annotation.Transactional;
19
-
20
-import java.text.ParseException;
21
-import java.text.SimpleDateFormat;
22
-import java.time.LocalDate;
23
-import java.util.Arrays;
24
-import java.util.HashMap;
25
-import java.util.List;
26
-import java.util.Map;
27
-
28
-/**
29
- * 海康 业务实现
30
- * @author weiximei
31
- */
32
-@Service
33
-@Slf4j
34
-public class HKServiceImpl implements IHKService {
35
-
36
-    @Autowired
37
-    private TaUserMapper taUserMapper;
38
-
39
-    private IdGen idGen = IdGen.get();
40
-
41
-    @Override
42
-    @Transactional(rollbackFor = Exception.class)
43
-    public ResponseBean pushPerson(String appUserId) {
44
-        ResponseBean responseBean = new ResponseBean();
45
-        TaUser user = taUserMapper.selectById(Integer.parseInt(appUserId));
46
-        // 这两个值一般都是同时存在的
47
-        // 当这两个值不存在的时候,就添加海康人员
48
-        if (null == user.getHkUserId() && null == user.getHkPersonNo()) {
49
-            // 设置 海康id
50
-            user.setHkPersonNo(idGen.nextId());
51
-            /**
52
-             * 1.获取部门(比如 住户)
53
-             * 2.根据部门编号推送 海康
54
-             */
55
-            taUserMapper.updateById(user);
56
-            addUserAndOpenCard(responseBean, user);
57
-        }
58
-
59
-
60
-
61
-        // 推送海康
62
-
63
-        // 给用户添加 海康门禁权限
64
-        HKOpenApi.addAuthoritiesByPersonIds(String.valueOf(user.getHkUserId()));
65
-
66
-        // 下发门禁权限
67
-        HKOpenApi.downloadAuthorityByDeviceUuids();
68
-
69
-        //--------- 可视对讲 ----------
70
-        visualIntercom(user);
71
-        if ("0".equals(responseBean.getCode())) {
72
-            responseBean.addSuccess("操作成功!");
73
-            return responseBean;
74
-        }
75
-        throw new WisdomException("操作失败!");
76
-    }
77
-
78
-    /**
79
-     * 公共方法
80
-     * 添加人员, 开卡
81
-     *
82
-     * @param response
83
-     * @param user
84
-     */
85
-    private void addUserAndOpenCard(ResponseBean response, TaUser user) {
86
-        Map<String, Object> parDept = Maps.newHashMap();
87
-        parDept.put("pageNo", 1);
88
-        parDept.put("pageSize", 100);
89
-        parDept.put("deptName", Constant.DEPT_RESIDENTS);
90
-        // 部门UUID
91
-        String deptUuid = getDeptUUID(parDept);
92
-
93
-        // 添加人员
94
-        Map<String, Object> parUser = Maps.newHashMap();
95
-        parUser.put("personNo", user.getHkPersonNo());
96
-        parUser.put("personName", user.getUserName());
97
-        parUser.put("phoneNo", user.getLoginName());
98
-        parUser.put("deptUuid", deptUuid);
99
-        Map<String, Object> resultMap = JSONObject.parseObject(HKOpenApi.addUser(parUser), HashMap.class);
100
-        int errorCode = (int) resultMap.get("errorCode");
101
-        if (errorCode == 0) {
102
-            Map<String, Object> resultDataMap = (Map<String, Object>) resultMap.get("data");
103
-            // 开卡 卡号
104
-            long cardNo = System.currentTimeMillis();
105
-            // 海康人员ID
106
-            Integer personId = (Integer) resultDataMap.get("personId");
107
-            TaUser tempUser = taUserMapper.selectById(user.getId());
108
-            tempUser.setHkUserId(personId);
109
-            tempUser.setHkCardNo(cardNo + "");
110
-
111
-            user.setHkUserId(personId);
112
-            // 存储海康人员ID
113
-            int row = taUserMapper.updateById(tempUser);
114
-            if (row > 0) {
115
-                response.addSuccess("操作成功!");
116
-            } else {
117
-                response.addError("操作失败");
118
-                throw new RuntimeException("数据库添加 家属/租客 人员失败!");
119
-            }
120
-
121
-            // 开卡
122
-            List<String> cardAndPersonList = Lists.newArrayList();
123
-            cardAndPersonList.add(cardNo + "," + personId);
124
-            response = openCard(cardAndPersonList, null);
125
-        } else {
126
-            String errorMessage = String.valueOf(resultMap.get("errorMessage"));
127
-            response.addError(errorMessage);
128
-            log.error("海康添加人员失败! {}", errorMessage);
129
-            throw new RuntimeException(errorMessage);
130
-        }
131
-    }
132
-
133
-    /**
134
-     * 批量开卡
135
-     *
136
-     * @param cardIdAndHKUserID list.add("卡号,人员ID")
137
-     * @param expirationTime    有效期为多少? 单位为 年
138
-     * @return
139
-     */
140
-    private ResponseBean openCard(List<String> cardIdAndHKUserID, Integer expirationTime) {
141
-        ResponseBean response = new ResponseBean();
142
-
143
-        SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
144
-        LocalDate today = LocalDate.now();
145
-        int year = today.getYear();
146
-        // 加上20, 表示加上20年,默认
147
-        if (null == expirationTime || expirationTime <= 0) {
148
-            year += 20;
149
-        } else {
150
-            year += expirationTime;
151
-        }
152
-        int month = today.getMonthValue();
153
-        int day = today.getDayOfMonth();
154
-
155
-        Long time = null;
156
-        try {
157
-            time = formatter.parse(year + "-" + month + "-" + day).getTime();
158
-        } catch (ParseException e) {
159
-            e.printStackTrace();
160
-        }
161
-
162
-        // 开卡
163
-        Map<String, Object> parOpenCard = Maps.newHashMap();
164
-        parOpenCard.put("cardAndPerson", cardIdAndHKUserID);
165
-        parOpenCard.put("startTime", System.currentTimeMillis());
166
-        parOpenCard.put("endTime", time);
167
-        JSONObject openCardJSON = JSONObject.parseObject(HKOpenApi.openCard(parOpenCard));
168
-        int code = (int) openCardJSON.get("errorCode");
169
-        if (code == 0) {
170
-            response.addSuccess("操作成功!");
171
-        } else {
172
-            String errorMessage = String.valueOf(openCardJSON.get("errorMessage"));
173
-            response.addError(errorMessage);
174
-            log.error("开卡失败! {}", errorMessage);
175
-            throw new RuntimeException(errorMessage);
176
-        }
177
-
178
-        return response;
179
-    }
180
-
181
-    /**
182
-     * 获取部门 uuid
183
-     * <p>
184
-     * 这里的部门相当于 小区
185
-     *
186
-     * @return
187
-     */
188
-    private String getDeptUUID(Map<String, Object> parDept) {
189
-        Map<String, Object> deptMap = JSONObject.parseObject(HKOpenApi.getDeptName(parDept), HashMap.class);
190
-        Map<String, Object> deptDataMap = (Map<String, Object>) deptMap.get("data");
191
-        JSONArray jsonArray = (JSONArray) deptDataMap.get("list");
192
-        Map<String, Object> deptListData = (Map<String, Object>) jsonArray.get(0);
193
-        // 部门UUID
194
-        String deptUuid = (String) deptListData.get("deptUuid");
195
-        return deptUuid;
196
-    }
197
-
198
-    /**
199
-     * 可视对讲下发
200
-     *
201
-     * @param user
202
-     */
203
-    private void visualIntercom(TaUser user) {
204
-        // TODO 目前下发的 authName权限组是我们自定义的, 后面肯定是按照小区的 期楼栋号来设置的
205
-        // TODO longNums设备编号, 可视对讲的机器编号, 应该根据 期楼栋号 下面的机器编号来设置的
206
-
207
-        //--------- 可视对讲 ----------
208
-
209
-        // 可视对讲 根据人员 ID 集添加权限并下发
210
-        Map<String, Object> addOutDoorAuthMap = new HashMap<>();
211
-        addOutDoorAuthMap.put("authName", "荟居");
212
-        addOutDoorAuthMap.put("personIds", Arrays.asList(user.getHkUserId()));
213
-        addOutDoorAuthMap.put("longNums", Arrays.asList("10010100000"));
214
-        // 可视对讲 根据人员 ID 集添加权限并下发
215
-        HKOpenApi.addOutDoorAuth(addOutDoorAuthMap);
216
-
217
-        // 可视对讲 指定人员指纹权限下载
218
-//        Map<String, Object> downloadFingerMap = new HashMap<>();
219
-//        // opType 操作类型 Integer 是 1 为下发权限;2 为删除权限
220
-//        downloadFingerMap.put("opType", 1);
221
-//        downloadFingerMap.put("personIds", Arrays.asList(user.getHkUserId()));
222
-//        downloadFingerMap.put("longNums", Arrays.asList("10010100000"));
223
-//        // 可视对讲 指定人员指纹权限下载
224
-//        HKOpenApi.downloadFinger(downloadFingerMap);
225
-
226
-    }
227
-}