xiangpei
2024-03-28 0f431b52e0936456bd165d9553761bfd8a5a0517
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
package com.mindskip.xzs.controller.teacher;
 
import com.mindskip.xzs.base.BaseApiController;
import com.mindskip.xzs.base.RestResponse;
import com.mindskip.xzs.configuration.property.SystemConfig;
import com.mindskip.xzs.domain.Classes;
import com.mindskip.xzs.domain.classes.ClassesUserInfo;
import com.mindskip.xzs.service.ClassesService;
import com.mindskip.xzs.utility.DateTimeUtil;
import com.mindskip.xzs.utility.PageInfoHelper;
import com.mindskip.xzs.viewmodel.teacher.classes.ClassesEditVM;
import com.mindskip.xzs.viewmodel.teacher.classes.ClassesPageRequestVM;
import com.mindskip.xzs.viewmodel.teacher.classes.ClassesResponseVM;
import com.mindskip.xzs.viewmodel.teacher.classes.ClassesUserPageRequestVM;
import com.mindskip.xzs.viewmodel.teacher.user.UserClassResponseVM;
import com.github.pagehelper.PageInfo;
import lombok.AllArgsConstructor;
import org.springframework.web.bind.annotation.*;
 
import javax.validation.Valid;
import java.util.Arrays;
import java.util.Date;
import java.util.List;
import java.util.UUID;
 
 
/**
 * @version 2.2.0
 * @description: 班级
 * Copyright (C), 2020-2021, 武汉思维跳跃科技有限公司
 * @date 2021 /9/7 9:45
 */
@RestController("TeacherClassesController")
@RequestMapping(value = "/api/teacher/classes")
@AllArgsConstructor
public class ClassesController extends BaseApiController {
 
    private final SystemConfig systemConfig;
    private final ClassesService classesService;
 
    /**
     * 班级分页
     *
     * @param model the model
     * @return the rest response
     */
    @PostMapping("/page")
    public RestResponse<PageInfo<ClassesResponseVM>> pageList(@RequestBody ClassesPageRequestVM model) {
        model.setCreateId(getCurrentUser().getId());
        PageInfo<Classes> pageInfo = classesService.page(model);
        PageInfo<ClassesResponseVM> page = PageInfoHelper.copyMap(pageInfo, e -> {
            ClassesResponseVM vm = modelMapper.map(e, ClassesResponseVM.class);
            vm.setJoinUrl(e.getClassesUuid());
            vm.setCreateTime(DateTimeUtil.dateFormat(e.getCreateTime()));
            return vm;
        });
        return RestResponse.ok(page);
    }
 
 
    /**
     * 班级成员
     *
     * @param model the model
     * @return the rest response
     */
    @PostMapping("/page/classesUser")
    public RestResponse<PageInfo<UserClassResponseVM>> classesUserPageList(@RequestBody ClassesUserPageRequestVM model) {
        if (null == model.getClasses()) {
            List<Integer> classesIds = classesService.getClassesIdByCreate(getCurrentUser().getId());
            model.setClassesIds(classesIds);
        } else {
            model.setClassesIds(Arrays.asList(model.getClasses()));
        }
        PageInfo<ClassesUserInfo> pageInfo = classesService.classesUserPageList(model);
        PageInfo<UserClassResponseVM> page = PageInfoHelper.copyMap(pageInfo, uc -> {
            UserClassResponseVM vm = modelMapper.map(uc, UserClassResponseVM.class);
            vm.setJoinTime(DateTimeUtil.dateFormat(uc.getJoinTime()));
            return vm;
        });
        return RestResponse.ok(page);
    }
 
 
    /**
     * 所有班级列表
     *
     * @return the rest response
     */
    @PostMapping("/selectAll")
    public RestResponse<List<Classes>> selectAll() {
        List<Classes> classes = classesService.getClassesByCreate(getCurrentUser().getId());
        return RestResponse.ok(classes);
    }
 
 
    /**
     * 班级查看
     *
     * @param id the id
     * @return the rest response
     */
    @PostMapping("/select/{id}")
    public RestResponse<ClassesResponseVM> select(@PathVariable Integer id) {
        Classes classes = classesService.selectById(id);
        ClassesResponseVM vm = modelMapper.map(classes, ClassesResponseVM.class);
        return RestResponse.ok(vm);
    }
 
 
    /**
     * 班级编辑
     *
     * @param model the model
     * @return the rest response
     */
    @PostMapping("/edit")
    public RestResponse edit(@RequestBody @Valid ClassesEditVM model) {
        if (model.getId() == null) {
            Classes existClasses = classesService.getClasses(getCurrentUser().getId(), model.getName());
            if (existClasses != null) {
                return RestResponse.fail(2, "班级已存在");
            }
            Classes classes = modelMapper.map(model, Classes.class);
            classes.setCreateTime(new Date());
            classes.setDeleted(false);
            classes.setCreateUser(getCurrentUser().getId());
            classes.setCreateUserName(getCurrentUser().getUserName());
            classes.setClassesNumber(0);
            classes.setClassesUuid(UUID.randomUUID().toString());
            classesService.insertByFilter(classes);
        } else {
            Classes classes = classesService.selectById(model.getId());
            if (classes.getName() != model.getName()) {
                Classes existClasses = classesService.getClasses(getCurrentUser().getId(), model.getName());
                if (existClasses != null) {
                    return RestResponse.fail(2, "班级已存在");
                }
            }
            classes.setName(model.getName());
            classesService.updateByIdFilter(classes);
        }
        return RestResponse.ok();
    }
 
 
    /**
     * 班级成员删除
     *
     * @param id the id
     * @return the rest response
     */
    @PostMapping("/removeOutUser/{id}")
    public RestResponse removeOutUser(@PathVariable Integer id) {
        classesService.removeOutUser(id);
        return RestResponse.ok();
    }
 
 
    /**
     * 班级删除
     *
     * @param id the id
     * @return the rest response
     */
    @PostMapping("/deleteClasses/{id}")
    public RestResponse deleteClasses(@PathVariable Integer id) {
        Classes classes = classesService.selectById(id);
        classes.setDeleted(true);
        classesService.updateByIdFilter(classes);
        return RestResponse.ok();
    }
 
}