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; /** *

* 分类 服务实现类 *

* * @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); if(sysClassification.getClassType()==1){ articleService.deleteArticleClass(classId); }else if(sysClassification.getClassType()==2){ List 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 */ @Override public List listByType(Integer classType){ LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.eq(SysClassification::getDelFlag,0) .eq(SysClassification::getClassType,classType) .orderByDesc(SysClassification::getClassSort) .orderByDesc(SysClassification::getCreateTime); List sysClassificationList = this.list(queryWrapper); List 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); } } } }