Merge branch 'master' into dev
# Conflicting files # src/main/java/com/rymcu/vertical/service/impl/ArticleServiceImpl.java # src/main/java/com/rymcu/vertical/service/impl/TagServiceImpl.java # src/main/java/com/rymcu/vertical/util/BaiDuUtils.java # src/main/java/com/rymcu/vertical/web/api/comment/CommentController.java
This commit is contained in:
parent
766105022c
commit
c94b5397b3
@ -1,16 +1,19 @@
|
||||
package com.rymcu.vertical.service.impl;
|
||||
|
||||
import com.rymcu.vertical.core.constant.NotificationConstant;
|
||||
import com.rymcu.vertical.core.constant.ProjectConstant;
|
||||
import com.rymcu.vertical.core.service.AbstractService;
|
||||
import com.rymcu.vertical.dto.ArticleDTO;
|
||||
import com.rymcu.vertical.dto.ArticleTagDTO;
|
||||
import com.rymcu.vertical.dto.Author;
|
||||
import com.rymcu.vertical.dto.CommentDTO;
|
||||
import com.rymcu.vertical.entity.Article;
|
||||
import com.rymcu.vertical.entity.ArticleContent;
|
||||
import com.rymcu.vertical.entity.Tag;
|
||||
import com.rymcu.vertical.entity.User;
|
||||
import com.rymcu.vertical.mapper.ArticleMapper;
|
||||
import com.rymcu.vertical.service.ArticleService;
|
||||
import com.rymcu.vertical.service.CommentService;
|
||||
import com.rymcu.vertical.service.TagService;
|
||||
import com.rymcu.vertical.service.UserService;
|
||||
import com.rymcu.vertical.util.*;
|
||||
@ -42,11 +45,16 @@ public class ArticleServiceImpl extends AbstractService<Article> implements Arti
|
||||
private TagService tagService;
|
||||
@Resource
|
||||
private UserService userService;
|
||||
@Resource
|
||||
private CommentService commentService;
|
||||
|
||||
@Value("${resource.domain}")
|
||||
private static String domain;
|
||||
private String domain;
|
||||
@Value("${env}")
|
||||
private String env;
|
||||
|
||||
private static final int MAX_PREVIEW = 200;
|
||||
private static final String defaultStatus = "0";
|
||||
|
||||
@Override
|
||||
public List<ArticleDTO> findArticles(String searchText, String tag) {
|
||||
@ -58,8 +66,11 @@ public class ArticleServiceImpl extends AbstractService<Article> implements Arti
|
||||
}
|
||||
|
||||
@Override
|
||||
public ArticleDTO findArticleDTOById(Integer id, int type) {
|
||||
ArticleDTO articleDTO = articleMapper.selectArticleDTOById(id);
|
||||
public ArticleDTO findArticleDTOById(Integer id, Integer type) {
|
||||
ArticleDTO articleDTO = articleMapper.selectArticleDTOById(id,type);
|
||||
if (articleDTO == null) {
|
||||
return null;
|
||||
}
|
||||
articleDTO = genArticle(articleDTO,type);
|
||||
return articleDTO;
|
||||
}
|
||||
@ -67,6 +78,9 @@ public class ArticleServiceImpl extends AbstractService<Article> implements Arti
|
||||
@Override
|
||||
public List<ArticleDTO> findArticlesByTopicUri(String name) {
|
||||
List<ArticleDTO> articleDTOS = articleMapper.selectArticlesByTopicUri(name);
|
||||
articleDTOS.forEach(articleDTO -> {
|
||||
genArticle(articleDTO,0);
|
||||
});
|
||||
return articleDTOS;
|
||||
}
|
||||
|
||||
@ -121,11 +135,12 @@ public class ArticleServiceImpl extends AbstractService<Article> implements Arti
|
||||
newArticle.setArticleTags(articleTags);
|
||||
newArticle.setCreatedTime(new Date());
|
||||
newArticle.setUpdatedTime(newArticle.getCreatedTime());
|
||||
newArticle.setArticleStatus(article.getArticleStatus());
|
||||
articleMapper.insertSelective(newArticle);
|
||||
newArticle.setArticlePermalink(domain + "/article/"+newArticle.getIdArticle());
|
||||
newArticle.setArticleLink("/article/"+newArticle.getIdArticle());
|
||||
articleMapper.insertArticleContent(newArticle.getIdArticle(),articleContent,articleContentHtml);
|
||||
BaiDuUtils.sendSEOData(newArticle.getArticlePermalink());
|
||||
if (!ProjectConstant.ENV.equals(env) && defaultStatus.equals(newArticle.getArticleStatus())) {
|
||||
BaiDuUtils.sendSEOData(newArticle.getArticlePermalink());
|
||||
}
|
||||
} else {
|
||||
newArticle = articleMapper.selectByPrimaryKey(article.getIdArticle());
|
||||
if(!user.getIdUser().equals(newArticle.getArticleAuthorId())){
|
||||
@ -142,16 +157,27 @@ public class ArticleServiceImpl extends AbstractService<Article> implements Arti
|
||||
String articlePreviewContent = articleContentHtml.substring(0,length);
|
||||
newArticle.setArticlePreviewContent(Html2TextUtil.getContent(articlePreviewContent));
|
||||
}
|
||||
newArticle.setArticleStatus(article.getArticleStatus());
|
||||
newArticle.setUpdatedTime(new Date());
|
||||
articleMapper.updateArticleContent(newArticle.getIdArticle(),articleContent,articleContentHtml);
|
||||
BaiDuUtils.updateSEOData(newArticle.getArticlePermalink());
|
||||
if (!ProjectConstant.ENV.equals(env) && defaultStatus.equals(newArticle.getArticleStatus())) {
|
||||
BaiDuUtils.updateSEOData(newArticle.getArticlePermalink());
|
||||
}
|
||||
}
|
||||
|
||||
if (notification) {
|
||||
if (notification && defaultStatus.equals(newArticle.getArticleStatus())) {
|
||||
NotificationUtils.sendAnnouncement(newArticle.getIdArticle(), NotificationConstant.Article, newArticle.getArticleTitle());
|
||||
}
|
||||
|
||||
tagService.saveTagArticle(newArticle);
|
||||
|
||||
if (defaultStatus.equals(newArticle.getArticleStatus())) {
|
||||
newArticle.setArticlePermalink(domain + "/article/" + newArticle.getIdArticle());
|
||||
newArticle.setArticleLink("/article/" + newArticle.getIdArticle());
|
||||
} else {
|
||||
newArticle.setArticlePermalink(domain + "/draft/" + newArticle.getIdArticle());
|
||||
newArticle.setArticleLink("/draft/" + newArticle.getIdArticle());
|
||||
}
|
||||
articleMapper.updateByPrimaryKeySelective(newArticle);
|
||||
|
||||
map.put("id", newArticle.getIdArticle());
|
||||
@ -216,22 +242,41 @@ public class ArticleServiceImpl extends AbstractService<Article> implements Arti
|
||||
articleMapper.updateArticleViewCount(article.getIdArticle(), articleViewCount);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Map share(Integer id) throws BaseApiException {
|
||||
Article article = articleMapper.selectByPrimaryKey(id);
|
||||
User user = UserUtils.getWxCurrentUser();
|
||||
StringBuilder shareUrl = new StringBuilder(article.getArticlePermalink());
|
||||
shareUrl.append("?s=").append(user.getNickname());
|
||||
Map map = new HashMap(1);
|
||||
map.put("shareUrl", shareUrl);
|
||||
return map;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<ArticleDTO> findDrafts() throws BaseApiException {
|
||||
User user = UserUtils.getWxCurrentUser();
|
||||
List<ArticleDTO> list = articleMapper.selectDrafts(user.getIdUser());
|
||||
list.forEach(article->{
|
||||
genArticle(article,0);
|
||||
});
|
||||
return list;
|
||||
}
|
||||
|
||||
private ArticleDTO genArticle(ArticleDTO article,Integer type) {
|
||||
Author author = articleMapper.selectAuthor(article.getArticleAuthorId());
|
||||
article.setArticleAuthor(author);
|
||||
article.setTimeAgo(Utils.getTimeAgo(article.getUpdatedTime()));
|
||||
List<ArticleTagDTO> tags = articleMapper.selectTags(article.getIdArticle());
|
||||
article.setTags(tags);
|
||||
if(type == 1){
|
||||
ArticleContent articleContent = articleMapper.selectArticleContent(article.getIdArticle());
|
||||
ArticleContent articleContent = articleMapper.selectArticleContent(article.getIdArticle());
|
||||
if (type == 1){
|
||||
article.setArticleContent(articleContent.getArticleContentHtml());
|
||||
} else if(type == 2){
|
||||
ArticleContent articleContent = articleMapper.selectArticleContent(article.getIdArticle());
|
||||
} else if (type == 2) {
|
||||
article.setArticleContent(articleContent.getArticleContent());
|
||||
}
|
||||
|
||||
if(StringUtils.isBlank(article.getArticlePreviewContent())){
|
||||
ArticleContent articleContent = articleMapper.selectArticleContent(article.getIdArticle());
|
||||
Integer length = articleContent.getArticleContentHtml().length();
|
||||
if(length > MAX_PREVIEW){
|
||||
length = 200;
|
||||
@ -239,6 +284,8 @@ public class ArticleServiceImpl extends AbstractService<Article> implements Arti
|
||||
String articlePreviewContent = articleContent.getArticleContentHtml().substring(0,length);
|
||||
article.setArticlePreviewContent(Html2TextUtil.getContent(articlePreviewContent));
|
||||
}
|
||||
List<CommentDTO> commentDTOList = commentService.getArticleComments(article.getIdArticle());
|
||||
article.setArticleComments(commentDTOList);
|
||||
return article;
|
||||
}
|
||||
}
|
||||
|
@ -1,11 +1,16 @@
|
||||
package com.rymcu.vertical.service.impl;
|
||||
|
||||
import com.rymcu.vertical.core.service.AbstractService;
|
||||
import com.rymcu.vertical.core.service.redis.RedisService;
|
||||
import com.rymcu.vertical.dto.ArticleTagDTO;
|
||||
import com.rymcu.vertical.dto.LabelModel;
|
||||
import com.rymcu.vertical.entity.Article;
|
||||
import com.rymcu.vertical.entity.Tag;
|
||||
import com.rymcu.vertical.entity.User;
|
||||
import com.rymcu.vertical.mapper.ArticleMapper;
|
||||
import com.rymcu.vertical.mapper.TagMapper;
|
||||
import com.rymcu.vertical.service.TagService;
|
||||
import com.rymcu.vertical.util.CacheUtils;
|
||||
import com.rymcu.vertical.util.UserUtils;
|
||||
import com.rymcu.vertical.web.api.exception.BaseApiException;
|
||||
import org.apache.commons.lang.StringUtils;
|
||||
@ -29,6 +34,10 @@ public class TagServiceImpl extends AbstractService<Tag> implements TagService {
|
||||
|
||||
@Resource
|
||||
private TagMapper tagMapper;
|
||||
@Resource
|
||||
private ArticleMapper articleMapper;
|
||||
@Resource
|
||||
private RedisService redisService;
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = { UnsupportedEncodingException.class,BaseApiException.class })
|
||||
@ -37,6 +46,7 @@ public class TagServiceImpl extends AbstractService<Tag> implements TagService {
|
||||
String articleTags = article.getArticleTags();
|
||||
if(StringUtils.isNotBlank(articleTags)){
|
||||
String[] tags = articleTags.split(",");
|
||||
List<ArticleTagDTO> articleTagDTOList = articleMapper.selectTags(article.getIdArticle());
|
||||
for (int i = 0; i < tags.length; i++) {
|
||||
boolean addTagArticle = false;
|
||||
boolean addUserTag = false;
|
||||
@ -54,6 +64,12 @@ public class TagServiceImpl extends AbstractService<Tag> implements TagService {
|
||||
addTagArticle = true;
|
||||
addUserTag = true;
|
||||
} else {
|
||||
for(int m=0,n=articleTagDTOList.size()-1;m<n; m++) {
|
||||
ArticleTagDTO articleTag = articleTagDTOList.get(m);
|
||||
if (articleTag.getIdTag().equals(tag.getIdTag())) {
|
||||
articleTagDTOList.remove(articleTag);
|
||||
}
|
||||
}
|
||||
Integer count = tagMapper.selectCountTagArticleById(tag.getIdTag(),article.getIdArticle());
|
||||
if(count == 0){
|
||||
tag.setTagArticleCount(tag.getTagArticleCount() + 1);
|
||||
@ -65,6 +81,9 @@ public class TagServiceImpl extends AbstractService<Tag> implements TagService {
|
||||
addUserTag = true;
|
||||
}
|
||||
}
|
||||
articleTagDTOList.forEach(articleTagDTO -> {
|
||||
articleMapper.deleteUnusedArticleTag(articleTagDTO.getIdArticleTag());
|
||||
});
|
||||
if(addTagArticle){
|
||||
tagMapper.insertTagArticle(tag.getIdTag(),article.getIdArticle());
|
||||
}
|
||||
@ -125,4 +144,14 @@ public class TagServiceImpl extends AbstractService<Tag> implements TagService {
|
||||
}
|
||||
return map;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<LabelModel> findTagLabels() {
|
||||
List<LabelModel> list = (List<LabelModel>) CacheUtils.get("tags");
|
||||
if (list == null) {
|
||||
list = tagMapper.selectTagLabels();
|
||||
CacheUtils.put("tags", list);
|
||||
}
|
||||
return list;
|
||||
}
|
||||
}
|
||||
|
@ -77,7 +77,7 @@ public class BaiDuUtils {
|
||||
},executor);
|
||||
}
|
||||
|
||||
public static void main(String agrs[]){
|
||||
sendSEOData("https://rymcu.com/article/31");
|
||||
public static void main(String[] args){
|
||||
sendSEOData("https://rymcu.com");
|
||||
}
|
||||
}
|
||||
|
@ -0,0 +1,33 @@
|
||||
package com.rymcu.vertical.web.api.comment;
|
||||
|
||||
import com.rymcu.vertical.core.result.GlobalResult;
|
||||
import com.rymcu.vertical.core.result.GlobalResultGenerator;
|
||||
import com.rymcu.vertical.entity.Comment;
|
||||
import com.rymcu.vertical.service.CommentService;
|
||||
import com.rymcu.vertical.web.api.exception.BaseApiException;
|
||||
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.annotation.Resource;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import java.io.UnsupportedEncodingException;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* @author ronger
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping("/api/v1/comment")
|
||||
public class CommentController {
|
||||
|
||||
@Resource
|
||||
private CommentService commentService;
|
||||
|
||||
@PostMapping("/post")
|
||||
public GlobalResult postComment(@RequestBody Comment comment, HttpServletRequest request) throws BaseApiException, UnsupportedEncodingException {
|
||||
Map map = commentService.postComment(comment,request);
|
||||
return GlobalResultGenerator.genSuccessResult(map);
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user