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.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.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.*;
/**
*
* 分类 服务实现类
*
*
* @author jqs
* @since 2023-04-25
*/
@Service
public class SysClassificationServiceImpl extends ServiceImpl 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 getSysClassificationList(List classIds){
Map sysClassificationMap = new HashMap<>();
List 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
*/
@Override
public List 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 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);
this.saveOrUpdate(sysClassification);
if(sysClassification.getClassType()==1){
articleService.deleteArticleClass(classId);
}else if(sysClassification.getClassType()==2){
remoteGoodsService.deleteGoodsClass(classId);
}
}
}