Commit 2d6e8e5f by 段启岩

热门答主功能

parent 6293bf70
...@@ -391,6 +391,20 @@ public class UserApi { ...@@ -391,6 +391,20 @@ public class UserApi {
} }
@Anonymous @Anonymous
@ApiOperation("热门答主")
@GetMapping("/user/hotRepliers")
public Response<?> hotRepliers(@Valid PageForm pageForm, BindingResult bindingResult){
if (bindingResult.hasErrors()) {
return Response.fieldError(bindingResult.getFieldError());
}
PageDTO<UserFollowDTO> userFollowDTOPage = userService.getHotReplies(pageForm.getPage(), pageForm.getSize());
return Response.success(userFollowDTOPage);
}
@Anonymous
@ApiOperation("社区精英") @ApiOperation("社区精英")
@GetMapping("/user/elites") @GetMapping("/user/elites")
public Response<?> getEliteUsers(@Valid PageForm pageForm, BindingResult bindingResult) { public Response<?> getEliteUsers(@Valid PageForm pageForm, BindingResult bindingResult) {
......
...@@ -42,4 +42,12 @@ public interface UserMapper extends BaseMapper<User> { ...@@ -42,4 +42,12 @@ public interface UserMapper extends BaseMapper<User> {
* @return * @return
*/ */
IPage<UserFollowDTO> selectEliteUserPage(Page<Object> objectPage); IPage<UserFollowDTO> selectEliteUserPage(Page<Object> objectPage);
/**
* 热门答主
* @param objectPage
* @return
*/
IPage<UserFollowDTO> selectHotReplierPage(Page<Object> objectPage);
} }
...@@ -12,6 +12,8 @@ ...@@ -12,6 +12,8 @@
us.project_num `statistics.project_num`, us.project_num `statistics.project_num`,
us.post_num `statistics.post_num`, us.post_num `statistics.post_num`,
us.question_num `statistics.question_num`, us.question_num `statistics.question_num`,
us.question_reply_num `statistics.question_reply_num`,
us.reply_accepted_num `statistics.reply_accepted_num`,
us.visited_num `statistics.visited_num` us.visited_num `statistics.visited_num`
from `user` u, user_statistics us from `user` u, user_statistics us
where u.user_id = us.user_id where u.user_id = us.user_id
...@@ -30,6 +32,8 @@ ...@@ -30,6 +32,8 @@
us.project_num `statistics.project_num`, us.project_num `statistics.project_num`,
us.post_num `statistics.post_num`, us.post_num `statistics.post_num`,
us.question_num `statistics.question_num`, us.question_num `statistics.question_num`,
us.question_reply_num `statistics.question_reply_num`,
us.reply_accepted_num `statistics.reply_accepted_num`,
us.visited_num `statistics.visited_num` us.visited_num `statistics.visited_num`
from `user` u, user_statistics us from `user` u, user_statistics us
where u.user_id = us.user_id where u.user_id = us.user_id
...@@ -52,6 +56,8 @@ ...@@ -52,6 +56,8 @@
us.project_num `statistics.project_num`, us.project_num `statistics.project_num`,
us.post_num `statistics.post_num`, us.post_num `statistics.post_num`,
us.question_num `statistics.question_num`, us.question_num `statistics.question_num`,
us.question_reply_num `statistics.question_reply_num`,
us.reply_accepted_num `statistics.reply_accepted_num`,
us.visited_num `statistics.visited_num` us.visited_num `statistics.visited_num`
FROM `user` u, user_statistics us FROM `user` u, user_statistics us
WHERE u.user_id = us.user_id WHERE u.user_id = us.user_id
...@@ -70,10 +76,32 @@ ...@@ -70,10 +76,32 @@
us.project_num `statistics.project_num`, us.project_num `statistics.project_num`,
us.post_num `statistics.post_num`, us.post_num `statistics.post_num`,
us.question_num `statistics.question_num`, us.question_num `statistics.question_num`,
us.question_reply_num `statistics.question_reply_num`,
us.reply_accepted_num `statistics.reply_accepted_num`,
us.visited_num `statistics.visited_num` us.visited_num `statistics.visited_num`
FROM `user` u, user_statistics us FROM `user` u, user_statistics us
WHERE u.user_id = us.user_id WHERE u.user_id = us.user_id
ORDER BY blog_num + project_num + post_num + blog_view_num DESC ORDER BY blog_num + project_num + post_num + blog_view_num DESC
</select> </select>
<select id="selectHotReplierPage" resultType="cn.meteor.beyondclouds.modules.user.dto.UserFollowDTO">
select
u.*,
u.nick_name user_nick,
us.followed_num `statistics.followed_num`,
us.fans_num `statistics.fans_num`,
us.blog_num `statistics.blog_num`,
us.blog_view_num `statistics.blog_view_num`,
us.project_num `statistics.project_num`,
us.post_num `statistics.post_num`,
us.question_num `statistics.question_num`,
us.question_reply_num `statistics.question_reply_num`,
us.reply_accepted_num `statistics.reply_accepted_num`,
us.visited_num `statistics.visited_num`
from `user` u, user_statistics us
where u.user_id = us.user_id
AND us.blog_view_num > 0
order by us.reply_accepted_num desc
</select>
</mapper> </mapper>
...@@ -131,4 +131,12 @@ public interface IUserService extends IService<User> { ...@@ -131,4 +131,12 @@ public interface IUserService extends IService<User> {
* @return * @return
*/ */
PageDTO<UserFollowDTO> getEliteUsers(Integer page, Integer size); PageDTO<UserFollowDTO> getEliteUsers(Integer page, Integer size);
/**
* 获取热门答主
* @param page
* @param size
* @return
*/
PageDTO<UserFollowDTO> getHotReplies(Integer page, Integer size);
} }
...@@ -506,4 +506,26 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements IU ...@@ -506,4 +506,26 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements IU
pageDTO.setDataList(userFollowDTOList); pageDTO.setDataList(userFollowDTOList);
return pageDTO; return pageDTO;
} }
@Override
public PageDTO<UserFollowDTO> getHotReplies(Integer pageNumber, Integer pageSize) {
IPage<UserFollowDTO> userPage = userMapper.selectHotReplierPage(new Page<>(pageNumber, pageSize));
List<UserFollowDTO> userFollowDTOList = userPage.getRecords();
if (!CollectionUtils.isEmpty(userFollowDTOList)) {
if (SubjectUtils.isAuthenticated()) {
Set<String> followUserIds = userFollowService.getCurrentUserFollowedUserIds();
userFollowDTOList.forEach(userFollowDTO -> {
userFollowDTO.setFollowedUser(followUserIds.contains(userFollowDTO.getUserId()));
});
} else {
userFollowDTOList.forEach(userFollowDTO -> {
userFollowDTO.setFollowedUser(false);
});
}
}
PageDTO<UserFollowDTO> userFollowDTOPage = new PageDTO<>();
PageUtils.copyMeta(userPage, userFollowDTOPage);
userFollowDTOPage.setDataList(userFollowDTOList);
return userFollowDTOPage;
}
} }
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