From 415bf078cb4f9615e9090663b7880e35817fd036 Mon Sep 17 00:00:00 2001 From: jiangping <jp@doumee.com> Date: 星期六, 11 五月 2024 18:54:26 +0800 Subject: [PATCH] 最新版本 --- server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java | 177 +++++++++++++++++++++++++++++++++++++++++++++++++++++++--- 1 files changed, 167 insertions(+), 10 deletions(-) diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java index 72e455e..65ac052 100644 --- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java +++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java @@ -14,7 +14,9 @@ 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.UserAddRequest; import com.doumee.core.haikang.model.param.request.UserDelRequest; +import com.doumee.core.haikang.model.param.respose.UserAddResponse; import com.doumee.core.haikang.model.param.respose.UserDelResponse; import com.doumee.core.haikang.service.HKService; import com.doumee.core.model.LoginUserInfo; @@ -32,11 +34,16 @@ import com.doumee.dao.admin.response.MemberInfoDTO; import com.doumee.dao.admin.response.StagingDataVO; import com.doumee.dao.business.*; +import com.doumee.dao.business.dao.CompanyMapper; import com.doumee.dao.business.join.MemberJoinMapper; import com.doumee.dao.business.join.RetentionJoinMapper; import com.doumee.dao.business.join.UserActionJoinMapper; import com.doumee.dao.business.model.*; +import com.doumee.dao.system.SystemUserMapper; +import com.doumee.dao.system.model.SystemDepartment; +import com.doumee.dao.system.model.SystemDepartmentUser; import com.doumee.dao.system.model.SystemDictData; +import com.doumee.dao.system.model.SystemUser; import com.doumee.dao.web.reqeust.AccountLoginDTO; import com.doumee.dao.web.reqeust.CheckVisitedDTO; import com.doumee.dao.web.reqeust.VisitMemberDTO; @@ -51,6 +58,7 @@ import com.doumee.service.business.impl.hksync.ferp.HkSyncOrgUserToHKServiceImpl; import com.github.yulichang.wrapper.MPJLambdaWrapper; import org.apache.commons.collections.CollectionUtils; +import org.apache.commons.lang3.RandomStringUtils; import org.apache.commons.lang3.StringUtils; import org.apache.shiro.SecurityUtils; import org.springframework.beans.BeanUtils; @@ -111,20 +119,166 @@ @Autowired private VisitsMapper visitsMapper; + @Autowired + private SystemUserMapper systemUserMapper; @Override - public Integer create(Member member) { - memberMapper.insert(member); - return member.getId(); + @Transactional(rollbackFor = {BusinessException.class,Exception.class}) + public Member create(Member member) { + LoginUserInfo loginUserInfo = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); + if(loginUserInfo == null){ + loginUserInfo = member.getLoginUserInfo(); + } + isMemberParamValid(member); + //鑾峰彇鍑虹敓鏃ユ湡 + //鑴辨晱鎿嶄綔 + Member insert = initAddMemberModel(member,loginUserInfo); + //娴峰悍浜哄憳鏂板涓氬姟 + if(dealHkUserBiz(insert)){ + try { + memberMapper.insert(insert); + //鍒涘缓绯荤粺鐧婚檰璐﹀彿锛堥粯璁ゆ棤浠讳綍瑙掕壊锛� + createSystemUser(insert); + }catch (Exception e){ + //濡傛灉鍙戠敓寮傚父锛屽垹闄ゅ凡缁忓垱寤虹殑浜哄憳淇℃伅 + deleteHkUserBiz(insert.getHkId()); + throw new BusinessException(ResponseStatus.SERVER_ERROR.getCode(),"瀵逛笉璧凤紝鍛樺伐淇℃伅鏂板缓澶辫触锛岃绋嶅悗閲嶈瘯锛�"); + } + }else{ + throw new BusinessException(ResponseStatus.SERVER_ERROR.getCode(),"瀵逛笉璧凤紝鍛樺伐淇℃伅鍚屾瀹夐槻骞冲彴澶辫触锛岃绋嶅悗閲嶈瘯锛�"); + } + return insert; + } + private void createSystemUser(Member insert) { + SystemUser user = new SystemUser(); + // 鐢熸垚瀵嗙爜鐩� + String salt = RandomStringUtils.randomAlphabetic(6); + // 鐢熸垚瀵嗙爜 + user.setPassword(Utils.Secure.encryptPassword(systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.INITIAL_PASSWORD).getCode(), salt)); + user.setSalt(salt); + + // 鍒涘缓鐢ㄦ埛璁板綍 + user.setType(insert.getType()); + user.setUsername(insert.getPhone()); + user.setEmpNo(insert.getCode()); + user.setRealname(insert.getName()); + user.setCompanyId(insert.getCompanyId()); + user.setMobile(insert.getPhone()); + user.setCreateTime(insert.getCreateDate()); + user.setCreateUser(insert.getCreator()); + user.setUpdateUser(insert.getEditor()); + user.setUpdateTime(insert.getEditDate()); + user.setMemberId(insert.getId()); + user.setDeleted(Boolean.FALSE); + user.setFixed(Boolean.FALSE); + user.setStatus(Constants.ZERO); + systemUserMapper.insert(user); + } + + private Member initAddMemberModel(Member member, LoginUserInfo loginUserInfo) { + Member insert= new Member(); + insert.setCreator(loginUserInfo.getId()); + insert.setCreateDate(new Date()); + insert.setEditor(loginUserInfo.getId()); + insert.setEditDate(new Date()); + insert.setIsdeleted(Constants.ZERO); + insert.setCompanyId(member.getCompanyId()); + insert.setFaceImg(member.getFaceImg()); + insert.setImgurl(member.getImgurl()); + insert.setCode(member.getCode()); + insert.setType(Constants.TWO); + insert.setHkDate(new Date()); + insert.setName(member.getName()); + insert.setHkStatus(Constants.ONE); + insert.setSex(IdcardUtil.getGenderByIdCard(member.getIdcardNo()) ==1?Constants.TWO:Constants.ONE);//鏍规嵁韬唤璇佸彿鑾峰彇鎬у埆 + insert.setBirthday( DateUtil.parse(IdcardUtil.getBirthByIdCard(member.getIdcardNo()), "yyyyMMdd")); + insert.setPhone(member.getPhone()); + insert.setIdcardNo(DESUtil.encrypt(Constants.EDS_PWD, member.getIdcardNo()));//韬唤璇佸彿鍔犲瘑 + insert.setIdcardDecode( Constants.getTuominStr(member.getIdcardNo())); + insert.setStatus(Constants.ZERO); + return insert; + } + + /** + * 鍒犻櫎娴峰悍浜哄憳淇℃伅 + * @param hkId + */ + private void deleteHkUserBiz(String hkId) { + UserDelRequest request = new UserDelRequest(); + request.setPersonIds(new String[]{hkId}); + BaseResponse<List<UserDelResponse>> result = HKService.delBatchUser(request); + } + + /** + * 娴峰悍浜哄憳鏂板涓氬姟 + * @param insert + * @return + */ + private boolean dealHkUserBiz(Member insert) { + String path = systemDictDataBiz.queryByCode(Constants.FTP,Constants.FTP_RESOURCE_PATH).getCode() + +systemDictDataBiz.queryByCode(Constants.FTP,Constants.MEMBER_IMG).getCode(); + Company company = companyMapper.selectById(insert.getCompanyId()); + if(company == null || Constants.equalsInteger(company.getIsdeleted(),Constants.ONE)){ + throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"瀵逛笉璧凤紝璇ョ粍缁囦俊鎭凡琚垹闄わ紝璇峰埛鏂伴〉闈㈤噸璇曪紒"); + } + if(StringUtils.isBlank(company.getHkId())){ + throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"瀵逛笉璧凤紝璇ョ粍缁囦俊鎭湭鍚屾瀹夐槻骞冲彴锛岃鍏堝墠寰�銆愮粍缁囩鐞嗐�戣彍鍗曡繘琛岀淮鎶わ紒"); + } + insert.setHkOrgId(company.getHkId()); + UserAddRequest hkAddRequest = HkSyncOrgUserToHKServiceImpl.getUserAddModel(insert,path,Constants.ZERO); + if(hkAddRequest == null){ + throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"瀵逛笉璧凤紝浜鸿劯鐓х墖鏈夎锛岃灏濊瘯閲嶆柊涓婁紶锛�"); + } + //澶勭悊鏂板鏁版嵁 + BaseResponse<UserAddResponse> result = HKService.addUser(hkAddRequest); + if(result!=null && StringUtils.equals(result.getCode(),HKConstants.RESPONSE_SUCCEE) && result.getData()!=null){ + insert.setHkId(hkAddRequest.getPersonId()); + insert.setFaceId(result.getData().getFaceId()); + if(StringUtils.isNotBlank(insert.getFaceId())){ + insert.setFaceStatus(Constants.ONE); + }else{ + insert.setFaceStatus(Constants.ZERO); + } + return true; + }else if(result!=null ){ + throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"瀵逛笉璧凤紝鍚屾瀹夐槻骞冲彴澶辫触銆�"+result.getMsg()+"銆戯紝璇疯仈绯荤鐞嗗憳锛�"); + } + return false; + } + + private void isMemberParamValid(Member member) { + if (!PhoneUtil.isPhone(member.getPhone())){ + throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"鐢佃瘽鍙风爜鏍煎紡鏈夎"); + } + if (!IdcardUtil.isValidCard(member.getIdcardNo())){ + throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"韬唤璇佸彿鏍煎紡鏈夎"); + } + + SystemUser systemUser = new SystemUser(); + SystemUser queryUserDto = new SystemUser(); + queryUserDto.setUsername(member.getPhone()); + queryUserDto.setDeleted(Boolean.FALSE); + SystemUser user = systemUserMapper.selectOne(new QueryWrapper<>(queryUserDto).last("limit 1")); + if (user != null) { + throw new BusinessException(ResponseStatus.DATA_EXISTS.getCode(), "鎵嬫満鍙枫��"+systemUser.getUsername()+"銆戝凡琚娇鐢紝涓嶈兘閲嶅"); + } + // 楠岃瘉宸ュ彿 + if (StringUtils.isNotBlank(member.getCode())) { + queryUserDto = new SystemUser(); + queryUserDto.setDeleted(Boolean.FALSE); + queryUserDto.setEmpNo(member.getCode()); + user = systemUserMapper.selectOne(new QueryWrapper<>(queryUserDto).last("limit 1")); + if (user != null) { + throw new BusinessException(ResponseStatus.DATA_EXISTS.getCode(), "宸ュ彿銆�"+member.getCode()+"銆戝凡瀛樺湪"); + } + } } @Transactional @Override public Integer laborMemberCreate(LaborMemberDTO member) { - LoginUserInfo loginUserInfo = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); - if (PhoneUtil.isPhone(member.getPhone())){ throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"鐢佃瘽鍙风爜鏍煎紡鏈夎"); } @@ -296,7 +450,7 @@ memberMapper.updateById(member); } @Override - public void updateFace(Member member) { + public boolean updateFace(Member member) { QueryWrapper<Member> wrapper = new QueryWrapper<>(member); wrapper.lambda().ne(Member::getRemark,"浜鸿劯宸插悓姝ユ渶鏂�"); List<Member> list =memberMapper.selectList(wrapper); @@ -312,9 +466,11 @@ update.setRemark("浜鸿劯宸插悓姝ユ渶鏂�"); update.setFaceStatus(Constants.ONE); memberMapper.updateById(update); + return true; } } } + return false; } @Override public void delHkForce(Member member) { @@ -460,7 +616,6 @@ queryWrapper.eq(Member::getCompanyId,member.getCompanyId()); } queryWrapper.eq(Member::getIsdeleted,Constants.ZERO); - List<Member> list = memberJoinMapper.selectJoinList(Member.class,queryWrapper); if(list!=null){ for(Member m : list){ @@ -654,7 +809,7 @@ .having(pageWrap.getModel().getTrainTimeEndTime()!=null,"trainTimeEndTime < "+ DateUtil.format(end,"yyyy-MM-dd HH:mm:ss")); IPage<MemberInfoDTO> memberIPage = memberJoinMapper.selectJoinPage(page, MemberInfoDTO.class,queryWrapper); if (!CollectionUtils.isEmpty(memberIPage.getRecords())){ - memberIPage.getRecords().forEach(s->s.setSex(IdcardUtil.getGenderByIdCard(s.getIdcardDecode()))); + memberIPage.getRecords().forEach(s->s.setSex(IdcardUtil.getGenderByIdCard(s.getIdcardDecode()) ==1?Constants.TWO:Constants.ONE)); } return PageData.from(memberIPage); } @@ -690,6 +845,8 @@ queryWrapper.selectAll(Member.class); queryWrapper.selectAs(Company::getName,Member::getCompanyName); + queryWrapper.selectAs(Company::getCompanyNamePath,Member::getCompanyNamePath); + queryWrapper.selectAs(Company::getCompanyPath,Member::getCompanyPath); queryWrapper.select(" ( select count(1) from member_card mc where mc.isdeleted = 0 and mc.member_id = t.id ) as memberCardCount "); queryWrapper.leftJoin(Company.class,Company::getId,Member::getCompanyId); queryWrapper.in(Objects.nonNull(pageWrap.getModel().getCompanyIds())&&pageWrap.getModel().getCompanyIds().size()>0, @@ -731,10 +888,10 @@ memberInfoDTO.setRoleNames(this.dealRoleDatas(memberInfoDTO.getRoleId(),deviceRoleList)); //鎷兼帴鍓嶇紑 if(StringUtils.isNotBlank(memberInfoDTO.getFaceImg())){ - memberInfoDTO.setFaceImg(prefixUrl + memberInfoDTO.getFaceImg()); + memberInfoDTO.setFaceImgFull(prefixUrl + memberInfoDTO.getFaceImg()); } if(StringUtils.isNotBlank(memberInfoDTO.getImgurl())){ - memberInfoDTO.setImgurl(prefixUrl + memberInfoDTO.getImgurl()); + memberInfoDTO.setImgurlFull(prefixUrl + memberInfoDTO.getImgurl()); } } } -- Gitblit v1.9.3