From 601f1b0491ceff37538afc4430e0ccbe72dce270 Mon Sep 17 00:00:00 2001
From: Helius <wangdoubleone@gmail.com>
Date: Mon, 11 Jul 2022 10:59:31 +0800
Subject: [PATCH] 修改已发布的栏目和文章的父级栏目、栏目编码,保存其修改前的对应数据

---
 src/main/java/com/xcong/farmer/cms/modules/system/entity/ArticleEntity.java            |    5 +++++
 src/main/java/com/xcong/farmer/cms/modules/system/service/Impl/ColumnServiceImpl.java  |   12 ++++++++++++
 src/main/java/com/xcong/farmer/cms/modules/system/service/Impl/ArticleServiceImpl.java |    7 +++++++
 src/main/java/com/xcong/farmer/cms/modules/system/entity/ColumnEntity.java             |   15 +++++++++++++++
 4 files changed, 39 insertions(+), 0 deletions(-)

diff --git a/src/main/java/com/xcong/farmer/cms/modules/system/entity/ArticleEntity.java b/src/main/java/com/xcong/farmer/cms/modules/system/entity/ArticleEntity.java
index 318d444..13098e4 100644
--- a/src/main/java/com/xcong/farmer/cms/modules/system/entity/ArticleEntity.java
+++ b/src/main/java/com/xcong/farmer/cms/modules/system/entity/ArticleEntity.java
@@ -85,6 +85,11 @@
     //内容类型 1:文章 2:图片 3:文件 4:音频"
     private Integer contentType;
 
+    /**
+     * 更新前栏目编码
+     */
+    private Long beforeColumnId;
+
     @TableField(exist = false)
     private String columnCode;
 
diff --git a/src/main/java/com/xcong/farmer/cms/modules/system/entity/ColumnEntity.java b/src/main/java/com/xcong/farmer/cms/modules/system/entity/ColumnEntity.java
index 90fa975..f8c87d3 100644
--- a/src/main/java/com/xcong/farmer/cms/modules/system/entity/ColumnEntity.java
+++ b/src/main/java/com/xcong/farmer/cms/modules/system/entity/ColumnEntity.java
@@ -60,4 +60,19 @@
 
     @TableField(exist = false)
     private List<Long> ids;
+
+    /**
+     * 更新前栏目ID
+     */
+    private Long beforeParentId;
+
+    /**
+     * 更新前栏目编码
+     */
+    private String beforeColumnCode;
+
+    /**
+     * 发布状态 1-已发布 2-未发布
+     */
+    private Integer releaseState;
 }
diff --git a/src/main/java/com/xcong/farmer/cms/modules/system/service/Impl/ArticleServiceImpl.java b/src/main/java/com/xcong/farmer/cms/modules/system/service/Impl/ArticleServiceImpl.java
index 331c66c..0c8ca14 100644
--- a/src/main/java/com/xcong/farmer/cms/modules/system/service/Impl/ArticleServiceImpl.java
+++ b/src/main/java/com/xcong/farmer/cms/modules/system/service/Impl/ArticleServiceImpl.java
@@ -181,7 +181,12 @@
         if(ObjectUtil.isEmpty(columnEntity)){
             return Result.fail("请选择文章栏目");
         }
+
+        if (articleEntity.getColumnId().equals(columnId) && articleEntity.getReleaseStatus() == 1) {
+            articleEntity.setBeforeColumnId(articleEntity.getColumnId());
+        }
         articleEntity.setColumnId(columnId);
+
         Integer visits = adminUpdateArticleDto.getVisits() == null ? 0 : adminUpdateArticleDto.getVisits();
         articleEntity.setVisits(visits);
         String mainDiagram = adminUpdateArticleDto.getMainDiagram();
@@ -202,6 +207,8 @@
         articleEntity.setArticleUrl(adminUpdateArticleDto.getArticleUrl());
         articleEntity.setType(adminUpdateArticleDto.getType());
         articleEntity.setContentType(adminUpdateArticleDto.getContentType());
+        articleEntity.setReleaseStatus(0);
+
         String authorBelong = adminUpdateArticleDto.getAuthorBelong();
         articleEntity.setAuthorBelong(authorBelong);
         this.baseMapper.updateById(articleEntity);
diff --git a/src/main/java/com/xcong/farmer/cms/modules/system/service/Impl/ColumnServiceImpl.java b/src/main/java/com/xcong/farmer/cms/modules/system/service/Impl/ColumnServiceImpl.java
index 8fbca01..287fe8c 100644
--- a/src/main/java/com/xcong/farmer/cms/modules/system/service/Impl/ColumnServiceImpl.java
+++ b/src/main/java/com/xcong/farmer/cms/modules/system/service/Impl/ColumnServiceImpl.java
@@ -209,7 +209,13 @@
         if(CollUtil.isNotEmpty(columnEntities) && columnEntities.size() > 1){
             return Result.fail("栏目编码不能重复");
         }
+
+        // 判断是否编辑了栏目编码且此时栏目处于已发布的状态,然后保存之前的编码。因为如果是未发布状态,多次保存的话,容易覆盖真正的最开始的栏目编码
+        if (!columnEntity.getColumnCode().equals(columnCode) && columnEntity.getReleaseState() == 1) {
+            columnEntity.setBeforeColumnCode(columnCode);
+        }
         columnEntity.setColumnCode(columnCode);
+
         String remark = adminUpdateColumnDto.getRemark();
             columnEntity.setRemark(remark);
         String pic = adminUpdateColumnDto.getPic();
@@ -219,6 +225,11 @@
             columnEntity.setOrderNum(orderNum);
         }
         Long parentId = adminUpdateColumnDto.getParentId();
+        // 同栏目编码
+        if (!columnEntity.getParentId().equals(parentId) && columnEntity.getReleaseState() == 1) {
+            columnEntity.setBeforeParentId(columnEntity.getParentId());
+        }
+
         if(ObjectUtil.isEmpty(parentId)){
             columnEntity.setParentId(ColumnEntity.PARENTID_DEFAULT);
             columnEntity.setPath("/" + columnEntity.getColumnCode());
@@ -235,6 +246,7 @@
         columnEntity.setTargetUrl(adminUpdateColumnDto.getTargetUrl());
         columnEntity.setIsNav(adminUpdateColumnDto.getIsNav());
         columnEntity.setContentType(adminUpdateColumnDto.getContentType());
+        columnEntity.setReleaseState(2);
         this.baseMapper.updateById(columnEntity);
         return Result.ok("更新成功");
     }

--
Gitblit v1.9.1