diff --git a/admin/src/main/java/com/jinrui/reference/admin/controller/NewsController.java b/admin/src/main/java/com/jinrui/reference/admin/controller/NewsController.java index 41a51ca..980e044 100644 --- a/admin/src/main/java/com/jinrui/reference/admin/controller/NewsController.java +++ b/admin/src/main/java/com/jinrui/reference/admin/controller/NewsController.java @@ -11,6 +11,7 @@ import com.jinrui.reference.core.service.NewsService; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.util.StringUtils; +import org.springframework.web.bind.annotation.DeleteMapping; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; @@ -34,6 +35,34 @@ public class NewsController { this.objectMapper = objectMapper; } + @DeleteMapping + public ResultObject deleteNews(@RequestHeader("auth-token") String token, + @RequestParam("id") Long id) { + if (!StringUtils.hasText(token)) { + return ResultObject.failed("登陆Token为空!"); + } + + try { + AdminUser adminUser = AdminJwtService.parseToken(token); + if (adminUser == null) { + log.warn("解析token {}拿不到AdminUser对象!", token); + return ResultObject.failed("登陆Token有误,请联系系统管理员!"); + } + + Long adminUserId = adminUser.getId(); + if (!adminUser.isActive()) { + log.warn("当前用户已被封禁! id = {}", adminUserId); + return ResultObject.failed("当前用户已被封禁!请联系系统管理员!"); + } + + log.info("path: /news, method: DELETE, request user id: {}, news id: {}", adminUserId, id); + return newsService.deleteNews(id); + } catch (Exception e) { + log.error("解析登陆Token出错!", e); + return ResultObject.failed(500, "服务端错误,请联系系统管理员!"); + } + } + @PostMapping("/create/publish") public ResultObject createPublish(@RequestHeader("auth-token") String token, @RequestBody SaveNewsDTO saveNewsDTO) { diff --git a/core/src/main/java/com/jinrui/reference/core/service/NewsService.java b/core/src/main/java/com/jinrui/reference/core/service/NewsService.java index a7e2cd9..a9129e8 100644 --- a/core/src/main/java/com/jinrui/reference/core/service/NewsService.java +++ b/core/src/main/java/com/jinrui/reference/core/service/NewsService.java @@ -130,14 +130,35 @@ public class NewsService { return saveNewDraft(saveNewsDTO, news); } - private void deleteNews(News news) { - Long newsId = news.getId(); + public ResultObject deleteNews(Long newsId) { + News news = newsMapper.getById(newsId); + Integer status = news.getStatus(); + if (status == 2) { + return ResultObject.failed("请先手动下架新闻然后进行删除!"); + } + Long draftId = news.getDraftId(); if (draftId != null) { - deleteDraft(draftId); + try { + deleteDraft(draftId); + } catch (Exception e) { + log.error("删除新闻草稿异常!", e); + return ResultObject.failed(500, "服务器错误,请联系系统管理员!"); + } } - deleteNewsColumnAndTag(newsId); - newsMapper.deleteNews(newsId); + try { + deleteNewsColumnAndTag(newsId); + } catch (Exception e) { + log.error("删除新闻栏目标签异常!", e); + return ResultObject.failed(500, "服务器错误,请联系系统管理员!"); + } + try { + newsMapper.deleteNews(newsId); + } catch (Exception e) { + log.error("删除新闻异常!", e); + return ResultObject.failed(500, "服务器错误,请联系系统管理员!"); + } + return ResultObject.success(); } private void deleteNewsColumnAndTag(Long newsId) {