From 5c990740500933d83fb98689ef455bedccefbe3d Mon Sep 17 00:00:00 2001 From: sunyuchao Date: Fri, 27 Nov 2020 10:51:13 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E9=82=80=E8=AF=B7=E6=88=96?= =?UTF-8?q?=E6=89=AB=E7=A0=81=E5=85=A5=E7=BB=84=E6=96=B9=E6=B3=95=EF=BC=8C?= =?UTF-8?q?=E6=97=A7=E6=96=B9=E6=B3=95=E4=B8=8D=E8=83=BD=E5=85=BC=E5=AE=B9?= =?UTF-8?q?=EF=BC=8C=E5=A2=9E=E5=8A=A0v2.0=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/GroupInvitationController.java | 18 +++- .../service/GroupInvitationService.java | 9 +- .../impl/GroupInvitationServiceImpl.java | 87 ++++++++++++++++++- 3 files changed, 110 insertions(+), 4 deletions(-) diff --git a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/invitation/controller/GroupInvitationController.java b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/invitation/controller/GroupInvitationController.java index 14044a668f..3bd1a6c99d 100644 --- a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/invitation/controller/GroupInvitationController.java +++ b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/invitation/controller/GroupInvitationController.java @@ -90,10 +90,24 @@ public class GroupInvitationController { * @Date 2020/3/31 23:47 **/ @PostMapping("acceptinvitation") - public Result accetInvitation(@LoginUser TokenDto tokenDto, @RequestBody AccetInvitationFormDTO formDTO) { + public Result accetInvitation(@LoginUser TokenDto tokenDto, @RequestBody AccetInvitationFormDTO formDTO) { formDTO.setUserId(tokenDto.getUserId()); formDTO.setApp(tokenDto.getApp()); ValidatorUtils.validateEntity(formDTO); - return new Result().ok(groupInvitationService.accetInvitation(formDTO)); + groupInvitationService.accetInvitation(formDTO); + return new Result(); + } + + /** + * @param tokenDto formDTO + * @Author sun + * @Description 邀请链接或扫码进组 + **/ + @PostMapping("acceptinvitationv2") + public Result accetInvitationV2(@LoginUser TokenDto tokenDto, @RequestBody AccetInvitationFormDTO formDTO) { + formDTO.setUserId(tokenDto.getUserId()); + formDTO.setApp(tokenDto.getApp()); + ValidatorUtils.validateEntity(formDTO); + return new Result().ok(groupInvitationService.accetInvitationV2(formDTO)); } } diff --git a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/invitation/service/GroupInvitationService.java b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/invitation/service/GroupInvitationService.java index 12611bbbec..44f61b26ec 100644 --- a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/invitation/service/GroupInvitationService.java +++ b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/invitation/service/GroupInvitationService.java @@ -134,5 +134,12 @@ public interface GroupInvitationService extends BaseService result=resiGuideFeignClient.enterGrid(userEnterGridFormDTO); + if (!result.success() || null == result.getData()) { + logger.error(String.format("用户同意邀请进组,进入网格失败。入参:userId【%s】、invitationId【%s】、groupId【%s】、customerId【%s】、gridId【%s】", + formDTO.getUserId(), formDTO.getInvitationId(), + groupInvitationDTO.getResiGroupId()), + resiGroupDTO.getCustomerId(), resiGroupDTO.getGridId()); + logger.error(String.format("用户同意邀请进组,进入网格失败。当前接口返回8000,调用enterGrid接口返回", result.toString())); + throw new RenException(EpmetErrorCode.SERVER_ERROR.getCode()); + } + //4、校验是否已经注册居民 + if(null==result.getData().getUserRoleList()||result.getData().getUserRoleList().size()==0){ + logger.error(String.format("用户同意邀请进组失败,返回角色列表为空错误编码%s,错误提示%s",EpmetErrorCode.CANNOT_JOIN_GROUP.getCode(),EpmetErrorCode.CANNOT_JOIN_GROUP.getMsg())); + throw new RenException(EpmetErrorCode.CANNOT_JOIN_GROUP.getCode()); + } + UserRoleDTO userRoleDTO=this.getUserRoleDTO(result.getData().getUserRoleList()); + //5、新增一条邀请入群、直接审核通过的入群记录 + GroupMemeberOperationDTO groupMemeberOperation = new GroupMemeberOperationDTO(); + groupMemeberOperation.setGroupId(resiGroupDTO.getId()); + groupMemeberOperation.setCustomerUserId(formDTO.getUserId()); + groupMemeberOperation.setOperateStatus(MemberStateConstant.APPROVED); + groupMemeberOperation.setEnterGroupType(EnterGroupTypeConstant.INVITED); + groupMemeberOperation.setOperateUserId(formDTO.getUserId()); + groupMemeberOperationService.accetInvitation(groupMemeberOperation); + //6、直接加入群成员关系表 + //如果是之前被移除的,则修改resi_group_member记录 + ResiGroupMemberDTO resiGroupMemberDTO = new ResiGroupMemberDTO(); + ResiGroupMemberDTO resiGroupMember = resiGroupMemberDao.selectGroupMemberInfo(groupInvitationDTO.getResiGroupId(), formDTO.getUserId()); + if (null != resiGroupMember) { + resiGroupMemberDTO.setId(resiGroupMember.getId()); + } + resiGroupMemberDTO.setCustomerUserId(groupMemeberOperation.getCustomerUserId()); + resiGroupMemberDTO.setResiGroupId(groupMemeberOperation.getGroupId()); + resiGroupMemberDTO.setGroupLeaderFlag(LeaderFlagConstant.GROUP_MEMBER); + resiGroupMemberDTO.setEnterGroupType(groupMemeberOperation.getEnterGroupType()); + resiGroupMemberDTO.setStatus(MemberStateConstant.APPROVED); + resiGroupMemberDTO.setCreatedBy(groupMemeberOperation.getCustomerUserId()); + resiGroupMemberService.saveOrUpdate(resiGroupMemberDTO); + //7、修改群统计值 + resiGroupMemberDao.updateResiGroupStatistical(groupMemeberOperation.getGroupId(), userRoleDTO); + ResiGroupInfoRedisDTO groupCache = + resiGroupRedis.get(groupInvitationDTO.getResiGroupId()); + if(null != groupCache && null != groupCache.getGroupStatisticalInfo()){ + groupCache.getGroupStatisticalInfo().setTotalMembers( + null == groupCache.getGroupStatisticalInfo().getTotalMembers() ? NumConstant.TWO : groupCache.getGroupStatisticalInfo().getTotalMembers() +NumConstant.ONE + ); + if(StringUtils.equals(userRoleDTO.getPartymemberFlag(),NumConstant.ONE_STR)) groupCache.getGroupStatisticalInfo().setTotalPartyMembers( + null == groupCache.getGroupStatisticalInfo().getTotalPartyMembers() ? NumConstant.ONE : groupCache.getGroupStatisticalInfo().getTotalPartyMembers()+NumConstant.ONE + ); + if(StringUtils.equals(userRoleDTO.getRegisteredResiFlag(),NumConstant.ONE_STR)) groupCache.getGroupStatisticalInfo().setTotalNormalMembers( + null == groupCache.getGroupStatisticalInfo().getTotalNormalMembers() ? NumConstant.TWO : groupCache.getGroupStatisticalInfo().getTotalNormalMembers()+NumConstant.ONE + ); + if(StringUtils.equals(userRoleDTO.getWarmHeartedFlag(),NumConstant.ONE_STR)) groupCache.getGroupStatisticalInfo().setTotalEarnestMembers( + null == groupCache.getGroupStatisticalInfo().getTotalEarnestMembers() ? NumConstant.ONE : groupCache.getGroupStatisticalInfo().getTotalEarnestMembers()+NumConstant.ONE + ); + resiGroupRedis.set(groupCache); + } + //8、发送消息 + this.sendMessageToLeader(formDTO, resiGroupDTO,groupInvitationDTO); + } + + /** + * @param formDTO + * @Author sun + * @Description 邀请链接或扫码进组 + **/ + @Override + public AcceptInvitationResultDTO accetInvitationV2(AccetInvitationFormDTO formDTO) { AcceptInvitationResultDTO resultDTO = new AcceptInvitationResultDTO(); //1、申请是否有效 GroupInvitationDTO groupInvitationDTO=this.checkLinkValid(formDTO.getInvitationId());