forked from RyanGoodwill/backend
能搜了,就是有点问题,范围太广,啥都搜到了
This commit is contained in:
parent
f104c89d08
commit
9e03bb3873
@ -4,6 +4,7 @@ import jakarta.persistence.EntityNotFoundException;
|
|||||||
import org.cmh.backend.NewsManagement.dto.GetNewsListResponse;
|
import org.cmh.backend.NewsManagement.dto.GetNewsListResponse;
|
||||||
import org.cmh.backend.NewsManagement.dto.MessageResponse;
|
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.dto.SearchNewsRequest;
|
||||||
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.JwtUtil;
|
||||||
@ -16,6 +17,8 @@ import org.springframework.http.HttpStatus;
|
|||||||
import org.springframework.http.ResponseEntity;
|
import org.springframework.http.ResponseEntity;
|
||||||
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
@RestController
|
@RestController
|
||||||
@RequestMapping("/news")
|
@RequestMapping("/news")
|
||||||
public class NewsController {
|
public class NewsController {
|
||||||
@ -44,6 +47,14 @@ public class NewsController {
|
|||||||
return new ResponseEntity<>(new GetNewsListResponse(newsCount, newsService.getNewsByRange(start, end, user)), HttpStatus.OK);
|
return new ResponseEntity<>(new GetNewsListResponse(newsCount, newsService.getNewsByRange(start, end, user)), HttpStatus.OK);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@PostMapping("/search")
|
||||||
|
@JwtVerify
|
||||||
|
public ResponseEntity<GetNewsListResponse> searchNews(@RequestBody SearchNewsRequest request) {
|
||||||
|
List<News> newsList = newsService.searchNews(request);
|
||||||
|
long newsCount = newsList.size();
|
||||||
|
return new ResponseEntity<>(new GetNewsListResponse(newsCount, newsList), HttpStatus.OK);
|
||||||
|
}
|
||||||
|
|
||||||
@GetMapping("/{id}")
|
@GetMapping("/{id}")
|
||||||
@JwtVerify
|
@JwtVerify
|
||||||
public ResponseEntity<News> getNewsPage(@PathVariable Long id, @RequestParam String token) {
|
public ResponseEntity<News> getNewsPage(@PathVariable Long id, @RequestParam String token) {
|
||||||
|
|||||||
@ -0,0 +1,15 @@
|
|||||||
|
package org.cmh.backend.NewsManagement.dto;
|
||||||
|
|
||||||
|
import lombok.Getter;
|
||||||
|
import lombok.Setter;
|
||||||
|
import org.cmh.backend.Utils.JwtRequest;
|
||||||
|
|
||||||
|
@Getter
|
||||||
|
@Setter
|
||||||
|
public class SearchNewsRequest extends JwtRequest {
|
||||||
|
private String author;
|
||||||
|
private String title;
|
||||||
|
private String imagePath;
|
||||||
|
private String summary;
|
||||||
|
private String sortBy;
|
||||||
|
}
|
||||||
@ -5,9 +5,19 @@ import org.springframework.data.domain.Page;
|
|||||||
import org.springframework.data.domain.Pageable;
|
import org.springframework.data.domain.Pageable;
|
||||||
import org.springframework.data.jpa.repository.JpaRepository;
|
import org.springframework.data.jpa.repository.JpaRepository;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
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);
|
Page<News> findByTenantOrderByIdDesc(String tenant, Pageable pageable);
|
||||||
|
|
||||||
|
List<News> findByTitleContainingOrSummaryContainingOrAuthorContainingOrImagePathContainingAndTenantEquals(
|
||||||
|
String title,
|
||||||
|
String summary,
|
||||||
|
String author,
|
||||||
|
String imagePath,
|
||||||
|
String tenant);
|
||||||
|
|
||||||
|
List<News> findByTitleContainingOrSummaryContainingOrAuthorContainingOrImagePathContaining(String title, String summary, String author, String imagePath);
|
||||||
}
|
}
|
||||||
@ -2,9 +2,12 @@ package org.cmh.backend.NewsManagement.service;
|
|||||||
|
|
||||||
import jakarta.persistence.EntityNotFoundException;
|
import jakarta.persistence.EntityNotFoundException;
|
||||||
import org.cmh.backend.NewsManagement.dto.NewsRequest;
|
import org.cmh.backend.NewsManagement.dto.NewsRequest;
|
||||||
|
import org.cmh.backend.NewsManagement.dto.SearchNewsRequest;
|
||||||
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.Utils.JwtUtil;
|
||||||
import org.cmh.backend.authentication.model.UserHS;
|
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.data.domain.Page;
|
import org.springframework.data.domain.Page;
|
||||||
import org.springframework.data.domain.PageRequest;
|
import org.springframework.data.domain.PageRequest;
|
||||||
@ -19,6 +22,9 @@ public class NewsService {
|
|||||||
@Autowired
|
@Autowired
|
||||||
private NewsRepository newsRepository;
|
private NewsRepository newsRepository;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private UserService userService;
|
||||||
|
|
||||||
public List<News> getNewsByRange(int start, int end, UserHS user) {
|
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");
|
||||||
@ -98,4 +104,24 @@ public class NewsService {
|
|||||||
public long getNewsCount() {
|
public long getNewsCount() {
|
||||||
return newsRepository.count();
|
return newsRepository.count();
|
||||||
}
|
}
|
||||||
|
// TODO:完善用户权限
|
||||||
|
public List<News> searchNews(SearchNewsRequest request) {
|
||||||
|
String username = JwtUtil.extractUsername(request.getToken());
|
||||||
|
UserHS user = userService.getUserByUsername(username);
|
||||||
|
if (user.getSuperAdmin()) {
|
||||||
|
return newsRepository.findByTitleContainingOrSummaryContainingOrAuthorContainingOrImagePathContaining(
|
||||||
|
request.getTitle(),
|
||||||
|
request.getSummary(),
|
||||||
|
request.getAuthor(),
|
||||||
|
request.getImagePath()
|
||||||
|
);
|
||||||
|
}
|
||||||
|
return newsRepository.findByTitleContainingOrSummaryContainingOrAuthorContainingOrImagePathContainingAndTenantEquals(
|
||||||
|
request.getTitle(),
|
||||||
|
request.getSummary(),
|
||||||
|
request.getAuthor(),
|
||||||
|
request.getImagePath(),
|
||||||
|
user.getUsername()
|
||||||
|
);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user