You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

91 lines
3.7 KiB
Java

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

package com.attendance.controller;
import com.attendance.annotation.OperationLog;
import com.attendance.common.Result;
import com.attendance.entity.Classroom;
import com.attendance.service.ClassroomService;
import com.attendance.vo.ClassroomAttendanceVO;
import com.attendance.vo.ClassroomVO;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.tags.Tag;
import org.springframework.format.annotation.DateTimeFormat;
import org.springframework.web.bind.annotation.*;
import java.time.LocalDateTime;
import java.util.List;
@Tag(name = "教室管理", description = "教室信息相关接口")
@RestController
@RequestMapping("/classroom")
public class ClassroomController {
private final ClassroomService classroomService;
public ClassroomController(ClassroomService classroomService) {
this.classroomService = classroomService;
}
@Operation(summary = "分页查询教室列表")
@GetMapping("/page")
public Result<IPage<ClassroomVO>> page(
@Parameter(description = "页码") @RequestParam(defaultValue = "1") Long current,
@Parameter(description = "每页条数") @RequestParam(defaultValue = "10") Long size,
@Parameter(description = "教学楼ID") @RequestParam(required = false) Long buildingId) {
Page<ClassroomVO> page = new Page<>(current, size);
return Result.success(classroomService.getClassroomPage(page, buildingId));
}
@Operation(summary = "获取教室详情")
@GetMapping("/{id}")
public Result<Classroom> getById(@PathVariable Long id) {
return Result.success(classroomService.getById(id));
}
@OperationLog(module = "教室管理", action = "新增教室")
@Operation(summary = "新增教室")
@PostMapping
public Result<Void> save(@RequestBody Classroom classroom) {
classroomService.save(classroom);
return Result.ok("新增成功");
}
@OperationLog(module = "教室管理", action = "修改教室")
@Operation(summary = "修改教室")
@PutMapping("/{id}")
public Result<Void> update(@PathVariable Long id, @RequestBody Classroom classroom) {
classroom.setId(id);
classroomService.updateById(classroom);
return Result.ok("修改成功");
}
@OperationLog(module = "教室管理", action = "删除教室")
@Operation(summary = "删除教室")
@DeleteMapping
public Result<Void> remove(@Parameter(description = "教室ID列表") @RequestBody List<Long> ids) {
classroomService.removeByIds(ids);
return Result.ok("删除成功");
}
@Operation(summary = "获取全部教室")
@GetMapping("/list")
public Result<List<ClassroomVO>> list(
@Parameter(description = "教学楼ID") @RequestParam(required = false) Long buildingId) {
return Result.success(classroomService.getClassroomList(buildingId));
}
@Operation(summary = "获取教室当前考勤信息")
@GetMapping("/{id}/current-attendance")
public Result<ClassroomAttendanceVO> currentAttendance(
@Parameter(description = "教室ID") @PathVariable Long id,
@Parameter(description = "当前时间格式yyyy-MM-dd HH:mm:ss") @RequestParam(required = false) @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") LocalDateTime currentTime) {
if (currentTime == null) {
currentTime = LocalDateTime.now();
}
ClassroomAttendanceVO vo = classroomService.getCurrentAttendance(id, currentTime);
return Result.success(vo);
}
}