Commit 80c24924 by 段启岩

2020.2.1第二次合并

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