From 08fed15a5cf6f3972443311645dd8ee4ebb0ad69 Mon Sep 17 00:00:00 2001 From: jiangping <jp@doumee.com> Date: 星期二, 14 五月 2024 17:07:06 +0800 Subject: [PATCH] 最新版本 --- server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java | 231 +++++++++++++++++++++++++++++++++++++++++++++++++-------- 1 files changed, 199 insertions(+), 32 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 cba4c22..d6d06ff 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 @@ -128,18 +128,21 @@ //鑴辨晱鎿嶄綔 Member insert = initAddMemberModel(member,loginUserInfo); //娴峰悍浜哄憳鏂板涓氬姟 - if(dealHkUserBiz(insert)){ - try { + try { + if(dealHkUserBiz(insert)){ memberMapper.insert(insert); //鍒涘缓绯荤粺鐧婚檰璐﹀彿锛堥粯璁ゆ棤浠讳綍瑙掕壊锛� - createSystemUser(insert); - }catch (Exception e){ - //濡傛灉鍙戠敓寮傚父锛屽垹闄ゅ凡缁忓垱寤虹殑浜哄憳淇℃伅 - deleteHkUserBiz(insert.getHkId()); - throw new BusinessException(ResponseStatus.SERVER_ERROR.getCode(),"瀵逛笉璧凤紝鍛樺伐淇℃伅鏂板缓澶辫触锛岃绋嶅悗閲嶈瘯锛�"); + if(Constants.equalsInteger(member.getCompanyType(),Constants.ONE)){ + //濡傛灉鏄唴閮ㄧ粍缁囦汉鍛橈紝鏂板绯荤粺鐧婚檰璐﹀彿 + createSystemUser(insert); + } + }else{ + throw new BusinessException(ResponseStatus.SERVER_ERROR.getCode(),"瀵逛笉璧凤紝鍛樺伐淇℃伅鍚屾瀹夐槻骞冲彴澶辫触锛岃绋嶅悗閲嶈瘯锛�"); } - }else{ - throw new BusinessException(ResponseStatus.SERVER_ERROR.getCode(),"瀵逛笉璧凤紝鍛樺伐淇℃伅鍚屾瀹夐槻骞冲彴澶辫触锛岃绋嶅悗閲嶈瘯锛�"); + }catch (Exception e){ + //濡傛灉鍙戠敓寮傚父锛屽垹闄ゅ凡缁忓垱寤虹殑浜哄憳淇℃伅 + deleteHkUserBiz(insert.getHkId()); + throw new BusinessException(ResponseStatus.SERVER_ERROR.getCode(),"瀵逛笉璧凤紝鍛樺伐淇℃伅鏂板缓澶辫触锛岃绋嶅悗閲嶈瘯锛�"); } return insert; } @@ -150,7 +153,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()); @@ -175,6 +177,7 @@ insert.setCreateDate(new Date()); insert.setEditor(loginUserInfo.getId()); insert.setEditDate(new Date()); + insert.setHkOrgId(member.getHkOrgId()); insert.setIsdeleted(Constants.ZERO); insert.setCompanyId(member.getCompanyId()); insert.setFaceImg(member.getFaceImg()); @@ -201,6 +204,9 @@ * @param hkId */ private void deleteHkUserBiz(String hkId) { + if(StringUtils.isBlank(hkId)){ + return; + } UserDelRequest request = new UserDelRequest(); request.setPersonIds(new String[]{hkId}); BaseResponse<List<UserDelResponse>> result = HKService.delBatchUser(request); @@ -214,14 +220,6 @@ 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(),"瀵逛笉璧凤紝浜鸿劯鐓х墖鏈夎锛岃灏濊瘯閲嶆柊涓婁紶锛�"); @@ -305,6 +303,9 @@ } private void isMemberParamValid(Member member) { + if(member.getCompanyId() == null){ + throw new BusinessException(ResponseStatus.BAD_REQUEST); + } if (StringUtils.isBlank(member.getPhone())||!PhoneUtil.isPhone(member.getPhone())){ throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"鐢佃瘽鍙风爜鏍煎紡鏈夎"); } @@ -317,22 +318,32 @@ } throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"韬唤璇佸彿鏍煎紡鏈夎"); } - - 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(), "鎵嬫満鍙枫��"+queryUserDto.getUsername()+"銆戝凡琚娇鐢紝涓嶈兘閲嶅"); + Company company = companyMapper.selectById(member.getCompanyId()); + if(company == null || Constants.equalsInteger(company.getIsdeleted(),Constants.ONE)){ + throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"瀵逛笉璧凤紝璇ョ粍缁囦俊鎭凡琚垹闄わ紝璇峰埛鏂伴〉闈㈤噸璇曪紒"); } - // 楠岃瘉宸ュ彿 - if (StringUtils.isNotBlank(member.getCode())) { - queryUserDto = new SystemUser(); + if(StringUtils.isBlank(company.getHkId())){ + throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"瀵逛笉璧凤紝璇ョ粍缁囦俊鎭湭鍚屾瀹夐槻骞冲彴锛岃鍏堝墠寰�銆愮粍缁囩鐞嗐�戣彍鍗曡繘琛岀淮鎶わ紒"); + } + member.setHkOrgId(company.getHkId()); + member.setCompanyType(company.getType()); + if(Constants.equalsInteger(company.getType(),Constants.ONE)){ + SystemUser queryUserDto = new SystemUser(); + queryUserDto.setUsername(member.getPhone()); queryUserDto.setDeleted(Boolean.FALSE); - queryUserDto.setEmpNo(member.getCode()); - user = systemUserMapper.selectOne(new QueryWrapper<>(queryUserDto).last("limit 1")); + SystemUser user = systemUserMapper.selectOne(new QueryWrapper<>(queryUserDto).last("limit 1")); if (user != null) { - throw new BusinessException(ResponseStatus.DATA_EXISTS.getCode(), "宸ュ彿銆�"+member.getCode()+"銆戝凡瀛樺湪"); + throw new BusinessException(ResponseStatus.DATA_EXISTS.getCode(), "鎵嬫満鍙枫��"+queryUserDto.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()+"銆戝凡瀛樺湪"); + } } } } @@ -487,7 +498,7 @@ @Override - public void roleAuthById(Integer id) { + public void roleAuthById(Integer id,LoginUserInfo user) { Member member = memberMapper.selectById(id); if(member==null || member.getIsdeleted().equals(Constants.ONE)){ throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"鍛樺伐淇℃伅宸插垹闄�"); @@ -495,6 +506,157 @@ // List<MemberCard> cards = HkSyncOrgUserToHKServiceImpl.getNormalCardList(member,memberCardMapper); HkSyncOrgUserToHKServiceImpl.dealMemberRoleEmpowerDo(null,member,deviceRoleMapper,empowerMapper,deviceMapper); } + @Override + @Transactional(rollbackFor = {BusinessException.class,Exception.class}) + public void batchRoleAuth(Member memberRole) { + if(memberRole.getIds() ==null + || memberRole.getIds().size() ==0 ){ + throw new BusinessException(ResponseStatus.BAD_REQUEST); + } + if(memberRole.getRoleIds() ==null || memberRole.getRoleIds().length ==0){ + //濡傛灉鏄竻绌烘潈闄� + }else{ + if( ! (Constants.equalsObject(memberRole.getTimeType(),Constants.ZERO) + || (Constants.equalsObject(memberRole.getTimeType(),Constants.ONE) + && memberRole.getStartTime() !=null && memberRole.getEndTime() != null ))){ + throw new BusinessException(ResponseStatus.BAD_REQUEST); + } + if(Constants.equalsObject(memberRole.getTimeType(),Constants.ONE) && memberRole.getEndTime().getTime() < System.currentTimeMillis()){ + throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"鏈夋晥鏈熸埅姝㈡棩鏈熶笉鑳藉皬浜庡綋鍓嶆椂闂达紒"); + } + if(Constants.equalsObject(memberRole.getTimeType(),Constants.ONE) && memberRole.getEndTime().getTime() <= memberRole.getStartTime().getTime()){ + throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"鏈夋晥鏈熸埅姝㈡棩鏈熶笉鑳藉皬浜庡紑濮嬫椂闂达紒"); + } + } + if(Constants.equalsObject(memberRole.getTimeType(),Constants.ZERO) ){ + memberRole.setStartTime(null); + memberRole.setEndTime(null); + } + for (Integer id : memberRole.getIds()){ + Member member = memberMapper.selectById(id); + if(member==null || member.getIsdeleted().equals(Constants.ONE)){ + //濡傛灉鍛樺伐淇℃伅涓嶅悎娉曠洿鎺ヨ烦杩� + continue; + } + member.setStartTime(memberRole.getStartTime()); + member.setEndTime(memberRole.getEndTime()); + Integer ischange = getRoleIdByParam(memberRole.getRoleIds(),member,memberRoleMapper,deviceRoleMapper); + if(ischange == 0){ + return;//鏈彂鐜版潈闄愬彉鍖栵紝鐩存帴杩斿洖 + } + if(memberRole.getRoleIds()!=null && memberRole.getRoleIds().length>0 && StringUtils.isBlank(member.getRoleId())){ + throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"瀵逛笉璧凤紝鏈煡璇㈠埌鏈夋晥闂ㄧ缁勬暟鎹�"); + } + memberMapper.update(null,new UpdateWrapper<Member>().lambda() + .eq(Member::getId,member.getId()) + .set(Member::getRoleId,member.getRoleId()) + .set(Member::getAuthStatus,Constants.ONE) + .set(Member::getStartTime,memberRole.getStartTime()) + .set(Member::getEndTime,memberRole.getEndTime()) + .set(Member::getEditor,memberRole.getLoginUserInfo().getId()) + .set(Member::getEditDate,new Date()) ); + saveUserActionBiz(member,memberRole.getLoginUserInfo(), Constants.UserActionType.AUTH_ROLE,userActionJoinMapper); + //閲嶆柊鎺堟潈 + HkSyncOrgUserToHKServiceImpl.dealMemberRoleEmpowerDo(null,member,deviceRoleMapper,empowerMapper,deviceMapper); + } + } + + public static Integer getRoleIdByParam(Integer[] param, Member member,MemberRoleMapper memberRoleMapper,DeviceRoleMapper deviceRoleMapper) { + //娣诲姞浜哄憳瑙掕壊鍏宠仈鏁版嵁 + member.setRoleId(null); + List<MemberRole> roleList = memberRoleMapper.selectList( new QueryWrapper<MemberRole>().lambda() + .eq(MemberRole::getIsdeleted,Constants.ZERO) + .eq(MemberRole::getMemberId,member.getId())); + + member.setRoleId(""); + if((param == null || param.length==0 ) &&( roleList==null || roleList.size()==0)){ + //妫�鏌ョ敤鎴锋儏鍐垫潈闄愬師鏈氨鏄┖鐨勶紝 鍒欐棤闇�澶勭悊 + return 0; + } + if((param == null || param.length==0 ) &&( roleList!=null && roleList.size()>0) ){ + //濡傛灉娓呯┖鍘熸潵鏈夋潈闄愶紝鎺ュ彛杩涜鏉冮檺鍒犻櫎鍘熸湁鏉冮檺鍗冲彲 + memberRoleMapper.delete(new QueryWrapper<MemberRole>().lambda().eq(MemberRole::getMemberId,member.getId())); + return 1; + } + if(!Objects.isNull(param)&¶m.length>Constants.ZERO){ + /* if(roleList!=null && roleList.size()>0) { + //鍜屽師鏈夋潈闄愯繘琛屽姣旓紝鐪嬫槸鍚︽潈闄愬彂鐢熷彉鍖� + boolean ischange1=false; + for (MemberRole role : roleList) { + ischange1=false; + for (int j = 0; j < param.length; j++) { + if(Constants.equalsInteger(role.getRoleId(),param[j])){ + ischange1=true; + break; + } + } + if(!ischange1){ + break; + } + } + + boolean ischange2 =false; + for (int j = 0; j < param.length; j++) { + ischange2=false; + for (MemberRole role : roleList) { + if(Constants.equalsInteger(role.getRoleId(),param[j])){ + ischange2=true; + break; + } + } + if(!ischange2){ + break; + } + } + if(ischange2 && ischange1){ + return 0;//鏉冮檺鏈彂鐢熸敼鍙� + } + }*/ + //濡傛灉鍘熸潵鏈夋潈闄愶紝鎺ュ彛杩涜鏉冮檺鍒犻櫎 + memberRoleMapper.delete(new QueryWrapper<MemberRole>().lambda().eq(MemberRole::getMemberId,member.getId())); + //鏌ヨ鏁版嵁搴撳瓨鍦ㄧ殑鏉冮檺 + List<DeviceRole> deviceRoleList= deviceRoleMapper.selectList(new QueryWrapper<DeviceRole>().lambda() + .eq(DeviceRole::getType,Constants.TWO) + .in(DeviceRole::getId,param)); + + String ids = ""; + if(CollectionUtils.isNotEmpty(deviceRoleList)){ + List<MemberRole> memberRoleList = new ArrayList<>(); + List<Integer> r = new ArrayList<>(); + for (int i = 0; i < deviceRoleList.size(); i++) { + DeviceRole deviceRole =deviceRoleList.get(i); + if(i>0){ + ids += ","; + } + Integer id =deviceRole.getId(); + ids += "["+id+"]"; + String doorids =deviceRole.getDoorIds(); + if(StringUtils.isNotBlank(doorids)){ + String[] ss = doorids.split(","); + try { + for(String s :ss){ + r.add(Integer.parseInt(s)); + } + }catch (Exception e){ + //鑴忔暟鎹笉澶勭悊 + } + } + MemberRole memberRole = new MemberRole(); + memberRole.setCreateDate(new Date()); + memberRole.setMemberId(member.getId()); + memberRole.setIsdeleted(Constants.ZERO); + memberRole.setRoleId(deviceRole.getId()); + memberRoleList.add(memberRole); + } + memberRoleMapper.insertBatchSomeColumn(memberRoleList); + } + member.setRoleId(ids); + return 1; + } + + return 0; + } + @Override public void empowerByList(Member member) { if(member.getIdList()!=null && member.getIdList().size() >0){ @@ -655,6 +817,7 @@ userAction.setIsdeleted(Constants.ZERO); userAction.setCreateDate(updateMember.getEditDate()); userAction.setCreator(updateMember.getEditor()); + userAction.setBeforeStatus(updateMember.getStatus()); userAction.setType(type.getKey()); String info = type.getInfo(); userAction.setRemark(info.replace("${param1}",user!=null?user.getRealname():"").replace("${param2}", com.doumee.core.utils.DateUtil.getPlusTime2(updateMember.getEditDate()))); @@ -714,12 +877,15 @@ companyMapper.update(null,new UpdateWrapper<Company>().lambda() .eq(Company::getId,model.getCompanyId()) .set(Company::getHeadId,member.getId())); + //璁板綍鎿嶄綔鏃ュ織 + saveUserActionBiz(member,member.getLoginUserInfo(), Constants.UserActionType.BE_HEAD,userActionJoinMapper); }else{ //濡傛灉鏄涓轰富绠� companyMapper.update(null,new UpdateWrapper<Company>().lambda() .eq(Company::getId,model.getCompanyId()) .set(Company::getHeadId,null) ); + saveUserActionBiz(member,member.getLoginUserInfo(),Constants.UserActionType.NOT_HEAD,userActionJoinMapper); } } } @@ -1050,6 +1216,7 @@ .eq(Objects.nonNull(pageWrap.getModel().getHkStatus()),Member::getHkStatus,pageWrap.getModel().getHkStatus()) .eq(Objects.isNull(pageWrap.getModel().getIsdeleted()),Member::getIsdeleted,Constants.ZERO) .eq(Objects.nonNull(pageWrap.getModel().getIsdeleted()),Member::getIsdeleted,pageWrap.getModel().getIsdeleted()) + .eq(Objects.nonNull(pageWrap.getModel().getCompanyType()),Company::getType,pageWrap.getModel().getCompanyType()) .like(StringUtils.isNotBlank(pageWrap.getModel().getCompanyName()),Company::getName,pageWrap.getModel().getCompanyName()) // .eq(Member::getStatus,Constants.Status.ENABLE.getValue()) // .eq(Member::getType,Constants.memberType.internal) -- Gitblit v1.9.3