Commit 80c24924 by 段启岩

2020.2.1第二次合并

parent f38fd77d
package cn.meteor.beyondclouds.common.vo;
import com.baomidou.mybatisplus.core.metadata.IPage;
import lombok.Data;
import java.util.List;
......@@ -21,4 +22,11 @@ public class PageVO<T> {
*/
private List<T> dataList;
public PageVO() {
}
public PageVO(IPage<T> page) {
setDataList(page.getRecords());
setTotalPage(page.getPages());
}
}
\ No newline at end of file
package cn.meteor.beyondclouds.modules.topic.api;
import cn.meteor.beyondclouds.common.form.PageForm;
import cn.meteor.beyondclouds.common.vo.PageVO;
import cn.meteor.beyondclouds.core.annotation.Anonymous;
import cn.meteor.beyondclouds.core.annotation.CurrentSubject;
import cn.meteor.beyondclouds.core.api.Response;
......@@ -8,7 +9,6 @@ import cn.meteor.beyondclouds.core.bean.Subject;
import cn.meteor.beyondclouds.modules.topic.entity.Topic;
import cn.meteor.beyondclouds.modules.topic.exception.TopicServiceException;
import cn.meteor.beyondclouds.modules.topic.form.CreateTopicForm;
import cn.meteor.beyondclouds.modules.topic.service.ITopicFollowService;
import cn.meteor.beyondclouds.modules.topic.service.ITopicService;
import cn.meteor.beyondclouds.modules.user.entity.User;
import com.baomidou.mybatisplus.core.metadata.IPage;
......@@ -32,25 +32,18 @@ import java.util.List;
@RequestMapping("/api")
public class TopicApi {
private ITopicService iTopicService;
private ITopicFollowService iTopicFollowService;
@Autowired
public void setiTopicService(ITopicService iTopicService) {
this.iTopicService = iTopicService;
}
private ITopicService topicService;
@Autowired
public void setiTopicFollowService(ITopicFollowService iTopicFollowService) {
this.iTopicFollowService = iTopicFollowService;
public void setTopicService(ITopicService topicService) {
this.topicService = topicService;
}
@ApiOperation("创建话题")
@PostMapping("/topic")
public Response createTopic(@RequestBody @Valid CreateTopicForm createTopicForm, @CurrentSubject Subject subject){
public Response createTopic(@RequestBody @Valid CreateTopicForm createTopicForm, @CurrentSubject Subject subject) {
iTopicService.createTopic(String.valueOf(subject.getId()), createTopicForm.getTopicName());
topicService.createTopic(String.valueOf(subject.getId()), createTopicForm.getTopicName());
return Response.success();
}
......@@ -63,11 +56,11 @@ public class TopicApi {
return Response.fieldError(bindingResult.getFieldError());
}
int pageNo= pageForm.getPage();
int pageSize= pageForm.getSize();
int pageNo = pageForm.getPage();
int pageSize = pageForm.getSize();
IPage<Topic> page = new Page<>(pageNo, pageSize);
return Response.success(iTopicService.page(page));
return Response.success(topicService.page(page));
}
......@@ -75,7 +68,7 @@ public class TopicApi {
@GetMapping("/topic/search")
public Response<List<Topic>> searchTopics(@RequestParam("keywords") String keywords) {
List<Topic> topics = iTopicService.searchTopics(keywords);
List<Topic> topics = topicService.searchTopics(keywords);
return Response.success(topics);
}
......@@ -84,9 +77,9 @@ public class TopicApi {
@Anonymous
@ApiOperation("话题详情")
@GetMapping("/topic/{topicId}")
public Response getTopic(@PathVariable("topicId") String topicId){
public Response getTopic(@PathVariable("topicId") String topicId) {
try {
Topic topic = iTopicService.getTopic(topicId);
Topic topic = topicService.getTopic(topicId);
return Response.success(topic);
} catch (TopicServiceException e) {
e.printStackTrace();
......@@ -98,9 +91,9 @@ public class TopicApi {
@ApiOperation("关注话题")
@PostMapping("/topic/{topicId}/follower")
public Response topicFollower(@PathVariable("topicId") String topicId,@CurrentSubject Subject subject){
public Response topicFollower(@PathVariable("topicId") String topicId, @CurrentSubject Subject subject) {
try {
iTopicService.topicFollower((String) subject.getId(),topicId);
topicService.followTopic((String) subject.getId(), topicId);
return Response.success();
} catch (TopicServiceException e) {
e.printStackTrace();
......@@ -112,25 +105,24 @@ public class TopicApi {
@ApiOperation("话题关注者列表")
@GetMapping("/topic/{topicId}/follower")
public Response topicsFollower(@PathVariable("topicId") @Valid String topicId, PageForm pageForm, BindingResult bindingResult) {
public Response<?> topicsFollower(@PathVariable("topicId") String topicId, @Valid PageForm pageForm, BindingResult bindingResult) {
if (bindingResult.hasErrors()) {
return Response.fieldError(bindingResult.getFieldError());
}
IPage<User> page = iTopicService.getTopicsFollower(pageForm.getPage(), pageForm.getSize(),topicId);
return Response.success(page);
IPage<User> page = topicService.getTopicsFollower(pageForm.getPage(), pageForm.getSize(), topicId);
PageVO<User> userPageVO = new PageVO<>(page);
return Response.success(userPageVO);
}
@ApiOperation("我关注的话题")
@GetMapping("/my/topic/followed")
public Response topicsMyFollowed(@Valid PageForm pageForm, @CurrentSubject Subject subject, BindingResult bindingResult) {
public Response topicsMyFollowed(@Valid PageForm pageForm, BindingResult bindingResult, @CurrentSubject Subject subject) {
if (bindingResult.hasErrors()) {
return Response.fieldError(bindingResult.getFieldError());
}
IPage<Topic> page = iTopicService.getTopicsMyFollowed(pageForm.getPage(), pageForm.getSize(),String.valueOf(subject.getId()));
IPage<Topic> page = topicService.getTopicsMyFollowed(pageForm.getPage(), pageForm.getSize(), String.valueOf(subject.getId()));
return Response.success(page);
}
......
......@@ -36,7 +36,7 @@ public interface ITopicService extends IService<Topic> {
* @param userId
* @param topicId
*/
void topicFollower(String userId, String topicId) throws TopicServiceException;
void followTopic(String userId, String topicId) throws TopicServiceException;
/**
* 话题详情
......
package cn.meteor.beyondclouds.modules.topic.service.impl;
import cn.meteor.beyondclouds.modules.topic.entity.Topic;
import cn.meteor.beyondclouds.modules.topic.entity.TopicFollow;
import cn.meteor.beyondclouds.modules.topic.mapper.TopicFollowMapper;
import cn.meteor.beyondclouds.modules.topic.service.ITopicFollowService;
import cn.meteor.beyondclouds.modules.topic.service.ITopicService;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.List;
/**
* <p>
* 话题关注表,记录了用户和话题之间的关注关系 服务实现类
......@@ -26,19 +17,4 @@ import java.util.List;
@Service
public class TopicFollowServiceImpl extends ServiceImpl<TopicFollowMapper, TopicFollow> implements ITopicFollowService {
private ITopicFollowService iTopicFollowService;
private ITopicService iTopicService;
@Autowired
public void setiTopicFollowService(ITopicFollowService iTopicFollowService) {
this.iTopicFollowService = iTopicFollowService;
}
@Autowired
public void setiTopicService(ITopicService iTopicService) {
this.iTopicService = iTopicService;
}
}
......@@ -17,6 +17,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.stream.Collectors;
/**
* <p>
......@@ -29,60 +30,41 @@ import java.util.List;
@Service
public class TopicServiceImpl extends ServiceImpl<TopicMapper, Topic> implements ITopicService {
private ITopicFollowService topicFollowService;
private TopicMapper topicMapper;
private ITopicService iTopicService;
private ITopicFollowService iTopicFollowService;
private IUserService iUserService;
@Autowired
public void setiUserService(IUserService iUserService) {
this.iUserService = iUserService;
}
private IUserService userService;
@Autowired
public void setTopicMapper(TopicMapper topicMapper) {
this.topicMapper = topicMapper;
}
@Autowired
public void setiTopicService(ITopicService iTopicService) {
this.iTopicService = iTopicService;
}
@Autowired
public void setiTopicFollowService(ITopicFollowService iTopicFollowService) {
this.iTopicFollowService = iTopicFollowService;
public TopicServiceImpl(ITopicFollowService topicFollowService, IUserService userService) {
this.topicFollowService = topicFollowService;
this.userService = userService;
}
@Override
public void createTopic(String userId, String topicName) {
//1. 创建话题
Topic topic=new Topic();
Topic topic = new Topic();
topic.setUserId(userId);
topic.setTopicName(topicName);
iTopicService.save(topic);
save(topic);
}
@Override
public List<Topic> searchTopics(String keywords) {
return topicMapper.searchTopics(keywords);
return searchTopics(keywords);
}
@Override
public Topic getTopic(String topicId) throws TopicServiceException{
public Topic getTopic(String topicId) throws TopicServiceException {
//1. 获取话题
Topic topic=iTopicService.getById(topicId);
Topic topic = getById(topicId);
//2. 找不到该话题,抛出业务异常
if(topic == null) {
if (topic == null) {
throw new TopicServiceException(TopicErrorCode.TOPIC_NOT_EXISTS);
}
......@@ -90,62 +72,93 @@ public class TopicServiceImpl extends ServiceImpl<TopicMapper, Topic> implements
}
@Override
public void topicFollower(String userId, String topicId) throws TopicServiceException{
public void followTopic(String userId, String topicId) throws TopicServiceException {
//1. 获取话题
Topic topic=iTopicService.getById(topicId);
Topic topic = getById(topicId);
//2. 找不到该话题,抛出业务异常
if(topic == null) {
if (topic == null) {
throw new TopicServiceException(TopicErrorCode.TOPIC_NOT_EXISTS);
}
//3. 关注话题
TopicFollow topicFollow=new TopicFollow();
TopicFollow topicFollow = new TopicFollow();
topicFollow.setTopicId(topicId);
topicFollow.setUserId(userId);
iTopicFollowService.save(topicFollow);
topicFollowService.save(topicFollow);
}
@Override
public IPage<Topic> getTopicsMyFollowed(Integer page, Integer size, String userId) {
//1. 通过用户id获取我关注的所有话题的id
IPage<TopicFollow> pages = new Page<>(page, size);
QueryWrapper<TopicFollow> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("user_id", userId);
IPage<TopicFollow> page1 = iTopicFollowService.page(pages, queryWrapper);
//2. 通过话题id获取话题详情
IPage<Topic> page2 = new Page<>(page, size);
QueryWrapper<Topic> queryWrapper1 = new QueryWrapper<>();
queryWrapper.eq("topic_id", page1.getRecords());
//3. 分页返回
return iTopicService.page(page2, queryWrapper1);
public IPage<Topic> getTopicsMyFollowed(Integer pageNumber, Integer pageSize, String userId) {
// 1. 通过用户id获取该话题所有关注着
// 设置分页信息
IPage<TopicFollow> page = new Page<>(pageNumber, pageSize);
// 2.查询TopicFollow
QueryWrapper<TopicFollow> topicFollowQueryWrapper = new QueryWrapper<>();
topicFollowQueryWrapper.eq("user_id", userId);
IPage<TopicFollow> topicFollowPage = topicFollowService.page(page, topicFollowQueryWrapper);
// 获取查询到的topicId
List<String> topicIds = topicFollowPage.getRecords().stream()
.map(TopicFollow::getTopicId)
.collect(Collectors.toList());
// 3. 通过用户id批量查询用户
List<Topic> topics = listByIds(topicIds);
// 5.构造分页结果
IPage<Topic> userPage = new Page<>();
userPage.setSize(topicFollowPage.getSize());
userPage.setCurrent(topicFollowPage.getCurrent());
userPage.setPages(topicFollowPage.getPages());
userPage.setTotal(topicFollowPage.getTotal());
userPage.setRecords(topics);
return userPage;
}
@Override
public IPage<User> getTopicsFollower(Integer page, Integer size, String topicId) {
//1. 通过话题id获取该话题所有关注着
IPage<TopicFollow> pages = new Page<>(page, size);
QueryWrapper<TopicFollow> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("topic_id", topicId);
IPage<TopicFollow> page1 = iTopicFollowService.page(pages, queryWrapper);
//2. 通过用户id获取用户详情
IPage<User> page2 = new Page<>(page, size);
QueryWrapper<User> queryWrapper1 = new QueryWrapper<>();
queryWrapper.eq("user_id", page1.getRecords());
//3. 分页返回
return iUserService.page(page2, queryWrapper1);
public IPage<User> getTopicsFollower(Integer pageNumber, Integer pageSize, String topicId) {
// 1. 通过话题id获取该话题所有关注着
// 设置分页信息
IPage<TopicFollow> page = new Page<>(pageNumber, pageSize);
// 2.查询TopicFollow
QueryWrapper<TopicFollow> topicFollowQueryWrapper = new QueryWrapper<>();
topicFollowQueryWrapper.eq("topic_id", topicId);
IPage<TopicFollow> topicFollowPage = topicFollowService.page(page, topicFollowQueryWrapper);
// 获取查询到的userId
List<String> followerIds = topicFollowPage.getRecords().stream()
.map(TopicFollow::getUserId)
.collect(Collectors.toList());
// 3. 通过用户id批量查询用户
List<User> followers = userService.listByIds(followerIds);
// 4.去除敏感信息
followers.stream()
.forEach(user -> {
user.setMobile(null);
user.setWxNumber(null);
user.setQqNumber(null);
});
// 5.构造分页结果
IPage<User> userPage = new Page<>();
userPage.setSize(topicFollowPage.getSize());
userPage.setCurrent(topicFollowPage.getCurrent());
userPage.setPages(topicFollowPage.getPages());
userPage.setTotal(topicFollowPage.getTotal());
userPage.setRecords(followers);
return userPage;
}
......
......@@ -3,7 +3,7 @@ spring:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://127.0.0.1:3306/beyond_clouds?useUnicode=true&characterEncoding=UTF-8&useSSL=false&allowPublicKeyRetrieval=true
username: root
password: password
password: 100Centa30821%mysql
swagger:
enable: true
......
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