Commit b64baef8 by Author name

2.2发布动态完成

parent c98ba008
package cn.meteor.beyondclouds.modules.post.api; package cn.meteor.beyondclouds.modules.post.api;
import cn.meteor.beyondclouds.common.form.PageForm;
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.form.PostForm;
import cn.meteor.beyondclouds.modules.post.service.IPostService;
import cn.meteor.beyondclouds.modules.project.exception.ProjectServiceException;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.validation.Valid;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
/** /**
* @author gaoTong * @author gaoTong
* @date 2020/2/2 9:40 * @date 2020/2/2 9:40
*/ */
@Api(tags = "动态API")
@RequestMapping("/api")
@RestController
public class postApi { public class postApi {
private IPostService postService;
@Autowired
public void setPostService(IPostService postService) {
this.postService = postService;
}
@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);
}
}
public static void main(String[] args) {
//java8特性
String ids= "1,2,3,4,5,6";
List<Long> listIds = Arrays.asList(ids.split(",")).stream().map(s -> Long.parseLong(s.trim())).collect(Collectors.toList());
System.out.println(Arrays.toString(listIds .toArray()));
}
} }
...@@ -41,6 +41,9 @@ public class Post implements Serializable { ...@@ -41,6 +41,9 @@ public class Post implements Serializable {
@ApiModelProperty(value = "动态里面的图片") @ApiModelProperty(value = "动态里面的图片")
private String pictures; private String pictures;
@ApiModelProperty(value = "动态中的视频")
private String video;
private LocalDateTime createTime; private LocalDateTime createTime;
private LocalDateTime updateTime; 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,"动态无内容")
;
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.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; package cn.meteor.beyondclouds.modules.post.service;
import cn.meteor.beyondclouds.modules.post.entity.Post; import cn.meteor.beyondclouds.modules.post.entity.Post;
import cn.meteor.beyondclouds.modules.project.exception.ProjectServiceException;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
/** /**
...@@ -13,4 +14,10 @@ import com.baomidou.mybatisplus.extension.service.IService; ...@@ -13,4 +14,10 @@ import com.baomidou.mybatisplus.extension.service.IService;
*/ */
public interface IPostService extends IService<Post> { public interface IPostService extends IService<Post> {
/**
* 发布动态
* @param post
*/
void publishPost(Post post) throws ProjectServiceException;
} }
package cn.meteor.beyondclouds.modules.post.service.impl; package cn.meteor.beyondclouds.modules.post.service.impl;
import cn.meteor.beyondclouds.modules.post.entity.Post; import cn.meteor.beyondclouds.modules.post.entity.Post;
import cn.meteor.beyondclouds.modules.post.enums.PostErrorCode;
import cn.meteor.beyondclouds.modules.post.mapper.PostMapper; import cn.meteor.beyondclouds.modules.post.mapper.PostMapper;
import cn.meteor.beyondclouds.modules.post.service.IPostService; import cn.meteor.beyondclouds.modules.post.service.IPostService;
import cn.meteor.beyondclouds.modules.project.exception.ProjectServiceException;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
...@@ -17,4 +19,33 @@ import org.springframework.stereotype.Service; ...@@ -17,4 +19,33 @@ import org.springframework.stereotype.Service;
@Service @Service
public class PostServiceImpl extends ServiceImpl<PostMapper, Post> implements IPostService { public class PostServiceImpl extends ServiceImpl<PostMapper, Post> implements IPostService {
@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);
}
} }
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