server/dmvisit_admin/src/main/java/com/doumee/api/business/HkSyncController.java
@@ -71,19 +71,6 @@ @ApiOperation("【海康】门禁事件订阅推送对接处理接口") @PostMapping("/push/acs") public ApiResponse pushAcs( HttpServletRequest request,@RequestBody EventAcsRequest param, HttpServletResponse response) { /* try { BufferedReader br = new BufferedReader(new InputStreamReader(request.getInputStream(),"UTF-8")); String line = null; StringBuffer sb = new StringBuffer(); while (true) { if (!((line = br.readLine()) != null)) break; sb.append(line); } System.out.println(sb.toString()); } catch (IOException e) { throw new RuntimeException(e); }*/ String result = hkSyncPushService.dealAcsEvent(param,response); return ApiResponse.success(result); } server/dmvisit_service/src/main/java/com/doumee/core/erp/model/openapi/request/UserUpdateRequest.java
@@ -34,7 +34,7 @@ @ApiModelProperty(value = "更新时间,如2023-11-24 09:47:36") private Date editDate; @ApiModelProperty(value = "所属组织编码" ,required = true) private Integer orgId; private String orgId; @ApiModelProperty(value = "人脸照片地址" ,required = true) private String faceImg; @ApiModelProperty(value = "工号" ,required = true) server/dmvisit_service/src/main/java/com/doumee/core/haikang/service/HKService.java
@@ -169,7 +169,7 @@ *添加人脸信息 * @return */ public static BaseResponse<FaceAddOrEditesponse> addFace(List<FaceAddRequest> param){ public static BaseResponse<FaceAddOrEditesponse> addFace( FaceAddRequest param){ log.info("【海康添加人脸信息】================开始===="+JSONObject.toJSONString(param)); try { String res = HKTools.addFace(JSONObject.toJSONString(param)); @@ -187,7 +187,7 @@ *编辑人脸信息 * @return */ public static BaseResponse<FaceAddOrEditesponse> editFace(List<FaceEditRequest> param){ public static BaseResponse<FaceAddOrEditesponse> editFace( FaceEditRequest param){ log.info("【海康编辑人脸信息】================开始===="+JSONObject.toJSONString(param)); try { String res = HKTools.editFace(JSONObject.toJSONString(param)); server/dmvisit_service/src/main/java/com/doumee/dao/business/model/Company.java
@@ -103,8 +103,8 @@ @ExcelColumn(name="海康标识") private String hkId; @ApiModelProperty(value = "海康同步状态 0未同步 1已同步") @ExcelColumn(name="海康同步状态 0未同步 1已同步") @ApiModelProperty(value = "海康同步状态 0未同步 1已同步 2同步失败") @ExcelColumn(name="海康同步状态 0未同步 1已同步 2同步失败") private Integer hkStatus; @ApiModelProperty(value = "海康最近同步时间") server/dmvisit_service/src/main/java/com/doumee/service/business/impl/erp/ErpSyncServiceImpl.java
@@ -265,6 +265,7 @@ * @return */ @Override @Transactional public String syncUsers(UserListRequest param){ List<UserListRespone> list = ErpTool.getErpUserList(ErpConstants.userListUrl,param); if(list !=null && list.size()>0) { @@ -756,8 +757,7 @@ ||StringUtils.isNotBlank(param.getFaceImg()) ||StringUtils.isNotBlank(param.getCode()) ||StringUtils.isNotBlank(param.getPhone()) ||Objects.isNull(param.getEditDate()) ){ ||Objects.isNull(param.getEditDate())){ throw new BusinessException(ResponseStatus.BAD_REQUEST); } Member member = memberMapper.selectOne(new QueryWrapper<Member>().lambda().eq(Member::getErpId,param.getId()).last("limit 1")); @@ -776,10 +776,10 @@ String encryptIdNo = DESUtil.encrypt(Constants.EDS_PWD,param.getIdNo()); member.setIdcardNo(encryptIdNo); member.setIdcardDecode(Constants.getTuominStr(param.getIdNo())); member.setCompanyId(param.getOrgId()); member.setErpOrgId(param.getOrgId()); doorIds = getRoleIdByParam(param.getRoleIds(),member); memberMapper.insert(member); //TODO 海康数据创建 //TODO 海康数据创建-------------修改------------------- }else{ Integer id = member.getId(); BeanUtils.copyProperties(param,member); @@ -787,7 +787,7 @@ String encryptIdNo = DESUtil.encrypt(Constants.EDS_PWD,param.getIdNo()); member.setIdcardNo(encryptIdNo); member.setIdcardDecode(Constants.getTuominStr(param.getIdNo())); member.setCompanyId(param.getOrgId()); member.setErpOrgId(param.getOrgId()); member.setEditDate(new Date()); doorIds = getRoleIdByParam(param.getRoleIds(),member); member.setErpDate(new Date()); @@ -836,14 +836,13 @@ */ private void dealMemberRoleEmpower(Member member, List<Integer> doorIds,Date startTime,Date endTime ) { //删除所有老的授权信息 // empowerMapper.update(null,new UpdateWrapper<Empower>().lambda() // .eq(Empower::getMemberId,member.getId()) // .set(Empower::getIsdeleted,Constants.ONE) // .set(Empower::getSendStatus,Constants.ZERO) // ); empowerMapper.delete(new UpdateWrapper<Empower>().lambda() empowerMapper.update(null,new UpdateWrapper<Empower>().lambda() .eq(Empower::getMemberId,member.getId()) ); .set(Empower::getIsdeleted,Constants.ONE) .set(Empower::getSendStatus,Constants.ZERO)); // empowerMapper.delete(new UpdateWrapper<Empower>().lambda() // .eq(Empower::getMemberId,member.getId()) // ); if(doorIds==null || doorIds.size() == 0){ return; } server/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncBaseServiceImpl.java
@@ -1,16 +1,23 @@ package com.doumee.service.business.impl.hksync; import com.doumee.core.haikang.model.param.request.AcsDeviceListRequest; import com.doumee.core.haikang.model.param.request.DoorsListRequest; import com.doumee.core.haikang.model.param.request.ParkListRequest; import com.doumee.core.haikang.model.param.request.PrivilegeGroupRequest; import com.doumee.core.constants.ResponseStatus; import com.doumee.core.exception.BusinessException; import com.doumee.core.haikang.model.HKConstants; import com.doumee.core.haikang.model.param.BaseResponse; import com.doumee.core.haikang.model.param.request.*; import com.doumee.core.haikang.model.param.request.event.acs.EventAcsRequest; import com.doumee.core.haikang.model.param.request.event.parks.EventParkRequest; import com.doumee.core.haikang.model.param.request.event.visit.EventVisitRequest; import com.doumee.core.haikang.model.param.respose.TaskAdditionResponse; import com.doumee.core.haikang.service.HKService; import com.doumee.dao.business.model.Device; import com.doumee.service.business.HkSyncService; import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; import javax.servlet.http.HttpServletResponse; import java.util.ArrayList; import java.util.List; /** * 设备信息表Service实现 @@ -94,5 +101,59 @@ @Override public void syncEmpowerDetailData() { } public boolean addTaskDataAllDel(String userId, String taskId, List<Device> deviceList) { if(StringUtils.isBlank(userId )){ //必填参数校验 return false; } TaskDataAdditionRequest param = new TaskDataAdditionRequest(); param.setTaskId(taskId); List<TaskDataAdditionResourceRequest> resourceInfos = new ArrayList<>();// object[] True 资源对象 for(Device d:deviceList){ TaskDataAdditionResourceRequest res = new TaskDataAdditionResourceRequest(); res.setChannelNos(d.getChannelNo().split(",")); res.setResourceType(d.getResourceType()); res.setResourceIndexCode(d.getHkId()); resourceInfos.add(res); } List<TaskDataAdditionPersonRequest> personInfos = new ArrayList<>(); TaskDataAdditionPersonRequest pinfo = new TaskDataAdditionPersonRequest(); pinfo.setOperatorType(HKConstants.OPERA_TYPE.DEL.getKey()); pinfo.setPersonId(userId); param.setResourceInfos(resourceInfos); param.setPersonInfos(personInfos); BaseResponse response = HKService.taskDataAddition(param); if(response!=null && StringUtils.equals(response.getCode(),HKConstants.RESPONSE_SUCCEE)){ return true; }else{ return false; } } public boolean startTask(String taskId) { TaskProgressRequest param = new TaskProgressRequest(); param.setTaskId(taskId); BaseResponse response = HKService.taskStart(param); if(response!=null && StringUtils.equals(response.getCode(), HKConstants.RESPONSE_SUCCEE)){ return true; }else{ return false; } } public String hkTaskAddtion() { TaskAdditionRequest param = new TaskAdditionRequest(); param.setTaskType(HKConstants.TASK_TYPE.FACE.getKey()); BaseResponse<TaskAdditionResponse> response = HKService.taskAddition(param); if(response!=null && StringUtils.equals(response.getCode(),HKConstants.RESPONSE_SUCCEE) && response.getData()!=null && StringUtils.isNotBlank(response.getData().getTaskId())){ return response.getData().getTaskId(); }else{ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "海康创建下载任务失败=================="); } } } server/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncEmpowerServiceImpl.java
@@ -147,7 +147,7 @@ Constants.DEALING_HK_EMPOWER =true; try { //先删除所有需要取消授权的数据 // dealDelListTask(getDealList(Constants.ONE)); dealDelListTask(getDealList(Constants.ONE)); //查询所有需要同步的数据 dealNewListTask(getDealList(Constants.ZERO)); }catch (Exception e){ @@ -206,7 +206,7 @@ if(list ==null || list.size()==0){ return; } clearAllEmpowerFirst(list); // clearAllEmpowerFirst(list); Date date = new Date(); //创建任务 String taskId = hkTaskAddtion(); @@ -256,8 +256,8 @@ //创建任务 String taskId = hkTaskAddtion(); for(Empower c : list) { //向任务添加人员、设备信息数据 addTaskDataAll(c,taskId,allDevice); //向任务刪除人员的所有设备信息数据 addTaskDataAllDel(c.getHkId(),taskId,allDevice); } startTask(taskId); } @@ -295,67 +295,7 @@ return false; } } private boolean addTaskDataAll(Empower c,String taskId,List<Device> deviceList) { if(StringUtils.isBlank(c.getMemberHkId() ) ||StringUtils.isBlank(c.getDeviceChannelNo()) ||StringUtils.isBlank(c.getDeviceType()) ||StringUtils.isBlank(c.getDeviceIndexCode())){ //必填参数校验 return false; } TaskDataAdditionRequest param = new TaskDataAdditionRequest(); param.setTaskId(taskId); List<TaskDataAdditionResourceRequest> resourceInfos = new ArrayList<>();// object[] True 资源对象 for(Device d:deviceList){ TaskDataAdditionResourceRequest res = new TaskDataAdditionResourceRequest(); res.setChannelNos(d.getChannelNo().split(",")); res.setResourceType(d.getResourceType()); res.setResourceIndexCode(c.getDeviceIndexCode()); resourceInfos.add(res); } List<TaskDataAdditionPersonRequest> personInfos = new ArrayList<>(); TaskDataAdditionPersonRequest pinfo = new TaskDataAdditionPersonRequest(); pinfo.setName(c.getMemberName()); pinfo.setEndTime(DateUtil.getISO8601Timestamp(c.getEndTime())); pinfo.setStartTime(DateUtil.getISO8601Timestamp(c.getStartTime())); pinfo.setOperatorType(HKConstants.OPERA_TYPE.DEL.getKey()); pinfo.setPersonId(c.getMemberHkId()); param.setResourceInfos(resourceInfos); param.setPersonInfos(personInfos); BaseResponse response = HKService.taskDataAddition(param); if(response!=null && StringUtils.equals(response.getCode(),HKConstants.RESPONSE_SUCCEE)){ return true; }else{ return false; } } private boolean startTask(String taskId) { TaskProgressRequest param = new TaskProgressRequest(); param.setTaskId(taskId); BaseResponse response = HKService.taskStart(param); if(response!=null && StringUtils.equals(response.getCode(),HKConstants.RESPONSE_SUCCEE)){ return true; }else{ return false; } } private String hkTaskAddtion() { TaskAdditionRequest param = new TaskAdditionRequest(); param.setTaskType(HKConstants.TASK_TYPE.FACE.getKey()); BaseResponse<TaskAdditionResponse> response = HKService.taskAddition(param); if(response!=null && StringUtils.equals(response.getCode(),HKConstants.RESPONSE_SUCCEE) && response.getData()!=null && StringUtils.isNotBlank(response.getData().getTaskId())){ return response.getData().getTaskId(); }else{ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "海康创建下载任务失败=================="); } } private List<Empower> getDealList(int del ) { MPJLambdaWrapper<Empower> queryWrapper = new MPJLambdaWrapper<>(); @@ -367,7 +307,7 @@ queryWrapper.leftJoin(Device.class,Device::getId,Empower::getDeviceId); queryWrapper.leftJoin(Member.class,Member::getId,Empower::getMemberId); queryWrapper.eq(Empower::getSendStatus,Constants.EmpowerStatus.wait); // queryWrapper.eq( Empower::getIsdeleted,del); queryWrapper.eq( Empower::getIsdeleted,del); // queryWrapper.last("limit 100");//每次限制下发100个 List<Empower> list = empowerMapper.selectJoinList(Empower.class,queryWrapper); return list; server/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncOrgUserServiceImpl.java
@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.doumee.biz.system.SystemDictDataBiz; import com.doumee.core.constants.ResponseStatus; import com.doumee.core.erp.model.openapi.request.UserUpdateRequest; import com.doumee.core.erp.model.openapi.request.erp.UserFailRequest; import com.doumee.core.exception.BusinessException; import com.doumee.core.haikang.model.HKConstants; @@ -15,13 +16,9 @@ import com.doumee.core.utils.Constants; import com.doumee.core.utils.DateUtil; import com.doumee.core.utils.ImageBase64Util; import com.doumee.dao.business.CompanyMapper; import com.doumee.dao.business.MemberMapper; import com.doumee.dao.business.ParksMapper; import com.doumee.dao.business.*; import com.doumee.dao.business.join.CompanyJoinMapper; import com.doumee.dao.business.model.Company; import com.doumee.dao.business.model.Member; import com.doumee.dao.business.model.Parks; import com.doumee.dao.business.model.*; import com.doumee.service.business.ERPSyncService; import com.github.yulichang.query.MPJQueryWrapper; import com.github.yulichang.wrapper.MPJLambdaWrapper; @@ -30,6 +27,7 @@ import org.checkerframework.checker.units.qual.C; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.ArrayList; import java.util.Date; @@ -47,9 +45,15 @@ @Autowired private CompanyMapper companyMapper; @Autowired private MemberRoleMapper memberRoleMapper; @Autowired private EmpowerMapper empowerMapper; @Autowired private MemberMapper memberMapper; @Autowired private ERPSyncService erpSyncService; @Autowired private DeviceMapper deviceMapper; @Autowired private SystemDictDataBiz systemDictDataBiz; @@ -224,47 +228,132 @@ String path = systemDictDataBiz.queryByCode(Constants.FTP,Constants.FTP_RESOURCE_PATH).getCode() +systemDictDataBiz.queryByCode(Constants.FTP,Constants.MEMBER_IMG).getCode(); for(Member c : list){ if( c.getCompanyId() == null){ //如果没有组织不做处理 continue; } UserAddRequest addHkModel = new UserAddRequest(); if(StringUtils.isBlank(c.getHkId())){ //如果新增同步數據 if(Constants.equalsInteger(Constants.ONE,c.getIsdeleted())){ //删除的组织,不做处理,海康状态更新为不处理,下次不再处理这个记录 c.setHkStatus(Constants.TWO); memberMapper.updateById(c); continue ; } addHkModel = getUserAddModel(c,path); c.setHkId(addHkModel.getPersonId()); }else{ //删除海康原有的数据,再新增组织 addHkModel = getUserAddModel(c,path); c.setHkId(addHkModel.getPersonId()); } if(addHkModel == null){ //如果人脸数据不正确,下载失败等原因 noticeErpFail(c,Constants.ZERO,"人脸照片不存在,获取失败!"); continue; } //处理删除数据(删除之前下发的海康人员信息,然后新增) doHkDeleteUser(c.getId(),c.getHkId(),date); //处理新增数据 BaseResponse<UserAddResponse> result = HKService.addUser(addHkModel); if(StringUtils.equals(result.getCode(),HKConstants.RESPONSE_SUCCEE) && result.getData()!=null){ c.setFaceId(result.getData().getFaceId()); memberMapper.updateById(c); }else{ noticeErpFail(c,Constants.ZERO,"人员信息同步安防平台失败,请修正后重试!"+result.getCode()+result.getMsg()); } dealMemberInfoBiz(c,date,path) ; } }catch (Exception e){ e.printStackTrace(); }finally { Constants.DEALING_HK_USER =false; } } @Transactional private boolean dealMemberInfoBiz(Member c, Date date, String path) { if( c.getCompanyId() == null){ //如果没有组织不做处理 return false; } if(StringUtils.isBlank(c.getHkId())){ //如果新增同步數據 dealUserHkAddBiz(c,date,path); }else{ //如果之前已经和海康同步,则更新用户数据以及人脸数据(可能新增人脸 也可能更新人脸) dealUserHkEditBiz(c,date,path); } return false; } /** * 如果之前已经和海康同步,则更新用户数据以及人脸数据(可能新增人脸 也可能更新人脸) * @param c * @param date * @param path */ private void dealUserHkEditBiz(Member c, Date date, String path) { c.setHkStatus(Constants.ONE); if(Constants.equalsInteger(Constants.ONE,c.getIsdeleted())){ //处理删除数据(删除之前下发的海康人员信息) boolean r = doHkDeleteUser(c.getId(),c.getHkId(),date); c.setHkStatus(r?Constants.ONE:Constants.TWO); c.setRemark(r?null:"删除海康人员信息失败!"); }else{ //处理修改数据,并且更新人脸 UserAddRequest addHkModel = getUserAddModel(c,path,1);//修改 //处理新增数据 BaseResponse result = HKService.editUser(addHkModel); if(StringUtils.equals(result.getCode(),HKConstants.RESPONSE_SUCCEE) && result.getData()!=null){ if(StringUtils.isNotBlank(c.getFaceImg())){ //如果有人脸照片,处理人脸照片同步 String faceid = dealMemberFace(c,path); if(StringUtils.isBlank(faceid)){ noticeErpFail(c,Constants.ZERO,"人脸信息更新失败,请检查人脸照片是否合法!"); c.setHkStatus(Constants.TWO); c.setRemark("人脸信息更新失败,请检查人脸照片是否合法!!"); }else{ c.setFaceId(faceid); } } }else{ noticeErpFail(c,Constants.ZERO,"人员信息同步安防平台失败,请修正后重试!"+result.getCode()+result.getMsg()); c.setHkStatus(Constants.TWO); c.setRemark("人员信息同步安防平台更新失败,请修正后重试!!"); } } c.setHkDate(date); memberMapper.updateById(c); } /** * 新用户同步到海康平台 * @param c * @param date * @param path * @return */ private boolean dealUserHkAddBiz(Member c, Date date, String path) { if(Constants.equalsInteger(Constants.ONE,c.getIsdeleted())){ //删除的组织,不做处理,海康状态更新为不处理,下次不再处理这个记录 c.setHkStatus(Constants.TWO); c.setRemark("未同步数据,直接删除"); memberMapper.updateById(c); return false; } UserAddRequest addHkModel = getUserAddModel(c,path,0);//新增 if(addHkModel == null){ //如果人脸数据不正确,下载失败等原因 noticeErpFail(c,Constants.ZERO,"人脸照片不存在,获取失败!"); c.setHkStatus(Constants.TWO); c.setRemark("人脸照片不存在,获取失败!"); memberMapper.updateById(c); return false; } //处理新增数据 BaseResponse<UserAddResponse> result = HKService.addUser(addHkModel); if(StringUtils.equals(result.getCode(),HKConstants.RESPONSE_SUCCEE) && result.getData()!=null){ c.setFaceId(result.getData().getFaceId()); c.setHkStatus(Constants.ONE); c.setHkId(addHkModel.getPersonId()); memberMapper.updateById(c); return true; }else{ noticeErpFail(c,Constants.ZERO,"人员信息同步安防平台失败,请修正后重试!"+result.getCode()+result.getMsg()); c.setHkStatus(Constants.TWO); c.setRemark("人员信息同步安防平台失败,请修正后重试!"); memberMapper.updateById(c); return false; } } /** * 处理新增或者修改人脸信息 * @param c * @param path * @return */ private String dealMemberFace(Member c,String path) { if(StringUtils.isBlank(c.getFaceId())){ BaseResponse<FaceAddOrEditesponse> response = HKService.addFace(getFaceAddModel(c,path)); if(StringUtils.equals(response.getCode(),HKConstants.RESPONSE_SUCCEE)&& response.getData()!=null ){ return response.getData().getFaceId(); } }else{ BaseResponse response = HKService.editFace(getFaceUpdateModel(c,path)); if(StringUtils.equals(response.getCode(),HKConstants.RESPONSE_SUCCEE) ){ return c.getFaceId(); } } return null; } /** @@ -287,53 +376,95 @@ * @param id * @param date */ private void doHkDeleteUser(Integer id,String delHkIds, Date date) { private boolean doHkDeleteUser(Integer id,String delHkIds, Date date ) { if(StringUtils.isBlank(delHkIds)){ return; return false; } UserDelRequest request = new UserDelRequest(); request.setPersonIds(new String[]{delHkIds}); BaseResponse<List<UserDelResponse>> result = HKService.delBatchUser(request); if(StringUtils.equals(result.getCode(),HKConstants.RESPONSE_SUCCEE)){ List<String> fIds = new ArrayList<>(); //标记删除成功的数据(海康对接状态为已同步,,同步失败的仍为待同步,等下一次继续处理,知道全部删除完毕) if(result.getData()!=null && result.getData().size()>0){ log.info("海康删除用户失败:==============="+result.getData().get(0).getPersonId()); /* for(UserDelResponse r : result.getData()){ if(!r.getCode().equals("0x00072001")){ //不存在的也算删除成功 fIds.add(r.getPersonId());//删除失败的数据集合 } }}*/ memberMapper.update(null,new UpdateWrapper<Member>().lambda() .set(Member::getHkStatus,Constants.TWO)//同步失败 .set(Member::getHkDate,date) .in(Member::getId, id)); }else{ //标记删除成功的数据(海康对接状态为已同步,,同步失败的仍为待同步,等下一次继续处理,知道全部删除完毕) companyMapper.update(null,new UpdateWrapper<Company>().lambda() .set(Company::getHkStatus,Constants.ONE) .set(Company::getHkDate,date) .in(Company::getId, id)); memberMapper.update(null,new UpdateWrapper<Member>().lambda() .set(Member::getHkStatus,Constants.ONE)//同步成功 .set(Member::getHkDate,date) .in(Member::getId, id)); } return true; } return false; } /** * 删除人员所有设备上的权限信息 * @param userId * @param allDevice */ private void delUserHkRolle(String userId,List<Device> allDevice) { //创建任务 String taskId = hkTaskAddtion(); // if(taskId!=null){ //删除所有设备上的权限 addTaskDataAllDel(userId,taskId,allDevice); startTask(taskId); } } private UserAddRequest getUserAddModel(Member c,String path) { private UserAddRequest getUserAddModel(Member c,String path,int type) { UserAddRequest model = new UserAddRequest(); model.setOrgIndexCode(c.getCompanyHkId()); model.setPersonId(HKConstants.RES_USER_INDEX+UUID.randomUUID().toString().replace("-", "")); model.setPersonId(type == 0 ?HKConstants.RES_USER_INDEX+UUID.randomUUID().toString().replace("-", ""):c.getHkId()); model.setGender(Constants.formatIntegerNum(c.getSex())+""); model.setPersonName(c.getName()); if(StringUtils.isNotBlank(c.getFaceImg())){ if(type== 0 && StringUtils.isNotBlank(c.getFaceImg())){ model.setFaces(new ArrayList<>()); UserAddFaceRequest face = new UserAddFaceRequest(); String imageBase = ImageBase64Util.Image2Base64(path+c.getFaceImg()); if(face.getFaceData() == null){ if(imageBase== null){ //人脸数据不正确, return null; } face.setFaceData(imageBase); model.getFaces().add(face); } return model; } private FaceAddRequest getFaceAddModel(Member c,String path) { FaceAddRequest model = new FaceAddRequest(); model.setPersonId(c.getHkId()); if(StringUtils.isNotBlank(c.getFaceImg())){ String imageBase = ImageBase64Util.Image2Base64(path+c.getFaceImg()); if(imageBase == null){ //人脸数据不正确, return null; } model.setFaceData(imageBase); } return model; } private FaceEditRequest getFaceUpdateModel(Member c,String path) { FaceEditRequest model = new FaceEditRequest(); model.setFaceId(c.getFaceId()); if(StringUtils.isNotBlank(c.getFaceImg())){ String imageBase = ImageBase64Util.Image2Base64(path+c.getFaceImg()); if(imageBase == null){ //人脸数据不正确, return null; } model.setFaceData(imageBase); } return model; } } server/openapi/src/main/java/com/doumee/api/web/BizResourceController.java
@@ -157,7 +157,9 @@ @ApiOperation(value = "FTP账户信息", notes = "访客端提供,供ERP端调用,FTP账户信息") @ApiOperation(value = "FTP账户信息", notes = "访客端提供,供ERP端调用,FTP账户信息,其中【FTP资源访问映射地址】用于图片回显使用," + "比如人脸图片回显拼接:【FTP资源访问映射地址】+【FTP用户图片存储目录】+【实际人脸图片存储字段内容】" + "如:http://175.27.187.84/file4/member/20231211/skjd-skdjf4enc-flgk.png") @GetMapping("/resource/ftpAccount") public ApiResponse<Map<String,Object>> ftpAccount() { Map<String,Object> map = new HashMap<>(); @@ -177,6 +179,8 @@ systemDictDataBiz.queryByCode(Constants.FTP,Constants.DEVICE_EVENT_IMG).getCode()); map.put("FTP用户图片存储目录", systemDictDataBiz.queryByCode(Constants.FTP,Constants.MEMBER_IMG).getCode()); map.put("FTP资源访问映射地址", systemDictDataBiz.queryByCode(Constants.FTP,Constants.FTP_RESOURCE_PATH).getCode()); return ApiResponse.success(map); }