|
|
@ -21,6 +21,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
|
|
|
import com.baomidou.mybatisplus.core.metadata.IPage; |
|
|
|
import com.epmet.commons.mybatis.service.impl.BaseServiceImpl; |
|
|
|
import com.epmet.commons.tools.constant.AppClientConstant; |
|
|
|
import com.epmet.commons.tools.constant.Constant; |
|
|
|
import com.epmet.commons.tools.constant.FieldConstant; |
|
|
|
import com.epmet.commons.tools.constant.NumConstant; |
|
|
|
import com.epmet.commons.tools.exception.EpmetErrorCode; |
|
|
@ -56,6 +57,7 @@ import com.epmet.resi.group.dto.invitation.form.AccetInvitationFormDTO; |
|
|
|
import com.epmet.resi.group.dto.invitation.form.CreateGroupInvitationFormDTO; |
|
|
|
import com.epmet.resi.group.dto.invitation.form.LinkGroupInfoFormDTO; |
|
|
|
import com.epmet.resi.group.dto.invitation.result.CreateGroupInvitationResultDTO; |
|
|
|
import com.epmet.resi.group.dto.invitation.result.LinkGroupInfoDTO; |
|
|
|
import com.epmet.resi.group.dto.invitation.result.LinkGroupInfoResultDTO; |
|
|
|
import com.epmet.resi.group.dto.member.GroupMemeberOperationDTO; |
|
|
|
import com.epmet.resi.group.dto.member.ResiGroupMemberDTO; |
|
|
@ -169,7 +171,7 @@ public class GroupInvitationServiceImpl extends BaseServiceImpl<GroupInvitationD |
|
|
|
} |
|
|
|
//2、审核通过(讨论中)的群才可以分享邀请连接
|
|
|
|
ResiGroupDTO resiGroupDTO = resiGroupService.get(formDTO.getGroupId()); |
|
|
|
if(!GroupStateConstant.GROUP_APPROVED.equals(resiGroupDTO.getState())){ |
|
|
|
if (!GroupStateConstant.GROUP_APPROVED.equals(resiGroupDTO.getState())) { |
|
|
|
return new Result<CreateGroupInvitationResultDTO>().error(ModuleConstant.CANNOT_SHARED); |
|
|
|
} |
|
|
|
//3、插入一条邀请记录
|
|
|
@ -199,17 +201,28 @@ public class GroupInvitationServiceImpl extends BaseServiceImpl<GroupInvitationD |
|
|
|
public Result<LinkGroupInfoResultDTO> getLinkGroupInfo(LinkGroupInfoFormDTO formDTO) { |
|
|
|
//校验是否存在该邀请连接
|
|
|
|
Result<GroupInvitationDTO> validResult = this.checkLinkValid(formDTO.getInvitationId()); |
|
|
|
if(!validResult.success()){ |
|
|
|
return new Result<LinkGroupInfoResultDTO>().error(validResult.getCode(),validResult.getMsg()); |
|
|
|
if (!validResult.success()) { |
|
|
|
return new Result<LinkGroupInfoResultDTO>().error(validResult.getCode(), validResult.getMsg()); |
|
|
|
} |
|
|
|
LinkGroupInfoResultDTO linkGroupInfoResultDTO = baseDao.selectLinkGroupInfo(validResult.getData().getResiGroupId()); |
|
|
|
//获取组长信息
|
|
|
|
Result<UserResiInfoResultDTO> groupLeaderUserInfo = this.getGroupLeaderUserInfo(linkGroupInfoResultDTO.getGroupId()); |
|
|
|
LinkGroupInfoResultDTO linkGroupInfoResultDTO = new LinkGroupInfoResultDTO(); |
|
|
|
//1、查询是否在群内
|
|
|
|
ResiGroupMemberDTO resiGroupMemberDTO = resiGroupMemberDao.selectGroupMemberInfo(validResult.getData().getResiGroupId(), formDTO.getUserId()); |
|
|
|
if (null != resiGroupMemberDTO && !MemberStateConstant.REMOVED.equals(resiGroupMemberDTO.getStatus())) { |
|
|
|
linkGroupInfoResultDTO.setInGroup(Constant.YES); |
|
|
|
return new Result<LinkGroupInfoResultDTO>().ok(linkGroupInfoResultDTO); |
|
|
|
} else { |
|
|
|
linkGroupInfoResultDTO.setInGroup(Constant.NO); |
|
|
|
} |
|
|
|
//2、查询组信息
|
|
|
|
LinkGroupInfoDTO groupInfo = baseDao.selectLinkGroupInfo(validResult.getData().getResiGroupId()); |
|
|
|
//3、获取组长信息
|
|
|
|
Result<UserResiInfoResultDTO> groupLeaderUserInfo = this.getGroupLeaderUserInfo(groupInfo.getGroupId()); |
|
|
|
if (groupLeaderUserInfo.success() && null != groupLeaderUserInfo.getData()) { |
|
|
|
linkGroupInfoResultDTO.setLeaderName(groupLeaderUserInfo.getData().getShowName()); |
|
|
|
groupInfo.setLeaderName(groupLeaderUserInfo.getData().getShowName()); |
|
|
|
} else { |
|
|
|
logger.info("组长注册信息查询失败" + groupLeaderUserInfo.getMsg()); |
|
|
|
} |
|
|
|
linkGroupInfoResultDTO.setGroupInfo(groupInfo); |
|
|
|
return new Result<LinkGroupInfoResultDTO>().ok(linkGroupInfoResultDTO); |
|
|
|
} |
|
|
|
|
|
|
@ -236,15 +249,15 @@ public class GroupInvitationServiceImpl extends BaseServiceImpl<GroupInvitationD |
|
|
|
return epmetUserFeignClient.getUserResiInfoDTO(resiUserInfoFormDTO); |
|
|
|
} |
|
|
|
|
|
|
|
private Result<GroupInvitationDTO> checkLinkValid(String invitationId){ |
|
|
|
private Result<GroupInvitationDTO> checkLinkValid(String invitationId) { |
|
|
|
//校验是否存在该邀请连接
|
|
|
|
GroupInvitationDTO groupInvitationDTO = this.get(invitationId); |
|
|
|
//Date1.after(Date2),当Date1大于Date2时,返回TRUE,当小于等于时,返回false;
|
|
|
|
if (null == groupInvitationDTO) { |
|
|
|
return new Result<GroupInvitationDTO>().error(EpmetErrorCode.LOSE_EFFICACY.getValue(),EpmetErrorCode.LOSE_EFFICACY.getName()); |
|
|
|
return new Result<GroupInvitationDTO>().error(EpmetErrorCode.LOSE_EFFICACY.getValue(), EpmetErrorCode.LOSE_EFFICACY.getName()); |
|
|
|
} |
|
|
|
if (null != groupInvitationDTO && !groupInvitationDTO.getValidEndTime().after(new Date())) { |
|
|
|
return new Result<GroupInvitationDTO>().error(EpmetErrorCode.LOSE_EFFICACY.getValue(),EpmetErrorCode.LOSE_EFFICACY.getName()); |
|
|
|
return new Result<GroupInvitationDTO>().error(EpmetErrorCode.LOSE_EFFICACY.getValue(), EpmetErrorCode.LOSE_EFFICACY.getName()); |
|
|
|
} |
|
|
|
return new Result<GroupInvitationDTO>().ok(groupInvitationDTO); |
|
|
|
} |
|
|
@ -260,8 +273,8 @@ public class GroupInvitationServiceImpl extends BaseServiceImpl<GroupInvitationD |
|
|
|
public Result accetInvitation(AccetInvitationFormDTO formDTO) { |
|
|
|
//1、申请是否有效
|
|
|
|
Result<GroupInvitationDTO> validResult = this.checkLinkValid(formDTO.getInvitationId()); |
|
|
|
if(!validResult.success()){ |
|
|
|
return new Result<LinkGroupInfoResultDTO>().error(validResult.getCode(),validResult.getMsg()); |
|
|
|
if (!validResult.success()) { |
|
|
|
return new Result<LinkGroupInfoResultDTO>().error(validResult.getCode(), validResult.getMsg()); |
|
|
|
} |
|
|
|
//2、校验是否已经注册居民
|
|
|
|
ResiGroupDTO resiGroupDTO = resiGroupService.get(validResult.getData().getResiGroupId()); |
|
|
@ -270,65 +283,69 @@ public class GroupInvitationServiceImpl extends BaseServiceImpl<GroupInvitationD |
|
|
|
formDTO.getUserId(), |
|
|
|
resiGroupDTO.getCustomerId()); |
|
|
|
if (NumConstant.ZERO_STR.equals(userRoleDTO.getRegisteredResiFlag())) { |
|
|
|
return new Result().error(EpmetErrorCode.CANNOT_JOIN_GROUP.getValue(),EpmetErrorCode.CANNOT_JOIN_GROUP.getName()); |
|
|
|
return new Result().error(EpmetErrorCode.CANNOT_JOIN_GROUP.getValue(), EpmetErrorCode.CANNOT_JOIN_GROUP.getName()); |
|
|
|
} |
|
|
|
} |
|
|
|
//3、新增一条邀请入群、直接审核通过的入群记录
|
|
|
|
GroupMemeberOperationDTO groupMemeberOperation = new GroupMemeberOperationDTO(); |
|
|
|
groupMemeberOperation.setGroupId(resiGroupDTO.getId()); |
|
|
|
groupMemeberOperation.setCustomerUserId(formDTO.getUserId()); |
|
|
|
groupMemeberOperation.setGroupId(resiGroupDTO.getId()); |
|
|
|
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()); |
|
|
|
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.save(resiGroupMemberDTO); |
|
|
|
resiGroupMemberService.saveOrUpdate(resiGroupMemberDTO); |
|
|
|
//5、修改群统计值
|
|
|
|
UserRoleDTO userRoleDTO = resiGroupService.checkPartyMemberOrWarmHeated(formDTO.getApp(), |
|
|
|
formDTO.getUserId(), |
|
|
|
resiGroupDTO.getCustomerId()); |
|
|
|
resiGroupMemberDao.updateResiGroupStatistical(groupMemeberOperation.getGroupId(), userRoleDTO); |
|
|
|
//6、发送消息
|
|
|
|
this.sendMessageToLeader(formDTO,resiGroupDTO); |
|
|
|
this.sendMessageToLeader(formDTO, resiGroupDTO); |
|
|
|
return new Result(); |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* @return void |
|
|
|
* @param formDTO |
|
|
|
* @param resiGroupDTO |
|
|
|
* @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){ |
|
|
|
ResiGroupMemberDTO leader = resiGroupDao.selectGroupLeader(resiGroupDTO.getId()); |
|
|
|
if (null == leader) { |
|
|
|
return; |
|
|
|
} |
|
|
|
//2、根据用户id用户认证注册信息
|
|
|
|
UserResiInfoFormDTO userResiInfoFormDTO=new UserResiInfoFormDTO(); |
|
|
|
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 ; |
|
|
|
Result<UserResiInfoResultDTO> userResiInfoDTOResult = epmetUserFeignClient.getUserResiInfoDTO(userResiInfoFormDTO); |
|
|
|
if (!userResiInfoDTOResult.success() || null == userResiInfoDTOResult.getData()) { |
|
|
|
return; |
|
|
|
} |
|
|
|
UserMessageFormDTO userMessage=new UserMessageFormDTO(); |
|
|
|
UserMessageFormDTO userMessage = new UserMessageFormDTO(); |
|
|
|
userMessage.setApp(AppClientConstant.APP_RESI); |
|
|
|
userMessage.setCustomerId(resiGroupDTO.getCustomerId()); |
|
|
|
userMessage.setGridId(resiGroupDTO.getGridId()); |
|
|
|
String messageContent=String.format(UserMessageConstant.INVITED_JOIN_GROUP,userResiInfoDTOResult.getData().getShowName(),resiGroupDTO.getGroupName()); |
|
|
|
String messageContent = String.format(UserMessageConstant.INVITED_JOIN_GROUP, userResiInfoDTOResult.getData().getShowName(), resiGroupDTO.getGroupName()); |
|
|
|
userMessage.setMessageContent(messageContent); |
|
|
|
userMessage.setReadFlag(ReadFlagConstant.UN_READ); |
|
|
|
userMessage.setTitle(UserMessageConstant.GROUP_TITLE); |
|
|
|