فهرست منبع

1、用户下发人脸、修改人脸

wenxgdev 5 سال پیش
والد
کامیت
d9fc5a62e7

+ 1 - 1
sptg-device/sptg-device-biz/src/main/java/com/sptg/device/biz/controller/InstructPublishLogController.java

@@ -36,7 +36,6 @@ public class InstructPublishLogController implements InstructPublishLogFeign {
         instructPublishLog.setErrorMsg(publishLog.getErrorMsg());
         instructPublishLog.setLastModifyTime(new Date());
         this.instructPublishLogService.updateById(instructPublishLog);
-        System.out.println("【callback】" + JSONUtil.toJsonStr(instructPublishLog));
         return ResultBean.ok(true);
     }
 
@@ -61,6 +60,7 @@ public class InstructPublishLogController implements InstructPublishLogFeign {
         instructPublishLog.setHandleStatus(publishLog.getHandleStatus());
         instructPublishLog.setStatus(publishLog.getStatus());
         instructPublishLog.setLastModifyTime(new Date());
+        instructPublishLog.setErrorMsg(publishLog.getErrorMsg());
         this.instructPublishLogService.updateById(instructPublishLog);
         return ResultBean.ok(true);
     }

+ 1 - 1
sptg-estate/sptg-estate-api/src/main/java/com/sptg/estate/api/entity/User.java

@@ -188,7 +188,7 @@ public class User extends BaseUser {
     private String entryImgUri;
 
     /**
-     * 人脸启用状态:0-待启用 1-已启用 2-已禁用
+     * 人脸启用状态:0-待启用 1-已启用 2-已禁用,3-下发异常
      */
     @TableField(value = "i_face_enable")
     private Integer faceEnable;

+ 3 - 0
sptg-estate/sptg-estate-api/src/main/java/com/sptg/estate/api/feigns/UserFeign.java

@@ -418,4 +418,7 @@ public interface UserFeign {
 
     @PostMapping(value = "/user/findFaceUnEnable")
     Page<User> findFaceUnEnable(@RequestBody UserDto dto);
+
+    @PostMapping(value = "/user/zh/userFacePushHandle")
+    void userFacePushHandle(Map<String, Object> deviceRequest);
 }

+ 5 - 0
sptg-estate/sptg-estate-api/src/main/java/com/sptg/estate/api/feigns/fallback/UserFeignFallbackFactory.java

@@ -290,6 +290,11 @@ public class UserFeignFallbackFactory implements FallbackFactory<UserFeign> {
                 log.error(cause.getMessage(),cause);
                 return null;
             }
+
+            @Override
+            public void userFacePushHandle(Map<String, Object> deviceRequest) {
+
+            }
         };
     }
 }

+ 6 - 0
sptg-estate/sptg-estate-biz/src/main/java/com/sptg/estate/biz/controller/UserController.java

@@ -374,6 +374,12 @@ public class UserController implements UserFeign {
         return faceUnEnable;
     }
 
+    @Override
+    @PostMapping(value = "/user/zh/userFacePushHandle")
+    public void userFacePushHandle(@RequestBody Map<String, Object> deviceRequest) {
+        this.userServiceInterface.userFacePushHandle(deviceRequest);
+    }
+
     /**
      * 同步亲邻智能物联网平台住户数据
      * @return

+ 2 - 0
sptg-estate/sptg-estate-biz/src/main/java/com/sptg/estate/biz/service/UserServiceInterface.java

@@ -335,4 +335,6 @@ public interface UserServiceInterface extends IService<User> {
     List<User> getListByCondition(UserDto dto);
 
     Page<User> findFaceUnEnable(UserDto dto);
+
+    void userFacePushHandle(Map<String, Object> deviceRequest);
 }

+ 4 - 4
sptg-estate/sptg-estate-biz/src/main/java/com/sptg/estate/biz/service/impl/BaseUserServiceImpl.java

@@ -74,7 +74,7 @@ public class BaseUserServiceImpl implements BaseUserServiceInterface {
         BaseUser user = new BaseUser();
         if (userId.length() > OperationConstant.TWO){
             //  通过字符串截取得到Id字符串  userId = s_123123 || u_123123 || a_123123 || d_123123
-            String stringId = userId.substring(OperationConstant.THREE);
+            String stringId = userId.substring(OperationConstant.TWO);
             long id;
             try {
                 //访客
@@ -96,11 +96,11 @@ public class BaseUserServiceImpl implements BaseUserServiceInterface {
 
 
                 id = Long.parseLong(stringId);
-                if (userId.startsWith(UserFlagConstant.SERVER_USER_NUMBER_FLAG)){
+                if (userId.startsWith(UserFlagConstant.SERVER_USER_FLAG)){
                     //  获取服务人员信息
                     user = this.serverUserServiceInterface.selectById(id);
                     user.setIsAdmin(OperationConstant.ONE);
-                }else if (userId.startsWith(UserFlagConstant.USER_NUMBER_FLAG)){
+                }else if (userId.startsWith(UserFlagConstant.USER_FLAG)){
                     //  获取住户的信息
                     User houseMaster = this.userServiceInterface.selectById(id);
                     if(houseMaster != null){
@@ -108,7 +108,7 @@ public class BaseUserServiceImpl implements BaseUserServiceInterface {
                     }
 //                    user.setRoomName(houseMaster.getRoomName());
                     user.setIsAdmin(OperationConstant.TWO);
-                }else if (userId.startsWith(UserFlagConstant.ADMIN_USER_NUMBER_FLAG)){
+                }else if (userId.startsWith(UserFlagConstant.ADMIN_USER_FLAG)){
                     //  获取后台管理员信息
                     Account account = this.accountFeign.getById(id);
                     if (null == account){

+ 38 - 7
sptg-estate/sptg-estate-biz/src/main/java/com/sptg/estate/biz/service/impl/UserServiceImpl.java

@@ -1,5 +1,8 @@
 package com.sptg.estate.biz.service.impl;
 
+import cn.hutool.json.JSONArray;
+import cn.hutool.json.JSONObject;
+import cn.hutool.json.JSONUtil;
 import com.baomidou.mybatisplus.enums.SqlLike;
 import com.baomidou.mybatisplus.mapper.EntityWrapper;
 import com.baomidou.mybatisplus.mapper.Wrapper;
@@ -43,6 +46,7 @@ import org.springframework.data.redis.core.RedisTemplate;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.Assert;
+import org.springframework.web.filter.OncePerRequestFilter;
 
 import java.io.Serializable;
 import java.text.SimpleDateFormat;
@@ -281,7 +285,7 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us
                             map.put("imgSrc",imgHost + userDto.getImageUri());
                             userFaceList.add(map);
                             UserInfoDto dto = new UserInfoDto();
-                            dto.setId(UserFlagConstant.USER_NUMBER_FLAG + userDto.getId());
+                            dto.setId(UserFlagConstant.USER_FLAG + userDto.getId());
                             dto.setName(userDto.getName());
                             dto.setFaceCodeList(userFaceList);
                             dto.setBeginDate(userDto.getFaceBeginDate());
@@ -355,8 +359,13 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us
                     task.setUnitId(userDto.getUnitId());
                     task.setXqId(userDto.getResidentialId());
                     task.setData(dto);
+                    Integer faceEnable = user.getFaceEnable();
+                    Integer operType = OperationConstant.ONE;
+                    if(faceEnable == 1){
+                        operType = OperationConstant.TWO;
+                    }
                     //下发更新人脸
-                    this.deviceFeign.pushUserFaceToUniversalDevices(task, OperationConstant.TWO , new HashMap<>());
+                    this.deviceFeign.pushUserFaceToUniversalDevices(task, operType , new HashMap<>());
                 }
             }
             return new ResultBean<>(ResultEnum.SUCCESS, true);
@@ -862,7 +871,7 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us
         if(isDelete){
             //  下发人脸
             UserInfoDto dto = new UserInfoDto();
-            dto.setId(UserFlagConstant.USER_NUMBER_FLAG + user.getId());
+            dto.setId(UserFlagConstant.USER_FLAG + user.getId());
             DispatchTask task = new DispatchTask();
             task.setXqId(user.getResidentialId());
             task.setUnitId(user.getUnitId());
@@ -883,7 +892,7 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us
             userFaceList.add(map);
             //  下发人脸
             UserInfoDto dto = new UserInfoDto();
-            dto.setId(UserFlagConstant.USER_NUMBER_FLAG + user.getId());
+            dto.setId(UserFlagConstant.USER_FLAG + user.getId());
             dto.setName(user.getName());
             dto.setFaceCodeList(userFaceList);
             dto.setBeginDate(user.getFaceBeginDate());
@@ -894,7 +903,11 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us
             task.setData(dto);
             Integer deviceAccessType = userDto.getDeviceAccessType();
             if(deviceAccessType != null && deviceAccessType.equals(DeviceConstants.DEVICE_ACCESS_TYPE_UNIVERSAL)){
-                this.deviceFeign.pushUserFaceToUniversalDevices(task, !isUpdate ? OperationConstant.ONE : OperationConstant.TWO,logMap);
+                Integer operType = OperationConstant.ONE;
+                if(user.getFaceEnable() == 1){ //只有下发成功过,才能进行下发更新人脸指令
+                    operType = OperationConstant.TWO;
+                }
+                this.deviceFeign.pushUserFaceToUniversalDevices(task, operType, logMap);
             }else{
                 this.deviceFeign.pushUserFace(task,logMap);
             }
@@ -1286,7 +1299,7 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us
                     Boolean checkPass1 = this.checkXqUnitDevicePermission(user, deviceIdList);
                     if(checkPass1){
                         //--------------下发人脸---------------------//
-                        resultBean = this.handleSendUserFace(user, deviceIdList, true,devicesAccessPushVO.getBeginDate(),devicesAccessPushVO.getEndDate());
+                        resultBean = this.handleSendUserFace(user, deviceIdList, true, devicesAccessPushVO.getBeginDate(),devicesAccessPushVO.getEndDate());
                     }
                     break;
                /* case 2: //门禁卡启用
@@ -1648,6 +1661,24 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us
         return userPage;
     }
 
+    @Override
+    public void userFacePushHandle(Map<String, Object> deviceRequest) {
+        Long userId = Long.parseLong((String)deviceRequest.get("userId"));
+        User user = this.selectById(userId);
+        if(user != null){
+            JSONObject data = JSONUtil.parseObj(deviceRequest.get("Data"));
+            JSONArray resultList = JSONUtil.parseArray(data.get("ResultList"));
+            JSONObject resultObj = JSONUtil.parseObj(resultList.get(0));
+            Integer result = (Integer)resultObj.get("Result");
+            if(result == 0){
+                user.setFaceEnable(OperationConstant.ONE);
+            }else{
+                user.setFaceEnable(OperationConstant.THREE); //下发异常
+            }
+            this.updateById(user);
+        }
+    }
+
     @Override
     public ResultBean<Page> getUserPage(PageBean<User, UserDto> pageBean) {
         UserDto dto = pageBean.getDto();
@@ -1931,7 +1962,7 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us
      */
     private ResultBean<Boolean> handleSendUserFace(User user, List<Long> deviceIdList, Boolean isPush, Date beginDate, Date endDate){
         UserInfoDto dto = new UserInfoDto();
-        dto.setId(UserFlagConstant.USER_NUMBER_FLAG + user.getId());
+        dto.setId(UserFlagConstant.USER_FLAG + user.getId());
         dto.setName(user.getName());
         if(isPush){
             String imgHost = this.confFeign.getFileServerHost();

+ 29 - 6
sptg-gateway/sptg-device-gateway/src/main/java/com/sptg/gateway/controller/DeviceController.java

@@ -9,14 +9,12 @@ import com.github.tobato.fastdfs.service.FastFileStorageClient;
 import com.sptg.common.core.beans.ResultBean;
 import com.sptg.common.core.beans.ResultEnum;
 import com.sptg.common.core.constant.OperationConstant;
+import com.sptg.common.core.constant.UserFlagConstant;
 import com.sptg.common.core.util.JsonUtils;
 import com.sptg.device.api.dto.DeviceRemoteInfoDto;
 import com.sptg.device.api.entity.*;
 import com.sptg.device.api.feigns.*;
-import com.sptg.estate.api.dto.UserDto;
-import com.sptg.estate.api.dto.ZHAccessRecordDto;
-import com.sptg.estate.api.dto.ZHFaceCompareInfoDto;
-import com.sptg.estate.api.dto.ZHSnapDto;
+import com.sptg.estate.api.dto.*;
 import com.sptg.estate.api.entity.AccessRecords;
 import com.sptg.estate.api.entity.User;
 import com.sptg.estate.api.feigns.AccessRecordsFeign;
@@ -30,6 +28,7 @@ import com.sptg.statistics.api.feigns.SysDeviceLogFeign;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang.StringUtils;
+import org.omg.CORBA.OBJ_ADAPTER;
 import org.springframework.beans.BeanUtils;
 import org.springframework.data.redis.core.HashOperations;
 import org.springframework.data.redis.core.ListOperations;
@@ -343,7 +342,7 @@ public class DeviceController {
         accessRecords.setOrgPosition(device.getOrgPosition());
         accessRecords.setEstatePosition(device.getEstatePosition());
         accessRecords.setRootOrgId(device.getRootOrgId());
-        this.accessRecordsFeign.addZHAccessRecords(accessRecords);
+        this.accessRecordsFeign.addAccessRecords(accessRecords);
         map.put("ReturnCode", 0);
         return map;
     }
@@ -412,7 +411,7 @@ public class DeviceController {
                     Integer commandSeq = (Integer) commandMap.get("CommandSeq");
                     this.redisTemplate.opsForList().leftPush(ZH_DEVICE_INSTRUCT_CALLBACK + ":" + serialNum + ":" + commandSeq, instructId);
                     ApiLog apiLog = new ApiLog();
-                    apiLog.setReqData(commandStr);
+                    apiLog.setReqData(openDoorCommandStr);
                     apiLog.setMethod(command);
                     apiLog.setInstructId(Long.parseLong(instructId));
                     sysApiLogFeign.create(apiLog);
@@ -452,6 +451,7 @@ public class DeviceController {
                     instructPublishLog.setErrorMsg(JSONUtil.toJsonStr(deviceRequest));
                     instructPublishLogFeign.instructHandleCallback(instructPublishLog);
                 }
+                this.bizHandle(deviceRequest, Long.parseLong(instructId));
                 ApiLog apiLog = sysApiLogFeign.findByInstructId(Long.parseLong(instructId));
                 if(apiLog != null){
                     apiLog.setRespData(JSONUtil.toJsonStr(deviceRequest));
@@ -469,6 +469,29 @@ public class DeviceController {
         }
     }
 
+    /**
+     * 根据设备处理结果对业务做处理
+     * @param deviceRequest
+     * @param instructId
+     */
+    private void bizHandle(Map<String, Object> deviceRequest, Long instructId){
+        InstructPublishLog instructPublishLog = instructPublishLogFeign.getById(instructId);
+        if(instructPublishLog != null){
+            switch (instructPublishLog.getInstructCode()){
+                case "add_user_face":
+                    String publishData = instructPublishLog.getPublishData();
+                    UserInfoDto userInfoDto = JSONUtil.toBean(publishData, UserInfoDto.class);
+                    String id = userInfoDto.getId();
+                    if(id.startsWith(UserFlagConstant.USER_FLAG)){
+                        deviceRequest.put("userId", Long.parseLong(id.substring(OperationConstant.TWO)));
+                        userFeign.userFacePushHandle(deviceRequest);
+                    }else if(id.startsWith(UserFlagConstant.SERVER_USER_FLAG)){
+
+                }
+            }
+        }
+    }
+
     /**
      * 设备请求配置命令
      * @param deviceRequest

+ 1 - 1
sptg-gateway/sptg-housekeeper-gateway/src/main/resources/static/js/estate/user-add.js

@@ -464,7 +464,7 @@ layui.extend({
         $('#tips').hide();
         $('#tips').after(dom);
         // faceBase64Array = url;
-        fileBase64Array = url;
+        faceBase64Array = url;
     };
 
     //人员当当图片预览

+ 3 - 1
sptg-gateway/sptg-housekeeper-gateway/src/main/resources/templates/estate/access-manage.html

@@ -194,7 +194,9 @@
             {{#  }else if(d.faceEnable == 1){ }}
             <span class="layui-badge layui-bg-green">已下发</span>
             {{# }else if(d.faceEnable == 2){ }}
-            <span class="layui-badge layui-bg-red">已禁用</span>
+            <span class="layui-badge layui-bg-orange">已禁用</span>
+            {{# }else if(d.faceEnable == 3){ }}
+            <span class="layui-badge layui-bg-red">下发异常</span>
             {{# } }}
         </script>
         <!-- 卡启用状态 -->

+ 3 - 1
sptg-gateway/sptg-housekeeper-gateway/src/main/resources/templates/estate/residential-access.html

@@ -181,7 +181,9 @@
             {{#  }else if(d.faceEnable == 1){ }}
             <span class="layui-badge layui-bg-green">已启用</span>
             {{# }else if(d.faceEnable == 2){ }}
-            <span class="layui-badge layui-bg-red">已禁用</span>
+            <span class="layui-badge layui-bg-orange">已禁用</span>
+            {{# }else if(d.faceEnable == 3){ }}
+            <span class="layui-badge layui-bg-red">下发异常</span>
             {{# } }}
         </script>
         <!-- 卡启用状态 -->

+ 5 - 17
sptg-repeater/sptg-repeater-biz/src/main/java/com/sptg/repeater/biz/handler/ZHHandler.java

@@ -159,15 +159,7 @@ public class ZHHandler {
             num = "1000"; //设备指令的commonSeq从1000开始
         }
         JSONObject data = JSONUtil.parseObj(object);
-        String oriUserId = (String) data.get("id");
-        String userId = ((String) data.get("id")).substring(0, 3);
-        if(userId.equals(ZHHandler.USER_NUMBER_FLAG)){
-            userId = "u_" + oriUserId.substring(3);
-        }else if(userId.equals(ZHHandler.SERVER_USER_NUMBER_FLAG)){
-            userId = "s_" + oriUserId.substring(3);
-        }else if(userId.equals(ZHHandler.ADMIN_USER_NUMBER_FLAG)){
-            userId = "a_" + oriUserId.substring(3);
-        }
+        String userId = (String) data.get("id");
         Map<String, Object> dataMap = new HashMap<>();
         dataMap.put("FaceId", userId);
         Map<String, Object> commandMap = new HashMap<>();
@@ -195,14 +187,9 @@ public class ZHHandler {
         List<Map<String, Object>> dataList = new ArrayList<>();
         Map<String, Object> dataListMap = new HashMap<>();
         JSONObject data = JSONUtil.parseObj(object);
-        String oriUserId = (String) data.get("id");
-        String userId = ((String) data.get("id")).substring(0, 3);
-        if(userId.equals(ZHHandler.USER_NUMBER_FLAG)){
-            userId = "u_" + oriUserId.substring(3);
-        }else if(userId.equals(ZHHandler.SERVER_USER_NUMBER_FLAG)){
-            userId = "s_" + oriUserId.substring(3);
-        }else if(userId.equals(ZHHandler.ADMIN_USER_NUMBER_FLAG)){
-            userId = "a_" + oriUserId.substring(3);
+        String userId = (String) data.get("id");
+        if(ZHConstant.I8H.update_user_face == command){
+            dataListMap.put("SrcFaceId", userId);
         }
         dataListMap.put("FaceId", userId);
         JSONArray jsonArray = JSONUtil.parseArray(data.get("faceCodeList"));
@@ -239,6 +226,7 @@ public class ZHHandler {
         dataMap.put("List", dataList);
         commandMap.put("Data", dataMap);
         commandMap.put("InstructId", instructId);
+        commandMap.put("faceImage", imgSrc);
         String commandStr = JSONUtil.toJsonStr(commandMap);
         return commandStr;
     }