|  |  | @ -29,7 +29,7 @@ import com.epmet.commons.tools.page.PageData; | 
			
		
	
		
			
				
					|  |  |  | import com.epmet.commons.tools.utils.ConvertUtils; | 
			
		
	
		
			
				
					|  |  |  | import com.epmet.commons.tools.utils.Result; | 
			
		
	
		
			
				
					|  |  |  | import com.epmet.constant.ReadFlagConstant; | 
			
		
	
		
			
				
					|  |  |  | import com.epmet.dto.UserResiInfoDTO; | 
			
		
	
		
			
				
					|  |  |  | import com.epmet.dto.form.UserInvitationFormDTO; | 
			
		
	
		
			
				
					|  |  |  | import com.epmet.dto.form.UserMessageFormDTO; | 
			
		
	
		
			
				
					|  |  |  | import com.epmet.dto.form.UserResiInfoFormDTO; | 
			
		
	
		
			
				
					|  |  |  | import com.epmet.dto.result.UserResiInfoResultDTO; | 
			
		
	
	
		
			
				
					|  |  | @ -199,14 +199,15 @@ public class GroupInvitationServiceImpl extends BaseServiceImpl<GroupInvitationD | 
			
		
	
		
			
				
					|  |  |  | 	 **/ | 
			
		
	
		
			
				
					|  |  |  | 	@Override | 
			
		
	
		
			
				
					|  |  |  | 	public Result<LinkGroupInfoResultDTO> getLinkGroupInfo(LinkGroupInfoFormDTO formDTO) { | 
			
		
	
		
			
				
					|  |  |  | 		//校验是否存在该邀请连接
 | 
			
		
	
		
			
				
					|  |  |  | 		//0、校验是否存在该邀请连接(判断是会否被删除连接、是否失效、群状态)
 | 
			
		
	
		
			
				
					|  |  |  | 		Result<GroupInvitationDTO> validResult = this.checkLinkValid(formDTO.getInvitationId()); | 
			
		
	
		
			
				
					|  |  |  | 		if (!validResult.success()) { | 
			
		
	
		
			
				
					|  |  |  | 			return new Result<LinkGroupInfoResultDTO>().error(validResult.getCode(), validResult.getMsg()); | 
			
		
	
		
			
				
					|  |  |  | 		} | 
			
		
	
		
			
				
					|  |  |  | 		GroupInvitationDTO groupInvitationDTO=validResult.getData(); | 
			
		
	
		
			
				
					|  |  |  | 		LinkGroupInfoResultDTO linkGroupInfoResultDTO = new LinkGroupInfoResultDTO(); | 
			
		
	
		
			
				
					|  |  |  | 		//1、查询是否在群内
 | 
			
		
	
		
			
				
					|  |  |  | 		ResiGroupMemberDTO resiGroupMemberDTO = resiGroupMemberDao.selectGroupMemberInfo(validResult.getData().getResiGroupId(), formDTO.getUserId()); | 
			
		
	
		
			
				
					|  |  |  | 		ResiGroupMemberDTO resiGroupMemberDTO = resiGroupMemberDao.selectGroupMemberInfo(groupInvitationDTO.getResiGroupId(), formDTO.getUserId()); | 
			
		
	
		
			
				
					|  |  |  | 		if (null != resiGroupMemberDTO && !MemberStateConstant.REMOVED.equals(resiGroupMemberDTO.getStatus())) { | 
			
		
	
		
			
				
					|  |  |  | 			linkGroupInfoResultDTO.setInGroup(Constant.YES); | 
			
		
	
		
			
				
					|  |  |  | 			return new Result<LinkGroupInfoResultDTO>().ok(linkGroupInfoResultDTO); | 
			
		
	
	
		
			
				
					|  |  | @ -214,7 +215,7 @@ public class GroupInvitationServiceImpl extends BaseServiceImpl<GroupInvitationD | 
			
		
	
		
			
				
					|  |  |  | 			linkGroupInfoResultDTO.setInGroup(Constant.NO); | 
			
		
	
		
			
				
					|  |  |  | 		} | 
			
		
	
		
			
				
					|  |  |  | 		//2、查询组信息
 | 
			
		
	
		
			
				
					|  |  |  | 		LinkGroupInfoDTO groupInfo = baseDao.selectLinkGroupInfo(validResult.getData().getResiGroupId()); | 
			
		
	
		
			
				
					|  |  |  | 		LinkGroupInfoDTO groupInfo = baseDao.selectLinkGroupInfo(groupInvitationDTO.getResiGroupId()); | 
			
		
	
		
			
				
					|  |  |  | 		//3、获取组长信息
 | 
			
		
	
		
			
				
					|  |  |  | 		Result<UserResiInfoResultDTO> groupLeaderUserInfo = this.getGroupLeaderUserInfo(groupInfo.getGroupId()); | 
			
		
	
		
			
				
					|  |  |  | 		if (groupLeaderUserInfo.success() && null != groupLeaderUserInfo.getData()) { | 
			
		
	
	
		
			
				
					|  |  | @ -223,9 +224,36 @@ public class GroupInvitationServiceImpl extends BaseServiceImpl<GroupInvitationD | 
			
		
	
		
			
				
					|  |  |  | 			logger.info("组长注册信息查询失败" + groupLeaderUserInfo.getMsg()); | 
			
		
	
		
			
				
					|  |  |  | 		} | 
			
		
	
		
			
				
					|  |  |  | 		linkGroupInfoResultDTO.setGroupInfo(groupInfo); | 
			
		
	
		
			
				
					|  |  |  | 		//4、记录用户邀请关系
 | 
			
		
	
		
			
				
					|  |  |  | 		this.saveUserInvitation(groupInvitationDTO,formDTO); | 
			
		
	
		
			
				
					|  |  |  | 		return new Result<LinkGroupInfoResultDTO>().ok(linkGroupInfoResultDTO); | 
			
		
	
		
			
				
					|  |  |  | 	} | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  | 	/** | 
			
		
	
		
			
				
					|  |  |  | 	 * @param groupInvitationDTO | 
			
		
	
		
			
				
					|  |  |  | 	 * @param formDTO | 
			
		
	
		
			
				
					|  |  |  | 	 * @return com.epmet.commons.tools.utils.Result | 
			
		
	
		
			
				
					|  |  |  | 	 * @Author yinzuomei | 
			
		
	
		
			
				
					|  |  |  | 	 * @Description 记录用户邀请关系 | 
			
		
	
		
			
				
					|  |  |  | 	 * @Date 2020/4/10 1:01 | 
			
		
	
		
			
				
					|  |  |  | 	 **/ | 
			
		
	
		
			
				
					|  |  |  | 	private Result saveUserInvitation(GroupInvitationDTO groupInvitationDTO, LinkGroupInfoFormDTO formDTO) { | 
			
		
	
		
			
				
					|  |  |  | 		UserInvitationFormDTO userInvitationFormDTO = new UserInvitationFormDTO(); | 
			
		
	
		
			
				
					|  |  |  | 		userInvitationFormDTO.setCustomerId(groupInvitationDTO.getInviterCustomerId()); | 
			
		
	
		
			
				
					|  |  |  | 		userInvitationFormDTO.setGridId(groupInvitationDTO.getInviterGridId()); | 
			
		
	
		
			
				
					|  |  |  | 		userInvitationFormDTO.setInviterUserId(groupInvitationDTO.getInviterUserId()); | 
			
		
	
		
			
				
					|  |  |  | 		userInvitationFormDTO.setInviteeUserId(formDTO.getUserId()); | 
			
		
	
		
			
				
					|  |  |  | 		userInvitationFormDTO.setInviteSource(formDTO.getInviteSource()); | 
			
		
	
		
			
				
					|  |  |  | 		userInvitationFormDTO.setInviteSourceId(formDTO.getInvitationId()); | 
			
		
	
		
			
				
					|  |  |  | 		Result result = epmetUserFeignClient.saveUserInvitation(userInvitationFormDTO); | 
			
		
	
		
			
				
					|  |  |  | 		if (!result.success()) { | 
			
		
	
		
			
				
					|  |  |  | 			logger.info("人员邀请关系记录失败" + result.getMsg()); | 
			
		
	
		
			
				
					|  |  |  | 		} else { | 
			
		
	
		
			
				
					|  |  |  | 			logger.info("人员邀请关系记录成功"); | 
			
		
	
		
			
				
					|  |  |  | 		} | 
			
		
	
		
			
				
					|  |  |  | 		return result; | 
			
		
	
		
			
				
					|  |  |  | 	} | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  | 	/** | 
			
		
	
		
			
				
					|  |  |  | 	 * @param groupId | 
			
		
	
		
			
				
					|  |  |  | 	 * @return com.epmet.commons.tools.utils.Result<com.epmet.dto.UserResiInfoDTO> | 
			
		
	
	
		
			
				
					|  |  | @ -259,6 +287,17 @@ public class GroupInvitationServiceImpl extends BaseServiceImpl<GroupInvitationD | 
			
		
	
		
			
				
					|  |  |  | 		if (null != groupInvitationDTO && !groupInvitationDTO.getValidEndTime().after(new Date())) { | 
			
		
	
		
			
				
					|  |  |  | 			return new Result<GroupInvitationDTO>().error(EpmetErrorCode.LOSE_EFFICACY.getValue(), EpmetErrorCode.LOSE_EFFICACY.getName()); | 
			
		
	
		
			
				
					|  |  |  | 		} | 
			
		
	
		
			
				
					|  |  |  | 		ResiGroupEntity resiGroupEntity = resiGroupDao.selectById(groupInvitationDTO.getResiGroupId()); | 
			
		
	
		
			
				
					|  |  |  | 		if (null == resiGroupEntity) { | 
			
		
	
		
			
				
					|  |  |  | 			logger.info("组不存在"); | 
			
		
	
		
			
				
					|  |  |  | 			//TODO
 | 
			
		
	
		
			
				
					|  |  |  | 		} else if (null != resiGroupEntity && GroupStateConstant.GROUP_CLOSED.equals(resiGroupEntity.getState())) { | 
			
		
	
		
			
				
					|  |  |  | 			logger.info("组已经关闭"); | 
			
		
	
		
			
				
					|  |  |  | 			//TODO
 | 
			
		
	
		
			
				
					|  |  |  | 		} else if (null != resiGroupEntity && GroupStateConstant.GROUP_HIDDEN.equals(resiGroupEntity.getState())) { | 
			
		
	
		
			
				
					|  |  |  | 			logger.info("组已屏蔽"); | 
			
		
	
		
			
				
					|  |  |  | 			//TODO
 | 
			
		
	
		
			
				
					|  |  |  | 		} | 
			
		
	
		
			
				
					|  |  |  | 		return new Result<GroupInvitationDTO>().ok(groupInvitationDTO); | 
			
		
	
		
			
				
					|  |  |  | 	} | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
	
		
			
				
					|  |  | @ -276,8 +315,9 @@ public class GroupInvitationServiceImpl extends BaseServiceImpl<GroupInvitationD | 
			
		
	
		
			
				
					|  |  |  | 		if (!validResult.success()) { | 
			
		
	
		
			
				
					|  |  |  | 			return new Result<LinkGroupInfoResultDTO>().error(validResult.getCode(), validResult.getMsg()); | 
			
		
	
		
			
				
					|  |  |  | 		} | 
			
		
	
		
			
				
					|  |  |  | 		GroupInvitationDTO groupInvitationDTO=validResult.getData(); | 
			
		
	
		
			
				
					|  |  |  | 		//2、校验是否已经注册居民
 | 
			
		
	
		
			
				
					|  |  |  | 		ResiGroupDTO resiGroupDTO = resiGroupService.get(validResult.getData().getResiGroupId()); | 
			
		
	
		
			
				
					|  |  |  | 		ResiGroupDTO resiGroupDTO = resiGroupService.get(groupInvitationDTO.getResiGroupId()); | 
			
		
	
		
			
				
					|  |  |  | 		if (null != resiGroupDTO) { | 
			
		
	
		
			
				
					|  |  |  | 			UserRoleDTO userRoleDTO = resiGroupService.checkPartyMemberOrWarmHeated(formDTO.getApp(), | 
			
		
	
		
			
				
					|  |  |  | 					formDTO.getUserId(), | 
			
		
	
	
		
			
				
					|  |  | @ -292,13 +332,12 @@ public class GroupInvitationServiceImpl extends BaseServiceImpl<GroupInvitationD | 
			
		
	
		
			
				
					|  |  |  | 		groupMemeberOperation.setCustomerUserId(formDTO.getUserId()); | 
			
		
	
		
			
				
					|  |  |  | 		groupMemeberOperation.setOperateStatus(MemberStateConstant.APPROVED); | 
			
		
	
		
			
				
					|  |  |  | 		groupMemeberOperation.setEnterGroupType(EnterGroupTypeConstant.INVITED); | 
			
		
	
		
			
				
					|  |  |  | 		groupMemeberOperation.setCreatedBy(formDTO.getUserId()); | 
			
		
	
		
			
				
					|  |  |  | 		groupMemeberOperation.setOperateUserId(formDTO.getUserId()); | 
			
		
	
		
			
				
					|  |  |  | 		groupMemeberOperationService.save(groupMemeberOperation); | 
			
		
	
		
			
				
					|  |  |  | 		//4、直接加入群成员关系表
 | 
			
		
	
		
			
				
					|  |  |  | 		//如果是之前被移除的,则修改resi_group_member记录
 | 
			
		
	
		
			
				
					|  |  |  | 		ResiGroupMemberDTO resiGroupMemberDTO = new ResiGroupMemberDTO(); | 
			
		
	
		
			
				
					|  |  |  | 		ResiGroupMemberDTO resiGroupMember = resiGroupMemberDao.selectGroupMemberInfo(validResult.getData().getResiGroupId(), formDTO.getUserId()); | 
			
		
	
		
			
				
					|  |  |  | 		ResiGroupMemberDTO resiGroupMember = resiGroupMemberDao.selectGroupMemberInfo(groupInvitationDTO.getResiGroupId(), formDTO.getUserId()); | 
			
		
	
		
			
				
					|  |  |  | 		if (null != resiGroupMember) { | 
			
		
	
		
			
				
					|  |  |  | 			resiGroupMemberDTO.setId(resiGroupMember.getId()); | 
			
		
	
		
			
				
					|  |  |  | 		} | 
			
		
	
	
		
			
				
					|  |  | @ -315,31 +354,28 @@ public class GroupInvitationServiceImpl extends BaseServiceImpl<GroupInvitationD | 
			
		
	
		
			
				
					|  |  |  | 				resiGroupDTO.getCustomerId()); | 
			
		
	
		
			
				
					|  |  |  | 		resiGroupMemberDao.updateResiGroupStatistical(groupMemeberOperation.getGroupId(), userRoleDTO); | 
			
		
	
		
			
				
					|  |  |  | 		//6、发送消息
 | 
			
		
	
		
			
				
					|  |  |  | 		this.sendMessageToLeader(formDTO, resiGroupDTO); | 
			
		
	
		
			
				
					|  |  |  | 		this.sendMessageToLeader(formDTO, resiGroupDTO,groupInvitationDTO); | 
			
		
	
		
			
				
					|  |  |  | 		return new Result(); | 
			
		
	
		
			
				
					|  |  |  | 	} | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  | 	/** | 
			
		
	
		
			
				
					|  |  |  | 	 * @param formDTO | 
			
		
	
		
			
				
					|  |  |  | 	 * @param resiGroupDTO | 
			
		
	
		
			
				
					|  |  |  | 	 * @param formDTO            当前用户信息 | 
			
		
	
		
			
				
					|  |  |  | 	 * @param resiGroupDTO       群组信息 | 
			
		
	
		
			
				
					|  |  |  | 	 * @param groupInvitationDTO 邀请信息 | 
			
		
	
		
			
				
					|  |  |  | 	 * @return void | 
			
		
	
		
			
				
					|  |  |  | 	 * @Author yinzuomei | 
			
		
	
		
			
				
					|  |  |  | 	 * @Description 用户通过邀请进群之后,通知群主:您的好友-【认证的居民名字 xxx路-王先生】通过邀请链接,加入了【组名】 | 
			
		
	
		
			
				
					|  |  |  | 	 * @Date 2020/4/7 14:46 | 
			
		
	
		
			
				
					|  |  |  | 	 **/ | 
			
		
	
		
			
				
					|  |  |  | 	private void sendMessageToLeader(AccetInvitationFormDTO formDTO, ResiGroupDTO resiGroupDTO) { | 
			
		
	
		
			
				
					|  |  |  | 		//1、查询群主信息
 | 
			
		
	
		
			
				
					|  |  |  | 		ResiGroupMemberDTO leader = resiGroupDao.selectGroupLeader(resiGroupDTO.getId()); | 
			
		
	
		
			
				
					|  |  |  | 		if (null == leader) { | 
			
		
	
		
			
				
					|  |  |  | 			return; | 
			
		
	
		
			
				
					|  |  |  | 		} | 
			
		
	
		
			
				
					|  |  |  | 		//2、根据用户id用户认证注册信息
 | 
			
		
	
		
			
				
					|  |  |  | 	private Result sendMessageToLeader(AccetInvitationFormDTO formDTO, ResiGroupDTO resiGroupDTO, GroupInvitationDTO groupInvitationDTO) { | 
			
		
	
		
			
				
					|  |  |  | 		//1、根据用户id用户认证注册信息
 | 
			
		
	
		
			
				
					|  |  |  | 		UserResiInfoFormDTO userResiInfoFormDTO = new UserResiInfoFormDTO(); | 
			
		
	
		
			
				
					|  |  |  | 		userResiInfoFormDTO.setUserId(formDTO.getUserId()); | 
			
		
	
		
			
				
					|  |  |  | 		userResiInfoFormDTO.setCustomerId(resiGroupDTO.getCustomerId()); | 
			
		
	
		
			
				
					|  |  |  | 		Result<UserResiInfoResultDTO> userResiInfoDTOResult = epmetUserFeignClient.getUserResiInfoDTO(userResiInfoFormDTO); | 
			
		
	
		
			
				
					|  |  |  | 		if (!userResiInfoDTOResult.success() || null == userResiInfoDTOResult.getData()) { | 
			
		
	
		
			
				
					|  |  |  | 			return; | 
			
		
	
		
			
				
					|  |  |  | 			logger.info("查询居民注册信息失败"); | 
			
		
	
		
			
				
					|  |  |  | 			return new Result(); | 
			
		
	
		
			
				
					|  |  |  | 		} | 
			
		
	
		
			
				
					|  |  |  | 		UserMessageFormDTO userMessage = new UserMessageFormDTO(); | 
			
		
	
		
			
				
					|  |  |  | 		userMessage.setApp(AppClientConstant.APP_RESI); | 
			
		
	
	
		
			
				
					|  |  | @ -350,8 +386,14 @@ public class GroupInvitationServiceImpl extends BaseServiceImpl<GroupInvitationD | 
			
		
	
		
			
				
					|  |  |  | 		userMessage.setReadFlag(ReadFlagConstant.UN_READ); | 
			
		
	
		
			
				
					|  |  |  | 		userMessage.setTitle(UserMessageConstant.GROUP_TITLE); | 
			
		
	
		
			
				
					|  |  |  | 		//通知群主
 | 
			
		
	
		
			
				
					|  |  |  | 		userMessage.setUserId(leader.getCustomerUserId()); | 
			
		
	
		
			
				
					|  |  |  | 		messageFeignClient.saveUserMessage(userMessage); | 
			
		
	
		
			
				
					|  |  |  | 		userMessage.setUserId(groupInvitationDTO.getInviterUserId()); | 
			
		
	
		
			
				
					|  |  |  | 		Result result = messageFeignClient.saveUserMessage(userMessage); | 
			
		
	
		
			
				
					|  |  |  | 		if (result.success()) { | 
			
		
	
		
			
				
					|  |  |  | 			logger.info("通知群主有新成员入群成功"); | 
			
		
	
		
			
				
					|  |  |  | 		} else { | 
			
		
	
		
			
				
					|  |  |  | 			logger.info("通知群主有新成员入群失败" + result.getMsg()); | 
			
		
	
		
			
				
					|  |  |  | 		} | 
			
		
	
		
			
				
					|  |  |  | 		return result; | 
			
		
	
		
			
				
					|  |  |  | 	} | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  | } | 
			
		
	
	
		
			
				
					|  |  | 
 |