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