Commit ef034cc0 by 段启岩

Merge remote-tracking branch 'origin/gaoton0201'

# Conflicts:
#	src/main/resources/application-prod.yml
#	src/main/resources/application.yml
parents 5c16d663 d7c35e45
package cn.meteor.beyondclouds.common.vo;
import lombok.Data;
import java.util.List;
/**
* 分页结果返回
* @author meteor
*/
@Data
public class PageVO<T> {
/**
* 总页数
*/
private Long totalPage;
/**
* 数据
*/
private List<T> dataList;
}
\ No newline at end of file
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.form.UpdateBlogForm;
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 +71,81 @@ public class BlogApi { ...@@ -65,5 +71,81 @@ 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);
}
/**
* 我的博客列表
* @param pageForm
* @param subject
* @return
*/
@ApiOperation("我的博客列表")
@GetMapping("/my/blogs")
public Response<PageVO<Blog>> getMyBlogs (@Valid PageForm pageForm , @CurrentSubject Subject subject) {
IPage<Blog> blogIPage = blogService.getUserBlogPage(pageForm.getPage(), pageForm.getSize(), (String) subject.getId());
PageVO<Blog> blogPageVO = new PageVO<>();
blogPageVO.setTotalPage(blogIPage.getPages());
blogPageVO.setDataList(blogIPage.getRecords());
return Response.success(blogPageVO);
}
/**
* 他人博客列表
* @param pageForm
* @param userId
* @return
*/
@ApiOperation("他人博客列表")
@GetMapping("/user/{userId}/blogs")
public Response<PageVO<Blog>> getMyBlogs (@Valid PageForm pageForm , @PathVariable("userId") String userId) {
IPage<Blog> blogIPage = blogService.getUserBlogPage(pageForm.getPage(), pageForm.getSize(), userId);
PageVO<Blog> blogPageVO = new PageVO<>();
blogPageVO.setTotalPage(blogIPage.getPages());
blogPageVO.setDataList(blogIPage.getRecords());
return Response.success(blogPageVO);
}
@ApiOperation("修改博客")
@PutMapping("/blog/{blogId}")
public Response updateBlog (@PathVariable("blogId") String blogId , @RequestBody @Valid UpdateBlogForm updateBlogForm ,
BindingResult result , @CurrentSubject Subject subject) {
if (result.hasErrors()) {
return Response.fieldError(result.getFieldError());
}
Blog blog = new Blog();
BeanUtils.copyProperties(updateBlogForm, blog);
blog.setUserId((String) subject.getId());
blog.setBlogId(blogId);
//更新项目
try {
blogService.updateBlog(blog, updateBlogForm.getContent(),updateBlogForm.getTopicIds(),updateBlogForm.getTagIds());
return Response.success();
} catch (BlogServiceException e) {
e.printStackTrace();
return Response.error(e);
}
}
} }
...@@ -3,6 +3,7 @@ package cn.meteor.beyondclouds.modules.blog.api; ...@@ -3,6 +3,7 @@ package cn.meteor.beyondclouds.modules.blog.api;
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.exception.BlogCommentServiceException;
import cn.meteor.beyondclouds.modules.blog.form.BlogCommentForm; import cn.meteor.beyondclouds.modules.blog.form.BlogCommentForm;
import cn.meteor.beyondclouds.modules.blog.service.IBlogCommentService; import cn.meteor.beyondclouds.modules.blog.service.IBlogCommentService;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
...@@ -29,10 +30,22 @@ public class BlogCommentApi { ...@@ -29,10 +30,22 @@ public class BlogCommentApi {
@ApiOperation("创建评论") @ApiOperation("创建评论")
@PostMapping("/blog/{blogId}/comment") @PostMapping("/blog/{blogId}/comment")
public Response commentCreate (@PathVariable("blogId") String blogId, @RequestBody @Valid BlogCommentForm blogCommentForm, @CurrentSubject Subject subject){ public Response createComment (@PathVariable("blogId") String blogId, @RequestBody @Valid BlogCommentForm blogCommentForm, @CurrentSubject Subject subject){
blogCommentService.commentCreate(blogId, blogCommentForm.getParentId(), blogCommentService.commentCreate(blogId, blogCommentForm.getParentId(),
blogCommentForm.getComment(), (String) subject.getId()); blogCommentForm.getComment(), (String) subject.getId());
return Response.success(); return Response.success();
} }
@ApiOperation("删除评论")
@DeleteMapping("/blog/comment/{commentId}")
public Response deleteBlogComment (@PathVariable("commentId") Integer commentId , @CurrentSubject Subject subject) {
try {
blogCommentService.deleteComment(commentId, (String) subject.getId());
return Response.success();
} catch (BlogCommentServiceException e) {
e.printStackTrace();
return Response.error(e);
}
}
} }
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;
}
...@@ -7,6 +7,8 @@ import cn.meteor.beyondclouds.core.IErrorCode; ...@@ -7,6 +7,8 @@ import cn.meteor.beyondclouds.core.IErrorCode;
* @date 2020/1/31 9:21 * @date 2020/1/31 9:21
*/ */
public enum BlogCommentErrorCode implements IErrorCode { public enum BlogCommentErrorCode implements IErrorCode {
COMMENT_NOT_FOUND(8003,"该评论不存在"),
NO_DELETE_PRIVILEGES(8004,"没有权限删除评论")
; ;
private long code; private long code;
......
...@@ -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,"当前博客已经不存在")
; ;
......
...@@ -12,22 +12,7 @@ import java.util.List; ...@@ -12,22 +12,7 @@ import java.util.List;
* @author gaoTong * @author gaoTong
* @date 2020/1/31 9:36 * @date 2020/1/31 9:36
*/ */
/*
blogTitle:标题
blogType:文章类型
originLink:原文链接
blogAbstract:摘要(自动或手动)
blogContent:内容
topicIds: [博客引用的话题]
tagIds:[博客引用的标签]
attribute:属性(是否原创)
type:文章类型
viewPrivileges:浏览权限
allowComment:评论权限
allowForward:转载权限
cover:封面图
*/
@Data @Data
public class PublishBlogForm { public class PublishBlogForm {
...@@ -35,9 +20,6 @@ public class PublishBlogForm { ...@@ -35,9 +20,6 @@ public class PublishBlogForm {
@NotEmpty(message = "标题不能为空") @NotEmpty(message = "标题不能为空")
private String blogTitle; private String blogTitle;
@NotNull(message = "文章类型不能为空")
private Integer blogType;
private String originLink; private String originLink;
@NotEmpty(message = "摘要不能为空") @NotEmpty(message = "摘要不能为空")
...@@ -53,7 +35,6 @@ public class PublishBlogForm { ...@@ -53,7 +35,6 @@ public class PublishBlogForm {
private List<String> tagIds; private List<String> tagIds;
@NotNull(message = "浏览权限不能为空") @NotNull(message = "浏览权限不能为空")
private Integer viewPrivileges; private Integer viewPrivileges;
......
package cn.meteor.beyondclouds.modules.blog.form;
import lombok.Data;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import java.util.List;
/**
* @author gaoTong
* @date 2020/2/1 14:48
*/
@Data
public class UpdateBlogForm {
private String blogTitle;
private String originLink;
private String blogAbstract;
private Integer categoryId;
private String Content;
private List<String> topicIds;
private List<String> tagIds;
private Integer viewPrivileges;
private Boolean allowComment;
private Boolean allowForward;
private String cover;
}
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.entity.BlogComment; import cn.meteor.beyondclouds.modules.blog.entity.BlogComment;
import cn.meteor.beyondclouds.modules.blog.exception.BlogCommentServiceException;
import cn.meteor.beyondclouds.modules.project.entity.ProjectComment;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
/** /**
...@@ -13,6 +16,19 @@ import com.baomidou.mybatisplus.extension.service.IService; ...@@ -13,6 +16,19 @@ import com.baomidou.mybatisplus.extension.service.IService;
*/ */
public interface IBlogCommentService extends IService<BlogComment> { public interface IBlogCommentService extends IService<BlogComment> {
/**
* 创建评论
* @param blogId
* @param parentId
* @param comment
* @param userId
*/
void commentCreate(String blogId,Integer parentId,String comment,String userId); void commentCreate(String blogId,Integer parentId,String comment,String userId);
/**
* 删除评论
* @param commentId
* @param userId
*/
void deleteComment(Integer commentId, String userId) throws BlogCommentServiceException;
} }
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.BlogComment;
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 +36,42 @@ public interface IBlogService extends IService<Blog> { ...@@ -33,4 +36,42 @@ 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> getUserBlogPage(Integer pageNumber , Integer pageSize , String userId);
/**
* 更新博客
* @param blog
* @param content
* @param topicIds
* @param tagIds
*/
void updateBlog(Blog blog , String content , List<String> topicIds , List<String> tagIds) throws BlogServiceException;
} }
package cn.meteor.beyondclouds.modules.blog.service.impl; package cn.meteor.beyondclouds.modules.blog.service.impl;
import cn.meteor.beyondclouds.modules.blog.entity.Blog;
import cn.meteor.beyondclouds.modules.blog.entity.BlogComment; import cn.meteor.beyondclouds.modules.blog.entity.BlogComment;
import cn.meteor.beyondclouds.modules.blog.enums.BlogCommentErrorCode;
import cn.meteor.beyondclouds.modules.blog.enums.BlogErrorCode;
import cn.meteor.beyondclouds.modules.blog.exception.BlogCommentServiceException;
import cn.meteor.beyondclouds.modules.blog.mapper.BlogCommentMapper; import cn.meteor.beyondclouds.modules.blog.mapper.BlogCommentMapper;
import cn.meteor.beyondclouds.modules.blog.service.IBlogCommentService; import cn.meteor.beyondclouds.modules.blog.service.IBlogCommentService;
import cn.meteor.beyondclouds.modules.blog.service.IBlogService;
import cn.meteor.beyondclouds.modules.project.entity.ProjectComment;
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.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 org.springframework.util.Assert;
/** /**
* <p> * <p>
...@@ -18,6 +27,13 @@ import org.springframework.stereotype.Service; ...@@ -18,6 +27,13 @@ import org.springframework.stereotype.Service;
@Service @Service
public class BlogCommentServiceImpl extends ServiceImpl<BlogCommentMapper, BlogComment> implements IBlogCommentService { public class BlogCommentServiceImpl extends ServiceImpl<BlogCommentMapper, BlogComment> implements IBlogCommentService {
private IBlogService blogService;
@Autowired
public void setBlogService(IBlogService blogService) {
this.blogService = blogService;
}
@Override @Override
public void commentCreate(String blogId, Integer parentId, String comment, String userId) { public void commentCreate(String blogId, Integer parentId, String comment, String userId) {
...@@ -60,4 +76,32 @@ public class BlogCommentServiceImpl extends ServiceImpl<BlogCommentMapper, BlogC ...@@ -60,4 +76,32 @@ public class BlogCommentServiceImpl extends ServiceImpl<BlogCommentMapper, BlogC
updateById(blogComment); updateById(blogComment);
} }
@Override
public void deleteComment(Integer commentId, String userId) throws BlogCommentServiceException {
Assert.notNull(commentId, "commentId must not be null");
Assert.notNull(userId, "userId must not be null");
//1.查找评论是否存在
BlogComment blogComment = getById(commentId);
if (null == blogComment) {
throw new BlogCommentServiceException(BlogCommentErrorCode.COMMENT_NOT_FOUND);
}
//2.判断是不是自己的评论
if (!userId.equals(blogComment.getUserId())) {
//3.如果不是自己的评论看是否是自己的博客
Blog blog = blogService.getById(blogComment.getBlogId());
if (!blog.getUserId().equals(userId)) {
throw new BlogCommentServiceException(BlogCommentErrorCode.NO_DELETE_PRIVILEGES);
}
}
//4.删除评论
QueryWrapper blogCommentQueryWrapper = new QueryWrapper();
blogCommentQueryWrapper.like("thread", blogComment.getThread());
remove(blogCommentQueryWrapper);
}
} }
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.BlogComment;
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 +16,22 @@ import cn.meteor.beyondclouds.modules.blog.service.IBlogTagService; ...@@ -13,11 +16,22 @@ 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 org.springframework.util.Assert;
import org.springframework.util.StringUtils;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List; import java.util.List;
import java.util.stream.Collectors;
/** /**
* <p> * <p>
* 博客表 服务实现类 * 博客表 服务实现类
...@@ -38,16 +52,18 @@ public class BlogServiceImpl extends ServiceImpl<BlogMapper, Blog> implements IB ...@@ -38,16 +52,18 @@ public class BlogServiceImpl extends ServiceImpl<BlogMapper, Blog> implements IB
private IBlogCommentService blogCommentService; private IBlogCommentService blogCommentService;
public BlogServiceImpl(IBlogTagService blogTagService, ITopicReferenceService topicReferenceService, IBlogExtService blogExtService, IBlogCommentService blogCommentService) { @Autowired
public void setBlogCommentService(IBlogCommentService blogCommentService) {
this.blogCommentService = blogCommentService;
}
@Autowired
public BlogServiceImpl(IBlogTagService blogTagService, ITopicReferenceService topicReferenceService, IBlogExtService blogExtService) {
this.blogTagService = blogTagService; this.blogTagService = blogTagService;
this.topicReferenceService = topicReferenceService; this.topicReferenceService = topicReferenceService;
this.blogExtService = blogExtService; this.blogExtService = blogExtService;
this.blogCommentService = blogCommentService;
} }
@Override @Override
public void publishBlog(Blog blog, String content, List<String> topicIds, List<String> tagIds) { public void publishBlog(Blog blog, String content, List<String> topicIds, List<String> tagIds) {
...@@ -93,7 +109,7 @@ public class BlogServiceImpl extends ServiceImpl<BlogMapper, Blog> implements IB ...@@ -93,7 +109,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 +134,110 @@ public class BlogServiceImpl extends ServiceImpl<BlogMapper, Blog> implements IB ...@@ -118,4 +134,110 @@ 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);
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> getUserBlogPage(Integer pageNumber, Integer pageSize, String userId) {
QueryWrapper myBlogQueryWrapper = new QueryWrapper();
myBlogQueryWrapper.eq("user_id", userId);
IPage<Blog> page = new Page<>(pageNumber, pageSize);
return page(page, myBlogQueryWrapper);
}
@Override
public void updateBlog(Blog blog, String content, List<String> topicIds, List<String> tagIds) throws BlogServiceException {
Assert.notNull(blog, "blog must not be null");
Assert.notNull(blog.getBlogId(), "blogId must not be null");
Assert.notNull(blog.getUserId(),"userId must not be null");
//1.判断当前用户是否拥有此博客
Blog blogInDb = getById(blog);
if (null == blogInDb) {
throw new BlogServiceException(BlogErrorCode.BLOG_NOT_FOUND);
}
//2.更新博客基本信息
updateById(blog);
//3.更新博客内容
if (!StringUtils.isEmpty(content)) {
BlogExt blogExt = new BlogExt();
blogExt.setBlogId(blog.getBlogId());
blogExt.setContent(content);
QueryWrapper blogExtQueryWrapper = new QueryWrapper();
blogExtQueryWrapper.eq("blog_id", blog.getBlogId());
blogExtService.update(blogExt,blogExtQueryWrapper);
}
//4.更新标签
if (!StringUtils.isEmpty(tagIds)) {
QueryWrapper tagIdQueryWrapperTag = new QueryWrapper();
tagIdQueryWrapperTag.eq("blog_id", blog.getBlogId());
blogTagService.remove(tagIdQueryWrapperTag);
for (String tagId : tagIds) {
BlogTag blogTag = new BlogTag();
blogTag.setBlogId(blog.getBlogId());
blogTag.setTagId(tagId);
blogTagService.save(blogTag);
}
}
//5.更新话题
if (!StringUtils.isEmpty(topicIds)) {
QueryWrapper topicIdQueryWrapper = new QueryWrapper();
topicIdQueryWrapper.eq("referencer_id", blog.getBlogId());
topicReferenceService.remove(topicIdQueryWrapper);
for (String topicId : topicIds) {
TopicReference topicReference = new TopicReference();
topicReference.setTopicId(topicId);
topicReference.setReferencerId(blog.getBlogId());
topicReference.setReferencerType(0);
topicReferenceService.save(topicReference);
}
}
}
} }
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