Commit 7fb36119 by 段启岩

粉丝列表完成

parent 678ee9d2
...@@ -296,24 +296,22 @@ public class UserApi { ...@@ -296,24 +296,22 @@ public class UserApi {
@ApiOperation(("获取我的粉丝")) @ApiOperation(("获取我的粉丝"))
@GetMapping("/my/fans") @GetMapping("/my/fans")
public Response myFans(@Valid PageForm pageForm, @CurrentSubject Subject subject){ public Response<PageDTO<UserInfoWithStatisticsDTO>> myFans(@Valid PageForm pageForm, @CurrentSubject Subject subject){
// 根据userId获取粉丝并返回 // 根据userId获取粉丝并返回
IPage<UserFollow> fansPage = userFollowService.getFansPage(pageForm.getPage(), pageForm.getSize(), (String) subject.getId()); PageDTO<UserInfoWithStatisticsDTO> fansPage = userFollowService.getFansPage(pageForm.getPage(), pageForm.getSize(), (String) subject.getId());
PageDTO<UserFollow> fansPageDTO = new PageDTO<>(fansPage); return Response.success(fansPage);
return Response.success(fansPageDTO);
} }
@Anonymous @Anonymous
@ApiOperation(("获取他人粉丝")) @ApiOperation(("获取他人粉丝"))
@GetMapping("/user/{userId}/fans") @GetMapping("/user/{userId}/fans")
public Response otherFans(@Valid PageForm pageForm, @PathVariable(name = "userId") String userId){ public Response<PageDTO<UserInfoWithStatisticsDTO>> otherFans(@Valid PageForm pageForm, @PathVariable(name = "userId") String userId){
// 根据userId获取粉丝并返回 // 根据userId获取粉丝并返回
IPage<UserFollow> fansPage = userFollowService.getFansPage(pageForm.getPage(), pageForm.getSize(),userId); PageDTO<UserInfoWithStatisticsDTO> fansPage = userFollowService.getFansPage(pageForm.getPage(), pageForm.getSize(),userId);
PageDTO<UserFollow> fansPageDTO = new PageDTO<>(fansPage); return Response.success(fansPage);
return Response.success(fansPageDTO);
} }
......
...@@ -41,7 +41,7 @@ public interface IUserFollowService extends IService<UserFollow> { ...@@ -41,7 +41,7 @@ public interface IUserFollowService extends IService<UserFollow> {
* @param userId * @param userId
* @return * @return
*/ */
IPage<UserFollow> getFansPage(Integer pageNumber, Integer pageSize, String userId); PageDTO<UserInfoWithStatisticsDTO> getFansPage(Integer pageNumber, Integer pageSize, String userId);
/** /**
* 根据userId查询关注的用户 * 根据userId查询关注的用户
......
...@@ -178,12 +178,53 @@ public class UserFollowServiceImpl extends ServiceImpl<UserFollowMapper, UserFol ...@@ -178,12 +178,53 @@ public class UserFollowServiceImpl extends ServiceImpl<UserFollowMapper, UserFol
* @return * @return
*/ */
@Override @Override
public IPage<UserFollow> getFansPage(Integer pageNumber, Integer pageSize, String userId) { public PageDTO<UserInfoWithStatisticsDTO> getFansPage(Integer pageNumber, Integer pageSize, String userId) {
IPage<UserFollow> page = new Page<>(pageNumber, pageSize); IPage<UserFollow> page = new Page<>(pageNumber, pageSize);
QueryWrapper<UserFollow> userFollowQueryWrapper = new QueryWrapper<>(); QueryWrapper<UserFollow> userFollowQueryWrapper = new QueryWrapper<>();
userFollowQueryWrapper.eq("followed_id", userId); userFollowQueryWrapper.eq("followed_id", userId);
userFollowQueryWrapper.eq("follow_status", 0); userFollowQueryWrapper.eq("follow_status", 0);
return page(page, userFollowQueryWrapper); IPage<UserFollow> userFollowPage = page(page, userFollowQueryWrapper);
List<UserFollow> userFollowList = userFollowPage.getRecords();
List<UserInfoWithStatisticsDTO> userInfoWithStatisticsDTOList;
if (!CollectionUtils.isEmpty(userFollowList)) {
// 取出我的粉丝的ID
List<String> fanUserIds = userFollowList.stream()
.map(UserFollow::getFollowedId).collect(Collectors.toList());
// 查询我的粉丝的统计信息
List<UserStatistics> userStatisticsList = userStatisticsService.listByIds(fanUserIds);
// 将统计信息列表转换成HashMap
Map<String, UserStatistics> userStatisticsMap = userStatisticsList.stream()
.collect(Collectors.toMap(
UserStatistics::getUserId,
userStatistics -> userStatistics
));
// 通过userFollowList构造userInfoWithStatisticsDTOList
userInfoWithStatisticsDTOList = userFollowList.stream()
.map(userFollow -> {
UserInfoWithStatisticsDTO userInfoWithStatisticsDTO = new UserInfoWithStatisticsDTO();
String fansId = userFollow.getFollowerId();
userInfoWithStatisticsDTO.setUserId(fansId);
userInfoWithStatisticsDTO.setUserNick(userFollow.getFollowerNick());
userInfoWithStatisticsDTO.setUserAvatar(userFollow.getFollowerAvatar());
userInfoWithStatisticsDTO.setStatistics(userStatisticsMap.get(fansId));
return userInfoWithStatisticsDTO;
}).collect(Collectors.toList());
} else {
userInfoWithStatisticsDTOList = List.of();
}
// 3.转换分页并返回
PageDTO<UserInfoWithStatisticsDTO> pageDTO = new PageDTO<>();
PageUtils.copyMeta(userFollowPage, pageDTO);
pageDTO.setDataList(userInfoWithStatisticsDTOList);
return pageDTO;
} }
/** /**
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment