Commit 4a5362d0 by 段启岩

Merge remote-tracking branch 'origin/gaotong02-02'

# Conflicts:
#	src/main/resources/application.yml
parents e021758c 78ceeadc
......@@ -9,6 +9,7 @@ import cn.meteor.beyondclouds.core.api.Response;
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.exception.BlogCategoryServiceException;
import cn.meteor.beyondclouds.modules.blog.exception.BlogServiceException;
import cn.meteor.beyondclouds.modules.blog.form.PublishBlogForm;
import cn.meteor.beyondclouds.modules.blog.form.UpdateBlogForm;
......@@ -42,7 +43,7 @@ public class BlogApi {
@ApiOperation("发布博客")
@PostMapping("/blog")
public Response publishBlog (@RequestBody @Valid PublishBlogForm publishBlogForm, BindingResult result, @CurrentSubject Subject subject) throws OssException {
public Response publishBlog (@RequestBody @Valid PublishBlogForm publishBlogForm, BindingResult result, @CurrentSubject Subject subject) {
if (result.hasErrors()) {
return Response.fieldError(result.getFieldError());
}
......@@ -51,9 +52,14 @@ public class BlogApi {
BeanUtils.copyProperties(publishBlogForm, blog);
blog.setUserId((String) subject.getId());
try {
blogService.publishBlog(blog, publishBlogForm.getBlogContent(),
publishBlogForm.getTopicIds(), publishBlogForm.getTagIds());
return Response.success();
} catch (BlogCategoryServiceException e) {
e.printStackTrace();
return Response.error(e);
}
}
......@@ -115,7 +121,7 @@ public class BlogApi {
*/
@ApiOperation("他人博客列表")
@GetMapping("/user/{userId}/blogs")
public Response<PageVO<Blog>> getMyBlogs (@Valid PageForm pageForm , @PathVariable("userId") String userId) {
public Response<PageVO<Blog>> getOtherBlogs (@Valid PageForm pageForm , @PathVariable("userId") String userId) {
IPage<Blog> blogPage = blogService.getUserBlogPage(pageForm.getPage(), pageForm.getSize(), userId);
PageVO<Blog> blogPageVO = new PageVO<>(blogPage);
return Response.success(blogPageVO);
......@@ -137,7 +143,7 @@ public class BlogApi {
try {
blogService.updateBlog(blog, updateBlogForm.getContent(),updateBlogForm.getTopicIds(),updateBlogForm.getTagIds());
return Response.success();
} catch (BlogServiceException e) {
} catch (BlogServiceException | BlogCategoryServiceException e) {
e.printStackTrace();
return Response.error(e);
}
......
package cn.meteor.beyondclouds.modules.blog.api;
import cn.meteor.beyondclouds.common.form.PageForm;
import cn.meteor.beyondclouds.common.vo.PageVO;
import cn.meteor.beyondclouds.core.annotation.CurrentSubject;
import cn.meteor.beyondclouds.core.api.Response;
import cn.meteor.beyondclouds.core.bean.Subject;
import cn.meteor.beyondclouds.modules.blog.entity.BlogComment;
import cn.meteor.beyondclouds.modules.blog.exception.BlogCommentServiceException;
import cn.meteor.beyondclouds.modules.blog.exception.BlogServiceException;
import cn.meteor.beyondclouds.modules.blog.form.BlogCommentForm;
import cn.meteor.beyondclouds.modules.blog.service.IBlogCommentService;
import com.baomidou.mybatisplus.core.metadata.IPage;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.*;
......@@ -30,11 +35,16 @@ public class BlogCommentApi {
@ApiOperation("发表评论")
@PostMapping("/blog/{blogId}/comment")
public Response createComment (@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) {
try {
blogCommentService.commentCreate(blogId, blogCommentForm.getParentId(),
blogCommentForm.getComment(), (String) subject.getId());
return Response.success();
} catch (BlogServiceException | BlogCommentServiceException e) {
e.printStackTrace();
return Response.error(e);
}
}
@ApiOperation("删除评论")
......@@ -48,4 +58,21 @@ public class BlogCommentApi {
return Response.error(e);
}
}
@ApiOperation("评论列表")
@GetMapping("/blog/{blogId}/comments")
public Response<PageVO<BlogComment>> getBlogCommentPage(@PathVariable("blogId") String bLogId ,
@Valid PageForm pageForm ,
@RequestParam(value = "parent_id",required = false) Integer parentId) {
//获取评论列表
try {
IPage<BlogComment> commentPage = blogCommentService.getCommentPage(pageForm.getPage(), pageForm.getSize(), bLogId, parentId);
PageVO<BlogComment> blogCommentPageVO = new PageVO<>(commentPage);
return Response.success(blogCommentPageVO);
} catch (BlogCommentServiceException e) {
e.printStackTrace();
return Response.error(e);
}
}
}
package cn.meteor.beyondclouds.modules.blog.enums;
import cn.meteor.beyondclouds.core.IErrorCode;
/**
* @author gaoTong
* @date 2020/2/2 10:02
*/
public enum BlogCategoryErrorCode implements IErrorCode {
INCORRECT_CATEGORY(8005,"博客分类错误")
;
private long code;
private String msg;
BlogCategoryErrorCode(long code, String msg) {
this.code = code;
this.msg = msg;
}
@Override
public long code() {
return code;
}
@Override
public String msg() {
return msg;
}
}
......@@ -8,7 +8,8 @@ import cn.meteor.beyondclouds.core.IErrorCode;
*/
public enum BlogCommentErrorCode implements IErrorCode {
COMMENT_NOT_FOUND(8003,"该评论不存在"),
NO_DELETE_PRIVILEGES(8004,"没有权限删除评论")
NO_DELETE_PRIVILEGES(8004,"没有权限删除评论"),
PARENT_COMMENT_NOT_FOUND(8006,"父评论不存在"),
;
private long code;
......
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;
}
......@@ -2,6 +2,7 @@ package cn.meteor.beyondclouds.modules.blog.service;
import cn.meteor.beyondclouds.modules.blog.entity.BlogComment;
import cn.meteor.beyondclouds.modules.blog.exception.BlogCommentServiceException;
import cn.meteor.beyondclouds.modules.blog.exception.BlogServiceException;
import cn.meteor.beyondclouds.modules.project.entity.ProjectComment;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
......@@ -23,7 +24,7 @@ public interface IBlogCommentService extends IService<BlogComment> {
* @param comment
* @param userId
*/
void commentCreate(String blogId,Integer parentId,String comment,String userId);
void commentCreate(String blogId,Integer parentId,String comment,String userId) throws BlogServiceException, BlogCommentServiceException;
/**
* 删除评论
......@@ -31,4 +32,15 @@ public interface IBlogCommentService extends IService<BlogComment> {
* @param userId
*/
void deleteComment(Integer commentId, String userId) throws BlogCommentServiceException;
/**
* 获取评论分页
* @param pageNumber
* @param size
* @param blogId
* @param parentId
* @return
*/
IPage<BlogComment> getCommentPage(Integer pageNumber, Integer size, String blogId, Integer parentId) throws BlogCommentServiceException;
}
......@@ -5,6 +5,7 @@ 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.BlogTag;
import cn.meteor.beyondclouds.modules.blog.exception.BlogCategoryServiceException;
import cn.meteor.beyondclouds.modules.blog.exception.BlogServiceException;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
......@@ -28,7 +29,7 @@ public interface IBlogService extends IService<Blog> {
* @param topicIds
* @param tagIds
*/
void publishBlog(Blog blog , String content , List<String> topicIds , List<String> tagIds);
void publishBlog(Blog blog , String content , List<String> topicIds , List<String> tagIds) throws BlogCategoryServiceException;
/**
* 删除博客
......@@ -70,7 +71,7 @@ public interface IBlogService extends IService<Blog> {
* @param topicIds
* @param tagIds
*/
void updateBlog(Blog blog , String content , List<String> topicIds , List<String> tagIds) throws BlogServiceException;
void updateBlog(Blog blog , String content , List<String> topicIds , List<String> tagIds) throws BlogServiceException, BlogCategoryServiceException;
}
......
......@@ -3,11 +3,15 @@ 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.enums.BlogCommentErrorCode;
import cn.meteor.beyondclouds.modules.blog.enums.BlogErrorCode;
import cn.meteor.beyondclouds.modules.blog.exception.BlogCommentServiceException;
import cn.meteor.beyondclouds.modules.blog.exception.BlogServiceException;
import cn.meteor.beyondclouds.modules.blog.mapper.BlogCommentMapper;
import cn.meteor.beyondclouds.modules.blog.service.IBlogCommentService;
import cn.meteor.beyondclouds.modules.blog.service.IBlogService;
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;
......@@ -31,13 +35,27 @@ public class BlogCommentServiceImpl extends ServiceImpl<BlogCommentMapper, BlogC
this.blogService = blogService;
}
/**
* 发布评论
* @param blogId
* @param parentId
* @param comment
* @param userId
* @throws BlogServiceException
* @throws BlogCommentServiceException
*/
@Override
public void commentCreate(String blogId, Integer parentId, String comment, String userId) {
public void commentCreate(String blogId, Integer parentId, String comment, String userId) throws BlogServiceException, BlogCommentServiceException {
//判断博客是否存在
Blog blog = blogService.getById(blogId);
if (null == blog) {
throw new BlogServiceException(BlogErrorCode.BLOG_NOT_FOUND);
}
//定义路径
String thread;
int depth;
//1.判断为第几级评论
if (parentId == null) {
......@@ -45,8 +63,12 @@ public class BlogCommentServiceImpl extends ServiceImpl<BlogCommentMapper, BlogC
} else {
QueryWrapper<BlogComment> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("comment_id", parentId);
queryWrapper.eq("comment_id", parentId)
.eq("blog_id",blogId);
BlogComment blogCommentParent = getOne(queryWrapper);
if (null == blogCommentParent) {
throw new BlogCommentServiceException(BlogCommentErrorCode.PARENT_COMMENT_NOT_FOUND);
}
depth = blogCommentParent.getDepth() + 1;
}
......@@ -75,6 +97,12 @@ public class BlogCommentServiceImpl extends ServiceImpl<BlogCommentMapper, BlogC
}
/**
* 删除评论
* @param commentId
* @param userId
* @throws BlogCommentServiceException
*/
@Override
public void deleteComment(Integer commentId, String userId) throws BlogCommentServiceException {
Assert.notNull(commentId, "commentId must not be null");
......@@ -100,4 +128,43 @@ public class BlogCommentServiceImpl extends ServiceImpl<BlogCommentMapper, BlogC
blogCommentQueryWrapper.like("thread", blogComment.getThread());
remove(blogCommentQueryWrapper);
}
/**
* 评论列表
* @param pageNumber
* @param size
* @param blogId
* @param parentId
* @return
* @throws BlogCommentServiceException
*/
@Override
public IPage<BlogComment> getCommentPage(Integer pageNumber, Integer size, String blogId, Integer parentId) throws BlogCommentServiceException {
Assert.notNull(blogId, "blogId must not be null");
IPage<BlogComment> page = new Page<>(pageNumber, size);
//如果parentId为null,则只获取一级评论
if (null == parentId) {
QueryWrapper blogCommentQueryWrapper = new QueryWrapper();
blogCommentQueryWrapper.eq("blog_id", blogId);
blogCommentQueryWrapper.eq("depth", 0);
blogCommentQueryWrapper.orderByDesc("create_time");
return page(page,blogCommentQueryWrapper);
}
//如果parent不为空,则获取其子评论
BlogComment blogComment = getById(parentId);
if (null == blogComment) {
throw new BlogCommentServiceException(BlogCommentErrorCode.PARENT_COMMENT_NOT_FOUND);
}
//根据parentId查出其子评论
QueryWrapper blogCommentQueryWrapper = new QueryWrapper();
blogCommentQueryWrapper.eq("parent_id", parentId);
return page(page,blogCommentQueryWrapper);
}
}
......@@ -2,15 +2,15 @@ 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.BlogCategory;
import cn.meteor.beyondclouds.modules.blog.entity.BlogExt;
import cn.meteor.beyondclouds.modules.blog.entity.BlogTag;
import cn.meteor.beyondclouds.modules.blog.enums.BlogCategoryErrorCode;
import cn.meteor.beyondclouds.modules.blog.enums.BlogErrorCode;
import cn.meteor.beyondclouds.modules.blog.exception.BlogCategoryServiceException;
import cn.meteor.beyondclouds.modules.blog.exception.BlogServiceException;
import cn.meteor.beyondclouds.modules.blog.mapper.BlogMapper;
import cn.meteor.beyondclouds.modules.blog.service.IBlogCommentService;
import cn.meteor.beyondclouds.modules.blog.service.IBlogExtService;
import cn.meteor.beyondclouds.modules.blog.service.IBlogService;
import cn.meteor.beyondclouds.modules.blog.service.IBlogTagService;
import cn.meteor.beyondclouds.modules.blog.service.*;
import cn.meteor.beyondclouds.modules.topic.entity.TopicReference;
import cn.meteor.beyondclouds.modules.topic.service.ITopicReferenceService;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
......@@ -48,6 +48,13 @@ public class BlogServiceImpl extends ServiceImpl<BlogMapper, Blog> implements IB
private IBlogCommentService blogCommentService;
private IBlogCategoryService blogCategoryService;
@Autowired
public void setBlogCategoryService(IBlogCategoryService blogCategoryService) {
this.blogCategoryService = blogCategoryService;
}
@Autowired
public void setBlogCommentService(IBlogCommentService blogCommentService) {
this.blogCommentService = blogCommentService;
......@@ -60,19 +67,33 @@ public class BlogServiceImpl extends ServiceImpl<BlogMapper, Blog> implements IB
this.blogExtService = blogExtService;
}
/**
* 发布博客
* @param blog
* @param content
* @param topicIds
* @param tagIds
* @throws BlogCategoryServiceException
*/
@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) throws BlogCategoryServiceException {
//1.保存博客
//1.判断博客类型是否存在
BlogCategory blogCategory = blogCategoryService.getById(blog.getCategoryId());
if (null == blogCategory) {
throw new BlogCategoryServiceException(BlogCategoryErrorCode.INCORRECT_CATEGORY);
}
//2.保存博客
save(blog);
//2.存入内容
//3.存入内容
BlogExt blogExt = new BlogExt();
blogExt.setBlogId(blog.getBlogId());
blogExt.setContent(content);
blogExtService.save(blogExt);
//3.判断是否引用话题
//4.判断是否引用话题
if (null != topicIds) {
for (String topicId : topicIds) {
TopicReference topicReference = new TopicReference();
......@@ -84,7 +105,7 @@ public class BlogServiceImpl extends ServiceImpl<BlogMapper, Blog> implements IB
}
}
//4.判断是否引用标签
//5.判断是否引用标签
if (null != tagIds) {
for (String tagId : tagIds) {
BlogTag blogTag = new BlogTag();
......@@ -95,6 +116,12 @@ public class BlogServiceImpl extends ServiceImpl<BlogMapper, Blog> implements IB
}
}
/**
* 删除博客
* @param userId
* @param blogId
* @throws BlogServiceException
*/
@Override
public void deleteBlog(String userId, String blogId) throws BlogServiceException {
//1.判断要删除的博客是否是当前用户所有
......@@ -133,6 +160,12 @@ public class BlogServiceImpl extends ServiceImpl<BlogMapper, Blog> implements IB
removeById(blogId);
}
/**
* 博客详情
* @param blogId
* @return
* @throws BlogServiceException
*/
@Override
public BlogDetail getBlog(String blogId) throws BlogServiceException {
......@@ -167,12 +200,25 @@ public class BlogServiceImpl extends ServiceImpl<BlogMapper, Blog> implements IB
return blogDetail;
}
/**
* 博客列表
* @param pageNumber
* @param pageSize
* @return
*/
@Override
public IPage<Blog> getBlogPage(Integer pageNumber, Integer pageSize) {
IPage<Blog> page = new Page<>(pageNumber, pageSize);
return page(page);
}
/**
* 个人博客列表
* @param pageNumber
* @param pageSize
* @param userId
* @return
*/
@Override
public IPage<Blog> getUserBlogPage(Integer pageNumber, Integer pageSize, String userId) {
QueryWrapper myBlogQueryWrapper = new QueryWrapper();
......@@ -181,8 +227,17 @@ public class BlogServiceImpl extends ServiceImpl<BlogMapper, Blog> implements IB
return page(page, myBlogQueryWrapper);
}
/**
* 修改博客
* @param blog
* @param content
* @param topicIds
* @param tagIds
* @throws BlogServiceException
* @throws BlogCategoryServiceException
*/
@Override
public void updateBlog(Blog blog, String content, List<String> topicIds, List<String> tagIds) throws BlogServiceException {
public void updateBlog(Blog blog, String content, List<String> topicIds, List<String> tagIds) throws BlogServiceException, BlogCategoryServiceException {
Assert.notNull(blog, "blog must not be null");
Assert.notNull(blog.getBlogId(), "blogId must not be null");
......@@ -193,6 +248,14 @@ public class BlogServiceImpl extends ServiceImpl<BlogMapper, Blog> implements IB
throw new BlogServiceException(BlogErrorCode.BLOG_NOT_FOUND);
}
//判断博客类型是否正确
if (blog.getCategoryId() != null) {
BlogCategory blogCategory = blogCategoryService.getById(blog.getCategoryId());
if (null == blogCategory) {
throw new BlogCategoryServiceException(BlogCategoryErrorCode.INCORRECT_CATEGORY);
}
}
//2.更新博客基本信息
updateById(blog);
......
package cn.meteor.beyondclouds.modules.post.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;
import cn.meteor.beyondclouds.core.bean.Subject;
import cn.meteor.beyondclouds.modules.post.entity.Post;
import cn.meteor.beyondclouds.modules.post.exception.PostServiceException;
import cn.meteor.beyondclouds.modules.post.form.PostForm;
import cn.meteor.beyondclouds.modules.post.service.IPostService;
import cn.meteor.beyondclouds.modules.project.exception.ProjectServiceException;
import com.baomidou.mybatisplus.core.metadata.IPage;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.*;
import javax.validation.Valid;
import java.util.stream.Collectors;
/**
* @author gaoTong
* @date 2020/2/2 9:40
*/
@Api(tags = "动态API")
@RequestMapping("/api")
@RestController
public class postApi {
private IPostService postService;
@Autowired
public void setPostService(IPostService postService) {
this.postService = postService;
}
/**
* 发布动态
* @param postForm
* @param result
* @param subject
* @return
*/
@ApiOperation("发布项目")
@PostMapping("/post")
public Response publishPost(@RequestBody @Valid PostForm postForm , BindingResult result ,
@CurrentSubject Subject subject) {
//对图片进行类型转换
Post post = new Post();
BeanUtils.copyProperties(postForm, post);
if (null != post.getPictures()){
post.setPictures(postForm.getPictures()
.stream().map(String::valueOf)
.collect(Collectors.joining(",")));
}
post.setUserId((String) subject.getId());
//发布动态
try {
postService.publishPost(post);
return Response.success();
} catch (ProjectServiceException e) {
e.printStackTrace();
return Response.error(e);
}
}
/**
* 删除动态
* @param postId
* @param subject
* @return
*/
@ApiOperation("删除动态")
@DeleteMapping("/post/{postId}")
public Response deletePost(@PathVariable("postId") String postId , @CurrentSubject Subject subject) {
//删除动态
try {
postService.deletePost(postId, (String) subject.getId());
return Response.success();
} catch (PostServiceException e) {
e.printStackTrace();
return Response.error(e);
}
}
/**
* 动态列表
* @param pageForm
* @return
*/
@Anonymous
@ApiOperation("动态列表")
@GetMapping("/posts")
public Response<PageVO<Post>> getPostPage (@Valid PageForm pageForm) {
IPage<Post> postPage = postService.getPostPage(pageForm.getPage(),pageForm.getSize());
PageVO<Post> postPageVO = new PageVO<>(postPage);
return Response.success(postPageVO);
}
/**
* 我的动态列表
* @param pageForm
* @param subject
* @return
*/
@ApiOperation("我的动态列表")
@GetMapping("/my/posts")
public Response<PageVO<Post>> getMyPosts (@Valid PageForm pageForm , @CurrentSubject Subject subject) {
IPage<Post> postPage = postService.getUserPostPage(pageForm.getPage(), pageForm.getSize(), (String) subject.getId());
PageVO<Post> postPageVO = new PageVO<>(postPage);
return Response.success(postPageVO);
}
/**
* 获取他人动态列表
* @param userId
* @param pageForm
* @return
*/
@ApiOperation("他人动态列表")
@GetMapping("/user/{userId}/posts")
public Response<PageVO<Post>> getOtherPosts (@PathVariable("userId") String userId , @Valid PageForm pageForm) {
IPage<Post> postPage = postService.getUserPostPage(pageForm.getPage(), pageForm.getSize(), userId);
PageVO<Post> postPageVO = new PageVO<>(postPage);
return Response.success(postPageVO);
}
}
package cn.meteor.beyondclouds.modules.post.api;
/**
* @author gaoTong
* @date 2020/2/2 9:42
*/
public class postCommentApi {
}
......@@ -41,6 +41,9 @@ public class Post implements Serializable {
@ApiModelProperty(value = "动态里面的图片")
private String pictures;
@ApiModelProperty(value = "动态中的视频")
private String video;
private LocalDateTime createTime;
private LocalDateTime updateTime;
......
package cn.meteor.beyondclouds.modules.post.enums;
import cn.meteor.beyondclouds.core.IErrorCode;
/**
* @author gaoTong
* @date 2020/2/2 14:43
*/
public enum PostCommentErrorCode implements IErrorCode {
;
private long code;
private String msg;
PostCommentErrorCode(long code, String msg) {
this.code = code;
this.msg = msg;
}
@Override
public long code() {
return code;
}
@Override
public String msg() {
return msg;
}
}
package cn.meteor.beyondclouds.modules.post.enums;
import cn.meteor.beyondclouds.core.IErrorCode;
/**
* @author gaoTong
* @date 2020/2/2 14:43
*/
public enum PostErrorCode implements IErrorCode {
NOT_APPEAR_SAME_TIME(10001,"视频和图片不能同时出现"),
POST_MUST_NOT_NULL(10002,"动态无内容"),
POST_NOT_FOUND(10003,"该动态不存在")
;
private long code;
private String msg;
PostErrorCode(long code, String msg) {
this.code = code;
this.msg = msg;
}
@Override
public long code() {
return code;
}
@Override
public String msg() {
return msg;
}
}
package cn.meteor.beyondclouds.modules.post.exception;
import cn.meteor.beyondclouds.core.IErrorCode;
import cn.meteor.beyondclouds.core.exception.ServiceException;
/**
* @author gaoTong
* @date 2020/2/2 9:44
*/
public class PostCommentServiceException extends ServiceException {
public PostCommentServiceException(long errorCode, String errorMsg) {
super(errorCode, errorMsg);
}
public PostCommentServiceException(IErrorCode errorCode) {
super(errorCode);
}
}
package cn.meteor.beyondclouds.modules.post.exception;
import cn.meteor.beyondclouds.core.IErrorCode;
import cn.meteor.beyondclouds.core.exception.ServiceException;
/**
* @author gaoTong
* @date 2020/2/2 9:43
*/
public class PostServiceException extends ServiceException {
public PostServiceException(long errorCode, String errorMsg) {
super(errorCode, errorMsg);
}
public PostServiceException(IErrorCode errorCode) {
super(errorCode);
}
}
package cn.meteor.beyondclouds.modules.post.form;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotEmpty;
import java.util.List;
/**
* @author gaoTong
* @date 2020/2/2 15:25
*/
@Data
public class PostForm {
private String content;
private List<String> pictures;
private String video;
}
package cn.meteor.beyondclouds.modules.post.service;
import cn.meteor.beyondclouds.modules.post.entity.Post;
import cn.meteor.beyondclouds.modules.post.exception.PostServiceException;
import cn.meteor.beyondclouds.modules.project.exception.ProjectServiceException;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
/**
......@@ -13,4 +16,34 @@ import com.baomidou.mybatisplus.extension.service.IService;
*/
public interface IPostService extends IService<Post> {
/**
* 发布动态
* @param post
*/
void publishPost(Post post) throws ProjectServiceException;
/**
* 删除动态
* @param postId
* @param userId
*/
void deletePost(String postId , String userId) throws PostServiceException;
/**
* 动态列表
* @param pageNumber
* @param pageSize
* @return
*/
IPage<Post> getPostPage (Integer pageNumber , Integer pageSize);
/**
* 个人动态列表
* @param pageNumber
* @param pageSize
* @param userId
* @return
*/
IPage<Post> getUserPostPage (Integer pageNumber , Integer pageSize , String userId);
}
package cn.meteor.beyondclouds.modules.post.service.impl;
import cn.meteor.beyondclouds.modules.post.entity.Post;
import cn.meteor.beyondclouds.modules.post.enums.PostErrorCode;
import cn.meteor.beyondclouds.modules.post.exception.PostServiceException;
import cn.meteor.beyondclouds.modules.post.mapper.PostMapper;
import cn.meteor.beyondclouds.modules.post.service.IPostService;
import cn.meteor.beyondclouds.modules.project.exception.ProjectServiceException;
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.stereotype.Service;
......@@ -17,4 +23,91 @@ import org.springframework.stereotype.Service;
@Service
public class PostServiceImpl extends ServiceImpl<PostMapper, Post> implements IPostService {
/**
* 发布动态
* @param post
* @throws ProjectServiceException
*/
@Override
public void publishPost(Post post) throws ProjectServiceException {
//1.判断是否视频和图片都传了
if (null != post.getPictures() && null != post.getVideo()) {
throw new ProjectServiceException(PostErrorCode.NOT_APPEAR_SAME_TIME);
}
//2.当有图片或者视频时可以没有内容
if (null == post.getContent() && null == post.getPictures() && null == post.getVideo()) {
throw new ProjectServiceException(PostErrorCode.POST_MUST_NOT_NULL);
}
//2.判断动态类型 0:普通动态 1:图片动态 2:视频动态
int type;
if (null == post.getVideo() && null == post.getPictures()) {
type = 0;
} else if (null == post.getVideo() && null != post.getPictures()) {
type = 1;
}else {
type = 2;
}
post.setType(type);
//2.保存动态
save(post);
}
/**
* 删除动态
* @param postId
* @param userId
* @throws PostServiceException
*/
@Override
public void deletePost(String postId, String userId) throws PostServiceException {
//1.判断是不是该用户发布的动态
QueryWrapper queryWrapper = new QueryWrapper();
queryWrapper.eq("post_id",postId);
queryWrapper.eq("user_id", userId);
Post post = getOne(queryWrapper);
if ( null == post ) {
throw new PostServiceException(PostErrorCode.POST_NOT_FOUND);
}
//2.删除动态
removeById(postId);
}
/**
* 获取博客列表
* @param pageNumber
* @param pageSize
* @return
*/
@Override
public IPage<Post> getPostPage(Integer pageNumber, Integer pageSize) {
IPage<Post> postPage = new Page<>(pageNumber,pageSize);
return page(postPage);
}
/**
*个人动态列表
* @param pageNumber
* @param pageSize
* @param userId
* @return
*/
@Override
public IPage<Post> getUserPostPage(Integer pageNumber, Integer pageSize, String userId) {
QueryWrapper queryWrapper = new QueryWrapper();
queryWrapper.eq("user_id", userId);
queryWrapper.orderByDesc("create_time");
IPage<Post> postPage = new Page<>(pageNumber,pageSize);
return page(postPage, queryWrapper);
}
}
......@@ -86,7 +86,7 @@ public class ProjectCommentApi {
@RequestParam(value = "parentId" ,required = false) Integer parentId) {
try {
// 根据用户获取列表并返回
IPage<ProjectComment>commentPage = projectCommentService.getCommentPage(pageForm.getPage(), pageForm.getSize(), projectId, parentId);
IPage<ProjectComment> commentPage = projectCommentService.getCommentPage(pageForm.getPage(), pageForm.getSize(), projectId, parentId);
PageVO<ProjectComment> projectPageVO = new PageVO<>(commentPage);
return Response.success(projectPageVO);
} catch (ProjectCommentServiceException e) {
......
......@@ -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
......@@ -33,5 +33,3 @@ beyondclouds:
client-id: 101846021
client-secret: 5bc41deeb7e152e2e6aff97726bbf86a
redirect-uri: http://meteor.natapp1.cc/auth/qq
\ No newline at end of file
server:
port: 8081
\ No newline at end of file
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