bug
jiangqs
2023-07-20 882edc4b8ac7cb11ec9d536b5573df2c7ed512ef
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
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);
        this.saveOrUpdate(sysClassification);
        if(sysClassification.getClassType()==1){
            articleService.deleteArticleClass(classId);
        }else if(sysClassification.getClassType()==2){
            remoteGoodsService.deleteGoodsClass(classId);
        }
    }
 
    /**
     * @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);
        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.getAddClassId());
            if(subSysClassification!=null){
                subSysClassification.setRelationNum(subSysClassification.getRelationNum()-1);
                this.saveOrUpdate(subSysClassification);
            }
        }
    }
}