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> pageList(@RequestBody ClassesPageRequestVM model) { model.setCreateId(getCurrentUser().getId()); PageInfo pageInfo = classesService.page(model); PageInfo 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> classesUserPageList(@RequestBody ClassesUserPageRequestVM model) { if (null == model.getClasses()) { List classesIds = classesService.getClassesIdByCreate(getCurrentUser().getId()); model.setClassesIds(classesIds); } else { model.setClassesIds(Arrays.asList(model.getClasses())); } PageInfo pageInfo = classesService.classesUserPageList(model); PageInfo 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> selectAll() { List classes = classesService.getClassesByCreate(getCurrentUser().getId()); return RestResponse.ok(classes); } /** * 班级查看 * * @param id the id * @return the rest response */ @PostMapping("/select/{id}") public RestResponse 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(); } }