Browse Source

图片下发用base64 下发

cuimengchao 3 years ago
parent
commit
e65af2d191

+ 4 - 1
src/main/java/com/yx/face/dao/UserInfoFromDao.java

@@ -3,8 +3,9 @@ package com.yx.face.dao;
 import com.yx.face.boot.component.tk.TKMapper;
 import com.yx.face.model.entity.UserFaceRecordsFrom;
 import com.yx.face.model.entity.UserInfoFrom;
-import org.apache.ibatis.annotations.Param; 
+import org.apache.ibatis.annotations.Param;
 
+import java.sql.Blob;
 import java.util.List;
 
 public interface UserInfoFromDao extends TKMapper<UserInfoFrom> {
@@ -12,4 +13,6 @@ public interface UserInfoFromDao extends TKMapper<UserInfoFrom> {
     Integer updateByForgeinId(UserInfoFrom userInfoFrom);
 
     Integer delteByForgeinId(Long forgeinId);
+
+    UserInfoFrom  selectImgBase(@Param("userId") Long userId);
 }

+ 2 - 0
src/main/java/com/yx/face/service/UserInfoService.java

@@ -35,5 +35,7 @@ public interface UserInfoService {
 
     Map<String, Object> doGetFacePass(Integer userId, String taskId);
 
+    String getAvatarBase64(Long id, String avatar);
+
 }
 

+ 1 - 9
src/main/java/com/yx/face/service/impl/AreaCodeServiceImpl.java

@@ -27,15 +27,7 @@ public class AreaCodeServiceImpl implements AreaCodeService {
     @Resource
     private PoliceStationDao policeStationDao;
 
-//    @Override
-//    public List<AreaCodeVO> getAddress(Integer code) {
-//        return areaCodeDao.getAddress(code);
-//    }
-//
-//    @Override
-//    public List<PoliceStationVO> getPoliceList(Integer addressCode) {
-//        return policeStationDao.getPoliceList(addressCode);
-//    }
+
     public List<AreaCodeVOList> getProvince() {
         return areaCodeDao.getProvince();
     }

+ 0 - 5
src/main/java/com/yx/face/service/impl/SystemLongTermDocumentsServiceImpl.java

@@ -56,9 +56,6 @@ public class SystemLongTermDocumentsServiceImpl implements SystemLongTermDocumen
         if (dto.getData() == null) {
             throw new ServiceException("参数有误");
         }
-//        if (dto.getData().getAdminId() == null) {
-//            throw new ServiceException("参数有误");
-//        }
         PageHelper.startPage(dto.getPageNum(), dto.getPageSize());
         List<SystemLongTermDocumentsVO> list = systemLongTermDocumentsDao.getList(dto.getData().getAdminId(), dto.getData().getName());
         for (SystemLongTermDocumentsVO vo : list) {
@@ -66,8 +63,6 @@ public class SystemLongTermDocumentsServiceImpl implements SystemLongTermDocumen
                 vo.setPhone(SMSOrIdCardUtils.hidePhone(vo.getPhone()));
             if (StringUtils.isNotBlank(vo.getIdNumber()))
                 vo.setIdNumber(SMSOrIdCardUtils.hideIdNumber(vo.getIdNumber()));
-//            if (StringUtils.isNotBlank(vo.getName()))
-//                vo.setName(SMSOrIdCardUtils.hideName(vo.getName().trim()));
         }
         return new PageInfo<>(list);
     }

+ 1 - 66
src/main/java/com/yx/face/service/impl/UserBlackListServiceImpl.java

@@ -85,18 +85,11 @@ public class UserBlackListServiceImpl implements UserBlackListService {
 
     @Override
     public Integer delete(Integer id, Integer adminId) throws Exception {
-//        List<String> msg = new ArrayList<>();
         UserBlackList userBlackList = userBlackListDao.selectByPrimaryKey(id);
         //判断白名单是否存在
         if (userBlackList == null) {
             throw new ServiceException("该数据已不存在,请刷新页面再试哦~");
         }
-//        List<String> faceDeviceNo = faceDeviceDao.selectListNo(userBlackList.getAdminId());
-//        if (!faceDeviceNo.isEmpty()) {
-//            for (String s : faceDeviceNo) {
-//                msg.add(s + ":设备离线或未授权或未启用");
-//            }
-//        }
         //获取 adminId所有设备
         List<String> faceDeviceOne = faceDeviceDao.selectList(userBlackList.getAdminId());
         if (faceDeviceOne.isEmpty()) {
@@ -125,81 +118,23 @@ public class UserBlackListServiceImpl implements UserBlackListService {
             requestLog.setUsedTime(0L);
             requestLog.setUpdateTime(now);
             requestLog.setCreateTime(now);
+            faceRequestLogDao.insertSelective(requestLog);
             params.put("taskId", requestLog.getId());
-//            try {
-//                result = tbDeviceFaceService.delUser(params);
-//                if (!StringUtils.equals("命令下发成功", (String) result.get("msg"))) {
-//                    Boolean aBoolean = delUserRetry(params);
-//                    if (!aBoolean) {
-//                        msg.add(sn + ":设备下发失败,原因:" + (String) result.get("msg"));
-//                    }
-//                } else {
-//                    faceRequestLogDao.insertSelective(requestLog);
-//                    faceTaskDao.updateFaceTaskStatus(sn, userIds);
-//                }
-//                log.info("删除结果={}", result);
-//            } catch (Exception e) {
-//                log.info("删除人脸异常 {}", e.getMessage());
-//                Boolean aBoolean = delUserRetry(params);
-//                if (!aBoolean) {
-//                    msg.add(sn + ":设备下发失败,原因:" + e.getMessage());
-//                }
-//            }
-//        }
             try {
                 result = tbDeviceFaceService.delUser(params);
                 if (!StringUtils.equals("命令下发成功", (String) result.get("msg"))) {
-//                    msg.add(sn + ":设备下发失败,原因:" + (String) result.get("msg"));
                     //异步下发三次
                     asyncTriggerRetryImpl.delUserRetry(params);
                 } else {
-                    faceRequestLogDao.insertSelective(requestLog);
                     faceTaskDao.updateFaceTaskStatus(sn, userIds);
                 }
                 log.info("删除结果={}", result);
             } catch (Exception e) {
                 asyncTriggerRetryImpl.delUserRetry(params);
                 log.info("删除人脸异常 {}", e.getMessage());
-//                msg.add(sn + ":设备下发失败,原因:" + e.getMessage());
             }
         }
         userBlackListDao.deleteByPrimaryKey(id);
-//        if (!msg.isEmpty()) {
-//            //判断是否删除成功
-//            throw new ServiceException(msg.toString());
-//        }
         return 1;
     }
-
-//    //发送失败重试三次
-//    public Boolean delUserRetry(Map<String, Object> params) {
-//        Map<String, Object> result = new HashMap<>();
-//        int times = 1;
-//        while (times <= 3) {
-//            try {
-//                Thread.sleep(1000 * 20);   // 休眠20秒
-//                result = tbDeviceFaceService.delUser(params);
-//                log.info("删除人脸重试delUser = {} 重试次数 {}", params, times);
-//                if (result.get("msg") != null) {
-//                    String msg = result.get("msg").toString();
-//                    if (msg.contains("不在线")) {
-//                        times++;
-//                    } else {
-//                        //代表成功
-//                        times = 6;
-//                    }
-//                } else {
-//                    times++;
-//                }
-//            } catch (Exception e) {
-//                times++;
-//                log.info("下发失败 原因 {}", e.getMessage());
-//            }
-//        }
-//        //成功
-//        if (times == 6) {
-//            return true;
-//        }
-//        return false;
-//    }
 }

+ 40 - 60
src/main/java/com/yx/face/service/impl/UserInfoServiceImpl.java

@@ -28,6 +28,7 @@ import org.springframework.util.CollectionUtils;
 import org.springframework.util.StringUtils;
 
 import javax.annotation.Resource;
+import java.sql.Blob;
 import java.util.*;
 
 
@@ -52,15 +53,9 @@ public class UserInfoServiceImpl implements UserInfoService {
     private FaceRequestLogDao faceRequestLogDao;
     @Resource
     private FaceTaskDao faceTaskDao;
-    @Autowired
-    private TBDeviceFaceService tbDeviceFaceService;
     //常客
     @Resource
     private UserWhitelistDao userWhitelistdao;
-
-    @Resource
-    private UserFaceRecordsFromDao userFaceRecordsFromDao;
-
     @Resource
     private UserVisitorListDao userVisitorListDao;
     @Resource
@@ -76,7 +71,7 @@ public class UserInfoServiceImpl implements UserInfoService {
     @Autowired
     private AsyncTriggerRetryImpl asyncTriggerRetryImpl;
 
-//    @Value("${wx.phone.url}")
+    //    @Value("${wx.phone.url}")
     private static final String wxUrl = "http://192.168.99.11:9810/winxin-fyzd/weiXin/getPhone";
 
     @Override
@@ -107,28 +102,6 @@ public class UserInfoServiceImpl implements UserInfoService {
         if (org.apache.commons.lang3.StringUtils.isBlank(openid)) {
             throw new ServiceException("网络异常请重新获取哦~");
         }
-//        UserInfo userInfo = new UserInfo();
-//        userInfo.setPhone(phone);
-//        userInfo = userInfoDao.selectOne(userInfo);
-//        Date now = new Date();
-//        if (userInfo != null) {
-//            UserInfo info = new UserInfo();
-//            info.setId(userInfo.getId());
-//            info.setOpenId(openid);
-//            info.setUpdateTime(now);
-//            userInfoDao.updateByPrimaryKeySelective(info);
-//            return phone;
-//        }
-//        userInfo = new UserInfo();
-//        userInfo.setOpenId(openid);
-//        userInfo.setPhone(phone);
-//        userInfo.setUsername("");
-//        userInfo.setIdNumber("");
-//        userInfo.setRoleId(1);
-//        userInfo.setAuthId(0);
-//        userInfo.setUpdateTime(now);
-//        userInfo.setCreateTime(now);
-//        userInfoDao.insertSelective(userInfo);
         return phone;
     }
 
@@ -214,6 +187,9 @@ public class UserInfoServiceImpl implements UserInfoService {
         if (org.apache.commons.lang3.StringUtils.isBlank(userInfo.getPhone())) {
             throw new ServiceException("手机号为空请重新登录哦~");
         }
+        if (StringUtils.hasText(userInfo.getAvatar())) {
+            throw new ServiceException("人脸照片不规范哦~");
+        }
         //校验是否在黑名单
         UserBlackList userBlackList = new UserBlackList();
         userBlackList.setPhone(userInfo.getPhone());
@@ -274,9 +250,14 @@ public class UserInfoServiceImpl implements UserInfoService {
         //人脸清除定时任务
         FaceTask faceTask;
         //信息
-        String msg;
+        String avatar = "";
         //人脸下发到设备里面
         if (!snList.isEmpty()) {
+            //获取图片base64
+            avatar = getAvatarBase64(userInfo.getId(), userInfo.getAvatar());
+            if (!StringUtils.hasText(avatar)) {
+                throw new ServiceException("人脸照片不规范下发失败请重新认证");
+            }
             for (FaceDevice device : snList) {
                 Map<String, Object> params = Maps.newHashMapWithExpectedSize(3);
                 List<Map<String, Object>> data = Lists.newArrayListWithExpectedSize(1);
@@ -287,7 +268,7 @@ public class UserInfoServiceImpl implements UserInfoService {
                 dataItem.put("validPeriodStart", DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD_HH_MM_SS, startTime));
                 dataItem.put("validPeriodEnd", DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD_HH_MM_SS, endTime));
                 dataItem.put("userType", 0);
-                dataItem.put("photo", userInfo.getAvatar());
+                dataItem.put("photo", avatar);
                 if (type == 2) {
                     dataItem.put("rightno", 105);
                 } else if (type == 3) {
@@ -322,30 +303,6 @@ public class UserInfoServiceImpl implements UserInfoService {
                 facePass.setTaskId(taskId);
                 facePass.setUpdateTime(now);
                 facePass.setCreateTime(now);
-//                //人脸下发
-//                try {
-//                    result = tbDeviceFaceService.downUser(params);
-//                    log.info("下发人脸downFace = {}", result);
-//                    if (result.get("msg") != null) {
-//                        msg = result.get("msg").toString();
-//                        if (msg.contains("不在线")) {
-//                            //设备不在线 重试 3次
-//                            Boolean retry = triggerRetry(params);
-//                            if (!retry) {
-//                                facePass.setStatus(3);
-//                            }
-//                        }
-//                    }
-//                } catch (Exception e) {
-//                    log.info("下发失败 原因 {}", e.getMessage());
-//                    //设备不在线 重试 3次
-//                    Boolean retry = triggerRetry(params);
-//                    if (!retry) {
-//                        facePass.setStatus(3);
-//                    }
-//                }
-//                //添加人脸
-//                facePassDao.insertSelective(facePass);
                 //人脸下发
                 //添加人脸
                 facePassDao.insertSelective(facePass);
@@ -396,15 +353,38 @@ public class UserInfoServiceImpl implements UserInfoService {
             userVisitorOne.setUpdateTime(now);
             userVisitorOne.setAvatar(userInfo.getAvatar());
             userVisitorListDao.updateByPrimaryKeySelective(userVisitorOne);
-//            userVisitorOne = userVisitorListDao.selectByPrimaryKey(userVisitorList.getId());
         }
-//        //开启异步线程
-//        Map<String, String> maps = new HashMap<>(1);
-//        maps.put("user-visitor", JSONObject.toJSONString(userVisitorOne));
-//        nettyClient.sendMessage(JSON.toJSONString(maps));
+
     }
 
 
+    /**
+     * 根据 userid 或者 图片路径获取 base64 图片
+     *
+     * @param userId    userinfo id
+     * @param avatarUrl 图片路径
+     * @return 图片base64
+     */
+    public String getAvatarBase64(Long userId, String avatarUrl) {
+        String avatar = "";
+        UserInfoFrom userInfoFrom = userInfoFromDao.selectImgBase(userId);
+        if (userInfoFrom != null && userInfoFrom.getImgBase() != null) {
+            String encode = Base64Util.encode(userInfoFrom.getImgBase());
+            if (StringUtils.hasText(encode)) {
+                avatar = encode;
+            }
+        } else {
+            byte[] byteAvatar = Base64Util.getByteArrayFromUrl(avatarUrl);
+            if (byteAvatar != null) {
+                String encode = Base64Util.encode(byteAvatar);
+                if (StringUtils.hasText(encode)) {
+                    avatar = encode;
+                }
+            }
+        }
+        return avatar;
+    }
+
     private String buildImage(String image, String phone) {
         String path = null;
         if (StringUtils.hasText(image)) {

+ 30 - 37
src/main/java/com/yx/face/service/impl/UserVisitorListServiceImpl.java

@@ -16,6 +16,7 @@ import com.yx.face.model.vo.AdminVO;
 import com.yx.face.model.vo.UserVisitorListVO;
 import com.yx.face.model.vo.UserWhitelistVO;
 import com.yx.face.service.AdminService;
+import com.yx.face.service.UserInfoService;
 import com.yx.face.service.UserVisitorListService;
 import com.yx.face.service.feign.TBDeviceFaceService;
 import lombok.extern.slf4j.Slf4j;
@@ -39,9 +40,11 @@ public class UserVisitorListServiceImpl implements UserVisitorListService {
     @Resource
     private UserVisitorListDao userVisitorListDao;
 
-    @Resource
+    @Autowired
     private AdminService adminService;
 
+    @Autowired
+    private UserInfoService userInfoService;
     @Resource
     private UserWhitelistDao userWhitelistDao;
 
@@ -91,7 +94,6 @@ public class UserVisitorListServiceImpl implements UserVisitorListService {
     @Transactional(rollbackFor = Exception.class)
     @Override
     public Integer addWhite(Integer id, Integer adminId) throws Exception {
-        List<String> msg = new ArrayList<>();
         //数据添加到白名单
         UserVisitorList uvl = userVisitorListDao.selectByPrimaryKey(id);
         //校验是否存在
@@ -115,7 +117,16 @@ public class UserVisitorListServiceImpl implements UserVisitorListService {
         }
         //删除访客
         userVisitorListDao.deleteByPrimaryKey(id);
-
+        UserWhitelistVO one = userVisitorListDao.selectListOne(addWhite.getId());
+        if (one == null) {
+            throw new ServiceException("删除失败");
+        }
+        String avatarBase64 = userInfoService.getAvatarBase64(one.getId(), one.getAvatar());
+        if (StringUtils.isBlank(avatarBase64)) {
+            throw new ServiceException("人脸照片不规范请重试哦");
+        } else {
+            one.setAvatar(avatarBase64);
+        }
         List<String> faceDeviceOne = faceDeviceDao.selectList(uvl.getAdminId());
         if (faceDeviceOne.isEmpty()) {
             throw new ServiceException("该账号下没绑定设备,添加失败哦~");
@@ -123,29 +134,18 @@ public class UserVisitorListServiceImpl implements UserVisitorListService {
         //人脸下发
         Date now = new Date();
         Date date = DateUtils.addYears(now, 1);
-        UserWhitelistVO one = userVisitorListDao.selectListOne(addWhite.getId());
         for (String s : faceDeviceOne) {
             one.setSn(s);
-            Map<String, Object> map = downFaceByTask(one, DateUtils.addMinutes(now, -10), date, 2, 105);
-//            if (!StringUtils.equals("命令下发成功", (String) map.get("msg"))) {
-//                msg.add(one.getName() + ":下发失败,原因:" + (String) map.get("msg"));
-//            }
-        }
-        if (msg.isEmpty()) {
-            return 1;
-        } else {
-            throw new ServiceException(msg.toString());
-
+            downFaceByTask(one, DateUtils.addMinutes(now, -10), date, 2, 105);
         }
+        return 1;
     }
 
     @Transactional(rollbackFor = Exception.class)
     @Override
     public Integer addBlack(Integer id, Integer adminId) throws Exception {
-        List<String> msg = new ArrayList<>();
         //数据添加到白名单
         UserVisitorList uvl = userVisitorListDao.selectByPrimaryKey(id);
-
         UserBlackList userBlackListOne = new UserBlackList();
         userBlackListOne.setAdminId(uvl.getAdminId());
         userBlackListOne.setPhone(uvl.getPhone());
@@ -168,6 +168,18 @@ public class UserVisitorListServiceImpl implements UserVisitorListService {
         }
         //删除访客
         userVisitorListDao.deleteByPrimaryKey(id);
+         //获取基本信息
+        UserWhitelistVO one = userBlackListDao.selectListOne(userBlackList.getId());
+        if (one == null) {
+            throw new ServiceException("删除失败");
+        }
+        //获取base64 照片
+        String avatarBase64 = userInfoService.getAvatarBase64(one.getId(), one.getAvatar());
+        if (StringUtils.isBlank(avatarBase64)) {
+            throw new ServiceException("人脸照片不规范请重试哦");
+        } else {
+            one.setAvatar(avatarBase64);
+        }
         List<String> faceDeviceOne = faceDeviceDao.selectList(uvl.getAdminId());
         if (faceDeviceOne.isEmpty()) {
             throw new ServiceException("该账号下没绑定设备,添加失败哦~");
@@ -175,19 +187,11 @@ public class UserVisitorListServiceImpl implements UserVisitorListService {
         //人脸下发
         Date now = new Date();
         Date date = DateUtils.addYears(now, 100);
-        UserWhitelistVO one = userBlackListDao.selectListOne(userBlackList.getId());
         for (String s : faceDeviceOne) {
             one.setSn(s);
-            Map<String, Object> map = downFaceByTask(one, DateUtils.addMinutes(now, -10), date, 1, 101);
-//            if (!StringUtils.equals("命令下发成功", (String) map.get("msg"))) {
-//                msg.add(one.getName() + ":下发失败,原因:" + (String) map.get("msg"));
-//            }
-        }
-        if (msg.isEmpty()) {
-            return 1;
-        } else {
-            throw new ServiceException(msg.toString());
+            downFaceByTask(one, DateUtils.addMinutes(now, -10), date, 1, 101);
         }
+        return 1;
     }
 
     /**
@@ -252,17 +256,6 @@ public class UserVisitorListServiceImpl implements UserVisitorListService {
         facePass.setTaskId(whitelistVO.getAdminId().toString());
         facePass.setUpdateTime(now);
         facePass.setCreateTime(now);
-//        //人脸下发
-//        result = tbDeviceFaceService.downUser(params);
-//        log.info("下发人脸downFace = {}", result);
-//        if (result.get("msg") != null) {
-//            msg = result.get("msg").toString();
-//            if (!StringUtils.equals("命令下发成功", msg)) {
-//                facePass.setStatus(3);
-//            }
-//        }
-//        //添加人脸
-//        facePassDao.insertSelective(facePass);
         facePassDao.insertSelective(facePass);
         asyncTriggerRetryImpl.send(params, facePass);
 

+ 29 - 69
src/main/java/com/yx/face/service/impl/UserWhitelistServiceImpl.java

@@ -81,7 +81,7 @@ public class UserWhitelistServiceImpl implements UserWhitelistService {
         UserWhitelist userWhitelist = getUserWhitelist(userWhitelistDTO);
         //新增前先判断访客列表有没有数据,如果有,就拿过来,填充到常客列表,否则不填充
         UserVisitorList userVisitorListByPhone = userVisitorListDao.selectByPhoneAndAdminId(userWhitelistDTO.getPhone(), userWhitelistDTO.getAdminId());
-        if (null != userVisitorListByPhone){
+        if (null != userVisitorListByPhone) {
             userWhitelist.setAvatar(userVisitorListByPhone.getAvatar());
             userWhitelist.setIdNumber(userVisitorListByPhone.getIdNumber());
             userWhitelist.setStatus(1);//访客列表有信息,说明已经认证
@@ -91,7 +91,7 @@ public class UserWhitelistServiceImpl implements UserWhitelistService {
         userWhitelistDTO.setId(null);
         userWhitelist.setCreateTime(new Date());
         userWhitelist.setType(1);
-        if (null == userWhitelist.getStatus()){
+        if (null == userWhitelist.getStatus()) {
             userWhitelist.setStatus(2);
         }
         return userWhitelistdao.insert(userWhitelist);
@@ -175,26 +175,6 @@ public class UserWhitelistServiceImpl implements UserWhitelistService {
             requestLog.setCreateTime(now);
             faceRequestLogDao.insertSelective(requestLog);
             params.put("taskId", requestLog.getId());
-//            try {
-//                result = tbDeviceFaceService.delUser(params);
-//                if (!StringUtils.equals("命令下发成功", (String) result.get("msg"))) {
-//                    Boolean aBoolean = userBlackListService.delUserRetry(params);
-//                    if (!aBoolean) {
-//                        msg.add(sn + ":设备下发失败,原因:" + (String) result.get("msg"));
-//                    }
-//                } else {
-//                    faceRequestLogDao.insertSelective(requestLog);
-//                    faceTaskDao.updateFaceTaskStatus(sn, userIds);
-//                }
-//                log.info("删除结果={}", result);
-//            } catch (Exception e) {
-//                log.info("删除人脸异常 {}", e.getMessage());
-//                Boolean aBoolean = userBlackListService.delUserRetry(params);
-//                if (!aBoolean) {
-//                    msg.add(sn + ":设备下发失败,原因:" + e.getMessage());
-//                }
-//            }
-//        }
             try {
                 result = tbDeviceFaceService.delUser(params);
                 if (!StringUtils.equals("命令下发成功", (String) result.get("msg"))) {
@@ -210,10 +190,6 @@ public class UserWhitelistServiceImpl implements UserWhitelistService {
             }
         }
         userWhitelistdao.deleteByPrimaryKey(id);
-//        if (!msg.isEmpty()) {
-//            //判断是否删除成功
-//            throw new ServiceException(msg.toString());
-//        }
         return 1;
     }
 
@@ -297,15 +273,22 @@ public class UserWhitelistServiceImpl implements UserWhitelistService {
             //判断是否有照片
             if (StringUtils.isBlank(userWhitelist.getAvatar())) {
                 //记录错误信息
-                msg.add(userWhitelist.getName() + ":下发失败人脸照片");
+                msg.add(userWhitelist.getName() + ":下发失败人脸照片不规范");
                 continue;
             } else {
                 userWhitelist.setSn(faceDeviceOne.getSn());
                 userWhitelist.setAdminId(faceDeviceOne.getAdminId());
-                Map<String, Object> map = downFaceByTask(userWhitelist, DateUtils.addMinutes(now, -10), date, 2);
-//                if (!StringUtils.equals("命令下发成功", (String) map.get("msg"))) {
-//                    msg.add(userWhitelist.getName() + "下发失败, 原因:" + (String) map.get("msg"));
-//                }
+                try {
+                    String avatar = userInfoService.getAvatarBase64(userWhitelist.getId(), userWhitelist.getAvatar());
+                    if (StringUtils.isBlank(avatar)) {
+                        msg.add(userWhitelist.getName() + ":人脸照片不规范请重试哦");
+                    } else {
+                        userWhitelist.setAvatar(avatar);
+                    }
+                    downFaceByTask(userWhitelist, DateUtils.addMinutes(now, -10), date, 2);
+                } catch (Exception e) {
+                    e.printStackTrace();
+                }
             }
         }
         if (msg.isEmpty()) {
@@ -320,11 +303,15 @@ public class UserWhitelistServiceImpl implements UserWhitelistService {
 
     @Override
     public RestResult<String> addSingle(Integer userId, Integer id) {
-        List<String> msg = new ArrayList<>();
         RestResult<String> objectRestResult = new RestResult<>();
-
         UserWhitelistVO one = userWhitelistdao.selectListOne(id);
-
+        //获取base64 图片
+        String avatar = userInfoService.getAvatarBase64(one.getId(), one.getAvatar());
+        if (StringUtils.isBlank(avatar)) {
+            throw new ServiceException("人脸照片不规范请重试哦");
+        } else {
+            one.setAvatar(avatar);
+        }
         List<String> faceDeviceOne = faceDeviceDao.selectList(one.getAdminId());
         if (faceDeviceOne.isEmpty()) {
             objectRestResult.setCode(401);
@@ -337,18 +324,14 @@ public class UserWhitelistServiceImpl implements UserWhitelistService {
         one.setAdminId(userId);
         for (String s : faceDeviceOne) {
             one.setSn(s);
-            Map<String, Object> map = downFaceByTask(one, DateUtils.addMinutes(now, -10), date, 2);
-//            if (!StringUtils.equals("命令下发成功", (String) map.get("msg"))) {
-//                msg.add(one.getName() + "下发失败, 原因:" + (String) map.get("msg"));
-//            }
-        }
-        if (msg.isEmpty()) {
-            objectRestResult.setCode(200);
-            objectRestResult.setMsg("下发成功");
-        } else {
-            objectRestResult.setCode(401);
-            objectRestResult.setMsg(msg.toString());
+            try {
+                downFaceByTask(one, DateUtils.addMinutes(now, -10), date, 2);
+            } catch (Exception e) {
+                e.printStackTrace();
+            }
         }
+        objectRestResult.setCode(200);
+        objectRestResult.setMsg("下发成功");
         return objectRestResult;
     }
 
@@ -360,7 +343,7 @@ public class UserWhitelistServiceImpl implements UserWhitelistService {
      * @param type        类型
      */
     @Transactional(rollbackFor = Exception.class)
-    public Map<String, Object> downFaceByTask(UserWhitelistVO whitelistVO, Date startTime, Date endTime, Integer type) {
+    public Map<String, Object> downFaceByTask(UserWhitelistVO whitelistVO, Date startTime, Date endTime, Integer type) throws Exception {
         Map<String, Object> result = new HashMap<>();
         //天波人脸服务请求日志表
         FaceRequestLog requestLog;
@@ -418,29 +401,6 @@ public class UserWhitelistServiceImpl implements UserWhitelistService {
         //人脸下发
         facePassDao.insertSelective(facePass);
         asyncTriggerRetryImpl.send(params, facePass);
-//        try {
-//            result = tbDeviceFaceService.downUser(params);
-//            log.info("下发人脸downFace = {}", result);
-//            if (result.get("msg") != null) {
-//                msg = result.get("msg").toString();
-//                if (msg.contains("不在线")) {
-//                    //设备不在线 重试 3次
-//                    Boolean retry = userInfoService.triggerRetry(params);
-//                    if (!retry) {
-//                        facePass.setStatus(3);
-//                    }
-//                }
-//            }
-//        } catch (Exception e) {
-//            log.info("下发失败 原因 {}", e.getMessage());
-//            //设备不在线 重试 3次
-//            Boolean retry = userInfoService.triggerRetry(params);
-//            if (!retry) {
-//                facePass.setStatus(3);
-//            }
-//        }
-//        //添加人脸
-//        facePassDao.insertSelective(facePass);
         faceTaskId = faceTaskDao.getFaceTaskId(whitelistVO.getSn(), whitelistVO.getId());
         faceTask = new FaceTask();
         faceTask.setId(faceTaskId);

+ 6 - 0
src/main/resources/mapper/UserInfoFromDao.xml

@@ -10,4 +10,10 @@
         delete from user_info_from
         where user_info_id = #{forgeinId}
     </delete>
+    <select id="selectImgBase" resultType="com.yx.face.model.entity.UserInfoFrom">
+
+    </select>
+    <!--    <select id="selectImgBase" resultType="java.sql.Blob">-->
+<!--        SELECT img_base FROM  user_info_from  WHERE user_info_id = #{userId}-->
+<!--    </select>-->
 </mapper>