package cn.iocoder.yudao.module.promotion.service.article; import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.module.promotion.controller.admin.article.vo.category.ArticleCategoryCreateReqVO; import cn.iocoder.yudao.module.promotion.controller.admin.article.vo.category.ArticleCategoryPageReqVO; import cn.iocoder.yudao.module.promotion.controller.admin.article.vo.category.ArticleCategoryUpdateReqVO; import cn.iocoder.yudao.module.promotion.convert.article.ArticleCategoryConvert; import cn.iocoder.yudao.module.promotion.dal.dataobject.article.ArticleCategoryDO; import cn.iocoder.yudao.module.promotion.dal.mysql.article.ArticleCategoryMapper; import org.springframework.context.annotation.Lazy; 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_DELETE_FAIL_HAVE_ARTICLES; import static cn.iocoder.yudao.module.promotion.enums.ErrorCodeConstants.ARTICLE_CATEGORY_NOT_EXISTS; /** * 文章分类 Service 实现类 * * @author HUIHUI */ @Service @Validated public class ArticleCategoryServiceImpl implements ArticleCategoryService { @Resource private ArticleCategoryMapper articleCategoryMapper; @Resource @Lazy // 延迟加载,解决循环依赖问题 private ArticleService articleService; @Override public Long createArticleCategory(ArticleCategoryCreateReqVO createReqVO) { // 插入 ArticleCategoryDO category = ArticleCategoryConvert.INSTANCE.convert(createReqVO); articleCategoryMapper.insert(category); // 返回 return category.getId(); } @Override public void updateArticleCategory(ArticleCategoryUpdateReqVO updateReqVO) { // 校验存在 validateArticleCategoryExists(updateReqVO.getId()); // 更新 ArticleCategoryDO updateObj = ArticleCategoryConvert.INSTANCE.convert(updateReqVO); articleCategoryMapper.updateById(updateObj); } @Override public void deleteArticleCategory(Long id) { // 校验存在 validateArticleCategoryExists(id); // 校验是不是存在关联文章 Long count = articleService.getArticleCountByCategoryId(id); if (count > 0) { throw exception(ARTICLE_CATEGORY_DELETE_FAIL_HAVE_ARTICLES); } // 删除 articleCategoryMapper.deleteById(id); } private void validateArticleCategoryExists(Long id) { if (articleCategoryMapper.selectById(id) == null) { throw exception(ARTICLE_CATEGORY_NOT_EXISTS); } } @Override public ArticleCategoryDO getArticleCategory(Long id) { return articleCategoryMapper.selectById(id); } @Override public PageResult getArticleCategoryPage(ArticleCategoryPageReqVO pageReqVO) { return articleCategoryMapper.selectPage(pageReqVO); } @Override public List getArticleCategoryListByStatus(Integer status) { return articleCategoryMapper.selectListByStatus(status); } }