package com.ruoyi.system.service.impl.config;
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import com.ruoyi.common.core.exception.ServiceException;
|
import com.ruoyi.system.api.constant.AppErrorConstant;
|
import com.ruoyi.system.api.domain.dto.MgtClassNumDto;
|
import com.ruoyi.system.api.domain.poji.config.SysClassification;
|
import com.ruoyi.system.api.service.RemoteGoodsService;
|
import com.ruoyi.system.domain.dto.MgtClassificationEditDto;
|
import com.ruoyi.system.domain.dto.MgtClassificationPageDto;
|
import com.ruoyi.system.domain.vo.AppClassListVo;
|
import com.ruoyi.system.domain.vo.MgtClassificationPageVo;
|
import com.ruoyi.system.mapper.config.SysClassificationMapper;
|
import com.ruoyi.system.service.config.ArticleService;
|
import com.ruoyi.system.service.config.SysClassificationService;
|
import org.springframework.stereotype.Service;
|
|
import javax.annotation.Resource;
|
import java.util.*;
|
import java.util.stream.Collectors;
|
|
/**
|
* <p>
|
* 分类 服务实现类
|
* </p>
|
*
|
* @author jqs
|
* @since 2023-04-25
|
*/
|
@Service
|
public class SysClassificationServiceImpl extends ServiceImpl<SysClassificationMapper, SysClassification> implements SysClassificationService {
|
|
@Resource
|
private SysClassificationMapper sysClassificationMapper;
|
|
@Resource
|
private RemoteGoodsService remoteGoodsService;
|
|
@Resource
|
private ArticleService articleService;
|
|
/**
|
* @description: TODO
|
* @author jqs34
|
* @date 2023/6/4 11:59
|
* @version 1.0
|
*/
|
@Override
|
public Map<Long,SysClassification> getSysClassificationList(List<Long> classIds){
|
Map<Long, SysClassification> sysClassificationMap = new HashMap<>();
|
List<SysClassification> sysClassifications = this.listByIds(classIds);
|
for (SysClassification sysClassification : sysClassifications) {
|
sysClassificationMap.put(sysClassification.getClassId(), sysClassification);
|
}
|
return sysClassificationMap;
|
}
|
|
/**
|
* @description 分页获取分类
|
* @author jqs
|
* @date 2023/6/8 10:11
|
* @param page
|
* @param mgtClassificationPageDto
|
* @return List<MgtClassificationPageVo>
|
*/
|
@Override
|
public List<MgtClassificationPageVo> pageClassification(Page page, MgtClassificationPageDto mgtClassificationPageDto){
|
return sysClassificationMapper.pageClassification(page, mgtClassificationPageDto);
|
}
|
|
/**
|
* @description 修改分类
|
* @author jqs
|
* @date 2023/6/8 10:23
|
* @param mgtClassificationEditDto
|
* @return void
|
*/
|
@Override
|
public void editClassification(MgtClassificationEditDto mgtClassificationEditDto){
|
// 查询未删除的同类名同分类类型的分类
|
LambdaQueryWrapper<SysClassification> queryWrapper = new LambdaQueryWrapper<>();
|
queryWrapper.eq(SysClassification::getDelFlag,0)
|
.eq(SysClassification::getClassType,mgtClassificationEditDto.getClassType())
|
.eq(SysClassification::getClassName,mgtClassificationEditDto.getClassName());
|
SysClassification sysClassificationSame = this.getOne(queryWrapper);
|
// 获取分类ID
|
Long classId = mgtClassificationEditDto.getClassId();
|
SysClassification sysClassification;
|
// 如果分类ID不为空
|
if(classId != null){
|
// 如果存在同类名同分类类型的分类,但是分类ID不同,抛出异常
|
if(sysClassificationSame != null && !Objects.equals(sysClassificationSame.getClassId(), classId)){
|
throw new ServiceException(AppErrorConstant.CLASS_DOUBLE);
|
}
|
// 获取要修改的分类
|
sysClassification = this.getById(classId);
|
}else{ // 如果分类ID为空
|
// 如果存在同类名同分类类型的分类,抛出异常
|
if(sysClassificationSame!=null){
|
throw new ServiceException(AppErrorConstant.CLASS_DOUBLE);
|
}
|
// 新建分类
|
sysClassification = new SysClassification();
|
sysClassification.setDelFlag(0);
|
sysClassification.setRelationNum(0);
|
}
|
// 设置分类信息
|
sysClassification.setClassType(mgtClassificationEditDto.getClassType());
|
sysClassification.setClassName(mgtClassificationEditDto.getClassName());
|
sysClassification.setClassSort(mgtClassificationEditDto.getClassSort());
|
sysClassification.setCreateTime(new Date());
|
// 保存或更新分类
|
this.saveOrUpdate(sysClassification);
|
}
|
|
|
/**
|
* @description 删除分类
|
* @author jqs
|
* @date 2023/6/8 10:28
|
* @param classId
|
* @return void
|
*/
|
@Override
|
public void deleteClassification(Long classId){
|
SysClassification sysClassification = this.getById(classId);
|
sysClassification.setDelFlag(1);
|
if(sysClassification.getClassType()==1){
|
articleService.deleteArticleClass(classId);
|
}else if(sysClassification.getClassType()==2){
|
List<String> goodsNameList = remoteGoodsService.listGoodsNameByGoodsClass(classId).getData();
|
if(goodsNameList!=null&&goodsNameList.size()>0){
|
throw new ServiceException("无法删除,该分类下还有关联商品-"+goodsNameList.toString());
|
}
|
}
|
this.saveOrUpdate(sysClassification);
|
}
|
|
/**
|
* @description
|
* @author jqs
|
* @date 2023/7/13 11:21
|
* @param
|
* @return List<AppClassListVo>
|
*/
|
@Override
|
public List<AppClassListVo> listByType(Integer classType){
|
LambdaQueryWrapper<SysClassification> queryWrapper = new LambdaQueryWrapper<>();
|
queryWrapper.eq(SysClassification::getDelFlag,0)
|
.eq(SysClassification::getClassType,classType)
|
.orderByDesc(SysClassification::getClassSort)
|
.orderByDesc(SysClassification::getCreateTime);
|
List<SysClassification> sysClassificationList = this.list(queryWrapper);
|
List<AppClassListVo> classListVos = sysClassificationList.stream().map(sysClassification ->{
|
AppClassListVo appClassListVo = new AppClassListVo();
|
appClassListVo.setClassId(sysClassification.getClassId());
|
appClassListVo.setClassName(sysClassification.getClassName());
|
return appClassListVo;
|
}).collect(Collectors.toList());
|
return classListVos;
|
}
|
|
/**
|
* @description 分类变化
|
* @author jqs
|
* @date 2023/7/20 14:32
|
* @param mgtClassNumDto
|
* @return void
|
*/
|
@Override
|
public void changeClassNum(MgtClassNumDto mgtClassNumDto){
|
if(mgtClassNumDto.getAddClassId()!=null){
|
SysClassification addSysClassification = this.getById(mgtClassNumDto.getAddClassId());
|
if(addSysClassification!=null){
|
addSysClassification.setRelationNum(addSysClassification.getRelationNum()+1);
|
this.saveOrUpdate(addSysClassification);
|
}
|
}
|
if(mgtClassNumDto.getSubClassId()!=null){
|
SysClassification subSysClassification = this.getById(mgtClassNumDto.getSubClassId());
|
if(subSysClassification!=null){
|
subSysClassification.setRelationNum(subSysClassification.getRelationNum()-1);
|
this.saveOrUpdate(subSysClassification);
|
}
|
}
|
}
|
}
|