diff --git a/src/main/java/org/cmh/backend/NewsManagement/controller/NewsController.java b/src/main/java/org/cmh/backend/NewsManagement/controller/NewsController.java index d0a2ff0..30d0f45 100644 --- a/src/main/java/org/cmh/backend/NewsManagement/controller/NewsController.java +++ b/src/main/java/org/cmh/backend/NewsManagement/controller/NewsController.java @@ -1,43 +1,45 @@ package org.cmh.backend.NewsManagement.controller; +import org.cmh.backend.NewsManagement.dto.GetNewsByPageRequest; +import org.cmh.backend.NewsManagement.model.News; +import org.cmh.backend.NewsManagement.service.NewsService; +import org.cmh.backend.Utils.JwtVerify; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.domain.Page; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; -import org.springframework.web.bind.annotation.*; - -import java.util.ArrayList; -import java.util.List; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; @RestController -@RequestMapping("/api/news") +@RequestMapping("/news") public class NewsController { - // @PostMapping("/example") -// public ResponseEntity example(@RequestBody ExampleRequest request) { -// return new ResponseEntity<>(new ExampleResponse("Hello World!"), HttpStatus.OK); + @Autowired + private NewsService newsService; + + @GetMapping("/getNewsPage") + @JwtVerify + public ResponseEntity> getNewsPage(@RequestBody GetNewsByPageRequest request) { + return new ResponseEntity<>(newsService.getNewsByPage(request), HttpStatus.OK); + } + +// @PostMapping +// public ResponseEntity createNews(@RequestBody NewsRequest request) { +// // TODO: 实现创建资讯的逻辑 +// return new ResponseEntity<>("创建成功", HttpStatus.OK); +// } +// +// @PutMapping("/{id}") +// public ResponseEntity updateNews(@PathVariable Long id, @RequestBody NewsRequest request) { +// // TODO: 实现修改资讯的逻辑 +// return new ResponseEntity<>("修改成功", HttpStatus.OK); +// } +// +// @DeleteMapping("/{id}") +// public ResponseEntity deleteNews(@PathVariable Long id) { +// // TODO: 实现删除资讯的逻辑 +// return new ResponseEntity<>("删除成功", HttpStatus.OK); // } - @GetMapping - public ResponseEntity> getNewsList( - @RequestParam(required = false) String title, - @RequestParam(required = false) String summary, - @RequestParam(required = false) String author) { - // TODO: 实现获取资讯列表的逻辑 - return new ResponseEntity<>(new ArrayList<>(), HttpStatus.OK); - } - - @PostMapping - public ResponseEntity createNews(@RequestBody NewsRequest request) { - // TODO: 实现创建资讯的逻辑 - return new ResponseEntity<>("创建成功", HttpStatus.OK); - } - - @PutMapping("/{id}") - public ResponseEntity updateNews(@PathVariable Long id, @RequestBody NewsRequest request) { - // TODO: 实现修改资讯的逻辑 - return new ResponseEntity<>("修改成功", HttpStatus.OK); - } - - @DeleteMapping("/{id}") - public ResponseEntity deleteNews(@PathVariable Long id) { - // TODO: 实现删除资讯的逻辑 - return new ResponseEntity<>("删除成功", HttpStatus.OK); - } } diff --git a/src/main/java/org/cmh/backend/NewsManagement/dto/GetNewsByPageRequest.java b/src/main/java/org/cmh/backend/NewsManagement/dto/GetNewsByPageRequest.java new file mode 100644 index 0000000..1ad7ffc --- /dev/null +++ b/src/main/java/org/cmh/backend/NewsManagement/dto/GetNewsByPageRequest.java @@ -0,0 +1,13 @@ +package org.cmh.backend.NewsManagement.dto; + +import lombok.Getter; +import lombok.Setter; +import org.cmh.backend.Utils.JwtRequest; + + +@Getter +@Setter +public class GetNewsByPageRequest extends JwtRequest { + private Integer pageNo; + private Integer pageSize; +} diff --git a/src/main/java/org/cmh/backend/NewsManagement/repository/NewsRepository.java b/src/main/java/org/cmh/backend/NewsManagement/repository/NewsRepository.java index 3fb4c1a..7faad95 100644 --- a/src/main/java/org/cmh/backend/NewsManagement/repository/NewsRepository.java +++ b/src/main/java/org/cmh/backend/NewsManagement/repository/NewsRepository.java @@ -1,8 +1,13 @@ package org.cmh.backend.NewsManagement.repository; import org.cmh.backend.NewsManagement.model.News; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; import org.springframework.data.jpa.repository.JpaRepository; +import java.util.ArrayList; +import java.util.List; + public interface NewsRepository extends JpaRepository { News findByTitle(String title); @@ -16,4 +21,5 @@ public interface NewsRepository extends JpaRepository { News findByTitleAndSummaryAndAuthorAndImagePath(String title, String summary, String author, String imagePath); + Page findAllByOrderByIdDesc(Pageable pageable); } \ No newline at end of file diff --git a/src/main/java/org/cmh/backend/NewsManagement/service/NewsService.java b/src/main/java/org/cmh/backend/NewsManagement/service/NewsService.java new file mode 100644 index 0000000..3f42e2c --- /dev/null +++ b/src/main/java/org/cmh/backend/NewsManagement/service/NewsService.java @@ -0,0 +1,29 @@ +package org.cmh.backend.NewsManagement.service; + +import org.cmh.backend.NewsManagement.dto.GetNewsByPageRequest; +import org.cmh.backend.NewsManagement.model.News; +import org.cmh.backend.NewsManagement.repository.NewsRepository; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.PageRequest; +import org.springframework.data.domain.Pageable; +import org.springframework.stereotype.Service; + +@Service +public class NewsService { + @Autowired + private NewsRepository newsRepository; + + public Page getNewsByPage(GetNewsByPageRequest request) { + int pageNo = request.getPageNo(); + int pageSize = request.getPageSize(); + if (pageNo < 1) { + pageNo = 1; + } + if (pageSize < 1) { + pageSize = 10; + } + Pageable pageable = PageRequest.of(pageNo - 1, pageSize); + return newsRepository.findAllByOrderByIdDesc(pageable); + } +}