From f104c89d08f92006a2e07f28a267b83bae5114a0 Mon Sep 17 00:00:00 2001 From: heshunme Date: Fri, 5 Jul 2024 02:21:59 +0800 Subject: [PATCH] =?UTF-8?q?=E5=88=9D=E6=AD=A5=E6=B7=BB=E5=8A=A0=E4=BA=86?= =?UTF-8?q?=E7=94=A8=E6=88=B7=E6=9D=83=E9=99=90=E5=8C=BA=E5=88=AB=E5=AF=B9?= =?UTF-8?q?=E5=BE=85=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/NewsController.java | 17 ++++++++++++++++- .../cmh/backend/NewsManagement/model/News.java | 2 +- .../repository/NewsRepository.java | 3 +++ .../NewsManagement/service/NewsService.java | 10 ++++++++-- 4 files changed, 28 insertions(+), 4 deletions(-) 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 29c9d43..fd53a21 100644 --- a/src/main/java/org/cmh/backend/NewsManagement/controller/NewsController.java +++ b/src/main/java/org/cmh/backend/NewsManagement/controller/NewsController.java @@ -6,7 +6,10 @@ import org.cmh.backend.NewsManagement.dto.MessageResponse; import org.cmh.backend.NewsManagement.dto.NewsRequest; import org.cmh.backend.NewsManagement.model.News; import org.cmh.backend.NewsManagement.service.NewsService; +import org.cmh.backend.Utils.JwtUtil; import org.cmh.backend.Utils.JwtVerify; +import org.cmh.backend.authentication.model.UserHS; +import org.cmh.backend.authentication.service.UserService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.dao.DataIntegrityViolationException; import org.springframework.http.HttpStatus; @@ -19,14 +22,26 @@ public class NewsController { @Autowired private NewsService newsService; + @Autowired + private UserService userService; + @GetMapping @JwtVerify public ResponseEntity getNewsByRange(@RequestParam Integer start, @RequestParam Integer end, @RequestParam String token) { + String username = JwtUtil.extractUsername(token); + UserHS user = userService.getUserByUsername(username); + // TODO:完善用户权限 + if (user.getSuperAdmin()) { + + } else { + + } + if (start >= end) { return new ResponseEntity<>(HttpStatus.BAD_REQUEST); } long newsCount = newsService.getNewsCount(); - return new ResponseEntity<>(new GetNewsListResponse(newsCount, newsService.getNewsByRange(start, end)), HttpStatus.OK); + return new ResponseEntity<>(new GetNewsListResponse(newsCount, newsService.getNewsByRange(start, end, user)), HttpStatus.OK); } @GetMapping("/{id}") diff --git a/src/main/java/org/cmh/backend/NewsManagement/model/News.java b/src/main/java/org/cmh/backend/NewsManagement/model/News.java index 519dfa6..64edf3f 100644 --- a/src/main/java/org/cmh/backend/NewsManagement/model/News.java +++ b/src/main/java/org/cmh/backend/NewsManagement/model/News.java @@ -31,6 +31,6 @@ public class News { @CreationTimestamp private LocalDateTime createdAt; - + // TODO:添加外键绑定 private String tenant; } 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 5997b39..eeb9a87 100644 --- a/src/main/java/org/cmh/backend/NewsManagement/repository/NewsRepository.java +++ b/src/main/java/org/cmh/backend/NewsManagement/repository/NewsRepository.java @@ -7,4 +7,7 @@ import org.springframework.data.jpa.repository.JpaRepository; public interface NewsRepository extends JpaRepository { Page findAllByOrderByIdDesc(Pageable pageable); + Page findByTenantOrderByIdDesc(String tenant, 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 index 2060a53..48d19b9 100644 --- a/src/main/java/org/cmh/backend/NewsManagement/service/NewsService.java +++ b/src/main/java/org/cmh/backend/NewsManagement/service/NewsService.java @@ -4,6 +4,7 @@ import jakarta.persistence.EntityNotFoundException; import org.cmh.backend.NewsManagement.dto.NewsRequest; import org.cmh.backend.NewsManagement.model.News; import org.cmh.backend.NewsManagement.repository.NewsRepository; +import org.cmh.backend.authentication.model.UserHS; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.Page; import org.springframework.data.domain.PageRequest; @@ -18,7 +19,7 @@ public class NewsService { @Autowired private NewsRepository newsRepository; - public List getNewsByRange(int start, int end) { + public List getNewsByRange(int start, int end, UserHS user) { if (start < 0 || end <= start) { throw new IllegalArgumentException("Invalid start or end range"); } @@ -31,7 +32,12 @@ public class NewsService { for (int pageNumber = startPageNumber; pageNumber <= endPageNumber; pageNumber++) { Pageable pageable = PageRequest.of(pageNumber, pageSize); - Page newsPage = newsRepository.findAllByOrderByIdDesc(pageable); + Page newsPage = null; + if (user.getSuperAdmin()) { + newsPage = newsRepository.findAllByOrderByIdDesc(pageable); + } else { + newsPage = newsRepository.findByTenantOrderByIdDesc(user.getUsername(), pageable); + } if (newsPage.hasContent()) { result.addAll(newsPage.getContent());