From 4eb33dda0f123279e9b9507c76c56d47f323472a Mon Sep 17 00:00:00 2001 From: cloudroam <cloudroam> Date: 星期一, 26 五月 2025 16:39:46 +0800 Subject: [PATCH] add:影视作品增加用户信息 --- src/main/java/com/mzl/flower/service/film/FilmCategoryService.java | 129 +++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 129 insertions(+), 0 deletions(-) diff --git a/src/main/java/com/mzl/flower/service/film/FilmCategoryService.java b/src/main/java/com/mzl/flower/service/film/FilmCategoryService.java new file mode 100644 index 0000000..48c5fda --- /dev/null +++ b/src/main/java/com/mzl/flower/service/film/FilmCategoryService.java @@ -0,0 +1,129 @@ +package com.mzl.flower.service.film; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.mzl.flower.base.Node; +import com.mzl.flower.config.exception.ValidationException; +import com.mzl.flower.config.security.SecurityUtils; +import com.mzl.flower.dto.request.film.FilmCategoryCreateDTO; +import com.mzl.flower.dto.request.film.FilmCategoryQueryDTO; +import com.mzl.flower.dto.request.film.FilmCategoryUpdateDTO; +import com.mzl.flower.dto.response.film.FilmCategoryDTO; +import com.mzl.flower.dto.response.film.FilmCategoryTreeDTO; +import com.mzl.flower.entity.film.FilmCategory; +import com.mzl.flower.mapper.film.FilmCategoryMapper; +import com.mzl.flower.service.BaseService; +import com.mzl.flower.utils.TreeBuilderUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; + +@Slf4j +@Service +@Transactional +public class FilmCategoryService extends BaseService { + + @Autowired + private FilmCategoryMapper categoryMapper; + + public Long addCategory(FilmCategoryCreateDTO dto) { + FilmCategory category = new FilmCategory(); + BeanUtils.copyProperties(dto, category); + category.setSortBy(dto.getSortBy() == null ? 0 : dto.getSortBy()); + category.create(SecurityUtils.getUserId()); + + if (category.getParentId() != null) { + FilmCategory parent = categoryMapper.selectById(category.getParentId()); + if (parent == null) { + throw new ValidationException("父分类不存在"); + } + category.setParentName(parent.getName()); + } + + categoryMapper.insert(category); + return category.getId(); + } + + public Long updateCategory(FilmCategoryUpdateDTO dto) { + Long id = dto.getId(); + FilmCategory category = categoryMapper.selectById(id); + if (category == null) { + throw new ValidationException("分类不存在"); + } + + Boolean shown = category.getShown(); + BeanUtils.copyProperties(dto, category); + category.setShown(shown); + category.setSortBy(dto.getSortBy() == null ? 0 : dto.getSortBy()); + category.update(SecurityUtils.getUserId()); + + category.setParentName(""); + if (category.getParentId() != null) { + FilmCategory parent = categoryMapper.selectById(category.getParentId()); + if (parent == null) { + throw new ValidationException("父分类不存在"); + } + category.setParentName(parent.getName()); + } + + categoryMapper.updateById(category); + return id; + } + + public FilmCategoryDTO getCategory(String id) { + FilmCategoryDTO dto = new FilmCategoryDTO(); + FilmCategory category = categoryMapper.selectById(id); + if (category == null) { + return null; + } + BeanUtils.copyProperties(category, dto); + return dto; + } + + public List<FilmCategoryTreeDTO> getCategoryList(FilmCategoryQueryDTO dto) { + return categoryMapper.selectCategoryList(dto); + } + + public List<FilmCategoryTreeDTO> getCategoryTree(FilmCategoryQueryDTO dto) { + List<FilmCategoryTreeDTO> treeList = categoryMapper.selectTreeList(dto); + treeList = (List<FilmCategoryTreeDTO>) TreeBuilderUtil.buildListToTree(treeList); + if (treeList != null && treeList.size() > 0) { + for (FilmCategoryTreeDTO t : treeList) { + List<Node> children = t.getChildren(); + String levelLimit = t.getLevelLimit(); + if (children != null && children.size() > 0) { + for (Node c : children) { + FilmCategoryTreeDTO child = (FilmCategoryTreeDTO) c; + child.setLevelLimit(levelLimit); + } + } + } + } + return treeList; + } + + public void deleteCategory(Long id) { + // 检查是否有子分类 + int count = categoryMapper.selectCount(new QueryWrapper<FilmCategory>() + .eq("parent_id", id) + .eq("deleted", 0)); + if (count > 0) { + throw new ValidationException("该分类包含子分类,请先删除子分类!"); + } + + categoryMapper.deleteById(id); + } + + public void setCategoryShown(Long id, Boolean shown) { + FilmCategory category = categoryMapper.selectById(id); + if (category == null) { + throw new ValidationException("分类不存在"); + } + + category.setShown(shown); + categoryMapper.updateById(category); + } +} \ No newline at end of file -- Gitblit v1.9.3