From 8c79ff2c695254275669390dc4353593b42b7475 Mon Sep 17 00:00:00 2001 From: jiangping <jp@doumee.com> Date: 星期一, 20 五月 2024 11:16:48 +0800 Subject: [PATCH] 最新版本 --- server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java | 377 ++++++++++++++++++++++++++++++++++++++++++----------- 1 files changed, 295 insertions(+), 82 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 b0e9327..cd6e31b 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 @@ -56,6 +56,7 @@ import org.apache.shiro.SecurityUtils; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -118,6 +119,8 @@ private SystemUserMapper systemUserMapper; + @Value("${debug_model}") + private Boolean isDebug; @Override @Transactional(rollbackFor = {BusinessException.class,Exception.class}) public Member create(Member member) { @@ -136,19 +139,21 @@ //鍒涘缓绯荤粺鐧婚檰璐﹀彿锛堥粯璁ゆ棤浠讳綍瑙掕壊锛� if(Constants.equalsInteger(member.getCompanyType(),Constants.ONE)){ //濡傛灉鏄唴閮ㄧ粍缁囦汉鍛橈紝鏂板绯荤粺鐧婚檰璐﹀彿 - createSystemUser(insert); + systemUserMapper.insert(createSystemUser(insert)); + //澶勭悊鍩硅鏈夋晥鏈熶笟鍔� + dealTrainTIme(member,0,loginUserInfo); } }else{ throw new BusinessException(ResponseStatus.SERVER_ERROR.getCode(),"瀵逛笉璧凤紝鍛樺伐淇℃伅鍚屾瀹夐槻骞冲彴澶辫触锛岃绋嶅悗閲嶈瘯锛�"); } }catch (Exception e){ //濡傛灉鍙戠敓寮傚父锛屽垹闄ゅ凡缁忓垱寤虹殑浜哄憳淇℃伅 - deleteHkUserBiz(insert.getHkId()); + deleteHkUserBiz(new String[]{insert.getHkId()}); throw new BusinessException(ResponseStatus.SERVER_ERROR.getCode(),"瀵逛笉璧凤紝鍛樺伐淇℃伅鏂板缓澶辫触锛岃绋嶅悗閲嶈瘯锛�"); } return insert; } - private void createSystemUser(Member insert) { + private SystemUser createSystemUser(Member insert) { SystemUser user = new SystemUser(); // 鐢熸垚瀵嗙爜鐩� String salt = RandomStringUtils.randomAlphabetic(6); @@ -170,8 +175,9 @@ user.setDeleted(Boolean.FALSE); user.setFixed(Boolean.FALSE); user.setStatus(Constants.ZERO); - systemUserMapper.insert(user); + return user; } + private Member initAddMemberModel(Member member, LoginUserInfo loginUserInfo) { Member insert= new Member(); @@ -203,14 +209,14 @@ /** * 鍒犻櫎娴峰悍浜哄憳淇℃伅 - * @param hkId + * @param hkIds */ - private void deleteHkUserBiz(String hkId) { - if(StringUtils.isBlank(hkId)){ + private void deleteHkUserBiz(String[] hkIds) { + if(hkIds ==null || hkIds.length == 0){ return; } UserDelRequest request = new UserDelRequest(); - request.setPersonIds(new String[]{hkId}); + request.setPersonIds(hkIds); BaseResponse<List<UserDelResponse>> result = HKService.delBatchUser(request); } @@ -279,7 +285,7 @@ * 娓呴櫎鍛樺伐鐨勮澶囨潈闄� * @param member */ - private void cancelAllMemberEmpower(Member member) { + public static void cancelAllMemberEmpower(Member member,MemberRoleMapper memberRoleMapper,EmpowerMapper empowerMapper) { //鍒犻櫎鍏ㄩ儴鏉冮檺 memberRoleMapper.update(null,new UpdateWrapper<MemberRole>().lambda() .eq(MemberRole::getMemberId,member.getId()) @@ -312,13 +318,17 @@ throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"鐢佃瘽鍙风爜鏍煎紡鏈夎"); } if (StringUtils.isBlank(member.getIdcardNo())||!IdcardUtil.isValidCard(member.getIdcardNo())){ - if(memberMapper.selectCount(new QueryWrapper<Member>().lambda() - .eq(Member::getIdcardNo,DESUtil.encrypt(Constants.EDS_PWD, member.getIdcardNo())) - .eq(Member::getIsdeleted,Constants.ZERO) - .ne(Member::getId,member.getId())) >0){ - throw new BusinessException(ResponseStatus.DATA_EXISTS.getCode(), "韬唤璇佸彿銆�"+member.getIdcardNo()+"銆戝凡琚娇鐢紝涓嶈兘閲嶅"); - } throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"韬唤璇佸彿鏍煎紡鏈夎"); + } + if(memberMapper.selectCount(new QueryWrapper<Member>().lambda() + .eq(Member::getIdcardNo,DESUtil.encrypt(Constants.EDS_PWD, member.getIdcardNo())) + .eq(Member::getIsdeleted,Constants.ZERO)) >0){ + throw new BusinessException(ResponseStatus.DATA_EXISTS.getCode(), "韬唤璇佸彿銆�"+member.getIdcardNo()+"銆戝凡琚娇鐢紝涓嶈兘閲嶅"); + } + if(memberMapper.selectCount(new QueryWrapper<Member>().lambda() + .eq(Member::getPhone, member.getPhone()) + .eq(Member::getIsdeleted,Constants.ZERO) ) >0){ + throw new BusinessException(ResponseStatus.DATA_EXISTS.getCode(), "鎵嬫満鍙枫��"+member.getPhone()+"銆戝凡琚娇鐢紝涓嶈兘閲嶅"); } Company company = companyMapper.selectById(member.getCompanyId()); if(company == null || Constants.equalsInteger(company.getIsdeleted(),Constants.ONE)){ @@ -350,16 +360,29 @@ } } private Member isMemberUpdateParamValid(Member member) { - Member model = memberMapper.selectById(member.getId()); + Member model = memberJoinMapper.selectJoinOne(Member.class,new MPJLambdaWrapper<Member>() + .selectAll(Member.class) + .selectAs(Company::getType,Member::getCompanyType) + .leftJoin(Company.class,Company::getId,Member::getCompanyId) + .eq(Member::getId,member.getId()) + ); if(model ==null ||Constants.equalsInteger(member.getIsdeleted(),Constants.ONE)){ throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"瀵逛笉璧凤紝璇ュ憳宸ヤ俊鎭笉瀛樺湪锛岃鍒锋柊椤甸潰閲嶈瘯锛�"); } - if (StringUtils.isNotBlank(member.getPhone()) && !PhoneUtil.isPhone(member.getPhone())){ - throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"鐢佃瘽鍙风爜鏍煎紡鏈夎"); + if (StringUtils.isNotBlank(member.getPhone()) ){ + if ( !PhoneUtil.isPhone(member.getPhone())) { + throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "鐢佃瘽鍙风爜鏍煎紡鏈夎"); + } + if(memberMapper.selectCount(new QueryWrapper<Member>().lambda() + .eq(Member::getPhone,member.getPhone()) + .eq(Member::getIsdeleted,Constants.ZERO) + .ne(Member::getId,member.getId())) >0){ + throw new BusinessException(ResponseStatus.DATA_EXISTS.getCode(), "鎵嬫満鍙枫��"+member.getPhone()+"銆戝凡琚娇鐢紝涓嶈兘閲嶅"); + } } if (StringUtils.isNotBlank(member.getIdcardNoNew())){ String encrptNo = (DESUtil.encrypt(Constants.EDS_PWD, member.getIdcardNoNew()));//韬唤璇佸彿鍔犲瘑 - if( !StringUtils.equals(model.getIdcardNo(),encrptNo)&& !IdcardUtil.isValidCard(member.getIdcardNoNew())){ + if(!isDebug && !StringUtils.equals(model.getIdcardNo(),encrptNo)&& !IdcardUtil.isValidCard(member.getIdcardNoNew())){ //濡傛灉鍙戠敓鏀瑰彉锛屽苟涓斾笉鍚堟硶锛屾彁绀哄紓甯� throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"淇敼鐨勬柊韬唤璇佸彿鏍煎紡鏈夎"); } @@ -411,6 +434,7 @@ if(StringUtils.isBlank(company.getHkId())){ throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"瀵逛笉璧凤紝璇ョ粍缁囦俊鎭湭鍚屾瀹夐槻骞冲彴锛岃鍏堝墠寰�銆愮粍缁囩鐞嗐�戣彍鍗曡繘琛岀淮鎶わ紒"); } + model.setCompanyType(company.getType()); member.setHkOrgId(company.getHkId()); isNeedUpdateUser = true; } @@ -424,6 +448,22 @@ .set(model.getCompanyId() !=null,SystemUser::getCompanyId,member.getCompanyId()) .set(StringUtils.isNotBlank(model.getCode()),SystemUser::getEmpNo,member.getCode()) .eq(SystemUser::getMemberId,model.getId())); + } + if(Constants.equalsInteger(model.getCompanyType(),Constants.ZERO) + && member.getTrainEndTime()!=null + && member.getTrainStartTime()!=null){ + TrainTime trainTime = new TrainTime(); + trainTime.setIsdeleted(Constants.ZERO); + trainTime.setCreator(member.getLoginUserInfo().getId()); + trainTime.setCreateDate(new Date()); + trainTime.setEdirot(trainTime.getCreator()); + trainTime.setEditDate(trainTime.getCreateDate()); + trainTime.setStartTime(member.getTrainStartTime()); + trainTime.setEndTime(member.getTrainEndTime()); + + trainTime.setMemberId(member.getId()); + //瀵煎叆鍩硅鏈夋晥鏈� + trainTimeMapper.insert(trainTime); } member.setHkId(model.getHkId()); member.setFaceId(model.getFaceId());//浜鸿劯缂栫爜 @@ -495,7 +535,7 @@ member.setHkStatus(Constants.ZERO); member.setRemark("浜哄憳宸插垹闄わ紝绛夊緟鍒犻櫎闂ㄧ鏉冮檺"); memberMapper.updateById(member); - saveUserActionBiz(member,loginUserInfo,Constants.UserActionType.DELETE,userActionJoinMapper); + saveUserActionBiz(member,loginUserInfo,Constants.UserActionType.DELETE,userActionJoinMapper,JSONObject.toJSONString(member)); } @@ -518,15 +558,16 @@ if(memberRole.getRoleIds() ==null || memberRole.getRoleIds().length ==0){ //濡傛灉鏄竻绌烘潈闄� }else{ - if( ! (Constants.equalsObject(memberRole.getTimeType(),Constants.ZERO) + if( ! (Constants.equalsInteger(memberRole.getTimeType(),Constants.ZERO) + ||Constants.equalsInteger(memberRole.getTimeType(),Constants.TWO) || (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()){ + if(Constants.equalsInteger(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()){ + if(Constants.equalsInteger(memberRole.getTimeType(),Constants.ONE) && memberRole.getEndTime().getTime() <= memberRole.getStartTime().getTime()){ throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"鏈夋晥鏈熸埅姝㈡棩鏈熶笉鑳藉皬浜庡紑濮嬫椂闂达紒"); } } @@ -549,6 +590,24 @@ if(memberRole.getRoleIds()!=null && memberRole.getRoleIds().length>0 && StringUtils.isBlank(member.getRoleId())){ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"瀵逛笉璧凤紝鏈煡璇㈠埌鏈夋晥闂ㄧ缁勬暟鎹�"); } + if(Constants.equalsInteger(memberRole.getTimeType(),Constants.TWO)){ + //濡傛灉鎸夌収鍩硅鏃ユ湡涓嬪彂 + TrainTime trainTime = trainTimeMapper.selectOne(new QueryWrapper<TrainTime>().lambda() + .eq(TrainTime::getMemberId,id ) + .eq(TrainTime::getIsdeleted,Constants.ZERO ) + .orderByDesc(TrainTime::getId) + .last("limit 1") + ); + if(trainTime == null || trainTime.getStartTime()==null || trainTime.getEndTime() ==null || trainTime.getStartTime().getTime()>=trainTime.getEndTime().getTime()){ + throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"瀵逛笉璧凤紝鐢ㄦ埛銆�"+member.getName()+"銆戝煿璁湁鏁堟湡淇℃伅涓虹┖锛岃杩斿洖瀹屽杽鍚庡啀杩涜璇ユ搷浣滐紒"); + } + if(trainTime.getEndTime() .getTime()< System.currentTimeMillis()){ + throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"瀵逛笉璧凤紝鐢ㄦ埛銆�"+member.getName()+"銆戝煿璁湁鏁堟湡宸茶繃鏈燂紝璇烽噸鏂颁笂浼犲叾鍩硅鏈夋晥鏈燂紒"); + } + memberRole.setStartTime(trainTime.getStartTime()); + memberRole.setEndTime(trainTime.getEndTime()); + } + memberMapper.update(null,new UpdateWrapper<Member>().lambda() .eq(Member::getId,member.getId()) .set(Member::getRoleId,member.getRoleId()) @@ -557,7 +616,7 @@ .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); + saveUserActionBiz(member,memberRole.getLoginUserInfo(), Constants.UserActionType.AUTH_ROLE,userActionJoinMapper,null); //閲嶆柊鎺堟潈 HkSyncOrgUserToHKServiceImpl.dealMemberRoleEmpowerDo(null,member,deviceRoleMapper,empowerMapper,deviceMapper); } @@ -695,7 +754,7 @@ member.setEditor(loginUserInfo.getId()); member.setEditDate(new Date()); memberMapper.updateById(member); - saveUserActionBiz(member,loginUserInfo,Constants.UserActionType.DELETE,userActionJoinMapper); + saveUserActionBiz(member,loginUserInfo,Constants.UserActionType.DELETE,userActionJoinMapper,JSONObject.toJSONString(member)); }); } @@ -724,13 +783,13 @@ member.setEditDate(date); member.setEditor(loginUserInfo.getId()); //鍒犻櫎鍛樺伐闂ㄧ鏉冮檺 - cancelAllMemberEmpower(member); + cancelAllMemberEmpower(member,memberRoleMapper,empowerMapper); if(Constants.equalsInteger(type,Constants.ONE)){ - saveUserActionBiz(member,loginUserInfo,Constants.UserActionType.FREEZE,userActionJoinMapper); + saveUserActionBiz(member,loginUserInfo,Constants.UserActionType.FREEZE,userActionJoinMapper,JSONObject.toJSONString(member)); } if(Constants.equalsInteger(type,Constants.TWO)){ - saveUserActionBiz(member,loginUserInfo,Constants.UserActionType.BLACKLIST,userActionJoinMapper); + saveUserActionBiz(member,loginUserInfo,Constants.UserActionType.BLACKLIST,userActionJoinMapper,JSONObject.toJSONString(member)); } } } @@ -759,10 +818,10 @@ member.setEditDate(date); member.setEditor(loginUserInfo.getId()); if(Constants.equalsInteger(type,Constants.ONE)){ - saveUserActionBiz(member,loginUserInfo,Constants.UserActionType.CANCEL_FREEZE,userActionJoinMapper); + saveUserActionBiz(member,loginUserInfo,Constants.UserActionType.CANCEL_FREEZE,userActionJoinMapper,JSONObject.toJSONString(member)); } if(Constants.equalsInteger(type,Constants.TWO)){ - saveUserActionBiz(member,loginUserInfo,Constants.UserActionType.CANCEL_BLACKLIST,userActionJoinMapper); + saveUserActionBiz(member,loginUserInfo,Constants.UserActionType.CANCEL_BLACKLIST,userActionJoinMapper,JSONObject.toJSONString(member)); } } } @@ -789,13 +848,14 @@ memberMapper.update(null,new UpdateWrapper<Member>().lambda() .set(Member::getStartTime,null) .set(Member::getEndTime,null) + .set(Member::getRoleId,null) .set(StringUtils.isNotBlank(updateMember.getPhone()),Member::getPhone,updateMember.getPhone()) .set(StringUtils.isNotBlank(updateMember.getName()),Member::getName,updateMember.getName()) .set(Member::getEditDate,updateMember.getEditDate()) .set(Member::getEditor,updateMember.getEditor()) .set(StringUtils.isNotBlank(updateMember.getIdcardNo()),Member::getIdcardNo,updateMember.getIdcardNo()) .set(StringUtils.isNotBlank(updateMember.getIdcardDecode()),Member::getIdcardDecode,updateMember.getIdcardDecode()) - .set(updateMember.getAuthStatus()!=null,Member::getAuthStatus,updateMember.getAuthStatus()) + .set( Member::getAuthStatus,Constants.ZERO) .set(updateMember.getHkStatus()!=null,Member::getHkStatus,updateMember.getHkStatus()) .set(updateMember.getSex()!=null,Member::getSex,updateMember.getSex()) .set(updateMember.getFaceStatus()!=null,Member::getFaceStatus,updateMember.getFaceStatus()) @@ -806,23 +866,46 @@ .set(updateMember.getCompanyId()!=null,Member::getCompanyId,updateMember.getCompanyId()) .set(StringUtils.isNotBlank(updateMember.getCode()),Member::getCode,updateMember.getCode()) .eq(Member::getId,updateMember.getId())); - cancelAllMemberEmpower(updateMember); + dealTrainTIme(updateMember,1,loginUserInfo); + cancelAllMemberEmpower(updateMember,memberRoleMapper,empowerMapper); //璁板綍鎿嶄綔鏃ュ織 - saveUserActionBiz(updateMember,loginUserInfo,Constants.UserActionType.EDIT,userActionJoinMapper); + saveUserActionBiz(updateMember,loginUserInfo,Constants.UserActionType.EDIT,userActionJoinMapper,null); }else{ throw new BusinessException(ResponseStatus.SERVER_ERROR.getCode(),"瀵逛笉璧凤紝鍛樺伐淇℃伅鍚屾瀹夐槻骞冲彴澶辫触锛岃绋嶅悗閲嶈瘯锛�"); } } - private void saveUserActionBiz(Member updateMember,LoginUserInfo user, Constants.UserActionType type,UserActionJoinMapper userActionMapper) { + private void dealTrainTIme(Member updateMember, int i,LoginUserInfo loginUserInfo) { + if( updateMember.getTrainEndTime()!=null + && updateMember.getTrainStartTime()!=null){ + if(updateMember.getTrainEndTime().getTime() <System.currentTimeMillis() || updateMember.getTrainEndTime().getTime()<updateMember.getTrainStartTime().getTime()){ + throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"璇峰~鍐欐纭湁鏁堢殑鍩硅鏈夋晥鏈熶俊鎭紒"); + } + TrainTime trainTime = new TrainTime(); + trainTime.setIsdeleted(Constants.ZERO); + trainTime.setCreator(loginUserInfo.getId()); + trainTime.setCreateDate(new Date()); + trainTime.setEdirot(trainTime.getCreator()); + trainTime.setEditDate(trainTime.getCreateDate()); + trainTime.setStartTime(updateMember.getTrainStartTime()); + trainTime.setEndTime(updateMember.getTrainEndTime()); + trainTime.setMemberId(updateMember.getId()); + trainTime.setImportInfo("鐢便��"+loginUserInfo.getRealname()+"銆戜簬"+DateUtil.getPlusTime2(trainTime.getCreateDate())+(i==0?"鍒涘缓":"鏇存柊")+"褰曞叆"); + //瀵煎叆鍩硅鏈夋晥鏈� + trainTimeMapper.insert(trainTime); + } + } + + public static void saveUserActionBiz(Member updateMember,LoginUserInfo user, Constants.UserActionType type,UserActionJoinMapper userActionMapper,String content) { UserAction userAction=new UserAction(); userAction.setIsdeleted(Constants.ZERO); userAction.setCreateDate(updateMember.getEditDate()); userAction.setCreator(updateMember.getEditor()); userAction.setBeforeStatus(updateMember.getStatus()); userAction.setType(type.getKey()); + userAction.setContent(content); String info = type.getInfo(); - userAction.setRemark(info.replace("${param1}",user!=null?user.getRealname():"").replace("${param2}", com.doumee.core.utils.DateUtil.getPlusTime2(updateMember.getEditDate()))); + userAction.setRemark(info.replace("${param1}",user!=null?user.getRealname():"绯荤粺").replace("${param2}", com.doumee.core.utils.DateUtil.getPlusTime2(updateMember.getEditDate()))); userAction.setMemberId(updateMember.getId()+""); userActionMapper.insert(userAction); } @@ -880,14 +963,14 @@ .eq(Company::getId,model.getCompanyId()) .set(Company::getHeadId,member.getId())); //璁板綍鎿嶄綔鏃ュ織 - saveUserActionBiz(member,member.getLoginUserInfo(), Constants.UserActionType.BE_HEAD,userActionJoinMapper); + saveUserActionBiz(member,member.getLoginUserInfo(), Constants.UserActionType.BE_HEAD,userActionJoinMapper,null); }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); + saveUserActionBiz(member,member.getLoginUserInfo(),Constants.UserActionType.NOT_HEAD,userActionJoinMapper,null); } } } @@ -926,12 +1009,12 @@ update.setWorkStatus(Constants.equalsInteger(member.getWorkStatus(),Constants.ONE)?Constants.ONE:Constants.ZERO); if(Constants.equalsInteger(member.getWorkStatus(),Constants.ONE)){ //濡傛灉鏄鑱� - cancelAllMemberEmpower(update); + cancelAllMemberEmpower(update,memberRoleMapper,empowerMapper); } update.setAuthStatus(Constants.ZERO); memberMapper.updateById(update); //璁板綍鎿嶄綔鏃ュ織 - saveUserActionBiz(member,loginUserInfo,Constants.equalsInteger(member.getWorkStatus(),Constants.ONE)?Constants.UserActionType.WORK_OFF:Constants.UserActionType.WORK_ON,userActionJoinMapper); + saveUserActionBiz(member,loginUserInfo,Constants.equalsInteger(member.getWorkStatus(),Constants.ONE)?Constants.UserActionType.WORK_OFF:Constants.UserActionType.WORK_ON,userActionJoinMapper,null); } @@ -958,7 +1041,7 @@ update.setCanVisit(member.getCanVisit()); memberMapper.updateById(update); //璁板綍鎿嶄綔鏃ュ織 - saveUserActionBiz(member,loginUserInfo,Constants.equalsInteger(member.getCanVisit(),Constants.ONE)?Constants.UserActionType.CANVISIT:Constants.UserActionType.CANCEL_VISIT,userActionJoinMapper); + saveUserActionBiz(member,loginUserInfo,Constants.equalsInteger(member.getCanVisit(),Constants.ONE)?Constants.UserActionType.CANVISIT:Constants.UserActionType.CANCEL_VISIT,userActionJoinMapper,null); } @Override @@ -1425,6 +1508,7 @@ * 瀹氭椂鍐荤粨鍐呴儴浜哄憳 */ @Override + @Transactional(rollbackFor = {BusinessException.class,Exception.class}) public void memberFreeze(){ SystemDictData systemDictData = systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.TIMEOUT_FREEZE); if(Objects.isNull(systemDictData)|| @@ -1432,40 +1516,38 @@ ){ return; } + int days = 30; + try { + days = Integer.parseInt(systemDictData.getCode()); + }catch (Exception e){ + + } List<Member> memberList = memberMapper.selectList(new QueryWrapper<Member>() .lambda().eq(Member::getIsdeleted,Constants.ZERO) .eq(Member::getType,Constants.memberType.internal) .eq(Member::getStatus,Constants.ZERO) .isNotNull(Member::getHkId) - .exists(" SELECT 1 FROM device_event b WHERE b.ext_event_person_no = HK_ID AND TO_DAYS( NOW()) - TO_DAYS( b.CREATE_DATE ) > "+systemDictData.getCode()+" ") - ); + .apply("to_days(lastVisitDate)+ "+days+" < to_days(now())" )); if(CollectionUtils.isEmpty(memberList)){ return; } List<Integer> memberIds = memberList.stream().map(m->m.getId()).collect(Collectors.toList()); - Date date = new Date(); - for (Integer id:memberIds) { - Member updateMember = new Member(); - updateMember.setId(id); - updateMember.setEditDate(date); - saveUserActionBiz(updateMember,null,Constants.UserActionType.FREEZE,userActionJoinMapper); - } - - //鍐荤粨鐘舵�� memberMapper.update(null,new UpdateWrapper<Member>() .lambda().set(Member::getStatus,Constants.TWO) .set(Member::getEditDate,new Date()) .in(Member::getId,memberIds) ); - //澶勭悊涓嬪彂鏁版嵁 - empowerMapper.update(null,new UpdateWrapper<Empower>() - .lambda() - .set(Empower::getIsdeleted,Constants.ONE) - .set(Empower::getSendStatus,Constants.ZERO) - .set(Empower::getEditDate,new Date()) - .in(Empower::getMemberId,memberIds) - ); + Date date = new Date(); + for (Integer id:memberIds) { + Member updateMember = new Member(); + updateMember.setId(id); + updateMember.setEditDate(date); + cancelAllMemberEmpower(updateMember,memberRoleMapper,empowerMapper); + saveUserActionBiz(updateMember,null,Constants.UserActionType.FREEZE,userActionJoinMapper,JSONObject.toJSONString(updateMember)); + } + + } @@ -1689,33 +1771,164 @@ } @Override - public String importBatch(MultipartFile file, LoginUserInfo loginUserInfo){ - - List<Member> list = memberJoinMapper.selectJoinList(Member.class,new MPJLambdaWrapper<Member>() - .selectAll(Member.class) - .leftJoin(Company.class,Company::getId,Member::getCompanyId) - .eq(Member::getIsdeleted,Constants.ZERO) - ); - ExcelImporter ie = null; - List<MemberImport> dataList =null; + @Transactional(rollbackFor = {BusinessException.class,Exception.class}) + public String importBatch(MultipartFile file,Integer companyType, LoginUserInfo loginUserInfo){ + Boolean importing = (Boolean) redisTemplate.opsForValue().get(Constants.RedisKeys.IMPORTING_MEMBER); + if(importing!=null && importing){ + throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"瀵逛笉璧凤紝宸插瓨鍦ㄥ憳宸ュ鍏ヤ换鍔℃鍦ㄦ墽琛屼腑锛岃绋嶅悗鍐嶈瘯锛�"); + } + redisTemplate.opsForValue().set(Constants.RedisKeys.IMPORTING_MEMBER,true); try { - ie = new ExcelImporter(file,0,0); - dataList = ie.getDataList(MemberImport.class,null); - } catch (Exception e) { - e.printStackTrace(); + ExcelImporter ie = null; + List<MemberImport> dataList =null; + try { + ie = new ExcelImporter(file,1,0); + dataList = ie.getDataList(MemberImport.class,null); + } catch (Exception e) { + e.printStackTrace(); + } + if(dataList == null || dataList.size() ==0){ + throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"瀵逛笉璧凤紝褰曞叆鏁版嵁涓虹┖锛�"); + } + List<Member> list = memberJoinMapper.selectJoinList(Member.class,new MPJLambdaWrapper<Member>() + .selectAll(Member.class) + .eq(Member::getIsdeleted,Constants.ZERO) + ); + List<Company> companyList = companyMapper.selectList(new QueryWrapper<Company>().lambda() + .eq(Company::getIsdeleted,Constants.ZERO)); + List<Member> newList = new ArrayList<>(); + for(int i=0;i<dataList.size();i++){ + MemberImport model = dataList.get(i); + if(StringUtils.isBlank(model.getName()) + &&StringUtils.isBlank(model.getIdcardNo()) + &&StringUtils.isBlank(model.getPhone()) + &&StringUtils.isBlank(model.getCompanyName())){ + continue; + } + Member member = checkModelParam(model,newList,i,loginUserInfo,list,companyList,companyType); + newList.add(member); + } + if(newList == null || newList.size() ==0){ + throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"瀵逛笉璧凤紝褰曞叆鏈夋晥鏁版嵁涓虹┖锛�"); + } + dealHkUserBizBatch(newList); + return "瀵煎叆鎴愬姛"; + }catch (BusinessException e){ + throw e; + }catch (Exception e){ + throw new BusinessException(ResponseStatus.SERVER_ERROR.getCode(),"鍛樺伐淇℃伅瀵煎叆澶辫触锛岃绋嶅悗閲嶈瘯"); + }finally { + redisTemplate.delete(Constants.RedisKeys.IMPORTING_MEMBER); } - if(dataList == null || dataList.size() ==0){ - throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"瀵逛笉璧凤紝褰曞叆鏁版嵁涓虹┖锛�"); - } - List<String> idCardList = dataList.stream().map(m->m.getIdcardNo()).collect(Collectors.toList()); - Set<String> set = new HashSet<>(idCardList); - if(idCardList.size() != set.size()){ - throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"瀵逛笉璧凤紝褰曞叆鏁版嵁瀛樺湪韬唤璇佸彿鐩稿悓鏁版嵁锛�"); - } - - return "瀵煎叆鎴愬姛"; } + private void dealHkUserBizBatch(List<Member> newList) { + List<String> hkIds = new ArrayList<>(); + try { + memberMapper.insertBatchSomeColumn(newList); + List<SystemUser> userList = new ArrayList<>(); + for(Member insert: newList){ + if(dealHkUserBiz(insert)){ + //鍒涘缓绯荤粺鐧婚檰璐﹀彿锛堥粯璁ゆ棤浠讳綍瑙掕壊锛� + if(Constants.equalsInteger(insert.getCompanyType(),Constants.ONE)){ + //濡傛灉鏄唴閮ㄧ粍缁囦汉鍛橈紝鏂板绯荤粺鐧婚檰璐﹀彿 + userList.add(createSystemUser(insert)); + } + }else{ + throw new BusinessException(ResponseStatus.SERVER_ERROR.getCode(),"瀵逛笉璧凤紝鍛樺伐淇℃伅銆�"+insert.getName()+"銆戝悓姝ュ畨闃插钩鍙板け璐ワ紝璇风◢鍚庨噸璇曪紒"); + } + } + if(userList.size()>0){ + systemUserMapper.insertBatchSomeColumn(userList); + } + }catch (Exception e){ + //濡傛灉鍙戠敓寮傚父锛屽垹闄ゅ凡缁忓垱寤虹殑浜哄憳淇℃伅 + deleteHkUserBiz(hkIds.toArray(new String[0])); + throw new BusinessException(ResponseStatus.SERVER_ERROR.getCode(),"瀵逛笉璧凤紝鍛樺伐淇℃伅瀵煎叆澶辫触锛岃绋嶅悗閲嶈瘯锛�"); + } + } + + private Member checkModelParam(MemberImport model, List<Member> newList + ,int index + ,LoginUserInfo loginUserInfo + ,List<Member> memberList + ,List<Company> companyList + ,Integer companyType) { + if(StringUtils.isBlank(model.getName()) + ||StringUtils.isBlank(model.getIdcardNo()) + ||StringUtils.isBlank(model.getPhone()) + ||StringUtils.isBlank(model.getCompanyName())){ + throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"瀵逛笉璧凤紝绗�"+(index+3)+"琛屼汉鍛樹俊鎭笉瀹屾暣锛岃妫�鏌ヨ〃鏍煎唴瀹癸紒"); + } + if (!PhoneUtil.isPhone(model.getPhone())){ + throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"瀵逛笉璧凤紝绗�"+(index+3)+"琛屾墜鏈哄彿銆�"+model.getPhone()+"銆戞牸寮忎笉姝g‘锛岃妫�鏌ヨ〃鏍煎唴瀹癸紒"); + } + if ( !isDebug && !IdcardUtil.isValidCard(model.getIdcardNo())){ + throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"瀵逛笉璧凤紝绗�"+(index+3)+"琛岃韩浠借瘉鍙枫��"+model.getIdcardNo()+"銆戞牸寮忎笉姝g‘锛岃妫�鏌ヨ〃鏍煎唴瀹癸紒"); + } + for(Member member: newList){ + if(StringUtils.equals(model.getIdcardNo(),member.getIdcardNo())){ + throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"瀵逛笉璧凤紝绗�"+(index+3)+"琛岃韩浠借瘉鍙枫��"+model.getIdcardNo()+"銆戦噸澶嶅嚭鐜帮紝璇锋鏌ヨ〃鏍煎唴瀹癸紒"); + } + if(StringUtils.equals(model.getPhone(),member.getPhone())){ + throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"瀵逛笉璧凤紝绗�"+(index+3)+"琛屾墜鏈哄彿銆�"+model.getPhone()+"銆戦噸澶嶅嚭鐜帮紝璇锋鏌ヨ〃鏍煎唴瀹癸紒"); + } + } + Company company = findCompanyFromList(model.getCompanyName(),companyList); + if(company == null){ + throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"瀵逛笉璧凤紝绗�"+(index+3)+"琛岀粍缁囧悕绉般��"+model.getCompanyName()+"銆戜笉瀛樺湪锛岃妫�鏌ヨ〃鏍煎唴瀹癸紒"); + } + if(companyType != null && !Constants.equalsObject(companyType,company.getType())){ + throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"瀵逛笉璧凤紝绗�"+(index+3)+"琛岀粍缁囧悕绉般��"+model.getCompanyName()+"銆戠被鍨嬩笉姝g‘锛岃妫�鏌ヨ〃鏍煎唴瀹癸紒"); + } + String candNo = DESUtil.encrypt(Constants.EDS_PWD, model.getIdcardNo()); + if(findMemberFromListByIdcard(candNo,memberList ) !=null){ + throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"瀵逛笉璧凤紝绗�"+(index+3)+"琛岃韩浠借瘉鍙枫��"+model.getIdcardNo()+"銆戝凡瀛樺湪锛岃妫�鏌ヨ〃鏍煎唴瀹癸紒"); + } + if(findMemberFromListByPhone(model.getPhone(),memberList ) !=null){ + throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"瀵逛笉璧凤紝绗�"+(index+3)+"琛屾墜鏈哄彿銆�"+model.getPhone()+"銆戝凡瀛樺湪锛岃妫�鏌ヨ〃鏍煎唴瀹癸紒"); + } + Member member = new Member(); + member.setPhone(model.getPhone()); + member.setName(model.getName()); + member.setIdcardNo(model.getIdcardNo()); + member.setCompanyId(company.getId()); + Member insert = initAddMemberModel(member,loginUserInfo); + insert.setCompanyType(company.getType()); + insert.setHkOrgId(company.getHkId()); + return insert; + } + + private Company findCompanyFromList(String companyName, List<Company> companyList) { + if(companyList !=null){ + for(Company company : companyList){ + if(StringUtils.equals(companyName,company.getName())){ + return company; + } + } + } + return null; + } + public static Member findMemberFromListByIdcard(String param, List<Member> list) { + if(list !=null){ + for(Member member : list){ + if(StringUtils.equals(param,member.getIdcardNo())){ + return member; + } + } + } + return null; + } + private Member findMemberFromListByPhone(String phone, List<Member> list) { + if(list !=null){ + for(Member member : list){ + if(StringUtils.equals(phone,member.getPhone())){ + return member; + } + } + } + return null; + } } -- Gitblit v1.9.3