济南建设网站企业收费,建网站用什么服务器好,怎么开通自媒体账号赚钱,网络营销方式和工具1.获取联系人列表效果展示:思路:联系人不至于用户,还有群聊,所以传参思路很明确了不仅需要当前用户id,还需要查询类型(即我的好友为用户 我的群聊是群组) controller层:RequestMapping(/loadContact)
GlobalInterceptor
public ResponseVO loadContact(HttpServlet…1.获取联系人列表效果展示:思路:联系人不至于用户,还有群聊,所以传参思路很明确了不仅需要当前用户id,还需要查询类型(即我的好友为用户 我的群聊是群组)controller层:RequestMapping(/loadContact) GlobalInterceptor public ResponseVO loadContact(HttpServletRequest request, NotEmpty String contactType) { UserContactTypeEnum contactTypeEnum UserContactTypeEnum.getByName(contactType); if (null contactTypeEnum) { throw new BusinessException(ResponseCodeEnum.CODE_600); } TokenUserInfoDto tokenUserInfoDto getTokenUserInfo(request); UserContactQuery contactQuery new UserContactQuery(); contactQuery.setUserId(tokenUserInfoDto.getUserId()); contactQuery.setContactType(contactTypeEnum.getType()); if (UserContactTypeEnum.USER contactTypeEnum) { contactQuery.setQueryContactUserInfo(true); } else if (UserContactTypeEnum.GROUP contactTypeEnum) { contactQuery.setQueryGroupInfo(true); contactQuery.setExcludeMyGroup(true); } contactQuery.setOrderBy(last_update_time desc); ListUserContact contactList userContactService.findListByParam(contactQuery); return getSuccessResponseVO(contactList); }解释:写法不唯一,如果前端不传入contactType时,就需要后端自己分类,会比较耗费时间,所以前端传入contactType是最优解(前端展示是区分的,即上述图片两个区域分别调用了loadContact方法 但是传入的contactType分别为用户与群组,所以就不需要而外再区分用户与群组的方法)select idselectList resultMapbase_result_map SELECT c.* if testquery.queryContactUserInfo or query.queryUserInfo ,u.nick_name contactName,u.sex sex /if if testquery.queryGroupInfo ,g.group_name contactName /if FROM user_contact c if testquery.queryContactUserInfo inner join user_info u on c.contact_idu.user_id /if if testquery.queryUserInfo inner join user_info u on c.user_idu.user_id /if if testquery.queryGroupInfo inner join group_info g on c.contact_idg.group_id if testquery.excludeMyGroup and g.group_owner_id!c.user_id /if /if include refidquery_condition/ if testquery.orderBy!null order by ${query.orderBy} /if if testquery.simplePage!null limit #{query.simplePage.start},#{query.simplePage.end} /if /select这部分用来解释controller中代码为什么要set那么多true,因为公用一个方法,所以在查询中要区分是查询用户还是群组,有个简单的方法就是直接重构此方法变成两个方法,但是此写法也是mybatis常用写法,只需要在相对于的类中添加boolean类即可,然后在xml文件使用if搭配join就可以达到想要的数据2.获取联系人详细效果展示:思路:从聊天页面点击别人头像就是这个接口,所以需要当前用户id与对象的id是显而易见的 这接口实现简单controller层:RequestMapping(/getContactInfo) GlobalInterceptor public ResponseVO getContactInfo(HttpServletRequest request, NotEmpty String contactId) { TokenUserInfoDto tokenUserInfoDto getTokenUserInfo(request); UserInfo userInfo userInfoService.getUserInfoByUserId(contactId); UserInfoVO userInfoVO CopyTools.copy(userInfo, UserInfoVO.class); userInfoVO.setContactStatus(UserContactStatusEnum.NOT_FRIEND.getStatus()); //判断是否是联系人 UserContact userContact userContactService.getUserContactByUserIdAndContactId(tokenUserInfoDto.getUserId(), contactId); if (userContact ! null) { userInfoVO.setContactStatus(userContact.getStatus()); } return getSuccessResponseVO(userInfoVO); }3.删除联系人思路:删除联系人不只有直接删除,还有拉黑的状态,所以需要传入删除的类型,所以需要当前用户id,对象,和删除类型展示:controller层:RequestMapping(/delContact) GlobalInterceptor public ResponseVO delContact(HttpServletRequest request, NotEmpty String contactId) { TokenUserInfoDto tokenUserInfoDto getTokenUserInfo(request); userContactService.removeUserContact(tokenUserInfoDto.getUserId(), contactId, UserContactStatusEnum.DEL); return getSuccessResponseVO(null); }实现层思路:主要是要修改两次user_contact表 因为互为好友 实现简单不贴代码