package com.ruoyi.system.service.impl;
|
|
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
|
import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import com.ruoyi.common.basic.PageVO;
|
import com.ruoyi.common.utils.StringUtils;
|
import com.ruoyi.common.utils.bean.BeanUtils;
|
import com.ruoyi.system.domain.TbFieldCategory;
|
import com.ruoyi.system.dto.FieldCategoryDTO;
|
import com.ruoyi.system.dto.ShowHideDTO;
|
import com.ruoyi.system.dto.update.FieldCategoryUpdateDTO;
|
import com.ruoyi.system.mapper.TbFieldCategoryMapper;
|
import com.ruoyi.system.query.FieldCategoryQuery;
|
import com.ruoyi.system.service.TbFieldCategoryService;
|
import com.ruoyi.system.vo.FieldCategoryVO;
|
import org.springframework.stereotype.Service;
|
import org.springframework.transaction.annotation.Transactional;
|
|
import java.util.List;
|
import java.util.Objects;
|
import java.util.stream.Collectors;
|
|
/**
|
* <p>
|
* 字段分类表 服务实现类
|
* </p>
|
*
|
* @author mitao
|
* @since 2024-03-13
|
*/
|
@Service
|
public class TbFieldCategoryServiceImpl extends ServiceImpl<TbFieldCategoryMapper, TbFieldCategory> implements TbFieldCategoryService {
|
|
@Override
|
public void add(FieldCategoryDTO dto) {
|
//一级分类
|
TbFieldCategory oneCategory = new TbFieldCategory();
|
oneCategory.setFieldCategoryName(dto.getFieldCategoryName());
|
oneCategory.setSortOrder(dto.getSortOrder());
|
this.save(oneCategory);
|
//二级分类
|
List<FieldCategoryDTO> children = dto.getChildren();
|
if (!CollectionUtils.isEmpty(children)) {
|
children.forEach(item->{
|
TbFieldCategory twoCategory = new TbFieldCategory();
|
twoCategory.setParentId(oneCategory.getId());
|
twoCategory.setFieldCategoryName(item.getFieldCategoryName());
|
this.save(twoCategory);
|
//三级分类
|
List<FieldCategoryDTO> next = item.getChildren();
|
if (!CollectionUtils.isEmpty(next)) {
|
next.forEach(nextItem->{
|
TbFieldCategory threeCategory = new TbFieldCategory();
|
threeCategory.setParentId(twoCategory.getId());
|
threeCategory.setFieldCategoryName(nextItem.getFieldCategoryName());
|
this.save(threeCategory);
|
});
|
}
|
});
|
}
|
}
|
|
@Override
|
public PageVO<FieldCategoryVO> queryPage(FieldCategoryQuery query) {
|
Page<TbFieldCategory> page = this.lambdaQuery()
|
.like(StringUtils.isNotBlank(query.getFieldCategoryName()), TbFieldCategory::getFieldCategoryName, query.getFieldCategoryName())
|
.eq(ObjectUtils.isNotEmpty(query.getStatus()), TbFieldCategory::getStatus, query.getStatus())
|
.page(new Page<>(query.getPageNum(), query.getPageSize()));
|
PageVO<FieldCategoryVO> pageVO = new PageVO<>();
|
pageVO.setPageNo(page.getPages());
|
pageVO.setPageSize(page.getSize());
|
pageVO.setTotalPages(page.getTotal());
|
pageVO.setTotalCount(page.getTotal());
|
pageVO.setRecords(page.getRecords().stream().map(item -> {
|
FieldCategoryVO fieldCategoryVO = new FieldCategoryVO();
|
BeanUtils.copyBeanProp(fieldCategoryVO, item);
|
return fieldCategoryVO;
|
}).collect(Collectors.toList()));
|
return pageVO;
|
}
|
|
@Override
|
public void showHide(ShowHideDTO dto) {
|
TbFieldCategory category = this.getById(dto.getId());
|
if (Objects.isNull(category)) {
|
throw new RuntimeException("非法id");
|
}
|
this.lambdaUpdate().eq(TbFieldCategory::getId, dto.getId()).set(TbFieldCategory::getStatus, dto.getStatus());
|
}
|
|
@Override
|
@Transactional(rollbackFor = Exception.class)
|
public void deleteChildren(Integer id) {
|
//认定为二级分类
|
TbFieldCategory category = this.getById(id);
|
if (Objects.nonNull(category)) {
|
//查询是否有三级分类
|
List<TbFieldCategory> threeCategoryList = this.lambdaQuery().eq(TbFieldCategory::getParentId, id).list();
|
if (CollectionUtils.isNotEmpty(threeCategoryList)) {
|
List<Integer> ids = threeCategoryList.stream().map(TbFieldCategory::getId).collect(Collectors.toList());
|
//删除该二级分类下面的三级分类
|
this.removeByIds(ids);
|
}
|
//删除二级分类
|
this.removeById(id);
|
}
|
}
|
|
@Override
|
@Transactional(rollbackFor = Exception.class)
|
public void delete(Integer id) {
|
//一级分类
|
TbFieldCategory category = this.getById(id);
|
//查询是否有二级分类
|
List<TbFieldCategory> threeCategoryList = this.lambdaQuery().eq(TbFieldCategory::getParentId, id).list();
|
if (CollectionUtils.isNotEmpty(threeCategoryList)) {
|
List<Integer> ids = threeCategoryList.stream().map(TbFieldCategory::getId).collect(Collectors.toList());
|
//查询三级分类
|
List<TbFieldCategory> list = this.lambdaQuery().in(TbFieldCategory::getParentId, ids).list();
|
if (CollectionUtils.isNotEmpty(list)) {
|
List<Integer> ids1 = list.stream().map(TbFieldCategory::getId).collect(Collectors.toList());
|
//删除三级分类
|
this.removeByIds(ids1);
|
}
|
//删除二级分类
|
this.removeByIds(ids);
|
}
|
//删除一级分类
|
this.removeById(id);
|
}
|
|
@Override
|
public void edit(FieldCategoryUpdateDTO dto) {
|
//更新一级分类
|
updateCategory(dto);
|
List<FieldCategoryUpdateDTO> children = dto.getChildren();
|
//更新二级分类
|
if (!CollectionUtils.isEmpty(children)) {
|
children.forEach(item->{
|
updateCategory(item);
|
//三级分类
|
List<FieldCategoryUpdateDTO> next = item.getChildren();
|
if (!CollectionUtils.isEmpty(next)) {
|
next.forEach(this::updateCategory);
|
}
|
});
|
}
|
}
|
private void updateCategory(FieldCategoryUpdateDTO dto) {
|
if (dto == null) return;
|
this.lambdaUpdate()
|
.set(TbFieldCategory::getFieldCategoryName, dto.getFieldCategoryName())
|
.set(Objects.nonNull(dto.getSortOrder()),TbFieldCategory::getSortOrder, dto.getSortOrder())
|
.eq(TbFieldCategory::getId, dto.getId())
|
.update();
|
}
|
}
|