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 30d0f45..aa48f13 100644 --- a/src/main/java/org/cmh/backend/NewsManagement/controller/NewsController.java +++ b/src/main/java/org/cmh/backend/NewsManagement/controller/NewsController.java @@ -1,17 +1,17 @@ package org.cmh.backend.NewsManagement.controller; import org.cmh.backend.NewsManagement.dto.GetNewsByPageRequest; +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.JwtVerify; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.dao.DataIntegrityViolationException; import org.springframework.data.domain.Page; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; -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; +import org.springframework.web.bind.annotation.*; @RestController @RequestMapping("/news") @@ -25,12 +25,19 @@ public class NewsController { return new ResponseEntity<>(newsService.getNewsByPage(request), HttpStatus.OK); } -// @PostMapping -// public ResponseEntity createNews(@RequestBody NewsRequest request) { -// // TODO: 实现创建资讯的逻辑 -// return new ResponseEntity<>("创建成功", HttpStatus.OK); -// } -// + @PostMapping + @JwtVerify + public ResponseEntity createNews(@RequestBody NewsRequest request) { + try { + newsService.createNews(request); + } catch (DataIntegrityViolationException e) { + return new ResponseEntity<>(new MessageResponse("创建失败,文章已存在或缺少字段"), HttpStatus.BAD_REQUEST); + } catch (Exception e) { + return new ResponseEntity<>(new MessageResponse("创建失败:" + e.getMessage()), HttpStatus.BAD_REQUEST); + } + return new ResponseEntity<>(new MessageResponse("创建成功"), HttpStatus.OK); + } + // @PutMapping("/{id}") // public ResponseEntity updateNews(@PathVariable Long id, @RequestBody NewsRequest request) { // // TODO: 实现修改资讯的逻辑 diff --git a/src/main/java/org/cmh/backend/NewsManagement/dto/MessageResponse.java b/src/main/java/org/cmh/backend/NewsManagement/dto/MessageResponse.java new file mode 100644 index 0000000..b777601 --- /dev/null +++ b/src/main/java/org/cmh/backend/NewsManagement/dto/MessageResponse.java @@ -0,0 +1,12 @@ +package org.cmh.backend.NewsManagement.dto; + +import lombok.AllArgsConstructor; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +@AllArgsConstructor +public class MessageResponse { + String message; +} diff --git a/src/main/java/org/cmh/backend/NewsManagement/dto/NewsRequest.java b/src/main/java/org/cmh/backend/NewsManagement/dto/NewsRequest.java new file mode 100644 index 0000000..3aa8228 --- /dev/null +++ b/src/main/java/org/cmh/backend/NewsManagement/dto/NewsRequest.java @@ -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 NewsRequest extends JwtRequest { + private String title; + private String summary; + private String content; + private String imagePath; + private String author; +} 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 3f42e2c..8606776 100644 --- a/src/main/java/org/cmh/backend/NewsManagement/service/NewsService.java +++ b/src/main/java/org/cmh/backend/NewsManagement/service/NewsService.java @@ -1,6 +1,7 @@ package org.cmh.backend.NewsManagement.service; import org.cmh.backend.NewsManagement.dto.GetNewsByPageRequest; +import org.cmh.backend.NewsManagement.dto.NewsRequest; import org.cmh.backend.NewsManagement.model.News; import org.cmh.backend.NewsManagement.repository.NewsRepository; import org.springframework.beans.factory.annotation.Autowired; @@ -26,4 +27,14 @@ public class NewsService { Pageable pageable = PageRequest.of(pageNo - 1, pageSize); return newsRepository.findAllByOrderByIdDesc(pageable); } + + public void createNews(NewsRequest request) { + News news = new News(); + news.setTitle(request.getTitle()); + news.setSummary(request.getSummary()); + news.setContent(request.getContent()); + news.setAuthor(request.getAuthor()); + news.setImagePath(request.getImagePath()); + newsRepository.save(news); + } }