无关风月
2024-12-31 52461f1688e83970d4aa3aa6b835bdf7719f5769
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
package com.ruoyi.study.controller;
 
 
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.web.page.PageInfo;
import com.ruoyi.study.domain.TCategory;
import com.ruoyi.study.domain.TStory;
import com.ruoyi.study.domain.TSubject;
import com.ruoyi.study.dto.CategoryQuery;
import com.ruoyi.study.service.ICategoryService;
import com.ruoyi.study.service.ITStoryService;
import com.ruoyi.study.service.ITSubjectService;
import com.ruoyi.study.vo.CategoryVO;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.*;
 
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
 
/**
 * <p>
 * 2.0新增-故事分类管理 前端控制器
 * </p>
 *
 * @author 无关风月
 * @since 2024-04-26
 */
@RestController
@RequestMapping("/base/tCategoryStory")
public class TCategoryStoryController {
 
    @Autowired
    private ITSubjectService subjectService;
    @Autowired
    private ICategoryService categoryService;
    @Autowired
    private ITStoryService storyService;
    @PostMapping("/categoryList")
    @ApiOperation(value = "列表查询", tags = {"2.0新增-故事分类管理"})
    public R<PageInfo<CategoryVO>> subjectList(@RequestBody CategoryQuery query) {
        query.setState(2);
        List<Integer> integers = new ArrayList<>();
 
        if (StringUtils.hasLength(query.getSecondName())){
            List<Integer> collect = categoryService.lambdaQuery()
                    .eq(TCategory::getType, 2)
                    .eq(TCategory::getState, query.getState())
                    .like(TCategory::getName, query.getSecondName())
                    .list().stream().map(TCategory::getParentId).collect(Collectors.toList());
            integers.addAll(collect);
        }
        if (StringUtils.hasLength(query.getFirstName())){
            List<Integer> collect = categoryService.lambdaQuery()
                    .eq(TCategory::getType, 1)
                    .eq(TCategory::getState, query.getState())
                    .like(TCategory::getName, query.getFirstName())
                    .list().stream().map(TCategory::getId).collect(Collectors.toList());
            integers.addAll(collect);
        }
        if (StringUtils.hasLength(query.getSecondName())&&StringUtils.hasLength(query.getFirstName())){
            if (integers.isEmpty()){
                integers.add(-1);
            }
        }
        query.setFirstIds(integers);
        PageInfo<CategoryVO> res = new PageInfo<>(query.getPageNumber(), query.getPageSize());
        List<CategoryVO> list =  categoryService.listAll(query,res);
        for (CategoryVO categoryVO : list) {
            List<TCategory> list1 = categoryService.lambdaQuery()
                    .eq(TCategory::getParentId, categoryVO.getId())
                    .eq(TCategory::getState,2).list();
            categoryVO.setSecondList(list1);
        }
        res.setRecords(list);
        res.setTotal(list.size());
        return R.ok(res);
    }
    @PostMapping("/add")
    @ApiOperation(value = "添加", tags = {"2.0新增-故事分类管理"})
    public R add(@RequestBody TCategory dto) {
        dto.setState(2);
        categoryService.save(dto);
        return R.ok("添加成功");
    }
    @PostMapping("/update")
    @ApiOperation(value = "编辑", tags = {"2.0新增-故事分类管理"})
    public R update(@RequestBody TCategory dto) {
        dto.setState(2);
        categoryService.updateById(dto);
        return R.ok("编辑成功");
    }
    @PostMapping("/delete")
    @ApiOperation(value = "删除", tags = {"2.0新增-故事分类管理"})
    public R delete(@RequestParam("id") Integer id) {
        TCategory byId = categoryService.getById(id);
        switch (byId.getType()){
            case 1:
                // 一级分类
                List<TStory> list = storyService.lambdaQuery().eq(TStory::getFirstCategory, id).list();
                if (!list.isEmpty()){
                    // 操作失败,当前分类正在被使用
                    return R.fail("当前分类正在被使用");
                }
                break;
            case 2:
                // 二级分类
                List<TStory> list2 = storyService.lambdaQuery().eq(TStory::getSecondCategory, id).list();
                if (!list2.isEmpty()){
                    // 操作失败,当前分类正在被使用
                    return R.fail("当前分类正在被使用");
                }
                break;
        }
        categoryService.removeById(id);
        return R.ok();
    }
}