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 404de4d..d82a5c6 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 @@ -1,6 +1,9 @@ package com.jinrui.reference.admin.controller; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.jinrui.reference.core.model.dto.news.SaveDraftDTO; import com.jinrui.reference.admin.model.entity.AdminUser; +import com.jinrui.reference.core.model.vo.ResultObject; import com.jinrui.reference.core.model.vo.news.NewsVO; import com.jinrui.reference.admin.service.AdminJwtService; import com.jinrui.reference.core.model.vo.PageObject; @@ -9,6 +12,8 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.util.StringUtils; import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestHeader; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; @@ -21,9 +26,41 @@ public class NewsController { private static final Logger log = LoggerFactory.getLogger(NewsController.class); private final NewsService newsService; + private final ObjectMapper objectMapper; - public NewsController(NewsService newsService) { + public NewsController(NewsService newsService, + ObjectMapper objectMapper) { this.newsService = newsService; + this.objectMapper = objectMapper; + } + + @PostMapping("/save") + public ResultObject saveDraft(@RequestHeader("auth-token") String token, + @RequestBody SaveDraftDTO saveDraftDTO) { + 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有误,请联系系统管理员!"); + } + + if (!adminUser.isActive()) { + log.warn("当前用户已被封禁! id = {}", adminUser.getId()); + return ResultObject.failed("当前用户已被封禁!请联系系统管理员!"); + } + + log.info("path: /news/save, method: POST, request user id: {}, param: {}", + adminUser.getId(), objectMapper.writeValueAsString(saveDraftDTO)); + } catch (Exception e) { + log.error("解析登陆Token出错!", e); + return ResultObject.failed(500, "服务端错误,请联系系统管理员!"); + } + + return newsService.saveDraft(saveDraftDTO); } @GetMapping diff --git a/core/src/main/java/com/jinrui/reference/core/mapper/ColumnMapper.java b/core/src/main/java/com/jinrui/reference/core/mapper/ColumnMapper.java index 2d8905b..423c162 100644 --- a/core/src/main/java/com/jinrui/reference/core/mapper/ColumnMapper.java +++ b/core/src/main/java/com/jinrui/reference/core/mapper/ColumnMapper.java @@ -3,6 +3,8 @@ package com.jinrui.reference.core.mapper; import com.jinrui.reference.core.model.entity.Column; import com.jinrui.reference.core.model.entity.DraftColumnRel; import com.jinrui.reference.core.model.entity.NewsColumnRel; +import org.apache.ibatis.annotations.Delete; +import org.apache.ibatis.annotations.Insert; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Result; import org.apache.ibatis.annotations.Results; @@ -15,6 +17,21 @@ import java.util.Set; public interface ColumnMapper { + @Delete("delete from draft_column_rel where draft_id = #{draftId}") + void deleteDraft(@Param("draftId") Long draftId); + + @Insert("