package cn.iocoder.yudao.module.promotion.service.article; import cn.hutool.core.collection.CollUtil; import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.module.promotion.controller.admin.article.vo.article.ArticleCreateReqVO; import cn.iocoder.yudao.module.promotion.controller.admin.article.vo.article.ArticlePageReqVO; import cn.iocoder.yudao.module.promotion.controller.admin.article.vo.article.ArticleUpdateReqVO; import cn.iocoder.yudao.module.promotion.controller.app.article.vo.article.AppArticlePageReqVO; import cn.iocoder.yudao.module.promotion.convert.article.ArticleConvert; import cn.iocoder.yudao.module.promotion.dal.dataobject.article.ArticleCategoryDO; import cn.iocoder.yudao.module.promotion.dal.dataobject.article.ArticleDO; import cn.iocoder.yudao.module.promotion.dal.mysql.article.ArticleMapper; import org.springframework.stereotype.Service; import org.springframework.validation.annotation.Validated; import jakarta.annotation.Resource; import java.util.List; import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; import static cn.iocoder.yudao.module.promotion.enums.ErrorCodeConstants.ARTICLE_CATEGORY_NOT_EXISTS; import static cn.iocoder.yudao.module.promotion.enums.ErrorCodeConstants.ARTICLE_NOT_EXISTS; /** * 文章管理 Service 实现类 * * @author HUIHUI */ @Service @Validated public class ArticleServiceImpl implements ArticleService { @Resource private ArticleMapper articleMapper; @Resource private ArticleCategoryService articleCategoryService; @Override public Long createArticle(ArticleCreateReqVO createReqVO) { // 校验分类存在 validateArticleCategoryExists(createReqVO.getCategoryId()); // 插入 ArticleDO article = ArticleConvert.INSTANCE.convert(createReqVO); article.setBrowseCount(0); // 初始浏览量 articleMapper.insert(article); // 返回 return article.getId(); } @Override public void updateArticle(ArticleUpdateReqVO updateReqVO) { // 校验存在 validateArticleExists(updateReqVO.getId()); // 校验分类存在 validateArticleCategoryExists(updateReqVO.getCategoryId()); // 更新 ArticleDO updateObj = ArticleConvert.INSTANCE.convert(updateReqVO); articleMapper.updateById(updateObj); } @Override public void deleteArticle(Long id) { // 校验存在 validateArticleExists(id); // 删除 articleMapper.deleteById(id); } private void validateArticleExists(Long id) { if (articleMapper.selectById(id) == null) { throw exception(ARTICLE_NOT_EXISTS); } } private void validateArticleCategoryExists(Long categoryId) { ArticleCategoryDO articleCategory = articleCategoryService.getArticleCategory(categoryId); if (articleCategory == null) { throw exception(ARTICLE_CATEGORY_NOT_EXISTS); } } @Override public ArticleDO getArticle(Long id) { return articleMapper.selectById(id); } @Override public ArticleDO getLastArticleByTitle(String title) { List articles = articleMapper.selectListByTitle(title); return CollUtil.getLast(articles); } @Override public PageResult getArticlePage(ArticlePageReqVO pageReqVO) { return articleMapper.selectPage(pageReqVO); } @Override public List getArticleCategoryListByRecommend(Boolean recommendHot, Boolean recommendBanner) { return articleMapper.selectList(recommendHot, recommendBanner); } @Override public PageResult getArticlePage(AppArticlePageReqVO pageReqVO) { return articleMapper.selectPage(pageReqVO); } @Override public Long getArticleCountByCategoryId(Long categoryId) { return articleMapper.selectCount(ArticleDO::getCategoryId, categoryId); } @Override public void addArticleBrowseCount(Long id) { // 校验文章是否存在 validateArticleExists(id); // 增加浏览次数 articleMapper.updateBrowseCount(id); } }