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

功能梗概:
  • 前端传递用户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);

      }

 

posted @ 2020-09-22 19:01  Edward_han  阅读(291)  评论(0编辑  收藏  举报