| | |
| | | package com.ruoyi.system.service.impl.config; |
| | | |
| | | import com.ruoyi.system.api.domain.poji.config.SysClassification; |
| | | import com.ruoyi.system.mapper.config.SysClassificationMapper; |
| | | import com.ruoyi.system.service.config.SysClassificationService; |
| | | 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> |
| | |
| | | @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); |
| | | } |
| | | } |
| | | } |
| | | } |