Commit b8c58889 by 段启岩

热门博主完成

parent 73f5e7d2
...@@ -377,6 +377,19 @@ public class UserApi { ...@@ -377,6 +377,19 @@ public class UserApi {
} }
} }
@Anonymous
@ApiOperation(("热门博主"))
@GetMapping("/user/hotBloggers")
public Response<?> hotBloggers(@Valid PageForm pageForm, BindingResult bindingResult){
if (bindingResult.hasErrors()) {
return Response.fieldError(bindingResult.getFieldError());
}
PageDTO<UserFollowDTO> userFollowDTOPage = userService.getHotBloggers(pageForm.getPage(), pageForm.getSize());
return Response.success(userFollowDTOPage);
}
} }
package cn.meteor.beyondclouds.modules.user.mapper; package cn.meteor.beyondclouds.modules.user.mapper;
import cn.meteor.beyondclouds.modules.user.dto.UserFollowDTO;
import cn.meteor.beyondclouds.modules.user.entity.User; import cn.meteor.beyondclouds.modules.user.entity.User;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
/** /**
* @author 段启岩 * @author 段启岩
...@@ -9,4 +12,10 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; ...@@ -9,4 +12,10 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
*/ */
public interface UserMapper extends BaseMapper<User> { public interface UserMapper extends BaseMapper<User> {
/**
* 查询热门博主
* @param page
* @return
*/
IPage<UserFollowDTO> selectHotBloggerPage(Page<User> page);
} }
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cn.meteor.beyondclouds.modules.user.mapper.UserMapper"> <mapper namespace="cn.meteor.beyondclouds.modules.user.mapper.UserMapper">
<select id="selectHotBloggerPage" resultType="cn.meteor.beyondclouds.modules.user.dto.UserFollowDTO">
select
u.*,
us.followed_num `statistics.followed_num`,
us.fans_num `statistics.fans_num`,
us.blog_num `statistics.blog_num`,
us.blog_view_num `statistics.blogView_num`,
us.project_num `statistics.project_num`,
us.post_num `statistics.post_num`,
us.question_num `statistics.question_num`,
us.visited_num `statistics.visited_num`
from `user` u, user_statistics us
where u.user_id = us.user_id
order by us.blog_view_num desc
</select>
</mapper> </mapper>
package cn.meteor.beyondclouds.modules.user.service; package cn.meteor.beyondclouds.modules.user.service;
import cn.meteor.beyondclouds.common.dto.PageDTO;
import cn.meteor.beyondclouds.common.dto.QQAuthResultDTO; import cn.meteor.beyondclouds.common.dto.QQAuthResultDTO;
import cn.meteor.beyondclouds.modules.user.dto.UserFollowDTO;
import cn.meteor.beyondclouds.modules.user.dto.UserInfoDTO; import cn.meteor.beyondclouds.modules.user.dto.UserInfoDTO;
import cn.meteor.beyondclouds.modules.user.entity.User; import cn.meteor.beyondclouds.modules.user.entity.User;
import cn.meteor.beyondclouds.modules.user.entity.UserStatistics; import cn.meteor.beyondclouds.modules.user.entity.UserStatistics;
...@@ -96,4 +98,11 @@ public interface IUserService extends IService<User> { ...@@ -96,4 +98,11 @@ public interface IUserService extends IService<User> {
*/ */
UserInfoDTO getUserInfo(String userId, boolean updateVisited) throws UserServiceException; UserInfoDTO getUserInfo(String userId, boolean updateVisited) throws UserServiceException;
/**
* 获取热门博主
* @param pageNumber
* @param pageSize
* @return
*/
PageDTO<UserFollowDTO> getHotBloggers(Integer pageNumber, Integer pageSize);
} }
package cn.meteor.beyondclouds.modules.user.service.impl; package cn.meteor.beyondclouds.modules.user.service.impl;
import cn.meteor.beyondclouds.common.dto.PageDTO;
import cn.meteor.beyondclouds.common.dto.QQAuthResultDTO; import cn.meteor.beyondclouds.common.dto.QQAuthResultDTO;
import cn.meteor.beyondclouds.common.helper.IRedisHelper; import cn.meteor.beyondclouds.common.helper.IRedisHelper;
import cn.meteor.beyondclouds.core.queue.message.DataItemChangeMessage; import cn.meteor.beyondclouds.core.queue.message.DataItemChangeMessage;
...@@ -9,6 +10,7 @@ import cn.meteor.beyondclouds.modules.mail.dto.EmailDTO; ...@@ -9,6 +10,7 @@ import cn.meteor.beyondclouds.modules.mail.dto.EmailDTO;
import cn.meteor.beyondclouds.modules.mail.service.IMailService; import cn.meteor.beyondclouds.modules.mail.service.IMailService;
import cn.meteor.beyondclouds.modules.mail.util.EmailUtils; import cn.meteor.beyondclouds.modules.mail.util.EmailUtils;
import cn.meteor.beyondclouds.modules.queue.service.IMessageQueueService; import cn.meteor.beyondclouds.modules.queue.service.IMessageQueueService;
import cn.meteor.beyondclouds.modules.user.dto.UserFollowDTO;
import cn.meteor.beyondclouds.modules.user.dto.UserInfoDTO; import cn.meteor.beyondclouds.modules.user.dto.UserInfoDTO;
import cn.meteor.beyondclouds.modules.user.entity.User; import cn.meteor.beyondclouds.modules.user.entity.User;
import cn.meteor.beyondclouds.modules.user.entity.UserAuthApp; import cn.meteor.beyondclouds.modules.user.entity.UserAuthApp;
...@@ -20,14 +22,15 @@ import cn.meteor.beyondclouds.modules.user.enums.ThirdPartyAppType; ...@@ -20,14 +22,15 @@ import cn.meteor.beyondclouds.modules.user.enums.ThirdPartyAppType;
import cn.meteor.beyondclouds.modules.user.enums.UserErrorCode; import cn.meteor.beyondclouds.modules.user.enums.UserErrorCode;
import cn.meteor.beyondclouds.modules.user.exception.UserServiceException; import cn.meteor.beyondclouds.modules.user.exception.UserServiceException;
import cn.meteor.beyondclouds.modules.user.mapper.UserMapper; import cn.meteor.beyondclouds.modules.user.mapper.UserMapper;
import cn.meteor.beyondclouds.modules.user.service.IUserAuthAppService; import cn.meteor.beyondclouds.modules.user.service.*;
import cn.meteor.beyondclouds.modules.user.service.IUserAuthLocalService;
import cn.meteor.beyondclouds.modules.user.service.IUserService;
import cn.meteor.beyondclouds.modules.user.service.IUserStatisticsService;
import cn.meteor.beyondclouds.util.Md5Utils; import cn.meteor.beyondclouds.util.Md5Utils;
import cn.meteor.beyondclouds.util.PageUtils;
import cn.meteor.beyondclouds.util.SubjectUtils;
import cn.meteor.beyondclouds.util.UUIDUtils; import cn.meteor.beyondclouds.util.UUIDUtils;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
...@@ -38,6 +41,7 @@ import org.springframework.util.CollectionUtils; ...@@ -38,6 +41,7 @@ import org.springframework.util.CollectionUtils;
import org.springframework.util.StringUtils; import org.springframework.util.StringUtils;
import java.util.List; import java.util.List;
import java.util.Set;
/** /**
* @author meteor * @author meteor
...@@ -51,7 +55,9 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements IU ...@@ -51,7 +55,9 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements IU
private IUserAuthAppService userAuthAppService; private IUserAuthAppService userAuthAppService;
private IMailService mailService; private IMailService mailService;
private IUserStatisticsService userStatisticsService; private IUserStatisticsService userStatisticsService;
private UserMapper userMapper;
private IUserFollowService userFollowService;
private IMessageQueueService messageQueueService; private IMessageQueueService messageQueueService;
@Autowired @Autowired
...@@ -63,6 +69,16 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements IU ...@@ -63,6 +69,16 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements IU
} }
@Autowired @Autowired
public void setUserFollowService(IUserFollowService userFollowService) {
this.userFollowService = userFollowService;
}
@Autowired
public void setUserMapper(UserMapper userMapper) {
this.userMapper = userMapper;
}
@Autowired
public void setMessageQueueService(IMessageQueueService messageQueueService) { public void setMessageQueueService(IMessageQueueService messageQueueService) {
this.messageQueueService = messageQueueService; this.messageQueueService = messageQueueService;
} }
...@@ -414,4 +430,25 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements IU ...@@ -414,4 +430,25 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements IU
userInfoDTO.setStatistics(userStatistics); userInfoDTO.setStatistics(userStatistics);
return userInfoDTO; return userInfoDTO;
} }
@Override
public PageDTO<UserFollowDTO> getHotBloggers(Integer pageNumber, Integer pageSize) {
IPage<UserFollowDTO> userPage = userMapper.selectHotBloggerPage(new Page<>(pageNumber, pageNumber));
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);
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