完成管理后台新闻详情页保存功能
This commit is contained in:
parent
0d0ec8e4c9
commit
1e3f6c5d43
|
|
@ -1,7 +1,7 @@
|
||||||
package com.jinrui.reference.admin.controller;
|
package com.jinrui.reference.admin.controller;
|
||||||
|
|
||||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||||
import com.jinrui.reference.core.model.dto.news.SaveDraftDTO;
|
import com.jinrui.reference.core.model.dto.news.SaveNewsDTO;
|
||||||
import com.jinrui.reference.admin.model.entity.AdminUser;
|
import com.jinrui.reference.admin.model.entity.AdminUser;
|
||||||
import com.jinrui.reference.core.model.vo.ResultObject;
|
import com.jinrui.reference.core.model.vo.ResultObject;
|
||||||
import com.jinrui.reference.core.model.vo.news.NewsVO;
|
import com.jinrui.reference.core.model.vo.news.NewsVO;
|
||||||
|
|
@ -34,9 +34,39 @@ public class NewsController {
|
||||||
this.objectMapper = objectMapper;
|
this.objectMapper = objectMapper;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@PostMapping("/create/publish")
|
||||||
|
public ResultObject<Void> createPublish(@RequestHeader("auth-token") String token,
|
||||||
|
@RequestBody SaveNewsDTO saveNewsDTO) {
|
||||||
|
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/create/publish, method: POST, request user id: {}, param: {}",
|
||||||
|
adminUserId, objectMapper.writeValueAsString(saveNewsDTO));
|
||||||
|
|
||||||
|
return newsService.createPublish(adminUserId, saveNewsDTO);
|
||||||
|
} catch (Exception e) {
|
||||||
|
log.error("解析登陆Token出错!", e);
|
||||||
|
return ResultObject.failed(500, "服务端错误,请联系系统管理员!");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@PostMapping("/save")
|
@PostMapping("/save")
|
||||||
public ResultObject<Void> saveDraft(@RequestHeader("auth-token") String token,
|
public ResultObject<Void> saveDraft(@RequestHeader("auth-token") String token,
|
||||||
@RequestBody SaveDraftDTO saveDraftDTO) {
|
@RequestBody SaveNewsDTO saveNewsDTO) {
|
||||||
if (!StringUtils.hasText(token)) {
|
if (!StringUtils.hasText(token)) {
|
||||||
return ResultObject.failed("登陆Token为空!");
|
return ResultObject.failed("登陆Token为空!");
|
||||||
}
|
}
|
||||||
|
|
@ -54,13 +84,13 @@ public class NewsController {
|
||||||
}
|
}
|
||||||
|
|
||||||
log.info("path: /news/save, method: POST, request user id: {}, param: {}",
|
log.info("path: /news/save, method: POST, request user id: {}, param: {}",
|
||||||
adminUser.getId(), objectMapper.writeValueAsString(saveDraftDTO));
|
adminUser.getId(), objectMapper.writeValueAsString(saveNewsDTO));
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
log.error("解析登陆Token出错!", e);
|
log.error("解析登陆Token出错!", e);
|
||||||
return ResultObject.failed(500, "服务端错误,请联系系统管理员!");
|
return ResultObject.failed(500, "服务端错误,请联系系统管理员!");
|
||||||
}
|
}
|
||||||
|
|
||||||
return newsService.saveDraft(saveDraftDTO);
|
return newsService.saveDraft(saveNewsDTO);
|
||||||
}
|
}
|
||||||
|
|
||||||
@GetMapping
|
@GetMapping
|
||||||
|
|
|
||||||
|
|
@ -17,6 +17,9 @@ import java.util.Set;
|
||||||
|
|
||||||
public interface ColumnMapper {
|
public interface ColumnMapper {
|
||||||
|
|
||||||
|
@Delete("delete from news_column_rel where news_id = #{newsId}")
|
||||||
|
void deleteNews(@Param("newsId") Long newsId);
|
||||||
|
|
||||||
@Delete("delete from draft_column_rel where draft_id = #{draftId}")
|
@Delete("delete from draft_column_rel where draft_id = #{draftId}")
|
||||||
void deleteDraft(@Param("draftId") Long draftId);
|
void deleteDraft(@Param("draftId") Long draftId);
|
||||||
|
|
||||||
|
|
@ -32,6 +35,18 @@ public interface ColumnMapper {
|
||||||
")")
|
")")
|
||||||
void saveDraftColumnRel(@Param("draftId") Long draftId, @Param("columnId") Long columnId, @Param("type") Integer type);
|
void saveDraftColumnRel(@Param("draftId") Long draftId, @Param("columnId") Long columnId, @Param("type") Integer type);
|
||||||
|
|
||||||
|
@Insert("<script>" +
|
||||||
|
"insert into news_column_rel(news_id, column_id" +
|
||||||
|
"<if test=\"type != null\">" +
|
||||||
|
", type" +
|
||||||
|
"</if>" +
|
||||||
|
") values (#{newsId}, #{columnId}" +
|
||||||
|
"<if test=\"type != null\">" +
|
||||||
|
", #{type}" +
|
||||||
|
"</if>" +
|
||||||
|
")")
|
||||||
|
void saveNewsColumnRel(@Param("newsId") Long newsId, @Param("columnId") Long columnId, @Param("type") Integer type);
|
||||||
|
|
||||||
@Results({
|
@Results({
|
||||||
@Result(column = "id", property = "id", id = true),
|
@Result(column = "id", property = "id", id = true),
|
||||||
@Result(column = "parent_id", property = "parentId"),
|
@Result(column = "parent_id", property = "parentId"),
|
||||||
|
|
|
||||||
|
|
@ -12,6 +12,9 @@ import java.util.List;
|
||||||
|
|
||||||
public interface NewsMapper {
|
public interface NewsMapper {
|
||||||
|
|
||||||
|
@Delete("delete from news where id = #{newsId}")
|
||||||
|
void deleteNews(@Param("newsId") Long newsId);
|
||||||
|
|
||||||
@Delete("delete from news_draft where id = #{draftId}")
|
@Delete("delete from news_draft where id = #{draftId}")
|
||||||
void deleteDraft(@Param("draftId") Long draftId);
|
void deleteDraft(@Param("draftId") Long draftId);
|
||||||
|
|
||||||
|
|
@ -27,6 +30,19 @@ public interface NewsMapper {
|
||||||
"where id = #{id}")
|
"where id = #{id}")
|
||||||
void updateNews(News news);
|
void updateNews(News news);
|
||||||
|
|
||||||
|
@Update("update news " +
|
||||||
|
"set editor_id = #{editorId}," +
|
||||||
|
"draft_id = NULL, " +
|
||||||
|
"title = #{title}," +
|
||||||
|
"summary = #{summary}," +
|
||||||
|
"picture = #{picture}," +
|
||||||
|
"content = #{content}," +
|
||||||
|
"status = #{status}," +
|
||||||
|
"update_time = now()," +
|
||||||
|
"publish_time = now() " +
|
||||||
|
"where id = #{id}")
|
||||||
|
void publishNews(News news);
|
||||||
|
|
||||||
@Select("select id, draft_id as draftId, status from news where id = #{id}")
|
@Select("select id, draft_id as draftId, status from news where id = #{id}")
|
||||||
News getById(@Param("id") Long id);
|
News getById(@Param("id") Long id);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -14,12 +14,18 @@ import java.util.List;
|
||||||
|
|
||||||
public interface TagMapper {
|
public interface TagMapper {
|
||||||
|
|
||||||
|
@Delete("delete from news_tag_rel where news_id = #{newsId}")
|
||||||
|
void deleteNews(@Param("newsId") Long newsId);
|
||||||
|
|
||||||
@Delete("delete from draft_tag_rel where draft_id = #{draftId}")
|
@Delete("delete from draft_tag_rel where draft_id = #{draftId}")
|
||||||
void deleteDraft(@Param("draftId") Long draftId);
|
void deleteDraft(@Param("draftId") Long draftId);
|
||||||
|
|
||||||
@Insert("insert into draft_tag_rel(draft_id, tag_id) values (#{draftId}, #{tagId})")
|
@Insert("insert into draft_tag_rel(draft_id, tag_id) values (#{draftId}, #{tagId})")
|
||||||
void saveDraftTagRel(@Param("draftId") Long draftId, @Param("tagId") Long tagId);
|
void saveDraftTagRel(@Param("draftId") Long draftId, @Param("tagId") Long tagId);
|
||||||
|
|
||||||
|
@Insert("insert into news_tag_rel(news_id, tag_id) values (#{newsId}, #{tagId})")
|
||||||
|
void saveNewsTagRel(@Param("newsId") Long newsId, @Param("tagId") Long tagId);
|
||||||
|
|
||||||
@Results({
|
@Results({
|
||||||
@Result(column = "id", property = "id", id = true),
|
@Result(column = "id", property = "id", id = true),
|
||||||
@Result(column = "parent_id", property = "parentId"),
|
@Result(column = "parent_id", property = "parentId"),
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
package com.jinrui.reference.core.model.dto.news;
|
package com.jinrui.reference.core.model.dto.news;
|
||||||
|
|
||||||
@SuppressWarnings("unused")
|
@SuppressWarnings("unused")
|
||||||
public class SaveDraftDTO {
|
public class SaveNewsDTO {
|
||||||
|
|
||||||
private Long id;
|
private Long id;
|
||||||
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
package com.jinrui.reference.core.model.entity;
|
package com.jinrui.reference.core.model.entity;
|
||||||
|
|
||||||
import com.jinrui.reference.core.model.dto.news.SaveDraftDTO;
|
import com.jinrui.reference.core.model.dto.news.SaveNewsDTO;
|
||||||
|
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
|
|
||||||
|
|
@ -72,13 +72,13 @@ public class News {
|
||||||
|
|
||||||
public News() {}
|
public News() {}
|
||||||
|
|
||||||
public News(SaveDraftDTO saveDraftDTO) {
|
public News(SaveNewsDTO saveNewsDTO) {
|
||||||
this.id = saveDraftDTO.getId();
|
this.id = saveNewsDTO.getId();
|
||||||
this.title = saveDraftDTO.getTitle();
|
this.title = saveNewsDTO.getTitle();
|
||||||
this.summary = saveDraftDTO.getSummary();
|
this.summary = saveNewsDTO.getSummary();
|
||||||
this.picture = saveDraftDTO.getPicture();
|
this.picture = saveNewsDTO.getPicture();
|
||||||
this.type = 1;
|
this.type = 1;
|
||||||
this.content = saveDraftDTO.getContent();
|
this.content = saveNewsDTO.getContent();
|
||||||
this.status = 0;
|
this.status = 0;
|
||||||
this.createTime = new Date();
|
this.createTime = new Date();
|
||||||
this.updateTime = new Date();
|
this.updateTime = new Date();
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
package com.jinrui.reference.core.model.entity;
|
package com.jinrui.reference.core.model.entity;
|
||||||
|
|
||||||
import com.jinrui.reference.core.model.dto.news.SaveDraftDTO;
|
import com.jinrui.reference.core.model.dto.news.SaveNewsDTO;
|
||||||
|
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
|
|
||||||
|
|
@ -52,13 +52,13 @@ public class NewsDraft {
|
||||||
|
|
||||||
public NewsDraft() {}
|
public NewsDraft() {}
|
||||||
|
|
||||||
public NewsDraft(SaveDraftDTO saveDraftDTO) {
|
public NewsDraft(SaveNewsDTO saveNewsDTO) {
|
||||||
this.id = saveDraftDTO.getId();
|
this.id = saveNewsDTO.getId();
|
||||||
this.title = saveDraftDTO.getTitle();
|
this.title = saveNewsDTO.getTitle();
|
||||||
this.summary = saveDraftDTO.getSummary();
|
this.summary = saveNewsDTO.getSummary();
|
||||||
this.picture = saveDraftDTO.getPicture();
|
this.picture = saveNewsDTO.getPicture();
|
||||||
this.type = 1;
|
this.type = 1;
|
||||||
this.content = saveDraftDTO.getContent();
|
this.content = saveNewsDTO.getContent();
|
||||||
this.createTime = new Date();
|
this.createTime = new Date();
|
||||||
this.updateTime = new Date();
|
this.updateTime = new Date();
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -8,7 +8,7 @@ import com.jinrui.reference.core.mapper.TagMapper;
|
||||||
import com.jinrui.reference.core.model.dto.news.SaveDraftColumn;
|
import com.jinrui.reference.core.model.dto.news.SaveDraftColumn;
|
||||||
import com.jinrui.reference.core.model.dto.news.SaveDraftColumnItem;
|
import com.jinrui.reference.core.model.dto.news.SaveDraftColumnItem;
|
||||||
import com.jinrui.reference.core.model.dto.news.SaveDraftColumnVip;
|
import com.jinrui.reference.core.model.dto.news.SaveDraftColumnVip;
|
||||||
import com.jinrui.reference.core.model.dto.news.SaveDraftDTO;
|
import com.jinrui.reference.core.model.dto.news.SaveNewsDTO;
|
||||||
import com.jinrui.reference.core.model.dto.news.SaveDraftTag;
|
import com.jinrui.reference.core.model.dto.news.SaveDraftTag;
|
||||||
import com.jinrui.reference.core.model.entity.Column;
|
import com.jinrui.reference.core.model.entity.Column;
|
||||||
import com.jinrui.reference.core.model.entity.DraftColumnRel;
|
import com.jinrui.reference.core.model.entity.DraftColumnRel;
|
||||||
|
|
@ -51,22 +51,98 @@ public class NewsService {
|
||||||
this.tagMapper = tagMapper;
|
this.tagMapper = tagMapper;
|
||||||
}
|
}
|
||||||
|
|
||||||
public ResultObject<Void> saveDraft(SaveDraftDTO saveDraftDTO) {
|
public ResultObject<Void> createPublish(Long editorId, SaveNewsDTO saveNewsDTO) {
|
||||||
Long id = saveDraftDTO.getId();
|
Long id = saveNewsDTO.getId();
|
||||||
if (id == null) {
|
Long newsId = saveNewsDTO.getId();
|
||||||
return saveNewDraft(saveDraftDTO, null);
|
|
||||||
}
|
|
||||||
return updateDraft(saveDraftDTO);
|
|
||||||
}
|
|
||||||
|
|
||||||
private ResultObject<Void> updateDraft(SaveDraftDTO saveDraftDTO) {
|
|
||||||
Long id = saveDraftDTO.getId();
|
|
||||||
News news = newsMapper.getById(id);
|
News news = newsMapper.getById(id);
|
||||||
Long draftId = news.getDraftId();
|
Long draftId = news.getDraftId();
|
||||||
if (draftId != null) {
|
if (draftId != null) {
|
||||||
deleteDraft(draftId);
|
deleteDraft(draftId);
|
||||||
}
|
}
|
||||||
return saveNewDraft(saveDraftDTO, news);
|
news = new News(saveNewsDTO);
|
||||||
|
news.setStatus(2);
|
||||||
|
news.setEditorId(editorId);
|
||||||
|
newsMapper.publishNews(news);
|
||||||
|
deleteNewsColumnAndTag(newsId);
|
||||||
|
try {
|
||||||
|
SaveDraftTag saveDraftTag = saveNewsDTO.getTag();
|
||||||
|
if (saveDraftTag != null) {
|
||||||
|
Long source = saveDraftTag.getSource();
|
||||||
|
if (source != null) {
|
||||||
|
tagMapper.saveNewsTagRel(id, source);
|
||||||
|
}
|
||||||
|
Long field = saveDraftTag.getField();
|
||||||
|
if (field != null) {
|
||||||
|
tagMapper.saveNewsTagRel(id, field);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} catch (Exception e) {
|
||||||
|
log.error("保存发布新闻标签出错!", e);
|
||||||
|
return ResultObject.failed(500, "服务器错误,请联系系统管理员!");
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
SaveDraftColumn column = saveNewsDTO.getColumn();
|
||||||
|
if (column != null) {
|
||||||
|
SaveDraftColumnVip vip = column.getVip();
|
||||||
|
if (vip != null) {
|
||||||
|
id = vip.getId();
|
||||||
|
if (id != null) {
|
||||||
|
Integer type = vip.getType();
|
||||||
|
columnMapper.saveNewsColumnRel(newsId, id, type);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
SaveDraftColumnItem earlyKnow = column.getEarlyKnow();
|
||||||
|
if (earlyKnow != null) {
|
||||||
|
Boolean show = earlyKnow.getShow();
|
||||||
|
if (show != null && show) {
|
||||||
|
Integer type = earlyKnow.getType();
|
||||||
|
columnMapper.saveNewsColumnRel(newsId, 13L, type);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Boolean showEverything = column.getShowEverything();
|
||||||
|
if (showEverything != null && showEverything) {
|
||||||
|
columnMapper.saveNewsColumnRel(newsId, 14L, null);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} catch (Exception e) {
|
||||||
|
log.error("保存发布新闻栏目栏目出错!", e);
|
||||||
|
return ResultObject.failed(500, "服务器错误,请联系系统管理员!");
|
||||||
|
}
|
||||||
|
return ResultObject.success();
|
||||||
|
}
|
||||||
|
|
||||||
|
public ResultObject<Void> saveDraft(SaveNewsDTO saveNewsDTO) {
|
||||||
|
Long id = saveNewsDTO.getId();
|
||||||
|
if (id == null) {
|
||||||
|
return saveNewDraft(saveNewsDTO, null);
|
||||||
|
}
|
||||||
|
return updateDraft(saveNewsDTO);
|
||||||
|
}
|
||||||
|
|
||||||
|
private ResultObject<Void> updateDraft(SaveNewsDTO saveNewsDTO) {
|
||||||
|
Long id = saveNewsDTO.getId();
|
||||||
|
News news = newsMapper.getById(id);
|
||||||
|
Long draftId = news.getDraftId();
|
||||||
|
if (draftId != null) {
|
||||||
|
deleteDraft(draftId);
|
||||||
|
}
|
||||||
|
return saveNewDraft(saveNewsDTO, news);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void deleteNews(News news) {
|
||||||
|
Long newsId = news.getId();
|
||||||
|
Long draftId = news.getDraftId();
|
||||||
|
if (draftId != null) {
|
||||||
|
deleteDraft(draftId);
|
||||||
|
}
|
||||||
|
deleteNewsColumnAndTag(newsId);
|
||||||
|
newsMapper.deleteNews(newsId);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void deleteNewsColumnAndTag(Long newsId) {
|
||||||
|
columnMapper.deleteNews(newsId);
|
||||||
|
tagMapper.deleteNews(newsId);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void deleteDraft(Long draftId) {
|
private void deleteDraft(Long draftId) {
|
||||||
|
|
@ -75,8 +151,8 @@ public class NewsService {
|
||||||
tagMapper.deleteDraft(draftId);
|
tagMapper.deleteDraft(draftId);
|
||||||
}
|
}
|
||||||
|
|
||||||
private ResultObject<Void> saveNewDraft(SaveDraftDTO saveDraftDTO, News news) {
|
private ResultObject<Void> saveNewDraft(SaveNewsDTO saveNewsDTO, News news) {
|
||||||
NewsDraft newsDraft = new NewsDraft(saveDraftDTO);
|
NewsDraft newsDraft = new NewsDraft(saveNewsDTO);
|
||||||
try {
|
try {
|
||||||
newsMapper.saveDraft(newsDraft);
|
newsMapper.saveDraft(newsDraft);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
|
|
@ -86,7 +162,7 @@ public class NewsService {
|
||||||
|
|
||||||
Long draftId = newsMapper.getLastInsertId();
|
Long draftId = newsMapper.getLastInsertId();
|
||||||
if (news == null) {
|
if (news == null) {
|
||||||
news = new News(saveDraftDTO);
|
news = new News(saveNewsDTO);
|
||||||
news.setDraftId(draftId);
|
news.setDraftId(draftId);
|
||||||
try {
|
try {
|
||||||
newsMapper.saveNews(news);
|
newsMapper.saveNews(news);
|
||||||
|
|
@ -97,7 +173,7 @@ public class NewsService {
|
||||||
} else {
|
} else {
|
||||||
Integer status = news.getStatus();
|
Integer status = news.getStatus();
|
||||||
if (status < 2) {
|
if (status < 2) {
|
||||||
news = new News(saveDraftDTO);
|
news = new News(saveNewsDTO);
|
||||||
news.setStatus(status);
|
news.setStatus(status);
|
||||||
news.setDraftId(draftId);
|
news.setDraftId(draftId);
|
||||||
try {
|
try {
|
||||||
|
|
@ -118,7 +194,7 @@ public class NewsService {
|
||||||
}
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
SaveDraftTag saveDraftTag = saveDraftDTO.getTag();
|
SaveDraftTag saveDraftTag = saveNewsDTO.getTag();
|
||||||
if (saveDraftTag != null) {
|
if (saveDraftTag != null) {
|
||||||
Long source = saveDraftTag.getSource();
|
Long source = saveDraftTag.getSource();
|
||||||
if (source != null) {
|
if (source != null) {
|
||||||
|
|
@ -135,7 +211,7 @@ public class NewsService {
|
||||||
}
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
SaveDraftColumn column = saveDraftDTO.getColumn();
|
SaveDraftColumn column = saveNewsDTO.getColumn();
|
||||||
if (column != null) {
|
if (column != null) {
|
||||||
SaveDraftColumnVip vip = column.getVip();
|
SaveDraftColumnVip vip = column.getVip();
|
||||||
if (vip != null) {
|
if (vip != null) {
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue