Merge pull request 'test' (#2) from zhangshiyu_branch into develop
commit
da65ae660e
@ -0,0 +1,8 @@
|
||||
# 默认忽略的文件
|
||||
/shelf/
|
||||
/workspace.xml
|
||||
# 基于编辑器的 HTTP 客户端请求
|
||||
/httpRequests/
|
||||
# Datasource local storage ignored files
|
||||
/dataSources/
|
||||
/dataSources.local.xml
|
||||
@ -0,0 +1,9 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<module type="JAVA_MODULE" version="4">
|
||||
<component name="NewModuleRootManager" inherit-compiler-output="true">
|
||||
<exclude-output />
|
||||
<content url="file://$MODULE_DIR$" />
|
||||
<orderEntry type="inheritedJdk" />
|
||||
<orderEntry type="sourceFolder" forTests="false" />
|
||||
</component>
|
||||
</module>
|
||||
@ -0,0 +1,6 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="ProjectRootManager" version="2" languageLevel="JDK_11" default="true" project-jdk-name="11" project-jdk-type="JavaSDK">
|
||||
<output url="file://$PROJECT_DIR$/out" />
|
||||
</component>
|
||||
</project>
|
||||
@ -0,0 +1,8 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="ProjectModuleManager">
|
||||
<modules>
|
||||
<module fileurl="file://$PROJECT_DIR$/.idea/ForestBlog.iml" filepath="$PROJECT_DIR$/.idea/ForestBlog.iml" />
|
||||
</modules>
|
||||
</component>
|
||||
</project>
|
||||
@ -0,0 +1,6 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="VcsDirectoryMappings">
|
||||
<mapping directory="" vcs="Git" />
|
||||
</component>
|
||||
</project>
|
||||
@ -0,0 +1,64 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="AutoImportSettings">
|
||||
<option name="autoReloadType" value="SELECTIVE" />
|
||||
</component>
|
||||
<component name="ChangeListManager">
|
||||
<list default="true" id="690df2e4-065b-4e1e-9ecc-de15c4a25040" name="更改" comment="">
|
||||
<change beforePath="$PROJECT_DIR$/doc" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/src" beforeDir="false" />
|
||||
</list>
|
||||
<option name="SHOW_DIALOG" value="false" />
|
||||
<option name="HIGHLIGHT_CONFLICTS" value="true" />
|
||||
<option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" />
|
||||
<option name="LAST_RESOLUTION" value="IGNORE" />
|
||||
</component>
|
||||
<component name="Git.Settings">
|
||||
<option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$" />
|
||||
</component>
|
||||
<component name="ProjectColorInfo"><![CDATA[{
|
||||
"associatedIndex": 7
|
||||
}]]></component>
|
||||
<component name="ProjectId" id="2pkoas9hD1WLgDh1lyVWy1g01SE" />
|
||||
<component name="ProjectViewState">
|
||||
<option name="hideEmptyMiddlePackages" value="true" />
|
||||
<option name="showLibraryContents" value="true" />
|
||||
</component>
|
||||
<component name="PropertiesComponent"><![CDATA[{
|
||||
"keyToString": {
|
||||
"RunOnceActivity.ShowReadmeOnStart": "true",
|
||||
"git-widget-placeholder": "develop",
|
||||
"kotlin-language-version-configured": "true",
|
||||
"last_opened_file_path": "D:/Git/ForestBlog",
|
||||
"node.js.detected.package.eslint": "true",
|
||||
"node.js.detected.package.tslint": "true",
|
||||
"node.js.selected.package.eslint": "(autodetect)",
|
||||
"node.js.selected.package.tslint": "(autodetect)",
|
||||
"nodejs_package_manager_path": "npm",
|
||||
"vue.rearranger.settings.migration": "true"
|
||||
}
|
||||
}]]></component>
|
||||
<component name="SharedIndexes">
|
||||
<attachedChunks>
|
||||
<set>
|
||||
<option value="bundled-jdk-9823dce3aa75-28b599e66164-intellij.indexing.shared.core-IU-242.23726.103" />
|
||||
<option value="bundled-js-predefined-d6986cc7102b-5c90d61e3bab-JavaScript-IU-242.23726.103" />
|
||||
</set>
|
||||
</attachedChunks>
|
||||
</component>
|
||||
<component name="SpellCheckerSettings" RuntimeDictionaries="0" Folders="0" CustomDictionaries="0" DefaultDictionary="应用程序级" UseSingleDictionary="true" transferred="true" />
|
||||
<component name="TaskManager">
|
||||
<task active="true" id="Default" summary="默认任务">
|
||||
<changelist id="690df2e4-065b-4e1e-9ecc-de15c4a25040" name="更改" comment="" />
|
||||
<created>1733319500475</created>
|
||||
<option name="number" value="Default" />
|
||||
<option name="presentableId" value="Default" />
|
||||
<updated>1733319500475</updated>
|
||||
<workItem from="1733319501582" duration="660000" />
|
||||
</task>
|
||||
<servers />
|
||||
</component>
|
||||
<component name="TypeScriptGeneratedFilesManager">
|
||||
<option name="version" value="3" />
|
||||
</component>
|
||||
</project>
|
||||
@ -0,0 +1,286 @@
|
||||
package com.liuyanzhao.ssm.blog.service.impl;
|
||||
|
||||
import cn.hutool.core.util.RandomUtil;
|
||||
import com.github.pagehelper.PageHelper;
|
||||
import com.github.pagehelper.PageInfo;
|
||||
import com.liuyanzhao.ssm.blog.enums.ArticleCommentStatus;
|
||||
import com.liuyanzhao.ssm.blog.mapper.*;
|
||||
import com.liuyanzhao.ssm.blog.service.ArticleService;
|
||||
import com.liuyanzhao.ssm.blog.entity.*;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
import org.springframework.util.StringUtils;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Date;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 文章Servie实现
|
||||
*
|
||||
* @author 言曌
|
||||
* @date 2017/8/24
|
||||
*/
|
||||
@Service
|
||||
@Slf4j
|
||||
public class ArticleServiceImpl implements ArticleService {
|
||||
|
||||
@Autowired
|
||||
private ArticleMapper articleMapper;
|
||||
|
||||
@Autowired
|
||||
private ArticleCategoryRefMapper articleCategoryRefMapper;
|
||||
|
||||
@Autowired
|
||||
private ArticleTagRefMapper articleTagRefMapper;
|
||||
|
||||
@Autowired
|
||||
private UserMapper userMapper;
|
||||
|
||||
@Autowired
|
||||
private CommentMapper commentMapper;
|
||||
|
||||
@Override
|
||||
public Integer countArticle(Integer status) {
|
||||
Integer count = 0;
|
||||
try {
|
||||
count = articleMapper.countArticle(status);
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
log.error("根据状态统计文章数, status:{}, cause:{}", status, e);
|
||||
}
|
||||
return count;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Integer countArticleComment() {
|
||||
Integer count = 0;
|
||||
try {
|
||||
count = articleMapper.countArticleComment();
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
log.error("统计文章评论数失败, cause:{}", e);
|
||||
}
|
||||
return count;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public Integer countArticleView() {
|
||||
Integer count = 0;
|
||||
try {
|
||||
count = articleMapper.countArticleView();
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
log.error("统计文章访问量失败, cause:{}", e);
|
||||
}
|
||||
return count;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Integer countArticleByCategoryId(Integer categoryId) {
|
||||
Integer count = 0;
|
||||
try {
|
||||
count = articleCategoryRefMapper.countArticleByCategoryId(categoryId);
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
log.error("根据分类统计文章数量失败, categoryId:{}, cause:{}", categoryId, e);
|
||||
}
|
||||
return count;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Integer countArticleByTagId(Integer tagId) {
|
||||
return articleTagRefMapper.countArticleByTagId(tagId);
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<Article> listArticle(HashMap<String, Object> criteria) {
|
||||
return articleMapper.findAll(criteria);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<Article> listRecentArticle(Integer userId, Integer limit) {
|
||||
return articleMapper.listArticleByLimit(userId, limit);
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void updateArticleDetail(Article article) {
|
||||
article.setArticleUpdateTime(new Date());
|
||||
articleMapper.update(article);
|
||||
|
||||
if (article.getTagList() != null) {
|
||||
//删除标签和文章关联
|
||||
articleTagRefMapper.deleteByArticleId(article.getArticleId());
|
||||
//添加标签和文章关联
|
||||
for (int i = 0; i < article.getTagList().size(); i++) {
|
||||
ArticleTagRef articleTagRef = new ArticleTagRef(article.getArticleId(), article.getTagList().get(i).getTagId());
|
||||
articleTagRefMapper.insert(articleTagRef);
|
||||
}
|
||||
}
|
||||
|
||||
if (article.getCategoryList() != null) {
|
||||
//添加分类和文章关联
|
||||
articleCategoryRefMapper.deleteByArticleId(article.getArticleId());
|
||||
//删除分类和文章关联
|
||||
for (int i = 0; i < article.getCategoryList().size(); i++) {
|
||||
ArticleCategoryRef articleCategoryRef = new ArticleCategoryRef(article.getArticleId(), article.getCategoryList().get(i).getCategoryId());
|
||||
articleCategoryRefMapper.insert(articleCategoryRef);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void updateArticle(Article article) {
|
||||
articleMapper.update(article);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void deleteArticleBatch(List<Integer> ids) {
|
||||
articleMapper.deleteBatch(ids);
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void deleteArticle(Integer id) {
|
||||
articleMapper.deleteById(id);
|
||||
// 删除分类关联
|
||||
articleCategoryRefMapper.deleteByArticleId(id);
|
||||
// 删除标签管理
|
||||
articleTagRefMapper.deleteByArticleId(id);
|
||||
// 删除评论
|
||||
commentMapper.deleteByArticleId(id);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public PageInfo<Article> pageArticle(Integer pageIndex,
|
||||
Integer pageSize,
|
||||
HashMap<String, Object> criteria) {
|
||||
PageHelper.startPage(pageIndex, pageSize);
|
||||
List<Article> articleList = articleMapper.findAll(criteria);
|
||||
for (int i = 0; i < articleList.size(); i++) {
|
||||
//封装CategoryList
|
||||
List<Category> categoryList = articleCategoryRefMapper.listCategoryByArticleId(articleList.get(i).getArticleId());
|
||||
if (categoryList == null || categoryList.size() == 0) {
|
||||
categoryList = new ArrayList<>();
|
||||
categoryList.add(Category.Default());
|
||||
}
|
||||
articleList.get(i).setCategoryList(categoryList);
|
||||
|
||||
articleList.get(i).setUser(userMapper.getUserById(articleList.get(i).getArticleUserId()));
|
||||
// //封装TagList
|
||||
// List<Tag> tagList = articleTagRefMapper.listTagByArticleId(articleList.get(i).getArticleId());
|
||||
// articleList.get(i).setTagList(tagList);
|
||||
}
|
||||
return new PageInfo<>(articleList);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Article getArticleByStatusAndId(Integer status, Integer id) {
|
||||
Article article = articleMapper.getArticleByStatusAndId(status, id);
|
||||
if (article != null) {
|
||||
List<Category> categoryList = articleCategoryRefMapper.listCategoryByArticleId(article.getArticleId());
|
||||
List<Tag> tagList = articleTagRefMapper.listTagByArticleId(article.getArticleId());
|
||||
article.setCategoryList(categoryList);
|
||||
article.setTagList(tagList);
|
||||
}
|
||||
return article;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public List<Article> listArticleByViewCount(Integer limit) {
|
||||
return articleMapper.listArticleByViewCount(limit);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Article getAfterArticle(Integer id) {
|
||||
return articleMapper.getAfterArticle(id);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Article getPreArticle(Integer id) {
|
||||
return articleMapper.getPreArticle(id);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<Article> listRandomArticle(Integer limit) {
|
||||
return articleMapper.listRandomArticle(limit);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<Article> listArticleByCommentCount(Integer limit) {
|
||||
return articleMapper.listArticleByCommentCount(limit);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void insertArticle(Article article) {
|
||||
//添加文章
|
||||
article.setArticleCreateTime(new Date());
|
||||
article.setArticleUpdateTime(new Date());
|
||||
article.setArticleIsComment(ArticleCommentStatus.ALLOW.getValue());
|
||||
article.setArticleViewCount(0);
|
||||
article.setArticleLikeCount(0);
|
||||
article.setArticleCommentCount(0);
|
||||
article.setArticleOrder(1);
|
||||
if (StringUtils.isEmpty(article.getArticleThumbnail())) {
|
||||
article.setArticleThumbnail("/img/thumbnail/random/img_" + RandomUtil.randomNumbers(1) + ".jpg");
|
||||
}
|
||||
|
||||
articleMapper.insert(article);
|
||||
//添加分类和文章关联
|
||||
for (int i = 0; i < article.getCategoryList().size(); i++) {
|
||||
ArticleCategoryRef articleCategoryRef = new ArticleCategoryRef(article.getArticleId(), article.getCategoryList().get(i).getCategoryId());
|
||||
articleCategoryRefMapper.insert(articleCategoryRef);
|
||||
}
|
||||
//添加标签和文章关联
|
||||
for (int i = 0; i < article.getTagList().size(); i++) {
|
||||
ArticleTagRef articleTagRef = new ArticleTagRef(article.getArticleId(), article.getTagList().get(i).getTagId());
|
||||
articleTagRefMapper.insert(articleTagRef);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void updateCommentCount(Integer articleId) {
|
||||
articleMapper.updateCommentCount(articleId);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Article getLastUpdateArticle() {
|
||||
return articleMapper.getLastUpdateArticle();
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<Article> listArticleByCategoryId(Integer cateId, Integer limit) {
|
||||
return articleMapper.findArticleByCategoryId(cateId, limit);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<Article> listArticleByCategoryIds(List<Integer> cateIds, Integer limit) {
|
||||
if (cateIds == null || cateIds.size() == 0) {
|
||||
return null;
|
||||
}
|
||||
return articleMapper.findArticleByCategoryIds(cateIds, limit);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<Integer> listCategoryIdByArticleId(Integer articleId) {
|
||||
return articleCategoryRefMapper.selectCategoryIdByArticleId(articleId);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<Article> listAllNotWithContent() {
|
||||
return articleMapper.listAllNotWithContent();
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
File diff suppressed because one or more lines are too long
Loading…
Reference in new issue