初步添加了用户权限区别对待。
This commit is contained in:
parent
2c12fc075f
commit
f104c89d08
@ -6,7 +6,10 @@ import org.cmh.backend.NewsManagement.dto.MessageResponse;
|
|||||||
import org.cmh.backend.NewsManagement.dto.NewsRequest;
|
import org.cmh.backend.NewsManagement.dto.NewsRequest;
|
||||||
import org.cmh.backend.NewsManagement.model.News;
|
import org.cmh.backend.NewsManagement.model.News;
|
||||||
import org.cmh.backend.NewsManagement.service.NewsService;
|
import org.cmh.backend.NewsManagement.service.NewsService;
|
||||||
|
import org.cmh.backend.Utils.JwtUtil;
|
||||||
import org.cmh.backend.Utils.JwtVerify;
|
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.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.dao.DataIntegrityViolationException;
|
import org.springframework.dao.DataIntegrityViolationException;
|
||||||
import org.springframework.http.HttpStatus;
|
import org.springframework.http.HttpStatus;
|
||||||
@ -19,14 +22,26 @@ public class NewsController {
|
|||||||
@Autowired
|
@Autowired
|
||||||
private NewsService newsService;
|
private NewsService newsService;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private UserService userService;
|
||||||
|
|
||||||
@GetMapping
|
@GetMapping
|
||||||
@JwtVerify
|
@JwtVerify
|
||||||
public ResponseEntity<GetNewsListResponse> getNewsByRange(@RequestParam Integer start, @RequestParam Integer end, @RequestParam String token) {
|
public ResponseEntity<GetNewsListResponse> 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) {
|
if (start >= end) {
|
||||||
return new ResponseEntity<>(HttpStatus.BAD_REQUEST);
|
return new ResponseEntity<>(HttpStatus.BAD_REQUEST);
|
||||||
}
|
}
|
||||||
long newsCount = newsService.getNewsCount();
|
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}")
|
@GetMapping("/{id}")
|
||||||
|
|||||||
@ -31,6 +31,6 @@ public class News {
|
|||||||
|
|
||||||
@CreationTimestamp
|
@CreationTimestamp
|
||||||
private LocalDateTime createdAt;
|
private LocalDateTime createdAt;
|
||||||
|
// TODO:添加外键绑定
|
||||||
private String tenant;
|
private String tenant;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -7,4 +7,7 @@ import org.springframework.data.jpa.repository.JpaRepository;
|
|||||||
|
|
||||||
public interface NewsRepository extends JpaRepository<News, Long> {
|
public interface NewsRepository extends JpaRepository<News, Long> {
|
||||||
Page<News> findAllByOrderByIdDesc(Pageable pageable);
|
Page<News> findAllByOrderByIdDesc(Pageable pageable);
|
||||||
|
Page<News> findByTenantOrderByIdDesc(String tenant, Pageable pageable);
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -4,6 +4,7 @@ import jakarta.persistence.EntityNotFoundException;
|
|||||||
import org.cmh.backend.NewsManagement.dto.NewsRequest;
|
import org.cmh.backend.NewsManagement.dto.NewsRequest;
|
||||||
import org.cmh.backend.NewsManagement.model.News;
|
import org.cmh.backend.NewsManagement.model.News;
|
||||||
import org.cmh.backend.NewsManagement.repository.NewsRepository;
|
import org.cmh.backend.NewsManagement.repository.NewsRepository;
|
||||||
|
import org.cmh.backend.authentication.model.UserHS;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.data.domain.Page;
|
import org.springframework.data.domain.Page;
|
||||||
import org.springframework.data.domain.PageRequest;
|
import org.springframework.data.domain.PageRequest;
|
||||||
@ -18,7 +19,7 @@ public class NewsService {
|
|||||||
@Autowired
|
@Autowired
|
||||||
private NewsRepository newsRepository;
|
private NewsRepository newsRepository;
|
||||||
|
|
||||||
public List<News> getNewsByRange(int start, int end) {
|
public List<News> getNewsByRange(int start, int end, UserHS user) {
|
||||||
if (start < 0 || end <= start) {
|
if (start < 0 || end <= start) {
|
||||||
throw new IllegalArgumentException("Invalid start or end range");
|
throw new IllegalArgumentException("Invalid start or end range");
|
||||||
}
|
}
|
||||||
@ -31,7 +32,12 @@ public class NewsService {
|
|||||||
|
|
||||||
for (int pageNumber = startPageNumber; pageNumber <= endPageNumber; pageNumber++) {
|
for (int pageNumber = startPageNumber; pageNumber <= endPageNumber; pageNumber++) {
|
||||||
Pageable pageable = PageRequest.of(pageNumber, pageSize);
|
Pageable pageable = PageRequest.of(pageNumber, pageSize);
|
||||||
Page<News> newsPage = newsRepository.findAllByOrderByIdDesc(pageable);
|
Page<News> newsPage = null;
|
||||||
|
if (user.getSuperAdmin()) {
|
||||||
|
newsPage = newsRepository.findAllByOrderByIdDesc(pageable);
|
||||||
|
} else {
|
||||||
|
newsPage = newsRepository.findByTenantOrderByIdDesc(user.getUsername(), pageable);
|
||||||
|
}
|
||||||
|
|
||||||
if (newsPage.hasContent()) {
|
if (newsPage.hasContent()) {
|
||||||
result.addAll(newsPage.getContent());
|
result.addAll(newsPage.getContent());
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user