用户查询关注状态
This commit is contained in:
parent
d595a0ba47
commit
8ded07048f
@ -135,10 +135,11 @@ public class UserInfoController extends BaseInfoProperties {
|
|||||||
@ApiOperation(value = "根据昵称搜索用户")
|
@ApiOperation(value = "根据昵称搜索用户")
|
||||||
@GetMapping("searchByNickname")
|
@GetMapping("searchByNickname")
|
||||||
public GraceJSONResult searchByNickname(@RequestParam String nickname,
|
public GraceJSONResult searchByNickname(@RequestParam String nickname,
|
||||||
|
@RequestParam String id,
|
||||||
@RequestParam Integer page,
|
@RequestParam Integer page,
|
||||||
@RequestParam Integer pageSize){
|
@RequestParam Integer pageSize){
|
||||||
try {
|
try {
|
||||||
return GraceJSONResult.ok(userService.searchByNickname(nickname, page, pageSize));
|
return GraceJSONResult.ok(userService.searchByNickname(nickname, page, pageSize,id));
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
// 记录异常日志
|
// 记录异常日志
|
||||||
log.error("搜索用户时发生异常,nickname: {}, page: {}, pageSize: {}", nickname, page, pageSize, e);
|
log.error("搜索用户时发生异常,nickname: {}, page: {}, pageSize: {}", nickname, page, pageSize, e);
|
||||||
|
@ -2,9 +2,30 @@ package com.imooc.mapper;
|
|||||||
|
|
||||||
import com.imooc.my.mapper.MyMapper;
|
import com.imooc.my.mapper.MyMapper;
|
||||||
import com.imooc.pojo.Fans;
|
import com.imooc.pojo.Fans;
|
||||||
|
import org.apache.ibatis.annotations.Param;
|
||||||
|
import org.apache.ibatis.annotations.Select;
|
||||||
import org.springframework.stereotype.Repository;
|
import org.springframework.stereotype.Repository;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
@Repository
|
@Repository
|
||||||
public interface FansMapper extends MyMapper<Fans> {
|
public interface FansMapper extends MyMapper<Fans> {
|
||||||
int updateByPrimaryKeySelective(Fans record);
|
int updateByPrimaryKeySelective(Fans record);
|
||||||
|
|
||||||
|
|
||||||
|
@Select("<script> " +
|
||||||
|
"SELECT vloger_id, is_fan_friend_of_mine FROM t_fans " +
|
||||||
|
"WHERE fan_id = #{currentUserId} " +
|
||||||
|
"AND vloger_id IN " +
|
||||||
|
"<foreach collection='vlogerIds' item='vlogerId' open='(' separator=',' close=')'> " +
|
||||||
|
"#{vlogerId} " +
|
||||||
|
"</foreach> " +
|
||||||
|
"</script>")
|
||||||
|
List<Map<String, Object>> getFollowedVlogerIds(@Param("currentUserId")String currentUserId,@Param("vlogerIds")List<String> vlogerIds);
|
||||||
|
// Set<String> getFollowedVlogerIds(
|
||||||
|
// @Param("currentUserId") String currentUserId,
|
||||||
|
// @Param("vlogerIds") List<String> vlogerIds
|
||||||
|
// );
|
||||||
}
|
}
|
@ -3,6 +3,7 @@ package com.imooc.mapper;
|
|||||||
import com.imooc.my.mapper.MyMapper;
|
import com.imooc.my.mapper.MyMapper;
|
||||||
import com.imooc.pojo.Users;
|
import com.imooc.pojo.Users;
|
||||||
import com.imooc.utils.PagedGridResult;
|
import com.imooc.utils.PagedGridResult;
|
||||||
|
import com.imooc.vo.UsersVO;
|
||||||
import org.apache.ibatis.annotations.Mapper;
|
import org.apache.ibatis.annotations.Mapper;
|
||||||
import org.apache.ibatis.annotations.Select;
|
import org.apache.ibatis.annotations.Select;
|
||||||
|
|
||||||
@ -12,5 +13,5 @@ import java.util.List;
|
|||||||
public interface UsersMapper extends MyMapper<Users> {
|
public interface UsersMapper extends MyMapper<Users> {
|
||||||
|
|
||||||
@Select("SELECT * FROM t_users WHERE nickname LIKE CONCAT('%', #{nickname}, '%')")
|
@Select("SELECT * FROM t_users WHERE nickname LIKE CONCAT('%', #{nickname}, '%')")
|
||||||
List<Users> searchByNickname(String nickname);
|
List<UsersVO> searchByNickname(String nickname);
|
||||||
}
|
}
|
@ -39,4 +39,7 @@ public class UsersVO {
|
|||||||
private Integer totalLikeMeCounts;
|
private Integer totalLikeMeCounts;
|
||||||
//private Token shopToken;
|
//private Token shopToken;
|
||||||
|
|
||||||
|
private boolean IsFollowed; // 关注状态
|
||||||
|
private String FollowStatus; // 关注状态
|
||||||
|
|
||||||
}
|
}
|
@ -6,6 +6,7 @@ import com.imooc.bo.UpdatedUserBO;
|
|||||||
import com.imooc.mo.Token;
|
import com.imooc.mo.Token;
|
||||||
import com.imooc.pojo.Users;
|
import com.imooc.pojo.Users;
|
||||||
import com.imooc.utils.PagedGridResult;
|
import com.imooc.utils.PagedGridResult;
|
||||||
|
import com.imooc.vo.UsersVO;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author vercen
|
* @author vercen
|
||||||
@ -76,5 +77,5 @@ public interface UserService {
|
|||||||
* @param pageSize
|
* @param pageSize
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
List<Users> searchByNickname(String nickname, Integer page, Integer pageSize);
|
List<UsersVO> searchByNickname(String nickname, Integer page, Integer pageSize, String id);
|
||||||
}
|
}
|
||||||
|
@ -8,15 +8,19 @@ import com.imooc.enums.UserInfoModifyType;
|
|||||||
import com.imooc.enums.YesOrNo;
|
import com.imooc.enums.YesOrNo;
|
||||||
import com.imooc.exceptions.GraceException;
|
import com.imooc.exceptions.GraceException;
|
||||||
import com.imooc.grace.result.ResponseStatusEnum;
|
import com.imooc.grace.result.ResponseStatusEnum;
|
||||||
|
import com.imooc.mapper.FansMapper;
|
||||||
import com.imooc.mapper.UserMemberMapper;
|
import com.imooc.mapper.UserMemberMapper;
|
||||||
import com.imooc.mapper.UsersMapper;
|
import com.imooc.mapper.UsersMapper;
|
||||||
import com.imooc.mo.Token;
|
import com.imooc.mo.Token;
|
||||||
|
import com.imooc.pojo.Fans;
|
||||||
import com.imooc.pojo.UserMember;
|
import com.imooc.pojo.UserMember;
|
||||||
import com.imooc.pojo.Users;
|
import com.imooc.pojo.Users;
|
||||||
import com.imooc.service.UserService;
|
import com.imooc.service.UserService;
|
||||||
import com.imooc.utils.*;
|
import com.imooc.utils.*;
|
||||||
|
import com.imooc.vo.FansVO;
|
||||||
import com.imooc.vo.UsersVO;
|
import com.imooc.vo.UsersVO;
|
||||||
|
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
import org.n3r.idworker.Sid;
|
import org.n3r.idworker.Sid;
|
||||||
import org.redisson.api.RedissonClient;
|
import org.redisson.api.RedissonClient;
|
||||||
@ -32,6 +36,7 @@ import org.springframework.util.MultiValueMap;
|
|||||||
import tk.mybatis.mapper.entity.Example;
|
import tk.mybatis.mapper.entity.Example;
|
||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
import static com.imooc.base.BaseInfoProperties.REDIS_USER_TOKEN;
|
import static com.imooc.base.BaseInfoProperties.REDIS_USER_TOKEN;
|
||||||
import static com.imooc.base.BaseInfoProperties.MOBILE_SMSCODE;
|
import static com.imooc.base.BaseInfoProperties.MOBILE_SMSCODE;
|
||||||
@ -41,6 +46,7 @@ import static com.imooc.base.BaseInfoProperties.MOBILE_SMSCODE;
|
|||||||
* @version 1.0
|
* @version 1.0
|
||||||
* @date 2023/5/25 21:02
|
* @date 2023/5/25 21:02
|
||||||
*/
|
*/
|
||||||
|
@Slf4j
|
||||||
@Service
|
@Service
|
||||||
public class UserServiceImpl implements UserService {
|
public class UserServiceImpl implements UserService {
|
||||||
@Autowired
|
@Autowired
|
||||||
@ -52,6 +58,9 @@ public class UserServiceImpl implements UserService {
|
|||||||
@Autowired
|
@Autowired
|
||||||
private UserMemberMapper userMemberMapper;
|
private UserMemberMapper userMemberMapper;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private FansMapper fansMapper;
|
||||||
|
|
||||||
//@Autowired
|
//@Autowired
|
||||||
//public RedisOperator redis;
|
//public RedisOperator redis;
|
||||||
|
|
||||||
@ -282,14 +291,47 @@ public class UserServiceImpl implements UserService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<Users> searchByNickname(String nickname, Integer page, Integer pageSize) {
|
public List<UsersVO> searchByNickname(String nickname, Integer page, Integer pageSize, String currentUserId) {
|
||||||
try {
|
try {
|
||||||
// 开启分页
|
|
||||||
PageHelper.startPage(page, pageSize);
|
PageHelper.startPage(page, pageSize);
|
||||||
return usersMapper.searchByNickname(nickname);
|
List<UsersVO> userList = usersMapper.searchByNickname(nickname);
|
||||||
|
|
||||||
|
// 提取模糊查询出的用户 ID 列表
|
||||||
|
List<String> vlogerIds = userList.stream().map(UsersVO::getId).collect(Collectors.toList());
|
||||||
|
log.info("用户列表" + vlogerIds);
|
||||||
|
|
||||||
|
// 获取当前用户关注的
|
||||||
|
List<java.util.Map<String, Object>> followedRelations = fansMapper.getFollowedVlogerIds(currentUserId, vlogerIds);
|
||||||
|
// 构建 vlogerId 到 is_fan_friend_of_mine 的映射
|
||||||
|
java.util.Map<String, Integer> relationMap = followedRelations.stream()
|
||||||
|
.collect(Collectors.toMap(
|
||||||
|
map -> (String) map.get("vloger_id"),
|
||||||
|
map -> (Integer) map.get("is_fan_friend_of_mine")
|
||||||
|
));
|
||||||
|
Set<String> followedVlogerIds = relationMap.keySet();
|
||||||
|
|
||||||
|
// 遍历设置每个用户的关注状态及展示状态
|
||||||
|
userList.forEach(usersVO -> {
|
||||||
|
boolean isFollowed = followedVlogerIds.contains(usersVO.getId());
|
||||||
|
usersVO.setIsFollowed(isFollowed);
|
||||||
|
if (isFollowed) {
|
||||||
|
Integer isFanFriendOfMine = relationMap.get(usersVO.getId());
|
||||||
|
if (isFanFriendOfMine != null && isFanFriendOfMine == 1) {
|
||||||
|
usersVO.setFollowStatus("互相关注"); // 假设 UsersVO 有此方法设置展示状态
|
||||||
|
} else {
|
||||||
|
usersVO.setFollowStatus("已关注");
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
usersVO.setFollowStatus("未关注");
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
log.info("用户列表" + userList);
|
||||||
|
return userList;
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
|
log.error("搜索用户时发生异常", e);
|
||||||
throw new RuntimeException("搜索用户时发生异常", e);
|
throw new RuntimeException("搜索用户时发生异常", e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user