查询用户信息

This commit is contained in:
abu 2025-05-06 21:35:04 +08:00
parent 822526b913
commit ff456d7533
2 changed files with 65 additions and 20 deletions

View File

@ -60,4 +60,14 @@
</foreach> </foreach>
</select> </select>
<!-- <select id="getFollowedVlogerIds" resultType="com.imooc.pojo.Fans" parameterType="map">-->
<!-- SELECT vloger_id, MAX(is_fan_friend_of_mine) AS 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>-->
<!-- GROUP BY vloger_id-->
<!-- </select>-->
</mapper> </mapper>

View File

@ -2,6 +2,7 @@ package com.imooc.service.impl;
import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageHelper;
import com.google.common.collect.Maps; import com.google.common.collect.Maps;
import com.imooc.base.BaseInfoProperties;
import com.imooc.bo.UpdatedUserBO; import com.imooc.bo.UpdatedUserBO;
import com.imooc.enums.Sex; import com.imooc.enums.Sex;
import com.imooc.enums.UserInfoModifyType; import com.imooc.enums.UserInfoModifyType;
@ -9,6 +10,8 @@ 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.FansMapper;
import com.imooc.mapper.FansMapperCustom;
import com.imooc.service.FansService;
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;
@ -48,9 +51,13 @@ import static com.imooc.base.BaseInfoProperties.MOBILE_SMSCODE;
*/ */
@Slf4j @Slf4j
@Service @Service
public class UserServiceImpl implements UserService { public class UserServiceImpl extends BaseInfoProperties implements UserService {
@Autowired @Autowired
private UsersMapper usersMapper; private UsersMapper usersMapper;
@Autowired
private FansMapperCustom fansMapperCustom;
@Autowired
private FansService fansService;
@Resource @Resource
private PasswordEncoder passwordEncoder; private PasswordEncoder passwordEncoder;
@ -325,6 +332,7 @@ public class UserServiceImpl implements UserService {
try { try {
PageHelper.startPage(page, pageSize); PageHelper.startPage(page, pageSize);
List<UsersVO> userList = usersMapper.searchByNickname(nickname); List<UsersVO> userList = usersMapper.searchByNickname(nickname);
if(currentUserId.isEmpty()){ if(currentUserId.isEmpty()){
return userList; return userList;
} }
@ -332,35 +340,62 @@ public class UserServiceImpl implements UserService {
// 提取模糊查询出的用户 ID 列表 // 提取模糊查询出的用户 ID 列表
List<String> vlogerIds = userList.stream().map(UsersVO::getId).collect(Collectors.toList()); List<String> vlogerIds = userList.stream().map(UsersVO::getId).collect(Collectors.toList());
log.info("用户列表" + vlogerIds); log.info("用户列表" + vlogerIds);
if (vlogerIds.isEmpty()) {
// 获取当前用户关注的 log.info("没有查询到用户 ID跳过关注关系查询");
List<java.util.Map<String, Object>> followedRelations = fansMapper.getFollowedVlogerIds(currentUserId, vlogerIds); return userList;
// 构建 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 -> { userList.forEach(usersVO -> {
boolean isFollowed = followedVlogerIds.contains(usersVO.getId());
usersVO.setIsFollowed(isFollowed); Boolean isFollowed = fansService.queryDoIFollowVloger(currentUserId,usersVO.getId());
if (isFollowed) { if (isFollowed) {
Integer isFanFriendOfMine = relationMap.get(usersVO.getId()); String relationship = redis.get(REDIS_FANS_AND_VLOGGER_RELATIONSHIP + ":" + usersVO.getId() + ":" + currentUserId);
if (isFanFriendOfMine != null && isFanFriendOfMine == 1) { if (StringUtils.isNotBlank(relationship) && relationship.equalsIgnoreCase("1")) {
usersVO.setFollowStatus("互相关注"); // 假设 UsersVO 有此方法设置展示状态 usersVO.setFollowStatus("互相关注"); // 假设 UsersVO 有此方法设置展示状态
} else { }else {
usersVO.setFollowStatus("已关注"); usersVO.setFollowStatus("已关注");
} }
} else { } else {
usersVO.setFollowStatus("未关注"); usersVO.setFollowStatus("未关注");
} }
}); });
log.info("用户列表" + userList);
return userList; return userList;
//
//
//
//
// // 获取当前用户关注的
// List<java.util.Map<String, Object>> followedRelations = fansMapper.getFollowedVlogerIds(currentUserId, vlogerIds);
// log.info("获取当前用户关注的: {}", followedRelations);
// // 构建 vlogerId is_fan_friend_of_mine 的映射
// java.util.Map<String, Integer> relationMap = followedRelations.stream()
// .filter(Objects::nonNull) // 排除整个 map null 的情况
// .collect(Collectors.toMap(
// map -> (String) map.get("vloger_id"),
// map -> (Integer) map.get("is_fan_friend_of_mine")
// ));
// log.info("构造的 relationMap: {}", relationMap);
// 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); log.error("搜索用户时发生异常", e);
throw new RuntimeException("搜索用户时发生异常", e); throw new RuntimeException("搜索用户时发生异常", e);