From c30cfcc106111b8087691557ee8143f6be9c4e5d Mon Sep 17 00:00:00 2001 From: jiangping <jp@doumee.com> Date: 星期四, 07 十二月 2023 15:21:35 +0800 Subject: [PATCH] 海康接口对接开发 --- server/dmvisit_service/src/main/java/com/doumee/service/business/impl/VisitsServiceImpl.java | 186 ++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 186 insertions(+), 0 deletions(-) diff --git a/server/dmvisit_service/src/main/java/com/doumee/service/business/impl/VisitsServiceImpl.java b/server/dmvisit_service/src/main/java/com/doumee/service/business/impl/VisitsServiceImpl.java index 8a2db93..041f876 100644 --- a/server/dmvisit_service/src/main/java/com/doumee/service/business/impl/VisitsServiceImpl.java +++ b/server/dmvisit_service/src/main/java/com/doumee/service/business/impl/VisitsServiceImpl.java @@ -1,19 +1,35 @@ package com.doumee.service.business.impl; +import cn.hutool.core.util.IdcardUtil; +import com.doumee.biz.system.SystemDictDataBiz; +import com.doumee.core.constants.ResponseStatus; +import com.doumee.core.exception.BusinessException; import com.doumee.core.model.PageData; import com.doumee.core.model.PageWrap; +import com.doumee.core.utils.Constants; +import com.doumee.core.utils.DESUtil; import com.doumee.core.utils.Utils; +import com.doumee.dao.business.DeviceRoleMapper; +import com.doumee.dao.business.MemberMapper; +import com.doumee.dao.business.ProblemLogMapper; import com.doumee.dao.business.VisitsMapper; +import com.doumee.dao.business.model.DeviceRole; +import com.doumee.dao.business.model.Member; +import com.doumee.dao.business.model.ProblemLog; import com.doumee.dao.business.model.Visits; import com.doumee.service.business.VisitsService; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; +import org.springframework.util.DigestUtils; +import java.util.Arrays; +import java.util.Date; import java.util.List; /** @@ -26,13 +42,183 @@ @Autowired private VisitsMapper visitsMapper; + @Autowired + private DeviceRoleMapper deviceRoleMapper; + @Autowired + private ProblemLogMapper problemLogMapper ; + @Autowired + private MemberMapper memberMapper ; + @Autowired + private SystemDictDataBiz systemDictDataBiz; @Override public Integer create(Visits visits) { visitsMapper.insert(visits); return visits.getId(); } + /** + * 鏅�氳瀹㈢敵璇� + * @param visits + * @return + */ + @Override + public Integer createFk(Visits visits) { + if(visits.getStarttime() == null + || visits.getEndtime() == null + || StringUtils.isBlank(visits.getReason()) + || StringUtils.isBlank( visits.getName()) + || StringUtils.isBlank( visits.getPhone()) + || visits.getIdcardType() == null + || StringUtils.isBlank( visits.getFaceImg() ) + || StringUtils.isBlank( visits.getIdcardNo() ) + || visits.getReceptMemberId() == null){ + throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "瀵逛笉璧凤紝淇℃伅濉啓涓嶆纭紒"); + } + //妫�鏌ユ槸鍚﹀繀椤荤瓟棰橈紝骞朵笖绗﹀悎绛旈瑕佹眰 + ProblemLog problemLog = isValidProblemLog(visits); + //鑾峰彇鐢宠鐨勬捣搴疯闂棬绂佺粍淇℃伅 + String[] hkIds = getHkDeviceRoles(visits); + //妫�楠屾嫓璁夸汉鏄惁鍚堟硶 + isValideVisitedUser(visits.getReceptMemberId()); + //妫�鏌ラ殢璁夸汉鍛樻槸鍚﹀悎娉�,鐢熸垚闅忚浜哄憳鏂板闆嗗悎 + List<Member> withUsers = isValideWithUsers(visits.getWithUserList()); + + if(Constants.equalsInteger(Constants.ZERO, visits.getIdcardType()) &&!IdcardUtil.isValidCard(visits.getIdcardNo())){ + throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "瀵逛笉璧凤紝韬唤璇佸彿鐮佹湁璇紝璇锋牳瀹炲悗閲嶈瘯锛�"); + } + Date date = new Date(); + + visits.setBirthday(Constants.getBirthdyByCardNo(visits.getIdcardNo())); + //韬唤璇佸彿瀛樺偍瀵嗘枃 + visits.setIdcardNo(DESUtil.encrypt(Constants.EDS_PWD, visits.getIdcardNo()));//韬唤璇佸彿鍔犲瘑 + visits.setIdcardDecode(Constants.getTuominStr(visits.getIdcardNo()));//鑴辨晱鎵嬫満鍙� + visits.setCreateDate(date); + + //璁垮淇℃伅(浣跨敤韬唤璇佸彿鏌ヨ鏄惁宸插瓨鍦ㄦ敼鏅�氳瀹紝娌℃湁鍒欐柊澧烇紝瀛樺湪鍒欐洿鏂皁penid绛変俊鎭�) + Member member = getMemberByIdcardno(visits); + visitsMapper.insert(visits); + + + updateProblemLog(visits,problemLog,member); + + return visits.getId(); + } + + private Member getMemberByIdcardno(Visits idcardNo) { + Member member = memberMapper.selectOne(new QueryWrapper<Member>().lambda() +// .eq(Member::getType,Constants.MEMBER_TYPE) + .eq(Member::getIdcardNo,idcardNo.getIdcardNo()) + ); + return null; + } + + private List<Member> isValideWithUsers(List<Visits> withUserList) { + if(withUserList!= null && withUserList .size()>0){ + for(Visits model:withUserList){ + + } + } + + return null; + } + + /** + * 濡傛灉鏈夌瓟棰樿褰曪紝鏇存柊绛旈璁板綍鍏宠仈鏁版嵁 + * @param visits + * @param problemLog + * @param member + */ + + private void updateProblemLog(Visits visits, ProblemLog problemLog,Member member) { + if(problemLog!=null){ + problemLog.setEditDate(visits.getCreateDate()); + problemLog.setName(visits.getName()); + problemLog.setUserId(member.getId()); + problemLog.setPhone(member.getPhone()); + problemLog.setLogId(visits.getId()); + problemLogMapper.updateById(problemLog); + } + } + + /** + * 妫�鏌ヨ浜烘槸鍚﹀悎娉� + * @param receptMemberId + */ + private Member isValideVisitedUser(Integer receptMemberId) { + Member member = memberMapper.selectById(receptMemberId); + if(member == null || Constants.equalsInteger(Constants.ZERO,member.getIsdeleted())){ + throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "瀵逛笉璧凤紝璇ユ嫓璁夸汉鏆傛椂涓嶈兘鎺ュ彈鎮ㄧ殑鎷滆鐢宠锛�"); + } + if(!Constants.equalsInteger(member.getStatus(), Constants.ZERO)){ + throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "瀵逛笉璧凤紝璇ユ嫓璁夸汉鏆傛椂涓嶈兘鎺ュ彈鎮ㄧ殑鎷滆鐢宠."); + } + if(!Constants.equalsInteger(Constants.ONE, member.getCanVisit())){ + throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "瀵逛笉璧凤紝璇ユ嫓璁夸汉鏆傛椂涓嶈兘鎺ュ彈鎮ㄧ殑鎷滆鐢宠~"); + } + return member; + } + + private ProblemLog isValidProblemLog(Visits visits) { + String required = systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.PROBLEM_VISIT_REQUIRED).getCode(); + if(StringUtils.equals(required,Constants.ONE+"")){ + //濡傛灉蹇呴』绛旈锛屾煡鎵剧瓟棰樿褰� + if(visits.getUserAnswerId() == null){ + throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "瀵逛笉璧凤紝璇峰厛鎸夎姹傝繘琛屽畨鍏ㄧ煡璇嗙瓟棰橈紒"); + } + ProblemLog log = problemLogMapper.selectById(visits.getUserAnswerId()); + if(log == null){ + throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "瀵逛笉璧凤紝璇峰厛鎸夎姹傝繘琛屽畨鍏ㄧ煡璇嗙瓟棰�."); + } + if(log.getLogId() !=null){ + throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "瀵逛笉璧凤紝璇峰厛鎸夎姹傝繘琛屽畨鍏ㄧ煡璇嗙瓟棰榽"); + } + return log; + } + return null; + } + + /** + * 鑾峰彇鐢宠鐨勬捣搴疯闂棬绂佺粍淇℃伅 + * @param visits + * @return + */ + private String[] getHkDeviceRoles(Visits visits) { + String mustSelectDoors = systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.SELECT_DOORS_VISIT_REQUIRED).getCode(); + List<DeviceRole> roles = null; + if(StringUtils.equals(mustSelectDoors,Constants.ZERO+"")){ + //濡傛灉蹇呴』閫夋嫨闂ㄧ锛屼絾鏈�夋嫨 + if(StringUtils.isBlank(visits.getDoors())){ + throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "瀵逛笉璧凤紝璇烽�夋嫨璁块棶闂ㄧ锛�"); + } + //鏍¢獙闂ㄧ缁勪俊鎭槸鍚︽纭� + String[] dIds = visits.getDoors().split(","); + roles = deviceRoleMapper.selectList(new QueryWrapper<DeviceRole>().lambda() + .eq(DeviceRole::getIsdeleted,Constants.ZERO) + .eq(DeviceRole::getType,Constants.DeviceRoleType.fk) + .in(DeviceRole::getId, Arrays.asList(dIds))); + if(roles == null || roles.size()==0 || roles.size() != dIds.length){ + throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "瀵逛笉璧凤紝璇烽�夋嫨鏈夋晥璁块棶闂ㄧ锛�"); + } + }else{ + //濡傛灉璁剧疆涓嶉�夋嫨闂ㄧ锛屽垯鎻愪緵榛樿闂ㄧ缁勪俊鎭� + String[] dIds = visits.getDoors().split(","); + roles = deviceRoleMapper.selectList(new QueryWrapper<DeviceRole>().lambda() + .eq(DeviceRole::getIsdeleted,Constants.ZERO) + .eq(DeviceRole::getIsDefault,Constants.ZERO) + .eq(DeviceRole::getType,Constants.DeviceRoleType.fk)); + if(roles.size() ==0){ + + throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "瀵逛笉璧凤紝鏆備笉瀛樺湪鍙闂殑璁垮闂ㄧ锛屾棤娉曡繘琛岀敵璇锋搷浣滐紒"); + } + } + String[] ids =new String[roles.size()]; + for (int i = 0; i < roles.size(); i++) { + ids[i] = roles.get(i).getHkId(); + } + return ids; + } + @Override public void deleteById(Integer id) { visitsMapper.deleteById(id); -- Gitblit v1.9.3