package com.gkhy.system.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.gkhy.common.enums.DeleteFlagEnum;
import com.gkhy.common.exception.ServiceException;
import com.gkhy.common.utils.SecurityUtils;
import com.gkhy.common.utils.StringUtils;
import com.gkhy.system.domain.SysExpertClassify;
import com.gkhy.system.mapper.SysExpertClassifyMapper;
import com.gkhy.system.service.SysExpertClassifyService;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors;
/**
*
* 系统专家分类表 服务实现类
*
*
* @author kzy
* @since 2023-11-27 16:33:33
*/
@Service
public class SysExpertClassifyServiceImpl extends ServiceImpl implements SysExpertClassifyService {
@Override
public List classifyTree(SysExpertClassify expertClassify) {
LambdaQueryWrapper lambdaQueryWrapper = Wrappers.lambdaQuery();
if(StringUtils.isNotBlank(expertClassify.getClassifyName())){
lambdaQueryWrapper.like(SysExpertClassify::getClassifyName,expertClassify.getClassifyName());
}
lambdaQueryWrapper.eq(SysExpertClassify::getDelFlag, DeleteFlagEnum.UN_DELETE.getCode());
List classifies= list(lambdaQueryWrapper);
//筛选出所有一级标签
return classifies.stream()
.filter(classifyEntity -> classifyEntity.getParentId()==0L)
.peek(classifyEntity -> classifyEntity.setChildren(this.listClassifyChildren(classifyEntity,classifies)))
.collect(Collectors.toList());
}
public List listClassifyChildren(SysExpertClassify classify,List classifies){
//递归查找子类
return classifies.stream()
.filter(classifyEntity -> Objects.equals(classifyEntity.getParentId(), classify.getId()))
.peek(classifyEntity -> classifyEntity.setChildren(this.listClassifyChildren(classifyEntity,classifies)))
.collect(Collectors.toList());
}
@Override
public int modClassify(SysExpertClassify expertClassify) {
expertClassify.setUpdateBy(SecurityUtils.getUsername());
boolean b=updateById(expertClassify);
if(!b){
throw new ServiceException("修改专家分类失败");
}
return 1;
}
@Override
public int delClassify(Long classifyId) {
SysExpertClassify classify = new SysExpertClassify();
classify.setId(classifyId);
classify.setDelFlag(DeleteFlagEnum.DELETED.getCode());
classify.setUpdateBy(SecurityUtils.getUsername());
boolean b=updateById(classify);
if(!b){
throw new ServiceException("删除专家分类失败");
}
return 1;
}
@Override
public int addClassify(SysExpertClassify expertClassify) {
expertClassify.setCreateBy(SecurityUtils.getUsername());
boolean b=save(expertClassify);
if(!b){
throw new ServiceException("新增专家分类失败");
}
return 1;
}
}