社交软件好友搜索功能实现思路

网络新闻 3年前 (2022) admin
0

功能梗概:

  • 前端传递用户ID和要搜索的好友用户名到后台进行搜索。

  • queryUserInfoByUsername搜出好友对象,判断

     1. 搜索的用户不存在,  返回【无此用户】

     2. 搜索的账号为自己,   返回【不能添加自己】

     3. 搜索的账号已是好友,返回【该用户已经是好友】

  • 判断没问题返回好友用户对象

  • 前端按照后端返回进行展示

controller

// 搜索好友接口, 根据账号做匹配查询,而不是模糊查询 @PostMapping("/search") public JSONResult searchUser(String myUserId, String friendUsername) throws Exception{ // 0. 判断myUserId friendUsername不能为空 if(StringUtils.isBlank(myUserId) || StringUtils.isBlank(friendUsername)) { return JSONResult.errorMsg(""); } // 前置条件 - 1. 搜索的用户不存在, 返回【无此用户】 // 前置条件 - 2. 搜索的账号为自己, 返回【不能添加自己】 // 前置条件 - 3. 搜索的账号已是好友,返回【该用户已经是好友】  Integer status = userService.preconditionSearchFriends(myUserId, friendUsername); if(status == SearchFriendsStatusEnum.SUCCESS.status) { Users user = userService.queryUserInfoByUsername(friendUsername); UsersVO usersVO = new UsersVO(); BeanUtils.copyProperties(user, usersVO); return JSONResult.ok(usersVO); }else { String errorMsg = SearchFriendsStatusEnum.getMsgByKey(status); return JSONResult.errorMsg(errorMsg); } }

service

@Transactional(propagation = Propagation.SUPPORTS) @Override public Integer preconditionSearchFriends(String myUserId, String friendUsername) { Users friendUser = queryUserInfoByUsername(friendUsername); // 1. 搜索的用户不存在, 返回【无此用户】 if(friendUser == null) { return SearchFriendsStatusEnum.USER_NOT_EXIST.status; } // 2. 搜索的账号为自己, 返回【不能添加自己】 if(friendUser.getId().equals(myUserId)) { return SearchFriendsStatusEnum.NOT_YOURSELF.status; } // 3. 搜索的账号已是好友,返回【该用户已经是好友】 Example mfe = new Example(MyFriends.class); Criteria mfc = mfe.createCriteria(); mfc.andEqualTo("myUserId", myUserId); mfc.andEqualTo("myFriendsId", friendUser.getId()); MyFriends myFriendsRel = myFriendsMapper.selectOneByExample(mfe); if(myFriendsRel != null) { return SearchFriendsStatusEnum.ALREADY_FRIENDS.status; } return SearchFriendsStatusEnum.SUCCESS.status; } @Transactional(propagation = Propagation.SUPPORTS) @Override public Users queryUserInfoByUsername(String username) { Example ue = new Example(Users.class); Criteria uc = ue.createCriteria(); uc.andEqualTo("username",username); return userMapper.selectOneByExample(ue); }

 

版权声明:admin 发表于 2022-08-29 12:40:43。
转载请注明:社交软件好友搜索功能实现思路 | 火资源软件