Преглед изворни кода

完成 人员添加,获取部们,开卡

weiximei пре 6 година
родитељ
комит
6e04ade95a

+ 4
- 0
CODE/smart-community/app-api/src/main/java/com/community/huiju/common/hk/HKConstant.java Прегледај датотеку

@@ -70,4 +70,8 @@ public class HKConstant {
70 70
      */
71 71
     public static final String ITF_ADD_USER = "/openapi/service/base/person/addPersonInfo";
72 72
 
73
+    /**
74
+     * 批量开卡
75
+     */
76
+    public static final String ITF_OPEN_CARD = "/openapi/service/base/person/batchOpenCards";
73 77
 }

+ 38
- 4
CODE/smart-community/app-api/src/main/java/com/community/huiju/common/hk/HKOpenApi.java Прегледај датотеку

@@ -1,6 +1,7 @@
1 1
 package com.community.huiju.common.hk;
2 2
 
3 3
 import com.alibaba.fastjson.JSON;
4
+import com.alibaba.fastjson.JSONObject;
4 5
 import com.community.commom.hk.Digests;
5 6
 import com.community.commom.hk.HttpClientSSLUtils;
6 7
 import com.google.common.collect.Maps;
@@ -86,18 +87,19 @@ public class HKOpenApi {
86 87
      *      比如 住户
87 88
      * @return
88 89
      */
89
-    public static String getAddUser(Map<String,Object> map){
90
+    public static String addUser(Map<String,Object> map){
90 91
         Map<String,Object> parMap = Maps.newHashMap();
91
-        String url = HKConstant.OPENAPI_IP_PORT_HTTP + HKConstant.ITF_LIKE_DEPT_NAME;
92
+        String url = HKConstant.OPENAPI_IP_PORT_HTTP + HKConstant.ITF_ADD_USER;
92 93
         //设置APPKEY
93 94
         parMap.put("appkey", HKConstant.APPKEY);
94 95
         //设置时间参数
95 96
         parMap.put("time", System.currentTimeMillis());
96
-        parMap.put("pageNo",map.get("pageNo"));
97
-        parMap.put("pageSize",map.get("pageSize"));
98 97
         parMap.put("opUserUuid",map.get("opUserUuid") == null?HKConstant.OP_USER_UUID:map.get("opUserUuid"));
99 98
         parMap.put("personNo",map.get("personNo"));
100 99
         parMap.put("personName",map.get("personName"));
100
+        parMap.put("phoneNo",map.get("phoneNo"));
101
+        parMap.put("deptUuid",map.get("deptUuid"));
102
+        // parMap.put("cardNo",map.get("cardNo"));
101 103
         String params =  JSON.toJSONString(parMap);
102 104
         log.info("添加人员 请求参数:{}", params);
103 105
         String data = null;
@@ -112,6 +114,37 @@ public class HKOpenApi {
112 114
         return data;
113 115
     }
114 116
 
117
+    /**
118
+     * 批量开卡
119
+     *
120
+     * 其中参数 cardAndPerson 形式为“卡号,人员ID”,开卡数量不得超过50个,若没有该卡号,则添加一张新卡进行绑定 List<String>
121
+     * @return
122
+     */
123
+    public static String openCard(Map<String,Object> map){
124
+        Map<String,Object> parMap = Maps.newHashMap();
125
+        String url = HKConstant.OPENAPI_IP_PORT_HTTP + HKConstant.ITF_OPEN_CARD;
126
+        //设置APPKEY
127
+        parMap.put("appkey", HKConstant.APPKEY);
128
+        //设置时间参数
129
+        parMap.put("time", System.currentTimeMillis());
130
+        parMap.put("opUserUuid",map.get("opUserUuid") == null?HKConstant.OP_USER_UUID:map.get("opUserUuid"));
131
+        parMap.put("cardAndPerson",map.get("cardAndPerson"));
132
+        parMap.put("startTime",map.get("startTime"));
133
+        parMap.put("endTime",map.get("endTime"));
134
+
135
+        String params =  JSON.toJSONString(parMap);
136
+        log.info("批量开卡 请求参数:{}", params);
137
+        String data = null;
138
+        try {
139
+            data = HttpClientSSLUtils.doPost(url + "?token=" + Digests.buildToken(url + "?" + params, params, HKConstant.SECRET), params);
140
+            log.info("批量开卡 请求返回结果:{}",data);
141
+        } catch (Exception e) {
142
+            e.printStackTrace();
143
+            log.error("批量开卡失败!",e);
144
+        }
145
+
146
+        return data;
147
+    }
115 148
 
116 149
     public static void main(String[] args) {
117 150
         Map<String,Object> parMap = Maps.newHashMap();
@@ -120,6 +153,7 @@ public class HKOpenApi {
120 153
         parMap.put("opUserUuid",HKConstant.OP_USER_UUID);
121 154
         parMap.put("deptName","住户");
122 155
         String result = HKOpenApi.getDeptName(parMap);
156
+        Map<String,Object> deptMap = JSONObject.parseObject(result, HashMap.class);
123 157
         System.out.println(result);
124 158
     }
125 159
 }

+ 10
- 1
CODE/smart-community/app-api/src/main/java/com/community/huiju/common/hk/test/OpenapiTest.java Прегледај датотеку

@@ -1,5 +1,6 @@
1 1
 package com.community.huiju.common.hk.test;
2 2
 
3
+import java.time.LocalDate;
3 4
 import java.util.HashMap;
4 5
 import java.util.Map;
5 6
 
@@ -83,11 +84,19 @@ class OpenapiTest {
83 84
 
84 85
 		/***http方式调用***/
85 86
 		//System.out.println(testGetDefaultUserUUID());
86
-		System.out.println(testGetCameras());
87
+		//System.out.println(testGetCameras());
87 88
 //		
88 89
 //		/***https方式调用***/
89 90
 //		System.out.println(testGetDefaultUserUUID_Https());
90 91
 //		System.out.println(testGetCameras_Https());
92
+
93
+		LocalDate today = LocalDate.now();
94
+		int year = today.getYear();
95
+		// 加上20, 表示加上20年,默认
96
+
97
+		int month = today.getMonthValue();
98
+		int day = today.getDayOfMonth();
99
+
91 100
 	}
92 101
 	
93 102
 	/**

+ 11
- 0
CODE/smart-community/app-api/src/main/java/com/community/huiju/model/TaUser.java Прегледај датотеку

@@ -39,6 +39,9 @@ public class TaUser {
39 39
 
40 40
     private Date updateDate;
41 41
 
42
+    // 海康UserId
43
+    private Integer hkUserId;
44
+
42 45
     public Integer getId() {
43 46
         return id;
44 47
     }
@@ -182,4 +185,12 @@ public class TaUser {
182 185
     public void setUpdateDate(Date updateDate) {
183 186
         this.updateDate = updateDate;
184 187
     }
188
+
189
+    public Integer getHkUserId() {
190
+        return hkUserId;
191
+    }
192
+
193
+    public void setHkUserId(Integer hkUserId) {
194
+        this.hkUserId = hkUserId;
195
+    }
185 196
 }

+ 126
- 6
CODE/smart-community/app-api/src/main/java/com/community/huiju/service/impl/TaUserServiceImpl.java Прегледај датотеку

@@ -1,15 +1,19 @@
1 1
 package com.community.huiju.service.impl;
2 2
 
3
+import com.alibaba.fastjson.JSONArray;
3 4
 import com.alibaba.fastjson.JSONObject;
4 5
 import com.community.commom.constant.Constant;
5 6
 import com.community.commom.mode.ResponseBean;
6 7
 import com.community.commom.utils.AccountValidatorUtil;
7 8
 import com.community.commom.utils.MD5Utils;
8 9
 import com.community.huiju.common.code.cache.AppkeyCache;
10
+import com.community.huiju.common.hk.HKConstant;
11
+import com.community.huiju.common.hk.HKOpenApi;
9 12
 import com.community.huiju.dao.*;
10 13
 import com.community.huiju.model.*;
11 14
 import com.community.huiju.service.ITaUserService;
12 15
 import com.community.huiju.vo.TaUserVO;
16
+import com.google.common.collect.Lists;
13 17
 import com.google.common.collect.Maps;
14 18
 import com.sun.org.apache.bcel.internal.generic.IF_ACMPEQ;
15 19
 import lombok.extern.slf4j.Slf4j;
@@ -20,9 +24,16 @@ import org.springframework.beans.factory.annotation.Autowired;
20 24
 import org.springframework.stereotype.Service;
21 25
 import org.springframework.transaction.annotation.Transactional;
22 26
 
27
+import java.text.ParseException;
28
+import java.text.SimpleDateFormat;
29
+import java.time.LocalDate;
30
+import java.time.LocalDateTime;
31
+import java.time.format.DateTimeFormatter;
23 32
 import java.util.Date;
33
+import java.util.HashMap;
24 34
 import java.util.List;
25 35
 import java.util.Map;
36
+import java.util.logging.SimpleFormatter;
26 37
 
27 38
 /**
28 39
  * 用户业务 实现
@@ -50,7 +61,7 @@ public class TaUserServiceImpl implements ITaUserService {
50 61
     @Autowired
51 62
     private SysNationMapper sysNationMapper;
52 63
 
53
-    @Transactional
64
+    @Transactional(rollbackFor = Exception.class)
54 65
     @Override
55 66
     public ResponseBean login(TaUser user) {
56 67
         ResponseBean response = new ResponseBean();
@@ -145,7 +156,7 @@ public class TaUserServiceImpl implements ITaUserService {
145 156
         return response;
146 157
     }
147 158
 
148
-    @Transactional
159
+    @Transactional(rollbackFor = Exception.class)
149 160
     @Override
150 161
     public ResponseBean register(TaUser user) {
151 162
 
@@ -188,7 +199,8 @@ public class TaUserServiceImpl implements ITaUserService {
188 199
         response.addSuccess(taUserVO);
189 200
         return response;
190 201
     }
191
-    @Transactional
202
+
203
+    @Transactional(rollbackFor = Exception.class)
192 204
     @Override
193 205
     public ResponseBean upDateloginName(Integer id, String paramets) {
194 206
         ResponseBean response = new ResponseBean();
@@ -224,7 +236,7 @@ public class TaUserServiceImpl implements ITaUserService {
224 236
         return taUserMapper.selectUserListByParentId(parentId);
225 237
     }
226 238
 
227
-    @Transactional
239
+    @Transactional(rollbackFor = Exception.class)
228 240
     @Override
229 241
     public ResponseBean modifyUser(TaUser user) {
230 242
 
@@ -244,7 +256,7 @@ public class TaUserServiceImpl implements ITaUserService {
244 256
         return response;
245 257
     }
246 258
 
247
-    @Transactional
259
+    @Transactional(rollbackFor = Exception.class)
248 260
     @Override
249 261
     public ResponseBean startOrEndUsingUser(Integer currentUserId, Integer userId, Integer type) {
250 262
         ResponseBean response = null;
@@ -305,7 +317,7 @@ public class TaUserServiceImpl implements ITaUserService {
305 317
         return response;
306 318
     }
307 319
 
308
-    @Transactional
320
+    @Transactional(rollbackFor = Exception.class)
309 321
     @Override
310 322
     public ResponseBean addTenantsOrDependents(String userName, String phone, String gender, Integer currentUserId, Integer type) {
311 323
         ResponseBean response = new ResponseBean();
@@ -351,8 +363,116 @@ public class TaUserServiceImpl implements ITaUserService {
351 363
             return response;
352 364
         }
353 365
 
366
+        // 用户添加到本地库
354 367
         addUserRole(type,response,user);
355 368
 
369
+        // 推送海康
370
+        /**
371
+         * 1.获取部门(比如 住户)
372
+         * 2.根据部门编号推送 海康
373
+         */
374
+        addUserAndOpenCard(response,user);
375
+
376
+        return response;
377
+    }
378
+
379
+    /**
380
+     * 公共方法
381
+     *  添加人员, 开卡
382
+     * @param response
383
+     * @param user
384
+     */
385
+    private void addUserAndOpenCard(ResponseBean response,TaUser user){
386
+        Map<String,Object> parDept = Maps.newHashMap();
387
+        parDept.put("pageNo",1);
388
+        parDept.put("pageSize",100);
389
+        parDept.put("deptName",Constant.DEPT_RESIDENTS);
390
+        Map<String,Object> deptMap = JSONObject.parseObject(HKOpenApi.getDeptName(parDept), HashMap.class);
391
+        Map<String,Object> deptDataMap = (Map<String, Object>) deptMap.get("data");
392
+        JSONArray jsonArray = (JSONArray) deptDataMap.get("list");
393
+        Map<String,Object> deptListData = (Map<String, Object>) jsonArray.get(0);
394
+        // 部门UUID
395
+        String deptUuid = (String) deptListData.get("deptUuid");
396
+
397
+        // 添加人员
398
+        Map<String,Object> parUser = Maps.newHashMap();
399
+        parUser.put("personNo",user.getId());
400
+        parUser.put("personName",user.getUserName());
401
+        parUser.put("phoneNo",user.getLoginName());
402
+        parUser.put("deptUuid",deptUuid);
403
+        Map<String,Object> resultMap = JSONObject.parseObject(HKOpenApi.addUser(parUser),HashMap.class);
404
+        int errorCode = (int) resultMap.get("errorCode");
405
+        if (errorCode == 0) {
406
+            Map<String,Object> resultDataMap = (Map<String, Object>) resultMap.get("data");
407
+            // 海康人员ID
408
+            Integer personId = (Integer) resultDataMap.get("personId");
409
+            TaUser tempUser = taUserMapper.selectByPrimaryKey(user.getId());
410
+            tempUser.setHkUserId(personId);
411
+            // 存储海康人员ID
412
+            int row = taUserMapper.updateByPrimaryKeySelective(tempUser);
413
+            if (row > 0) {
414
+                response.addSuccess("操作成功!");
415
+            }else {
416
+                response.addError("操作失败");
417
+                throw new RuntimeException("数据库添加 家属/租客 人员失败!");
418
+            }
419
+
420
+            // 开卡
421
+            List<String> cardAndPersonList = Lists.newArrayList();
422
+            cardAndPersonList.add(System.currentTimeMillis() + "," + personId);
423
+            response = openCard(cardAndPersonList,null);
424
+        }else {
425
+            String errorMessage = String.valueOf(resultMap.get("errorMessage"));
426
+            response.addError(errorMessage);
427
+            log.error("海康添加人员失败! {}",errorMessage);
428
+            throw new RuntimeException(errorMessage);
429
+        }
430
+    }
431
+
432
+    /**
433
+     * 批量开卡
434
+     * @param cardIdAndHKUserID list.add("卡号,人员ID")
435
+     * @param expirationTime 有效期为多少? 单位为 年
436
+     * @return
437
+     */
438
+    private ResponseBean openCard(List<String> cardIdAndHKUserID, Integer expirationTime){
439
+        ResponseBean response = new ResponseBean();
440
+
441
+        SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
442
+        LocalDate today = LocalDate.now();
443
+        int year = today.getYear();
444
+        // 加上20, 表示加上20年,默认
445
+        if (null == expirationTime || expirationTime <= 0) {
446
+            year += 20;
447
+        } else {
448
+            year += expirationTime;
449
+        }
450
+        int month = today.getMonthValue();
451
+        int day = today.getDayOfMonth();
452
+
453
+        Long time = null;
454
+        try {
455
+            time = formatter.parse(year + "-" + month + "-" + day).getTime();
456
+        } catch (ParseException e) {
457
+            e.printStackTrace();
458
+        }
459
+
460
+        // 开卡
461
+        Map<String,Object> parOpenCard = Maps.newHashMap();
462
+        parOpenCard.put("cardAndPerson",cardIdAndHKUserID);
463
+        parOpenCard.put("startTime",System.currentTimeMillis());
464
+        parOpenCard.put("endTime",time);
465
+        JSONObject openCardJSON = JSONObject.parseObject(HKOpenApi.openCard(parOpenCard));
466
+        int code = (int) openCardJSON.get("errorCode");
467
+        if (code == 0) {
468
+            response.addSuccess("操作成功!");
469
+        }else {
470
+            String errorMessage = String.valueOf(openCardJSON.get("errorMessage"));
471
+            response.addError(errorMessage);
472
+            log.error("开卡失败! {}",errorMessage);
473
+            throw new RuntimeException(errorMessage);
474
+        }
475
+
356 476
         return response;
357 477
     }
358 478
 

+ 16
- 4
CODE/smart-community/app-api/src/main/resources/mapper/TaUserMapper.xml Прегледај датотеку

@@ -20,11 +20,12 @@
20 20
     <result column="create_date" property="createDate" jdbcType="TIMESTAMP" />
21 21
     <result column="update_user" property="updateUser" jdbcType="INTEGER" />
22 22
     <result column="update_date" property="updateDate" jdbcType="TIMESTAMP" />
23
+    <result column="hk_user_id" property="hkUserId" javaType="INTEGER" />
23 24
   </resultMap>
24 25
   <sql id="Base_Column_List" >
25 26
     id, community_id, building_owner_info_id, head_portrait, user_name, login_name, login_password, 
26 27
     email, gender, status, remark, parent_id, accept_agreement_status, verify_status,
27
-    create_user, create_date, update_user, update_date
28
+    create_user, create_date, update_user, update_date,hk_user_id
28 29
   </sql>
29 30
   <select id="selectByPrimaryKey" resultMap="BaseResultMap" parameterType="java.lang.Integer" >
30 31
     select
@@ -42,14 +43,15 @@
42 43
       login_password, email, gender,
43 44
       status, remark, parent_id,
44 45
       accept_agreement_status, verify_status, create_user,
45
-      create_date, update_user, update_date
46
+      create_date, update_user, update_date, hk_user_id
46 47
       )
47 48
     values (#{id,jdbcType=INTEGER}, #{communityId,jdbcType=INTEGER}, #{buildingOwnerInfoId,jdbcType=INTEGER},
48 49
       #{headPortrait,jdbcType=VARCHAR}, #{userName,jdbcType=VARCHAR}, #{loginName,jdbcType=VARCHAR},
49 50
       #{loginPassword,jdbcType=VARCHAR}, #{email,jdbcType=VARCHAR}, #{gender,jdbcType=CHAR},
50 51
       #{status,jdbcType=CHAR}, #{remark,jdbcType=VARCHAR}, #{parentId,jdbcType=INTEGER},
51 52
       #{acceptAgreementStatus,jdbcType=CHAR}, #{verifyStatus,jdbcType=CHAR}, #{createUser,jdbcType=INTEGER},
52
-      #{createDate,jdbcType=TIMESTAMP}, #{updateUser,jdbcType=INTEGER}, #{updateDate,jdbcType=TIMESTAMP}
53
+      #{createDate,jdbcType=TIMESTAMP}, #{updateUser,jdbcType=INTEGER}, #{updateDate,jdbcType=TIMESTAMP},
54
+      #{hkUserId,jdbcType=INTEGER}
53 55
       )
54 56
   </insert>
55 57
   <insert id="insertSelective" useGeneratedKeys="true" keyProperty="id" parameterType="com.community.huiju.model.TaUser" >
@@ -109,6 +111,9 @@
109 111
       <if test="updateDate != null" >
110 112
         update_date,
111 113
       </if>
114
+      <if test="hkUserId != null">
115
+        hk_user_id,
116
+      </if>
112 117
     </trim>
113 118
     <trim prefix="values (" suffix=")" suffixOverrides="," >
114 119
       <if test="id != null" >
@@ -165,6 +170,9 @@
165 170
       <if test="updateDate != null" >
166 171
         #{updateDate,jdbcType=TIMESTAMP},
167 172
       </if>
173
+      <if test="hkUserId != null">
174
+        #{hkUserId,jdbcType=INTEGER},
175
+      </if>
168 176
     </trim>
169 177
   </insert>
170 178
   <update id="updateByPrimaryKeySelective" parameterType="com.community.huiju.model.TaUser" >
@@ -221,6 +229,9 @@
221 229
       <if test="updateDate != null" >
222 230
         update_date = #{updateDate,jdbcType=TIMESTAMP},
223 231
       </if>
232
+      <if test="hkUserId != null">
233
+        hk_user_id = #{hkUserId,jdbcType=INTEGER},
234
+      </if>
224 235
     </set>
225 236
     where id = #{id,jdbcType=INTEGER}
226 237
   </update>
@@ -242,7 +253,8 @@
242 253
       create_user = #{createUser,jdbcType=INTEGER},
243 254
       create_date = #{createDate,jdbcType=TIMESTAMP},
244 255
       update_user = #{updateUser,jdbcType=INTEGER},
245
-      update_date = #{updateDate,jdbcType=TIMESTAMP}
256
+      update_date = #{updateDate,jdbcType=TIMESTAMP},
257
+      hk_user_id = #{hkUserId,jdbcType=INTEGER}
246 258
     where id = #{id,jdbcType=INTEGER}
247 259
   </update>
248 260
 

+ 3
- 0
CODE/smart-community/community-common/src/main/java/com/community/commom/constant/Constant.java Прегледај датотеку

@@ -92,4 +92,7 @@ public class Constant {
92 92
 
93 93
     /**图片服务类型**/
94 94
     public static final String SERVICE = "service";
95
+
96
+    /** 添加用户所对应的部门 住户 **/
97
+    public static final String DEPT_RESIDENTS = "测试";
95 98
 }