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());