|
|
@@ -0,0 +1,73 @@
|
|
|
+package cn.seecoder.fdroidrepository.Service.ServiceImpl;
|
|
|
+
|
|
|
+import cn.seecoder.fdroidrepository.DataObject.Enum.PostTypeEnum;
|
|
|
+import cn.seecoder.fdroidrepository.DataObject.Enum.ResultCode;
|
|
|
+import cn.seecoder.fdroidrepository.DataObject.PO.PostLogPO;
|
|
|
+import cn.seecoder.fdroidrepository.DataObject.PO.PostPO;
|
|
|
+import cn.seecoder.fdroidrepository.DataObject.VO.PostVO;
|
|
|
+import cn.seecoder.fdroidrepository.DataObject.VO.Response;
|
|
|
+import cn.seecoder.fdroidrepository.Mapper.PostLogMapper;
|
|
|
+import cn.seecoder.fdroidrepository.Mapper.PostMapper;
|
|
|
+import cn.seecoder.fdroidrepository.Service.PostService;
|
|
|
+import javafx.geometry.Pos;
|
|
|
+import lombok.RequiredArgsConstructor;
|
|
|
+import org.springframework.beans.BeanUtils;
|
|
|
+import org.springframework.security.core.parameters.P;
|
|
|
+import org.springframework.stereotype.Service;
|
|
|
+
|
|
|
+import java.util.Date;
|
|
|
+import java.util.List;
|
|
|
+import java.util.Map;
|
|
|
+import java.util.stream.Collectors;
|
|
|
+
|
|
|
+@Service
|
|
|
+@RequiredArgsConstructor
|
|
|
+public class PostServiceImpl implements PostService {
|
|
|
+ private final PostMapper postMapper;
|
|
|
+ private final PostLogMapper postLogMapper;
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public Response createPost(PostVO postVO) {
|
|
|
+ PostPO postPO = new PostPO();
|
|
|
+ BeanUtils.copyProperties(postVO, postPO);
|
|
|
+ postPO.setUpdateTime(new Date(System.currentTimeMillis()));
|
|
|
+ Integer postId = postMapper.insert(postPO);
|
|
|
+ return Response.buildSuccess(postId);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public Response updatePost(PostVO postVO) {
|
|
|
+ if (postVO.getId() == null) {
|
|
|
+ return Response.buildFailure(ResultCode.ILLEGAL_ARGUMENT.getCode(), ResultCode.ILLEGAL_ARGUMENT.getMessage());
|
|
|
+ }
|
|
|
+ PostPO oldPost = postMapper.selectById(postVO.getId());
|
|
|
+ if (oldPost == null || !oldPost.getValid()) {
|
|
|
+ return Response.buildFailure(ResultCode.POST_NON_EXIST.getCode(), ResultCode.POST_NON_EXIST.getMessage());
|
|
|
+ }
|
|
|
+ PostPO newPost = new PostPO();
|
|
|
+ BeanUtils.copyProperties(postVO, newPost);
|
|
|
+ newPost.setUpdateTime(new Date(System.currentTimeMillis()));
|
|
|
+ postMapper.update(newPost);
|
|
|
+ // 在PostLog中增加新的历史记录
|
|
|
+ if (PostTypeEnum.ARTICLE.equals(postVO.getType()) || PostTypeEnum.QUESTION.equals(postVO.getType())
|
|
|
+ || PostTypeEnum.ANSWER.equals(postVO.getType())) {
|
|
|
+ PostLogPO postLogPO = new PostLogPO();
|
|
|
+ postLogPO.setPostId(postVO.getId());
|
|
|
+ postLogPO.setTitle(oldPost.getTitle());
|
|
|
+ postLogPO.setContent(oldPost.getTitle());
|
|
|
+ postLogPO.setUpdateTime(new Date(System.currentTimeMillis()));
|
|
|
+ postLogMapper.insert(postLogPO);
|
|
|
+ }
|
|
|
+ return Response.buildSuccess(postVO.getId());
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public Response selectAllPostByUser(Integer userId) {
|
|
|
+ if (userId == null) {
|
|
|
+ return Response.buildFailure(ResultCode.ILLEGAL_ARGUMENT.getCode(), ResultCode.ILLEGAL_ARGUMENT.getMessage());
|
|
|
+ }
|
|
|
+ List<PostPO> postPOList = postMapper.selectByAuthorId(userId);
|
|
|
+ Map<PostTypeEnum, List<PostVO>> result = postPOList.stream().map(PostVO::new).collect(Collectors.groupingBy(PostVO::getType));
|
|
|
+ return Response.buildSuccess(result);
|
|
|
+ }
|
|
|
+}
|