package nju.seec.helper.controller; import nju.seec.helper.aspect.auth.Auth; import nju.seec.helper.aspect.auth.LoginUser; import nju.seec.helper.controller.response.PageResponse; import nju.seec.helper.dto.message.MessageDTO; import nju.seec.helper.entity.Message; import nju.seec.helper.enums.UserType; import nju.seec.helper.service.MessageService; import org.springframework.data.domain.Pageable; import org.springframework.data.web.PageableDefault; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; /** * @author cst */ @RestController @RequestMapping("/api/message") public class MessageController { private final MessageService messageService; public MessageController(MessageService messageService) { this.messageService = messageService; } @Auth(roles = {UserType.TEACHER, UserType.STUDENT}, message = "设置已读") @PutMapping("/read") public void readMessages(LoginUser user, @Validated @RequestBody MessageDTO messageDTO) { messageService.readMessages(user, messageDTO); } @Auth(roles = {UserType.TEACHER, UserType.STUDENT}, message = "删除消息") @PutMapping("/delete") public void deleteMessages(LoginUser user, @Validated @RequestBody MessageDTO messageDTO) { messageService.deleteMessages(user, messageDTO); } @Auth(roles = {UserType.TEACHER, UserType.STUDENT}, message = "获取未读消息") @GetMapping("/unread") public PageResponse getUnreadMessages(LoginUser user, @RequestParam(required = false, defaultValue = "") String key, @PageableDefault(Integer.MAX_VALUE) Pageable pageable) { return PageResponse.of(messageService.getUnreadMessages(user, key, pageable)); } @Auth(roles = {UserType.TEACHER, UserType.STUDENT}, message = "获取已读消息") @GetMapping("/read") public PageResponse getReadMessages(LoginUser user, @RequestParam(required = false, defaultValue = "") String key, @PageableDefault(Integer.MAX_VALUE) Pageable pageable) { return PageResponse.of(messageService.getReadMessages(user, key, pageable)); } }