Commit b34bda33 by Author name

2.1博客列表和详情

parent c3ab3787
package cn.meteor.beyondclouds.modules.blog.api; package cn.meteor.beyondclouds.modules.blog.api;
import cn.meteor.beyondclouds.common.exception.OssException; import cn.meteor.beyondclouds.common.exception.OssException;
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.annotation.CurrentSubject;
import cn.meteor.beyondclouds.core.api.Response; import cn.meteor.beyondclouds.core.api.Response;
import cn.meteor.beyondclouds.core.bean.Subject; import cn.meteor.beyondclouds.core.bean.Subject;
import cn.meteor.beyondclouds.modules.blog.bean.BlogDetail;
import cn.meteor.beyondclouds.modules.blog.entity.Blog; import cn.meteor.beyondclouds.modules.blog.entity.Blog;
import cn.meteor.beyondclouds.modules.blog.exception.BlogServiceException; import cn.meteor.beyondclouds.modules.blog.exception.BlogServiceException;
import cn.meteor.beyondclouds.modules.blog.form.PublishBlogForm; import cn.meteor.beyondclouds.modules.blog.form.PublishBlogForm;
import cn.meteor.beyondclouds.modules.blog.service.IBlogService; import cn.meteor.beyondclouds.modules.blog.service.IBlogService;
import com.baomidou.mybatisplus.core.metadata.IPage;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
...@@ -65,5 +70,29 @@ public class BlogApi { ...@@ -65,5 +70,29 @@ public class BlogApi {
} }
@ApiOperation("博客详情")
@GetMapping("/blog/{blogId}")
public Response<BlogDetail> getBlog(@PathVariable("blogId") String blogId) {
try {
BlogDetail blogDetail = blogService.getBlog(blogId);
return Response.success(blogDetail);
} catch (BlogServiceException e) {
e.printStackTrace();
return Response.error(e);
}
}
@Anonymous
@ApiOperation("博客列表")
@GetMapping("/blogs")
public Response<PageVO<Blog>> getBlogs (@Valid PageForm pageForm) {
IPage<Blog> blogIPage = blogService.getBlogPage(pageForm.getPage(), pageForm.getSize());
PageVO<Blog> blogPageVO = new PageVO<>();
blogPageVO.setTotalPage(blogIPage.getPages());
blogPageVO.setDataList(blogIPage.getRecords());
return Response.success(blogPageVO);
}
} }
package cn.meteor.beyondclouds.modules.blog.bean;
import cn.meteor.beyondclouds.modules.blog.entity.Blog;
import lombok.Data;
import java.util.List;
/**
* @author gaoTong
* @date 2020/2/1 9:26
*/
@Data
public class BlogDetail extends Blog {
private String content;
private List<String> tagIds;
}
...@@ -8,7 +8,7 @@ import cn.meteor.beyondclouds.core.IErrorCode; ...@@ -8,7 +8,7 @@ import cn.meteor.beyondclouds.core.IErrorCode;
*/ */
public enum BlogErrorCode implements IErrorCode { public enum BlogErrorCode implements IErrorCode {
USERID_AUTH_ERROR(8001,"不是当前博客的拥有者"), USERID_AUTH_ERROR(8001,"不是当前博客的拥有者"),
BLOG_NOT_EXIST(8002,"当前博客已经被不存在") BLOG_NOT_FOUND(8002,"当前博客已经不存在")
; ;
......
package cn.meteor.beyondclouds.modules.blog.form;
import lombok.Data;
import javax.validation.constraints.NotNull;
/**
* @author gaoTong
* @date 2020/2/1 12:11
*/
@Data
public class pageForm {
private Integer page;
private Integer size;
}
package cn.meteor.beyondclouds.modules.blog.service; package cn.meteor.beyondclouds.modules.blog.service;
import cn.meteor.beyondclouds.modules.blog.bean.BlogDetail;
import cn.meteor.beyondclouds.modules.blog.entity.Blog; import cn.meteor.beyondclouds.modules.blog.entity.Blog;
import cn.meteor.beyondclouds.modules.blog.entity.BlogExt; import cn.meteor.beyondclouds.modules.blog.entity.BlogExt;
import cn.meteor.beyondclouds.modules.blog.entity.BlogTag; import cn.meteor.beyondclouds.modules.blog.entity.BlogTag;
import cn.meteor.beyondclouds.modules.blog.exception.BlogServiceException; import cn.meteor.beyondclouds.modules.blog.exception.BlogServiceException;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
import java.util.List; import java.util.List;
...@@ -33,4 +35,29 @@ public interface IBlogService extends IService<Blog> { ...@@ -33,4 +35,29 @@ public interface IBlogService extends IService<Blog> {
* @param BlogId * @param BlogId
*/ */
void deleteBlog(String userId , String BlogId) throws BlogServiceException; void deleteBlog(String userId , String BlogId) throws BlogServiceException;
/**
* 获取博客详情
* @param blogId
* @return
* @throws BlogServiceException
*/
BlogDetail getBlog(String blogId) throws BlogServiceException;
/**
* 博客列表
* @param pageNumber
* @param pageSize
* @return
*/
IPage<Blog> getBlogPage(Integer pageNumber , Integer pageSize);
/**
* 我的博客列表
* @param pageNumber
* @param pageSize
* @param userId
* @return
*/
IPage<Blog> getMyBlogPage(Integer pageNumber , Integer pageSize , String userId);
} }
package cn.meteor.beyondclouds.modules.blog.service.impl; package cn.meteor.beyondclouds.modules.blog.service.impl;
import cn.meteor.beyondclouds.modules.blog.bean.BlogDetail;
import cn.meteor.beyondclouds.modules.blog.entity.Blog; import cn.meteor.beyondclouds.modules.blog.entity.Blog;
import cn.meteor.beyondclouds.modules.blog.entity.BlogExt; import cn.meteor.beyondclouds.modules.blog.entity.BlogExt;
import cn.meteor.beyondclouds.modules.blog.entity.BlogTag; import cn.meteor.beyondclouds.modules.blog.entity.BlogTag;
import cn.meteor.beyondclouds.modules.blog.enums.BlogErrorCode; import cn.meteor.beyondclouds.modules.blog.enums.BlogErrorCode;
import cn.meteor.beyondclouds.modules.blog.exception.BlogServiceException; import cn.meteor.beyondclouds.modules.blog.exception.BlogServiceException;
import cn.meteor.beyondclouds.modules.blog.mapper.BlogMapper; import cn.meteor.beyondclouds.modules.blog.mapper.BlogMapper;
import cn.meteor.beyondclouds.modules.blog.mapper.BlogTagMapper;
import cn.meteor.beyondclouds.modules.blog.service.IBlogCommentService; import cn.meteor.beyondclouds.modules.blog.service.IBlogCommentService;
import cn.meteor.beyondclouds.modules.blog.service.IBlogExtService; import cn.meteor.beyondclouds.modules.blog.service.IBlogExtService;
import cn.meteor.beyondclouds.modules.blog.service.IBlogService; import cn.meteor.beyondclouds.modules.blog.service.IBlogService;
...@@ -13,11 +15,20 @@ import cn.meteor.beyondclouds.modules.blog.service.IBlogTagService; ...@@ -13,11 +15,20 @@ import cn.meteor.beyondclouds.modules.blog.service.IBlogTagService;
import cn.meteor.beyondclouds.modules.topic.entity.TopicReference; import cn.meteor.beyondclouds.modules.topic.entity.TopicReference;
import cn.meteor.beyondclouds.modules.topic.service.ITopicReferenceService; import cn.meteor.beyondclouds.modules.topic.service.ITopicReferenceService;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; 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 com.fasterxml.jackson.databind.util.BeanUtil;
import lombok.extern.java.Log; import lombok.extern.java.Log;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List; import java.util.List;
import java.util.stream.Collectors;
/** /**
* <p> * <p>
* 博客表 服务实现类 * 博客表 服务实现类
...@@ -38,6 +49,7 @@ public class BlogServiceImpl extends ServiceImpl<BlogMapper, Blog> implements IB ...@@ -38,6 +49,7 @@ public class BlogServiceImpl extends ServiceImpl<BlogMapper, Blog> implements IB
private IBlogCommentService blogCommentService; private IBlogCommentService blogCommentService;
@Autowired
public BlogServiceImpl(IBlogTagService blogTagService, ITopicReferenceService topicReferenceService, IBlogExtService blogExtService, IBlogCommentService blogCommentService) { public BlogServiceImpl(IBlogTagService blogTagService, ITopicReferenceService topicReferenceService, IBlogExtService blogExtService, IBlogCommentService blogCommentService) {
this.blogTagService = blogTagService; this.blogTagService = blogTagService;
this.topicReferenceService = topicReferenceService; this.topicReferenceService = topicReferenceService;
...@@ -93,7 +105,7 @@ public class BlogServiceImpl extends ServiceImpl<BlogMapper, Blog> implements IB ...@@ -93,7 +105,7 @@ public class BlogServiceImpl extends ServiceImpl<BlogMapper, Blog> implements IB
} }
//2.判断当前博客是否存在 //2.判断当前博客是否存在
if (getById(blogId) == null) { if (getById(blogId) == null) {
throw new BlogServiceException(BlogErrorCode.BLOG_NOT_EXIST); throw new BlogServiceException(BlogErrorCode.BLOG_NOT_FOUND);
} }
//3.删除博客评论表 //3.删除博客评论表
QueryWrapper queryWrapperComment = new QueryWrapper(); QueryWrapper queryWrapperComment = new QueryWrapper();
...@@ -118,4 +130,53 @@ public class BlogServiceImpl extends ServiceImpl<BlogMapper, Blog> implements IB ...@@ -118,4 +130,53 @@ public class BlogServiceImpl extends ServiceImpl<BlogMapper, Blog> implements IB
//8.删除博客表里的数据 //8.删除博客表里的数据
removeById(blogId); removeById(blogId);
} }
@Override
public BlogDetail getBlog(String blogId) throws BlogServiceException {
//1.获取博客
Blog blog = getById(blogId);
//若找不到该博客,则抛出业务异常
if (null == blog) {
throw new BlogServiceException(BlogErrorCode.BLOG_NOT_FOUND);
}
//2.获取项目内容
QueryWrapper<BlogExt> blogExtQueryWrapper = new QueryWrapper();
blogExtQueryWrapper.eq("blog_id", blogId);
BlogExt blogExt = blogExtService.getOne(blogExtQueryWrapper);
//3.获取引用的话题
QueryWrapper<BlogTag> blogTagQueryWrapper = new QueryWrapper();
blogTagQueryWrapper.eq("blog_id", blogId);
blogTagService.list(blogTagQueryWrapper);
List<BlogTag> blogTagList = blogTagService.list(blogTagQueryWrapper);
String[] tagIds = blogTagList.stream().map(BlogTag::getTagId).collect(Collectors.toList()).toArray(new String[0]);
ArrayList<String> blogTags = new ArrayList<>();
for (String tagId : tagIds) {
blogTags.add(tagId);
}
//装配并返回查询到的数据
BlogDetail blogDetail = new BlogDetail();
BeanUtils.copyProperties(blog, blogDetail);
blogDetail.setTagIds(blogTags);
blogDetail.setContent(blogExt.getContent());
return blogDetail;
}
@Override
public IPage<Blog> getBlogPage(Integer pageNumber, Integer pageSize) {
IPage<Blog> page = new Page<>(pageNumber, pageSize);
return page(page);
}
@Override
public IPage<Blog> getMyBlogPage(Integer pageNumber, Integer pageSize, String userId) {
return null;
}
} }
...@@ -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: 100Centa30821%mysql password: 123123
swagger: swagger:
enable: true enable: true
......
...@@ -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: 100Centa30821%mysql password: 123123
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