Commit 533102565aaa8093fc7bec7f246cba165b20cf5d
1 parent
4fd85d85
Exists in
master
大华项目代码提交
Showing
4 changed files
with
100 additions
and
78 deletions
Show diff stats
cloud/dahua/src/main/java/com/example/dahua/MyTask.java
... | ... | @@ -443,12 +443,13 @@ public class MyTask implements ApplicationRunner { |
443 | 443 | checkIn.setFlag(eventType == 2 ? 1 : 0); |
444 | 444 | checkIn.setCheckTime(eventTime); |
445 | 445 | searchMapper.checkIn(checkIn); |
446 | + | |
446 | 447 | if (checkIn.getIsSuccess() == 1) { |
447 | 448 | //考勤成功 |
448 | 449 | String content = "考勤成功!,设备:" + deviceId + "卡号:" + cardNo + "方向:" + (eventType == 1 ? "进门" : "出门") + "______" + eventTime; |
449 | 450 | |
450 | 451 | //开始推送看板 |
451 | - sendMQMess(content,deviceId,eventType); | |
452 | + sendMQMess(deviceId,cardNo,eventType); | |
452 | 453 | |
453 | 454 | //记录学生考勤签到记录 |
454 | 455 | FileUtils.getInstance().writeLogs(content, FileUtils.qiandaoSuccess); | ... | ... |
cloud/dahua/src/main/java/com/example/dahua/async/SendUserInfoTask.java
... | ... | @@ -328,7 +328,7 @@ public class SendUserInfoTask { |
328 | 328 | |
329 | 329 | String studentType = userDao.getStudentType(attendanceBean.getSchool_id(),sendRecordBean.getCustomerid()); |
330 | 330 | //通道号 |
331 | - int channel = analysisPermission(Integer.parseInt(attendanceBean.getSchool_id()),studentType); | |
331 | + String channel = analysisPermission(Integer.parseInt(attendanceBean.getSchool_id()),studentType); | |
332 | 332 | |
333 | 333 | /** |
334 | 334 | * 注:用户下发逻辑 |
... | ... | @@ -370,10 +370,12 @@ public class SendUserInfoTask { |
370 | 370 | log.info("=================开始执行下发人脸及卡号任务================="); |
371 | 371 | //卡号取反 |
372 | 372 | String cardNum =""; |
373 | - if(attendanceBean.getClint_id().startsWith("ytj")&&Integer.parseInt(attendanceBean.getSchool_id())!=126&&Integer.parseInt(attendanceBean.getSchool_id())!=393) | |
374 | - {cardNum = student_num;} | |
375 | - else | |
376 | - {cardNum = cardNo(student_num);} | |
373 | + if(attendanceBean.getClint_id().startsWith("ytj")&&Integer.parseInt(attendanceBean.getSchool_id())!=126 | |
374 | + &&Integer.parseInt(attendanceBean.getSchool_id())!=393) { | |
375 | + cardNum = student_num; | |
376 | + } else { | |
377 | + cardNum = cardNo(student_num); | |
378 | + } | |
377 | 379 | //bCardFlags = true, 存在下发记录,则存在下发记录集编号,执行修改卡、人脸信息 |
378 | 380 | if (bCardFlags ==1) { |
379 | 381 | //修改设备卡信息 |
... | ... | @@ -510,7 +512,7 @@ public class SendUserInfoTask { |
510 | 512 | * @param studentType |
511 | 513 | * @return |
512 | 514 | */ |
513 | - private int analysisPermission(int schoolId, String studentType){ | |
515 | + private String analysisPermission(int schoolId, String studentType){ | |
514 | 516 | List<PermissionFaceBean> permissionFaceBeans = permissFaceService.getPermissionList(schoolId); |
515 | 517 | String channel =""; |
516 | 518 | if(permissionFaceBeans.size()>0){ |
... | ... | @@ -523,22 +525,24 @@ public class SendUserInfoTask { |
523 | 525 | channel= permissionFaceBean.getChannel(); |
524 | 526 | } |
525 | 527 | } |
528 | + if(StringUtils.isEmpty(channel)){ | |
529 | + log.warn("未获取到学校权限通道号!"); | |
530 | + return ""; | |
531 | + } | |
532 | + return channel; | |
526 | 533 | } |
527 | - if(StringUtils.isEmpty(channel)){ | |
528 | - log.warn("未获取到学校权限通道号!"); | |
529 | - return 0; | |
530 | - } | |
531 | - return Integer.parseInt(channel); | |
534 | + return channel; | |
532 | 535 | } |
533 | 536 | |
534 | - | |
535 | 537 | public static void main(String[] args) { |
536 | - String json ="{\"studentType\":\"1,2\",\"deviceIds\":[\"aaa\"],\"weekDays\":[{\"weekTimes\":[{\"startTime\":\"12:00\",\"endTime\":\"06:00\"}],\"sex\":\"1,2\",\"weekDay\":\"0,1,2\"}]}"; | |
537 | - PermissionBean permissionBean = objectMapper.fromJson(json,PermissionBean.class); | |
538 | - String studentType = permissionBean.getStudentType(); | |
539 | - if(studentType.indexOf("1")!=-1){ | |
540 | - System.out.println(true); | |
541 | - } | |
538 | +// String json ="{\"studentType\":\"1,2\",\"deviceIds\":[\"aaa\"],\"weekDays\":[{\"weekTimes\":[{\"startTime\":\"12:00\",\"endTime\":\"06:00\"}],\"sex\":\"1,2\",\"weekDay\":\"0,1,2\"}]}"; | |
539 | +// PermissionBean permissionBean = objectMapper.fromJson(json,PermissionBean.class); | |
540 | +// String studentType = permissionBean.getStudentType(); | |
541 | +// if(studentType.indexOf("1")!=-1){ | |
542 | +// System.out.println(true); | |
543 | +// } | |
544 | + String channel =""; | |
545 | + System.out.println(Integer.parseInt(channel)); | |
542 | 546 | } |
543 | 547 | |
544 | 548 | /** | ... | ... |
cloud/dahua/src/main/java/com/example/dahua/enums/EnumSendFaceErrorType.java
... | ... | @@ -9,6 +9,7 @@ import org.apache.commons.lang.StringUtils; |
9 | 9 | */ |
10 | 10 | public enum EnumSendFaceErrorType { |
11 | 11 | |
12 | + CHECK_DATA_ERR_21("21", "对返回数据的校验出错"), | |
12 | 13 | EXCEED_SIZE_1028("1028", "图片大小超限"), |
13 | 14 | NOT_EXIST_USER_1029("1029", "用户ID不存在"), |
14 | 15 | EXTRACT_ERROR_1030("1030", "照片特征值提取失败"), | ... | ... |
cloud/dahua/src/main/java/com/example/dahua/module/GateModule.java
... | ... | @@ -13,6 +13,7 @@ import com.sun.jna.Memory; |
13 | 13 | import com.sun.jna.Pointer; |
14 | 14 | import com.sun.jna.ptr.IntByReference; |
15 | 15 | import lombok.extern.slf4j.Slf4j; |
16 | +import org.springframework.util.StringUtils; | |
16 | 17 | |
17 | 18 | import javax.imageio.ImageIO; |
18 | 19 | import java.awt.image.BufferedImage; |
... | ... | @@ -202,91 +203,97 @@ public class GateModule { |
202 | 203 | // return true; |
203 | 204 | } |
204 | 205 | |
206 | + /** | |
207 | + * 门禁卡记录集信息 | |
208 | + */ | |
209 | + private static final NET_RECORDSET_ACCESS_CTL_CARD insertCardInfo = new NET_RECORDSET_ACCESS_CTL_CARD(); | |
210 | + /** | |
211 | + * 记录集操作 | |
212 | + */ | |
213 | + private static final NET_CTRL_RECORDSET_INSERT_PARAM insert = new NET_CTRL_RECORDSET_INSERT_PARAM(); | |
205 | 214 | |
206 | 215 | public static synchronized int insertCard(String cardNo, String userId, String cardName, String cardPwd, |
207 | 216 | int cardStatus, int cardType, int useTimes, int isFirstEnter, |
208 | 217 | int isValid, String startValidTime, String endValidTime, LLong lLong, |
209 | - String userType,int channel) { | |
210 | - /** | |
211 | - * 门禁卡记录集信息 | |
212 | - */ | |
213 | - NET_RECORDSET_ACCESS_CTL_CARD accessCardInfo = new NET_RECORDSET_ACCESS_CTL_CARD(); | |
214 | - | |
218 | + String userType,String channel) { | |
215 | 219 | // 卡号 |
216 | - System.arraycopy(cardNo.getBytes(), 0, accessCardInfo.szCardNo, 0, cardNo.getBytes().length); | |
220 | + System.arraycopy(cardNo.getBytes(), 0, insertCardInfo.szCardNo, 0, cardNo.getBytes().length); | |
217 | 221 | |
218 | 222 | // 用户ID |
219 | - System.arraycopy(userId.getBytes(), 0, accessCardInfo.szUserID, 0, userId.getBytes().length); | |
223 | + System.arraycopy(userId.getBytes(), 0, insertCardInfo.szUserID, 0, userId.getBytes().length); | |
220 | 224 | |
221 | 225 | // 卡名(设备上显示的姓名) |
222 | 226 | try { |
223 | - System.arraycopy(cardName.getBytes("GBK"), 0, accessCardInfo.szCardName, 0, cardName.getBytes("GBK").length); | |
227 | + System.arraycopy(cardName.getBytes("GBK"), 0, insertCardInfo.szCardName, 0, cardName.getBytes("GBK").length); | |
224 | 228 | } catch (UnsupportedEncodingException e) { |
225 | 229 | e.printStackTrace(); |
226 | 230 | } |
227 | 231 | |
228 | 232 | // 卡密码 |
229 | - System.arraycopy(cardPwd.getBytes(), 0, accessCardInfo.szPsw, 0, cardPwd.getBytes().length); | |
233 | + System.arraycopy(cardPwd.getBytes(), 0, insertCardInfo.szPsw, 0, cardPwd.getBytes().length); | |
230 | 234 | |
231 | 235 | //-- 设置开门权限 |
232 | - accessCardInfo.nDoorNum = 2; | |
233 | - accessCardInfo.sznDoors[0] = 0; | |
234 | - accessCardInfo.sznDoors[1] = 1; | |
235 | - accessCardInfo.nTimeSectionNum = 2; // 与门数对应 | |
236 | + insertCardInfo.nDoorNum = 2; | |
237 | + insertCardInfo.sznDoors[0] = 0; | |
238 | + insertCardInfo.sznDoors[1] = 1; | |
239 | + insertCardInfo.nTimeSectionNum = 2; // 与门数对应 | |
236 | 240 | if (userType.equals("1")){ |
237 | - accessCardInfo.sznTimeSectionNo[0] = 255; // 表示第一个门全天有效 | |
238 | - accessCardInfo.sznTimeSectionNo[1] = 255; // 表示第二个门全天有效 | |
241 | + insertCardInfo.sznTimeSectionNo[0] = 255; // 表示第一个门全天有效 | |
242 | + insertCardInfo.sznTimeSectionNo[1] = 255; // 表示第二个门全天有效 | |
239 | 243 | }else { |
240 | - accessCardInfo.sznTimeSectionNo[0] = channel; // 表示第一个门全天有效 | |
241 | - accessCardInfo.sznTimeSectionNo[1] = channel; // 表示第二个门全天有效 | |
244 | + //此学校不存在权限设置默认为全天有效 | |
245 | + if(StringUtils.isEmpty(channel)){ | |
246 | + accessCardInfo.sznTimeSectionNo[0] = 255; // 表示第一个门全天有效 | |
247 | + accessCardInfo.sznTimeSectionNo[1] = 255; // 表示第二个门全天有效 | |
248 | + }else{ | |
249 | + accessCardInfo.sznTimeSectionNo[0] = Integer.parseInt(channel); // 表示第一个门全天有效 | |
250 | + accessCardInfo.sznTimeSectionNo[1] = Integer.parseInt(channel); // 表示第二个门全天有效 | |
251 | + } | |
242 | 252 | } |
243 | 253 | |
244 | 254 | // 卡状态 |
245 | - accessCardInfo.emStatus = cardStatus; | |
255 | + insertCardInfo.emStatus = cardStatus; | |
246 | 256 | |
247 | 257 | // 卡类型 |
248 | - accessCardInfo.emType = cardType; | |
258 | + insertCardInfo.emType = cardType; | |
249 | 259 | |
250 | 260 | // 使用次数 |
251 | - accessCardInfo.nUserTime = useTimes; | |
261 | + insertCardInfo.nUserTime = useTimes; | |
252 | 262 | |
253 | 263 | // 是否首卡 |
254 | - accessCardInfo.bFirstEnter = isFirstEnter; | |
264 | + insertCardInfo.bFirstEnter = isFirstEnter; | |
255 | 265 | |
256 | 266 | // 是否有效 |
257 | - accessCardInfo.bIsValid = isValid; | |
267 | + insertCardInfo.bIsValid = isValid; | |
258 | 268 | |
259 | 269 | // 有效开始时间 |
260 | 270 | String[] startTimes = startValidTime.split(" "); |
261 | - accessCardInfo.stuValidStartTime.dwYear = Integer.parseInt(startTimes[0].split("-")[0]); | |
262 | - accessCardInfo.stuValidStartTime.dwMonth = Integer.parseInt(startTimes[0].split("-")[1]); | |
263 | - accessCardInfo.stuValidStartTime.dwDay = Integer.parseInt(startTimes[0].split("-")[2]); | |
264 | - accessCardInfo.stuValidStartTime.dwHour = Integer.parseInt(startTimes[1].split(":")[0]); | |
265 | - accessCardInfo.stuValidStartTime.dwMinute = Integer.parseInt(startTimes[1].split(":")[1]); | |
266 | - accessCardInfo.stuValidStartTime.dwSecond = Integer.parseInt(startTimes[01].split(":")[2]); | |
271 | + insertCardInfo.stuValidStartTime.dwYear = Integer.parseInt(startTimes[0].split("-")[0]); | |
272 | + insertCardInfo.stuValidStartTime.dwMonth = Integer.parseInt(startTimes[0].split("-")[1]); | |
273 | + insertCardInfo.stuValidStartTime.dwDay = Integer.parseInt(startTimes[0].split("-")[2]); | |
274 | + insertCardInfo.stuValidStartTime.dwHour = Integer.parseInt(startTimes[1].split(":")[0]); | |
275 | + insertCardInfo.stuValidStartTime.dwMinute = Integer.parseInt(startTimes[1].split(":")[1]); | |
276 | + insertCardInfo.stuValidStartTime.dwSecond = Integer.parseInt(startTimes[01].split(":")[2]); | |
267 | 277 | |
268 | 278 | // 有效结束时间 |
269 | 279 | String[] endTimes = endValidTime.split(" "); |
270 | - accessCardInfo.stuValidEndTime.dwYear = Integer.parseInt(endTimes[0].split("-")[0]); | |
271 | - accessCardInfo.stuValidEndTime.dwMonth = Integer.parseInt(endTimes[0].split("-")[1]); | |
272 | - accessCardInfo.stuValidEndTime.dwDay = Integer.parseInt(endTimes[0].split("-")[2]); | |
273 | - accessCardInfo.stuValidEndTime.dwHour = Integer.parseInt(endTimes[1].split(":")[0]); | |
274 | - accessCardInfo.stuValidEndTime.dwMinute = Integer.parseInt(endTimes[1].split(":")[1]); | |
275 | - accessCardInfo.stuValidEndTime.dwSecond = Integer.parseInt(endTimes[1].split(":")[2]); | |
280 | + insertCardInfo.stuValidEndTime.dwYear = Integer.parseInt(endTimes[0].split("-")[0]); | |
281 | + insertCardInfo.stuValidEndTime.dwMonth = Integer.parseInt(endTimes[0].split("-")[1]); | |
282 | + insertCardInfo.stuValidEndTime.dwDay = Integer.parseInt(endTimes[0].split("-")[2]); | |
283 | + insertCardInfo.stuValidEndTime.dwHour = Integer.parseInt(endTimes[1].split(":")[0]); | |
284 | + insertCardInfo.stuValidEndTime.dwMinute = Integer.parseInt(endTimes[1].split(":")[1]); | |
285 | + insertCardInfo.stuValidEndTime.dwSecond = Integer.parseInt(endTimes[1].split(":")[2]); | |
286 | + | |
276 | 287 | |
277 | - /** | |
278 | - * 记录集操作 | |
279 | - */ | |
280 | - NET_CTRL_RECORDSET_INSERT_PARAM insert = new NET_CTRL_RECORDSET_INSERT_PARAM(); | |
281 | 288 | insert.stuCtrlRecordSetInfo.emType = EM_NET_RECORD_TYPE.NET_RECORD_ACCESSCTLCARD; // 记录集类型 |
282 | - insert.stuCtrlRecordSetInfo.pBuf = accessCardInfo.getPointer(); | |
289 | + insert.stuCtrlRecordSetInfo.pBuf = insertCardInfo.getPointer(); | |
283 | 290 | |
284 | - accessCardInfo.write(); | |
291 | + insertCardInfo.write(); | |
285 | 292 | insert.write(); |
286 | 293 | boolean bRet = LoginModule.netsdk.CLIENT_ControlDevice(lLong, |
287 | 294 | CtrlType.CTRLTYPE_CTRL_RECORDSET_INSERT, insert.getPointer(), 5000); |
288 | 295 | insert.read(); |
289 | - accessCardInfo.read(); | |
296 | + insertCardInfo.read(); | |
290 | 297 | |
291 | 298 | if(!bRet) { |
292 | 299 | String ret=ToolKits.getErrorCodePrint(); |
... | ... | @@ -307,8 +314,6 @@ public class GateModule { |
307 | 314 | log.info("添加卡信息成功,卡信息记录集编号 : "+ insert.stuCtrlRecordSetResult.nRecNo); |
308 | 315 | return insert.stuCtrlRecordSetResult.nRecNo; |
309 | 316 | } |
310 | - | |
311 | -// return true; | |
312 | 317 | } |
313 | 318 | |
314 | 319 | public static void main(String[] args) { |
... | ... | @@ -709,7 +714,7 @@ public class GateModule { |
709 | 714 | public static int modifyCard(int recordNo, String cardNo, String userId, String cardName, String cardPwd, |
710 | 715 | int cardStatus, int cardType, int useTimes, int isFirstEnter, |
711 | 716 | int isValid, String startValidTime, String endValidTime, LLong lLong, |
712 | - String userType,int channel) { | |
717 | + String userType,String channel) { | |
713 | 718 | /** |
714 | 719 | * 门禁卡记录集信息 |
715 | 720 | */ |
... | ... | @@ -743,8 +748,14 @@ public class GateModule { |
743 | 748 | accessCardInfo.sznTimeSectionNo[0] = 255; // 表示第一个门全天有效 |
744 | 749 | accessCardInfo.sznTimeSectionNo[1] = 255; // 表示第二个门全天有效 |
745 | 750 | }else { |
746 | - accessCardInfo.sznTimeSectionNo[0] = channel; // 表示第一个门全天有效 | |
747 | - accessCardInfo.sznTimeSectionNo[1] = channel; // 表示第二个门全天有效 | |
751 | + //此学校不存在权限设置默认为全天有效 | |
752 | + if(StringUtils.isEmpty(channel)){ | |
753 | + accessCardInfo.sznTimeSectionNo[0] = 255; // 表示第一个门全天有效 | |
754 | + accessCardInfo.sznTimeSectionNo[1] = 255; // 表示第二个门全天有效 | |
755 | + }else{ | |
756 | + accessCardInfo.sznTimeSectionNo[0] = Integer.parseInt(channel); // 表示第一个门全天有效 | |
757 | + accessCardInfo.sznTimeSectionNo[1] = Integer.parseInt(channel); // 表示第二个门全天有效 | |
758 | + } | |
748 | 759 | } |
749 | 760 | |
750 | 761 | // 卡状态 |
... | ... | @@ -1160,6 +1171,9 @@ public class GateModule { |
1160 | 1171 | return true; |
1161 | 1172 | } |
1162 | 1173 | |
1174 | + private static final NET_IN_ADD_FACE_INFO stIn = new NET_IN_ADD_FACE_INFO(); | |
1175 | + private static final NET_OUT_ADD_FACE_INFO stOut = new NET_OUT_ADD_FACE_INFO(); | |
1176 | + | |
1163 | 1177 | public static synchronized int addFaceInfo(String userId, Memory memory, LLong lLong) { |
1164 | 1178 | int emType = EM_FACEINFO_OPREATE_TYPE.EM_FACEINFO_OPREATE_ADD; // 添加 |
1165 | 1179 | |
... | ... | @@ -1195,7 +1209,7 @@ public class GateModule { |
1195 | 1209 | } else { |
1196 | 1210 | String ret=ToolKits.getErrorCodePrint(); |
1197 | 1211 | String number = ret.substring(ret.indexOf("|") + 1, ret.indexOf(")")); |
1198 | - log.error("添加信息失败,错误信息:{} ,错误码:{} ",ret,number); | |
1212 | + log.error("添加人脸失败,错误信息:{} ,错误码:{} ",ret,number); | |
1199 | 1213 | //照片已存在 |
1200 | 1214 | if(number.equals(EnumSendFaceErrorType.EXIST_IMG_1031.code)){ |
1201 | 1215 | return modifyFaceInfo(userId, memory, lLong); |
... | ... | @@ -1259,6 +1273,8 @@ public class GateModule { |
1259 | 1273 | return true; |
1260 | 1274 | } |
1261 | 1275 | |
1276 | + private static final NET_IN_UPDATE_FACE_INFO stInEdit = new NET_IN_UPDATE_FACE_INFO(); | |
1277 | + private static final NET_OUT_UPDATE_FACE_INFO stOutEdit = new NET_OUT_UPDATE_FACE_INFO(); | |
1262 | 1278 | |
1263 | 1279 | public static int modifyFaceInfo(String userId, Memory memory, LLong lLong) { |
1264 | 1280 | int emType = EM_FACEINFO_OPREATE_TYPE.EM_FACEINFO_OPREATE_UPDATE; // 修改 |
... | ... | @@ -1266,30 +1282,30 @@ public class GateModule { |
1266 | 1282 | /** |
1267 | 1283 | * 入参 |
1268 | 1284 | */ |
1269 | - NET_IN_UPDATE_FACE_INFO stIn = new NET_IN_UPDATE_FACE_INFO(); | |
1285 | +// NET_IN_UPDATE_FACE_INFO stInEdit = new NET_IN_UPDATE_FACE_INFO(); | |
1270 | 1286 | |
1271 | 1287 | // 用户ID |
1272 | - System.arraycopy(userId.getBytes(), 0, stIn.szUserID, 0, userId.getBytes().length); | |
1288 | + System.arraycopy(userId.getBytes(), 0, stInEdit.szUserID, 0, userId.getBytes().length); | |
1273 | 1289 | |
1274 | 1290 | // 人脸照片个数 |
1275 | - stIn.stuFaceInfo.nFacePhoto = 1; | |
1291 | + stInEdit.stuFaceInfo.nFacePhoto = 1; | |
1276 | 1292 | |
1277 | 1293 | // 每张图片的大小 |
1278 | - stIn.stuFaceInfo.nFacePhotoLen[0] = (int) memory.size(); | |
1294 | + stInEdit.stuFaceInfo.nFacePhotoLen[0] = (int) memory.size(); | |
1279 | 1295 | |
1280 | 1296 | // 人脸照片数据,大小不超过100K, 图片格式为jpg |
1281 | - stIn.stuFaceInfo.pszFacePhotoArr[0].pszFacePhoto = memory; | |
1297 | + stInEdit.stuFaceInfo.pszFacePhotoArr[0].pszFacePhoto = memory; | |
1282 | 1298 | |
1283 | 1299 | /** |
1284 | 1300 | * 出参 |
1285 | 1301 | */ |
1286 | - NET_OUT_UPDATE_FACE_INFO stOut = new NET_OUT_UPDATE_FACE_INFO(); | |
1302 | +// NET_OUT_UPDATE_FACE_INFO stOut = new NET_OUT_UPDATE_FACE_INFO(); | |
1287 | 1303 | |
1288 | - stIn.write(); | |
1289 | - stOut.write(); | |
1290 | - boolean bRet = LoginModule.netsdk.CLIENT_FaceInfoOpreate(lLong, emType, stIn.getPointer(), stOut.getPointer(), 5000); | |
1291 | - stIn.read(); | |
1292 | - stOut.read(); | |
1304 | + stInEdit.write(); | |
1305 | + stOutEdit.write(); | |
1306 | + boolean bRet = LoginModule.netsdk.CLIENT_FaceInfoOpreate(lLong, emType, stInEdit.getPointer(), stOutEdit.getPointer(), 5000); | |
1307 | + stInEdit.read(); | |
1308 | + stOutEdit.read(); | |
1293 | 1309 | Map<String,String> map = new HashMap(); |
1294 | 1310 | if (bRet) { |
1295 | 1311 | log.info("修改人脸成功!"); | ... | ... |