粉丝与关注用户列表功能

This commit is contained in:
x ronger 2020-10-25 01:39:23 +08:00
parent 9ce6616fd3
commit 04f2b3626c
5 changed files with 83 additions and 1 deletions

View File

@ -1,9 +1,12 @@
package com.rymcu.vertical.mapper; package com.rymcu.vertical.mapper;
import com.rymcu.vertical.core.mapper.Mapper; import com.rymcu.vertical.core.mapper.Mapper;
import com.rymcu.vertical.dto.UserDTO;
import com.rymcu.vertical.entity.Follow; import com.rymcu.vertical.entity.Follow;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import java.util.List;
/** /**
* @author ronger * @author ronger
*/ */
@ -16,4 +19,18 @@ public interface FollowMapper extends Mapper<Follow> {
* @return * @return
*/ */
Boolean isFollow(@Param("followingId") Integer followingId, @Param("followerId") Integer followerId, @Param("followingType") String followingType); Boolean isFollow(@Param("followingId") Integer followingId, @Param("followerId") Integer followerId, @Param("followingType") String followingType);
/**
* 查询用户粉丝
* @param idUser
* @return
*/
List<UserDTO> selectUserFollowersByUser(@Param("idUser") Integer idUser);
/**
* 查询用户关注用户
* @param idUser
* @return
*/
List<UserDTO> selectUserFollowingsByUser(@Param("idUser") Integer idUser);
} }

View File

@ -1,6 +1,7 @@
package com.rymcu.vertical.service; package com.rymcu.vertical.service;
import com.rymcu.vertical.core.service.Service; import com.rymcu.vertical.core.service.Service;
import com.rymcu.vertical.dto.UserDTO;
import com.rymcu.vertical.entity.Follow; import com.rymcu.vertical.entity.Follow;
import com.rymcu.vertical.web.api.exception.BaseApiException; import com.rymcu.vertical.web.api.exception.BaseApiException;
@ -42,4 +43,20 @@ public interface FollowService extends Service<Follow> {
* @return * @return
*/ */
List<Follow> findByFollowingId(String followType, Integer followingId); List<Follow> findByFollowingId(String followType, Integer followingId);
/**
* 查询用户粉丝
* @param userDTO
* @return
*/
List<UserDTO> findUserFollowersByUser(UserDTO userDTO);
/**
* 查询用户关注用户
* @param userDTO
* @return
*/
List<UserDTO> findUserFollowingsByUser(UserDTO userDTO);
} }

View File

@ -2,6 +2,7 @@ package com.rymcu.vertical.service.impl;
import com.rymcu.vertical.core.constant.NotificationConstant; import com.rymcu.vertical.core.constant.NotificationConstant;
import com.rymcu.vertical.core.service.AbstractService; import com.rymcu.vertical.core.service.AbstractService;
import com.rymcu.vertical.dto.UserDTO;
import com.rymcu.vertical.entity.Follow; import com.rymcu.vertical.entity.Follow;
import com.rymcu.vertical.entity.User; import com.rymcu.vertical.entity.User;
import com.rymcu.vertical.mapper.FollowMapper; import com.rymcu.vertical.mapper.FollowMapper;
@ -56,4 +57,16 @@ public class FollowServiceImpl extends AbstractService<Follow> implements Follow
follow.setFollowingId(followingId); follow.setFollowingId(followingId);
return followMapper.select(follow); return followMapper.select(follow);
} }
@Override
public List<UserDTO> findUserFollowersByUser(UserDTO userDTO) {
List<UserDTO> list = followMapper.selectUserFollowersByUser(userDTO.getIdUser());
return list;
}
@Override
public List<UserDTO> findUserFollowingsByUser(UserDTO userDTO) {
List<UserDTO> list = followMapper.selectUserFollowingsByUser(userDTO.getIdUser());
return list;
}
} }

View File

@ -9,6 +9,7 @@ import com.rymcu.vertical.dto.ArticleDTO;
import com.rymcu.vertical.dto.PortfolioDTO; import com.rymcu.vertical.dto.PortfolioDTO;
import com.rymcu.vertical.dto.UserDTO; import com.rymcu.vertical.dto.UserDTO;
import com.rymcu.vertical.service.ArticleService; import com.rymcu.vertical.service.ArticleService;
import com.rymcu.vertical.service.FollowService;
import com.rymcu.vertical.service.PortfolioService; import com.rymcu.vertical.service.PortfolioService;
import com.rymcu.vertical.service.UserService; import com.rymcu.vertical.service.UserService;
import com.rymcu.vertical.util.Utils; import com.rymcu.vertical.util.Utils;
@ -32,6 +33,8 @@ public class UserController {
private ArticleService articleService; private ArticleService articleService;
@Resource @Resource
private PortfolioService portfolioService; private PortfolioService portfolioService;
@Resource
private FollowService followService;
@GetMapping("/{nickname}") @GetMapping("/{nickname}")
@VisitLogger @VisitLogger
@ -69,4 +72,36 @@ public class UserController {
return GlobalResultGenerator.genSuccessResult(map); return GlobalResultGenerator.genSuccessResult(map);
} }
@GetMapping("/{nickname}/followers")
public GlobalResult userFollowers(@RequestParam(defaultValue = "0") Integer page, @RequestParam(defaultValue = "12") Integer rows, @PathVariable String nickname){
UserDTO userDTO = userService.findUserDTOByNickname(nickname);
if (userDTO == null){
return GlobalResultGenerator.genErrorResult("用户不存在!");
}
PageHelper.startPage(page, rows);
List<UserDTO> list = followService.findUserFollowersByUser(userDTO);
PageInfo<UserDTO> pageInfo = new PageInfo(list);
Map map = new HashMap(2);
map.put("users", list);
Map pagination = Utils.getPagination(pageInfo);
map.put("pagination", pagination);
return GlobalResultGenerator.genSuccessResult(map);
}
@GetMapping("/{nickname}/followings")
public GlobalResult userFollowings(@RequestParam(defaultValue = "0") Integer page, @RequestParam(defaultValue = "12") Integer rows, @PathVariable String nickname){
UserDTO userDTO = userService.findUserDTOByNickname(nickname);
if (userDTO == null){
return GlobalResultGenerator.genErrorResult("用户不存在!");
}
PageHelper.startPage(page, rows);
List<UserDTO> list = followService.findUserFollowingsByUser(userDTO);
PageInfo<UserDTO> pageInfo = new PageInfo(list);
Map map = new HashMap(2);
map.put("users", list);
Map pagination = Utils.getPagination(pageInfo);
map.put("pagination", pagination);
return GlobalResultGenerator.genSuccessResult(map);
}
} }

View File

@ -138,6 +138,6 @@
select exists (select * from vertical_comment where comment_article_id = #{id}) select exists (select * from vertical_comment where comment_article_id = #{id})
</select> </select>
<select id="selectPortfolioArticlesByIdPortfolioAndSortNo" resultMap="DTOResultMap"> <select id="selectPortfolioArticlesByIdPortfolioAndSortNo" resultMap="DTOResultMap">
select va.article_title, va.id, va.article_permalink from vertical_portfolio_article vpa join vertical_article va on va.id = vpa.id_vertical_article where id_vertical_portfolio = #{idPortfolio} and sort_no > (#{sortNo} - 2) order by sort_no limit 20 select va.article_title, va.id, va.article_permalink from vertical_portfolio_article vpa join vertical_article va on va.id = vpa.id_vertical_article where id_vertical_portfolio = #{idPortfolio} order by sort_no
</select> </select>
</mapper> </mapper>