diff --git a/len-blog/src/main/java/com/len/controller/BlogAdminController.java b/len-blog/src/main/java/com/len/controller/BlogAdminController.java index e25dcdf..6a78bb0 100644 --- a/len-blog/src/main/java/com/len/controller/BlogAdminController.java +++ b/len-blog/src/main/java/com/len/controller/BlogAdminController.java @@ -1,10 +1,10 @@ package com.len.controller; -import com.len.core.LenUser; -import com.len.entity.*; +import com.len.entity.ArticleDetail; +import com.len.entity.BlogArticle; +import com.len.entity.BlogCategory; import com.len.model.Article; import com.len.service.*; -import com.len.util.BeanUtil; import com.len.util.JsonUtil; import com.len.util.ReType; import com.len.util.UploadUtil; @@ -12,15 +12,13 @@ import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; -import org.springframework.transaction.annotation.Transactional; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartHttpServletRequest; -import java.util.*; -import java.util.regex.Matcher; +import java.util.Comparator; +import java.util.List; import java.util.regex.Pattern; -import java.util.stream.Collectors; /** * @author zhuxiaomeng @@ -44,22 +42,9 @@ public class BlogAdminController { @Autowired private UploadUtil uploadUtil; - - @Autowired - private BlogTagService tagService; - @Autowired private BlogCategoryService categoryService; - @Autowired - private ArticleCategoryService articleCategoryService; - - @Autowired - private ArticleTagService articleTagService; - - private static final Pattern IMG = Pattern.compile("<(img)(.*?)(/>|>|>)"); - - private static final Pattern SRC = Pattern.compile("src\\s*=\\s*\"?(.*?)(\"|>|\\s+)"); @GetMapping("/article/getList") public ReType getArticleList(BlogArticle article, Integer page, Integer limit) { @@ -101,7 +86,6 @@ public class BlogAdminController { } @PostMapping("/article/add") - @Transactional public JsonUtil addArticle(@RequestBody ArticleDetail detail) { JsonUtil json = new JsonUtil(); json.setStatus(400); @@ -127,78 +111,13 @@ public class BlogAdminController { return json; } - String articleId = UUID.randomUUID().toString().replace("-", ""); - article.setCode(generatorCode()); - article.setId(articleId); - article.setCreateDate(new Date()); - article.setCreateBy(LenUser.getPrincipal().getUserId()); - article.setReadNumber(0); - - String content = article.getContent(); - - Matcher matcher = IMG.matcher(content); - boolean exists = matcher.find(); - if (exists) { - String img = matcher.group(); - Matcher m = SRC.matcher(img); - boolean b = m.find(); - if (b) { - article.setFirstImg(m.group(1)); - } - } - - BlogArticle blogArticle = new BlogArticle(); - BeanUtil.copyNotNullBean(article, blogArticle); - - articleService.insert(blogArticle); - - List categories = new ArrayList<>(); - for (String cateId : detail.getCategory()) { - ArticleCategory articleCategory = new ArticleCategory(); - articleCategory.setId(UUID.randomUUID().toString().replace("-", "")); - articleCategory.setArticleId(articleId); - articleCategory.setCategoryId(cateId); - categories.add(articleCategory); - } - articleCategoryService.insertList(categories); - - List articleTags = new ArrayList<>(); - List blogTags = new ArrayList<>(); - ArticleTag articleTag; - BlogTag blogTag; - BlogTag oldTag; - for (String tag : detail.getTags()) { - articleTag = new ArticleTag(); - articleTags.add(articleTag); - - articleTag.setArticleId(articleId); - - blogTag = new BlogTag(); - blogTag.setTagCode(tag); - oldTag = tagService.selectOne(blogTag); - - if (oldTag != null) { - articleTag.setTagId(oldTag.getId()); - } else { - blogTags.add(blogTag); - String id = UUID.randomUUID().toString().replace("-", ""); - blogTag.setId(id); - blogTag.setTagName(tag); - articleTag.setTagId(id); - } - } - articleTagService.insertList(articleTags); - if (!blogTags.isEmpty()) { - tagService.insertList(blogTags); - } - + articleService.addArticle(detail); json.setStatus(200); json.setMsg("文章发表成功"); return json; } @PostMapping("/article/update") - @Transactional public JsonUtil updateArticle(@RequestBody ArticleDetail detail) { JsonUtil json = new JsonUtil(); Article article = detail.getArticle(); @@ -226,104 +145,10 @@ public class BlogAdminController { json.setMsg("标签不能为空"); return json; } - article.setUpdateBy(LenUser.getPrincipal().getUserId()); - article.setUpdateDate(new Date()); - - String content = article.getContent(); - - Matcher matcher = IMG.matcher(content); - boolean exists = matcher.find(); - if (exists) { - String img = matcher.group(); - Matcher m = SRC.matcher(img); - boolean b = m.find(); - if (b) { - article.setFirstImg(m.group(1)); - } - } - BlogArticle blogArticle = new BlogArticle(); - BeanUtil.copyNotNullBean(article, blogArticle); - articleService.updateByPrimaryKey(blogArticle); - - ArticleTag articleTag = new ArticleTag(); - articleTag.setArticleId(article.getId()); - articleTagService.delete(articleTag); - - List articleTags = new ArrayList<>(); - List blogTags = new ArrayList<>(); - BlogTag needAddTag; - for (String tag : tags) { - articleTag = new ArticleTag(); - articleTags.add(articleTag); - articleTag.setArticleId(article.getId()); - BlogTag blogTag = new BlogTag(); - blogTag.setTagCode(tag); - BlogTag tag1 = tagService.selectOne(blogTag); - if (tag1 != null) { - articleTag.setTagId(tag1.getId()); - } else { - String tagId = UUID.randomUUID().toString().replace("-", ""); - articleTag.setTagId(tagId); - - needAddTag = new BlogTag(); - blogTags.add(needAddTag); - needAddTag.setId(tagId); - needAddTag.setTagCode(tag); - needAddTag.setTagName(tag); - } - } - if (!blogTags.isEmpty()) { - tagService.insertList(blogTags); - } - - articleTagService.insertList(articleTags); - ArticleCategory articleCategory = new ArticleCategory(); - articleCategory.setArticleId(article.getId()); - List categories = articleCategoryService.select(articleCategory); - if (!categories.isEmpty()) { - List cateIds = categories.stream().map(ArticleCategory::getCategoryId) - .collect(Collectors.toList()); - List collect = cateIds.stream().filter(categoryIds::contains) - .collect(Collectors.toList()); - categoryIds.removeAll(collect); - cateIds.removeAll(collect); - if (!cateIds.isEmpty()) { - List delCategoryIds = categories.stream().filter(s -> cateIds.contains(s.getCategoryId())) - .map(ArticleCategory::getId) - .collect(Collectors.toList()); - articleCategoryService.delByIds(delCategoryIds); - } - } - if (!categoryIds.isEmpty()) { - List articleCategories = new ArrayList<>(); - ArticleCategory category; - for (String ca : categoryIds) { - category = new ArticleCategory(); - articleCategories.add(category); - category.setId(UUID.randomUUID().toString().replace("-", "")); - category.setArticleId(article.getId()); - category.setCategoryId(ca); - } - articleCategoryService.insertList(articleCategories); - } + articleService.updateArticle(article, categoryIds, tags); json.setStatus(200); json.setMsg("更新成功"); return json; } - private String generatorCode() { - Random random = new Random(); - StringBuilder result = new StringBuilder(); - for (int i = 0; i < 8; i++) { - result.append(random.nextInt(9) + 1); - } - BlogArticle article = new BlogArticle(); - article.setCode(result.toString()); - BlogArticle blogArticle = articleService.selectOne(article); - if (blogArticle == null) { - return result.toString(); - } else { - return generatorCode(); - } - } } diff --git a/len-blog/src/main/java/com/len/service/BlogArticleService.java b/len-blog/src/main/java/com/len/service/BlogArticleService.java index 39dc2c1..7c2bb4f 100644 --- a/len-blog/src/main/java/com/len/service/BlogArticleService.java +++ b/len-blog/src/main/java/com/len/service/BlogArticleService.java @@ -1,9 +1,11 @@ package com.len.service; import com.len.base.BaseService; +import com.len.entity.ArticleDetail; import com.len.entity.BlogArticle; import com.len.model.Article; import com.len.util.JsonUtil; +import org.springframework.web.bind.annotation.RequestBody; import java.util.Date; import java.util.List; @@ -29,4 +31,8 @@ public interface BlogArticleService extends BaseService { BlogArticle selectNext(Date date); + boolean addArticle(ArticleDetail articleDetail); + + boolean updateArticle(Article article,List categoryIds,List tags); + } diff --git a/len-blog/src/main/java/com/len/service/impl/BlogArticleServiceImpl.java b/len-blog/src/main/java/com/len/service/impl/BlogArticleServiceImpl.java index effadda..9b12ef7 100644 --- a/len-blog/src/main/java/com/len/service/impl/BlogArticleServiceImpl.java +++ b/len-blog/src/main/java/com/len/service/impl/BlogArticleServiceImpl.java @@ -3,6 +3,7 @@ package com.len.service.impl; import com.github.pagehelper.PageHelper; import com.len.base.BaseMapper; import com.len.base.impl.BaseServiceImpl; +import com.len.core.LenUser; import com.len.entity.*; import com.len.mapper.BlogArticleMapper; import com.len.model.Article; @@ -14,10 +15,12 @@ import com.len.util.JsonUtil; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import tk.mybatis.mapper.entity.Condition; -import java.util.Date; -import java.util.List; +import java.util.*; +import java.util.regex.Matcher; +import java.util.regex.Pattern; import java.util.stream.Collectors; /** @@ -46,6 +49,10 @@ public class BlogArticleServiceImpl extends BaseServiceImpl @Autowired private SysUserService sysUserService; + private static final Pattern IMG = Pattern.compile("<(img)(.*?)(/>|>|>)"); + + private static final Pattern SRC = Pattern.compile("src\\s*=\\s*\"?(.*?)(\"|>|\\s+)"); + @Override public BaseMapper getMappser() { @@ -176,6 +183,181 @@ public class BlogArticleServiceImpl extends BaseServiceImpl return blogArticleMapper.selectNext(date); } + + private String generatorCode() { + Random random = new Random(); + StringBuilder result = new StringBuilder(); + for (int i = 0; i < 8; i++) { + result.append(random.nextInt(9) + 1); + } + BlogArticle article = new BlogArticle(); + article.setCode(result.toString()); + BlogArticle blogArticle = selectOne(article); + if (blogArticle == null) { + return result.toString(); + } else { + return generatorCode(); + } + } + + @Override + @Transactional + public boolean addArticle(ArticleDetail articleDetail) { + Article article = articleDetail.getArticle(); + String articleId = UUID.randomUUID().toString().replace("-", ""); + article.setCode(generatorCode()); + article.setId(articleId); + article.setCreateDate(new Date()); + article.setCreateBy(LenUser.getPrincipal().getUserId()); + article.setReadNumber(0); + + String content = article.getContent(); + + Matcher matcher = IMG.matcher(content); + boolean exists = matcher.find(); + if (exists) { + String img = matcher.group(); + Matcher m = SRC.matcher(img); + boolean b = m.find(); + if (b) { + article.setFirstImg(m.group(1)); + } + } + + BlogArticle blogArticle = new BlogArticle(); + BeanUtil.copyNotNullBean(article, blogArticle); + + int result = insert(blogArticle); + + List categories = new ArrayList<>(); + for (String cateId : articleDetail.getCategory()) { + ArticleCategory articleCategory = new ArticleCategory(); + articleCategory.setId(UUID.randomUUID().toString().replace("-", "")); + articleCategory.setArticleId(articleId); + articleCategory.setCategoryId(cateId); + categories.add(articleCategory); + } + int insertResult = articleCategoryService.insertList(categories); + + List articleTags = new ArrayList<>(); + List blogTags = new ArrayList<>(); + ArticleTag articleTag; + BlogTag blogTag; + BlogTag oldTag; + for (String tag : articleDetail.getTags()) { + articleTag = new ArticleTag(); + articleTags.add(articleTag); + + articleTag.setArticleId(articleId); + + blogTag = new BlogTag(); + blogTag.setTagCode(tag); + oldTag = tagService.selectOne(blogTag); + + if (oldTag != null) { + articleTag.setTagId(oldTag.getId()); + } else { + blogTags.add(blogTag); + String id = UUID.randomUUID().toString().replace("-", ""); + blogTag.setId(id); + blogTag.setTagName(tag); + articleTag.setTagId(id); + } + } + articleTagService.insertList(articleTags); + if (!blogTags.isEmpty()) { + tagService.insertList(blogTags); + } + + return result > 0 && insertResult > 0; + } + + @Override + @Transactional + public boolean updateArticle(Article article, List categoryIds, List tags) { + article.setUpdateBy(LenUser.getPrincipal().getUserId()); + article.setUpdateDate(new Date()); + + String content = article.getContent(); + + Matcher matcher = IMG.matcher(content); + boolean exists = matcher.find(); + if (exists) { + String img = matcher.group(); + Matcher m = SRC.matcher(img); + boolean b = m.find(); + if (b) { + article.setFirstImg(m.group(1)); + } + } + BlogArticle blogArticle = new BlogArticle(); + BeanUtil.copyNotNullBean(article, blogArticle); + updateByPrimaryKey(blogArticle); + + ArticleTag articleTag = new ArticleTag(); + articleTag.setArticleId(article.getId()); + articleTagService.delete(articleTag); + + List articleTags = new ArrayList<>(); + List blogTags = new ArrayList<>(); + BlogTag needAddTag; + for (String tag : tags) { + articleTag = new ArticleTag(); + articleTags.add(articleTag); + articleTag.setArticleId(article.getId()); + BlogTag blogTag = new BlogTag(); + blogTag.setTagCode(tag); + BlogTag tag1 = tagService.selectOne(blogTag); + if (tag1 != null) { + articleTag.setTagId(tag1.getId()); + } else { + String tagId = UUID.randomUUID().toString().replace("-", ""); + articleTag.setTagId(tagId); + + needAddTag = new BlogTag(); + blogTags.add(needAddTag); + needAddTag.setId(tagId); + needAddTag.setTagCode(tag); + needAddTag.setTagName(tag); + } + } + if (!blogTags.isEmpty()) { + tagService.insertList(blogTags); + } + + articleTagService.insertList(articleTags); + ArticleCategory articleCategory = new ArticleCategory(); + articleCategory.setArticleId(article.getId()); + List categories = articleCategoryService.select(articleCategory); + if (!categories.isEmpty()) { + List cateIds = categories.stream().map(ArticleCategory::getCategoryId) + .collect(Collectors.toList()); + List collect = cateIds.stream().filter(categoryIds::contains) + .collect(Collectors.toList()); + categoryIds.removeAll(collect); + cateIds.removeAll(collect); + if (!cateIds.isEmpty()) { + List delCategoryIds = categories.stream().filter(s -> cateIds.contains(s.getCategoryId())) + .map(ArticleCategory::getId) + .collect(Collectors.toList()); + articleCategoryService.delByIds(delCategoryIds); + } + } + if (!categoryIds.isEmpty()) { + List articleCategories = new ArrayList<>(); + ArticleCategory category; + for (String ca : categoryIds) { + category = new ArticleCategory(); + articleCategories.add(category); + category.setId(UUID.randomUUID().toString().replace("-", "")); + category.setArticleId(article.getId()); + category.setCategoryId(ca); + } + articleCategoryService.insertList(articleCategories); + } + return true; + } + /** * 半小时增加一次有效点击数 *