Просмотр исходного кода

新闻导航栏关联表增删改查,以及新增修改删除新闻时对关联表的操作

xusonglin 5 лет назад
Родитель
Сommit
416acbce61

+ 18 - 0
src/main/java/com/jkcredit/sysnews/mapper/NewsArticleNavigationBarMapper.java

@@ -0,0 +1,18 @@
+package com.jkcredit.sysnews.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.jkcredit.sysnews.model.po.newsArticleNavigationBar.NewsArticleNavigationBarPo;
+
+import java.util.List;
+
+/**
+ * @description:
+ * @author: xusonglin
+ * @create: 2020/3/11 8:31
+ * @version: V1.0
+ **/
+public interface NewsArticleNavigationBarMapper extends BaseMapper<NewsArticleNavigationBarPo> {
+    List<NewsArticleNavigationBarPo> getArticleNavigationBarByNewsId(Long id);
+
+    Long getArticleNavigationBarId(Long articleId, Long navigationBarId);
+}

+ 1 - 1
src/main/java/com/jkcredit/sysnews/model/dto/newsArticle/NewsArticleDto.java

@@ -25,7 +25,7 @@ public class NewsArticleDto implements Serializable {
 
     private Long photoId;
 
-    private Long navigationBarId;
+    private List<Long> navigationBarIds;
 
     private MultipartFile photo;
 

+ 23 - 0
src/main/java/com/jkcredit/sysnews/model/dto/newsArticleNavigationBar/NewsArticleNavigationBarDto.java

@@ -0,0 +1,23 @@
+package com.jkcredit.sysnews.model.dto.newsArticleNavigationBar;
+
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * @description:
+ * @author: xusonglin
+ * @create: 2020/3/11 8:42
+ * @version: V1.0
+ **/
+@Data
+public class NewsArticleNavigationBarDto implements Serializable {
+    private static final long serialVersionUID = 819393664856041710L;
+    private Long id;
+    private Long newsArticleId;
+    private Long navigationBarId;
+    private Integer activated;
+    private Date createTime;
+    private Date updateTime;
+}

+ 0 - 2
src/main/java/com/jkcredit/sysnews/model/po/newsArticle/NewsArticlePo.java

@@ -32,8 +32,6 @@ public class NewsArticlePo implements Serializable {
 
     private Long photoId;
 
-    private Long navigationBarId;
-
     private Integer activated;
 
     private Date createTime;

+ 30 - 0
src/main/java/com/jkcredit/sysnews/model/po/newsArticleNavigationBar/NewsArticleNavigationBarPo.java

@@ -0,0 +1,30 @@
+package com.jkcredit.sysnews.model.po.newsArticleNavigationBar;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+import lombok.ToString;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * @description:
+ * @author: xusonglin
+ * @create: 2020/3/11 8:28
+ * @version: V1.0
+ **/
+@Data
+@ToString
+@TableName("news_article_navigation_bar")
+public class NewsArticleNavigationBarPo implements Serializable {
+    private static final long serialVersionUID = -1198202110352586618L;
+    @TableId(type = IdType.AUTO)
+    private Long id;
+    private Long newsArticleId;
+    private Long navigationBarId;
+    private Integer activated;
+    private Date createTime;
+    private Date updateTime;
+}

+ 0 - 29
src/main/java/com/jkcredit/sysnews/resource/web/newsArticle/fb/NewsArticleAddFB.java

@@ -1,29 +0,0 @@
-package com.jkcredit.sysnews.resource.web.newsArticle.fb;
-
-import lombok.Data;
-import org.springframework.web.multipart.MultipartFile;
-
-import java.io.Serializable;
-
-/**
- * @description:
- * @author: xusonglin
- * @create: 2020/3/5 10:26
- * @version: V1.0
- **/
-@Data
-public class NewsArticleAddFB implements Serializable {
-    private static final long serialVersionUID = 595360654408025003L;
-
-    private Long id;
-
-    private String title;
-
-    private String newsAbstract;
-
-    private String content;
-
-    private MultipartFile photo;
-
-    private Long navigationBarId;
-}

+ 1 - 1
src/main/java/com/jkcredit/sysnews/resource/web/newsArticle/fb/NewsArticleFB.java

@@ -26,7 +26,7 @@ public class NewsArticleFB implements Serializable {
 
     private Long photoId;
 
-    private Long navigationBarId;
+    private List<Long> navigationBarIds;
 
     private MultipartFile photo;
 

+ 71 - 9
src/main/java/com/jkcredit/sysnews/service/newsArticle/NewsArticleServiceImpl.java

@@ -6,17 +6,21 @@ import com.jkcredit.sysnews.enums.PhotoStatusEnum;
 import com.jkcredit.sysnews.enums.PhotoTypeEnum;
 import com.jkcredit.sysnews.mapper.NewsArticleMapper;
 import com.jkcredit.sysnews.model.dto.newsArticle.NewsArticleDto;
+import com.jkcredit.sysnews.model.dto.newsArticleNavigationBar.NewsArticleNavigationBarDto;
 import com.jkcredit.sysnews.model.dto.photo.PhotoDto;
 import com.jkcredit.sysnews.model.po.newsArticle.NewsArticlePo;
+import com.jkcredit.sysnews.model.po.newsArticleNavigationBar.NewsArticleNavigationBarPo;
 import com.jkcredit.sysnews.model.po.photo.PhotoPo;
 import com.jkcredit.sysnews.model.vo.newsArticle.NewsArticleVo;
 import com.jkcredit.sysnews.model.vo.photo.PhotoVo;
 import com.jkcredit.sysnews.service.base.BaseService;
+import com.jkcredit.sysnews.service.newsArticleNavigationBar.NewsArticleNavigationBarService;
 import com.jkcredit.sysnews.service.photo.PhotoService;
 import com.jkcredit.sysnews.spi.lang.constant.CommonConstant;
 import com.jkcredit.sysnews.spi.lang.exception.ServiceException;
 import com.jkcredit.sysnews.util.AssertUtils;
 import com.jkcredit.sysnews.util.BeanUtil;
+import com.jkcredit.sysnews.util.CommonUtil;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang.StringUtils;
 import org.apache.commons.lang.enums.EnumUtils;
@@ -28,7 +32,10 @@ import org.springframework.transaction.annotation.Transactional;
 
 import javax.annotation.Resource;
 import java.io.File;
+import java.util.ArrayList;
 import java.util.Date;
+import java.util.HashSet;
+import java.util.List;
 
 /**
  * @description:
@@ -51,6 +58,8 @@ public class NewsArticleServiceImpl extends BaseService implements NewsArticleSe
     NewsArticleMapper mapper;
     @Autowired
     PhotoService photoService;
+    @Autowired
+    NewsArticleNavigationBarService newsArticleNavigationBarService;
 
     @Override
     public IPage<NewsArticleVo> getNewsArticles(Page page, NewsArticleDto newsArticleDto) {
@@ -91,16 +100,18 @@ public class NewsArticleServiceImpl extends BaseService implements NewsArticleSe
         photoDto.setStatus(PhotoStatusEnum.UPLOAD_SUCCESS_HAVE_USED.getValue());
 
         // 更新新闻content中的图片
-        try {
-            for (String url : newsArticleDto.getUrlList()) {
-                url = File.separator + url.replace(accessPath, "").replace(accessResource, "");
-                PhotoPo photoPo = photoService.getPhotoByUrl(url);
-                photoDto.setId(photoPo.getId());
-                photoService.editPhoto(photoDto);
+        if (newsArticleDto.getUrlList() != null) {
+            try {
+                for (String url : newsArticleDto.getUrlList()) {
+                    url = File.separator + url.replace(accessPath, "").replace(accessResource, "");
+                    PhotoPo photoPo = photoService.getPhotoByUrl(url);
+                    photoDto.setId(photoPo.getId());
+                    photoService.editPhoto(photoDto);
+                }
+            } catch (ServiceException e) {
+                log.error("新增新闻-更新图片失败,失败原因:{}", e.getMessage());
+                throw new ServiceException("新增新闻失败");
             }
-        } catch (ServiceException e) {
-            log.error("新增新闻-更新图片失败,失败原因:{}", e.getMessage());
-            throw new ServiceException("新增新闻失败");
         }
 
         // 保存新闻首图
@@ -125,6 +136,19 @@ public class NewsArticleServiceImpl extends BaseService implements NewsArticleSe
             log.error("新增新闻失败,失败原因:{}", e.getMessage());
             throw new ServiceException("新增新闻失败");
         }
+
+        // 保存导航栏
+        try {
+            for (Long navigationBarId : newsArticleDto.getNavigationBarIds()) {
+                NewsArticleNavigationBarDto dto = new NewsArticleNavigationBarDto();
+                dto.setNewsArticleId(newsArticlePo.getId());
+                dto.setNavigationBarId(navigationBarId);
+                newsArticleNavigationBarService.saveNewsArticleNavigationBar(dto);
+            }
+        } catch (ServiceException e) {
+            log.error("新增新闻-新增新闻导航关联表失败,失败原因:{}", e.getMessage());
+            throw new ServiceException("新增新闻失败");
+        }
     }
 
     @Override
@@ -167,6 +191,34 @@ public class NewsArticleServiceImpl extends BaseService implements NewsArticleSe
             log.error("编辑新闻失败,失败原因:{}", e.getMessage());
             throw new ServiceException("编辑新闻失败");
         }
+        // 更新导航栏
+        editNewsArticleNavigationBar(newsArticleDto);
+    }
+
+    private void editNewsArticleNavigationBar(NewsArticleDto newsArticleDto) {
+        List<NewsArticleNavigationBarDto> newsArticleNavigationBarDtoList = newsArticleNavigationBarService.getArticleNavigationBarByNewsId(newsArticleDto.getId());
+        // 现有1 2 3 4 更新后 2 3 4 5 删掉1 新增 5
+        List<Long> idFromDataBase = new ArrayList<>();
+        for (NewsArticleNavigationBarDto dto : newsArticleNavigationBarDtoList) {
+            idFromDataBase.add(dto.getNavigationBarId());
+        }
+        List<Long> deleleNavigationBarIdList = CommonUtil.getSubtraction(new HashSet<>(idFromDataBase), new HashSet<>(newsArticleDto.getNavigationBarIds()));
+        List<Long> addNavigationBarIdList = CommonUtil.getSubtraction(new HashSet<>(newsArticleDto.getNavigationBarIds()), new HashSet<>(idFromDataBase));
+        try {
+            for (Long navigationBarId : deleleNavigationBarIdList) {
+                Long id = newsArticleNavigationBarService.getArticleNavigationBarId(newsArticleDto.getId(), navigationBarId);
+                newsArticleNavigationBarService.deleteNewsArticleNavigationBar(id);
+            }
+            for (Long navigationBarId : addNavigationBarIdList) {
+                NewsArticleNavigationBarDto dto = new NewsArticleNavigationBarDto();
+                dto.setNavigationBarId(navigationBarId);
+                dto.setNewsArticleId(newsArticleDto.getId());
+                newsArticleNavigationBarService.saveNewsArticleNavigationBar(dto);
+            }
+        } catch (ServiceException e) {
+            log.error("编辑新闻失败-编辑新闻导航栏关联表失败,失败原因:{}", e.getMessage());
+            throw new ServiceException("编辑新闻失败");
+        }
     }
 
     @Override
@@ -182,5 +234,15 @@ public class NewsArticleServiceImpl extends BaseService implements NewsArticleSe
             log.error("删除新闻失败,失败原因:{}", e.getMessage());
             throw new ServiceException("删除新闻失败");
         }
+
+        try {
+            List<NewsArticleNavigationBarDto> newsArticleNavigationBarDtoList = newsArticleNavigationBarService.getArticleNavigationBarByNewsId(id);
+            for (NewsArticleNavigationBarDto dto : newsArticleNavigationBarDtoList) {
+                newsArticleNavigationBarService.deleteNewsArticleNavigationBar(dto.getId());
+            }
+        } catch (ServiceException e) {
+            log.error("删除新闻导航栏关联表数据失败,失败原因:{}", e.getMessage());
+            throw new ServiceException("删除新闻失败");
+        }
     }
 }

+ 21 - 0
src/main/java/com/jkcredit/sysnews/service/newsArticleNavigationBar/NewsArticleNavigationBarService.java

@@ -0,0 +1,21 @@
+package com.jkcredit.sysnews.service.newsArticleNavigationBar;
+
+import com.jkcredit.sysnews.model.dto.newsArticleNavigationBar.NewsArticleNavigationBarDto;
+
+import java.util.List;
+
+/**
+ * @description:
+ * @author: xusonglin
+ * @create: 2020/3/11 8:38
+ * @version: V1.0
+ **/
+public interface NewsArticleNavigationBarService {
+    List<NewsArticleNavigationBarDto> getArticleNavigationBarByNewsId(Long id);
+
+    void saveNewsArticleNavigationBar(NewsArticleNavigationBarDto dto);
+
+    void deleteNewsArticleNavigationBar(Long id);
+
+    Long getArticleNavigationBarId(Long articleId, Long navigationBarId);
+}

+ 76 - 0
src/main/java/com/jkcredit/sysnews/service/newsArticleNavigationBar/NewsArticleNavigationBarServiceImpl.java

@@ -0,0 +1,76 @@
+package com.jkcredit.sysnews.service.newsArticleNavigationBar;
+
+import com.jkcredit.sysnews.mapper.NewsArticleNavigationBarMapper;
+import com.jkcredit.sysnews.model.dto.newsArticleNavigationBar.NewsArticleNavigationBarDto;
+import com.jkcredit.sysnews.model.po.newsArticleNavigationBar.NewsArticleNavigationBarPo;
+import com.jkcredit.sysnews.service.base.BaseService;
+import com.jkcredit.sysnews.spi.lang.constant.CommonConstant;
+import com.jkcredit.sysnews.spi.lang.exception.ServiceException;
+import com.jkcredit.sysnews.util.AssertUtils;
+import com.jkcredit.sysnews.util.BeanUtil;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * @description:
+ * @author: xusonglin
+ * @create: 2020/3/11 8:38
+ * @version: V1.0
+ **/
+@Slf4j
+@Service
+public class NewsArticleNavigationBarServiceImpl extends BaseService implements NewsArticleNavigationBarService {
+    @Resource
+    NewsArticleNavigationBarMapper mapper;
+
+    @Override
+    public List<NewsArticleNavigationBarDto> getArticleNavigationBarByNewsId(Long id) {
+        List<NewsArticleNavigationBarPo> poList = mapper.getArticleNavigationBarByNewsId(id);
+        List<NewsArticleNavigationBarDto> dtoList = new ArrayList<>();
+        for (NewsArticleNavigationBarPo po : poList) {
+            NewsArticleNavigationBarDto dto = new NewsArticleNavigationBarDto();
+            BeanUtil.copyProperties(dto, po);
+            dtoList.add(dto);
+        }
+        return dtoList;
+    }
+
+    @Override
+    public void saveNewsArticleNavigationBar(NewsArticleNavigationBarDto dto) {
+        NewsArticleNavigationBarPo po = new NewsArticleNavigationBarPo();
+        BeanUtil.copyProperties(po, dto);
+        po.setCreateTime(new Date());
+
+        try {
+            mapper.insert(po);
+        } catch (Exception e) {
+            log.error("新增导航新闻管理表失败,失败原因{}", e.getMessage());
+            throw new ServiceException("新增导航新闻管理表失败");
+        }
+    }
+
+    @Override
+    public void deleteNewsArticleNavigationBar(Long id) {
+        NewsArticleNavigationBarPo newsArticleNavigationBarPo = mapper.selectById(id);
+        newsArticleNavigationBarPo.setUpdateTime(new Date());
+        newsArticleNavigationBarPo.setActivated(CommonConstant.ACTIVATED_DELETED);
+        try {
+            mapper.updateById(newsArticleNavigationBarPo);
+        } catch (Exception e) {
+            log.error("删除导航新闻管理表失败,失败原因{}", e.getMessage());
+            throw new ServiceException("删除导航新闻管理表失败");
+        }
+    }
+
+    @Override
+    public Long getArticleNavigationBarId(Long articleId, Long navigationBarId) {
+        AssertUtils.assertNotNull(articleId, "新闻id不能为空");
+        AssertUtils.assertNotNull(navigationBarId, "导航栏id不能为空");
+        return mapper.getArticleNavigationBarId(articleId, navigationBarId);
+    }
+}

+ 25 - 0
src/main/java/com/jkcredit/sysnews/util/CommonUtil.java

@@ -0,0 +1,25 @@
+package com.jkcredit.sysnews.util;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Set;
+
+/**
+ * @description:
+ * @author: xusonglin
+ * @create: 2020/3/11 10:04
+ * @version: V1.0
+ **/
+public class CommonUtil {
+    // 获取差集
+    public static List<Long> getSubtraction(Set<Long> primary, Set<Long> secondary) {
+        primary.removeAll(secondary);
+        return new ArrayList<>(primary);
+    }
+
+    // 获取交集
+    public static List<Long> getIntersection(Set<Long> primary, Set<Long> secondary) {
+        primary.retainAll(secondary);
+        return new ArrayList<>(primary);
+    }
+}

+ 0 - 2
src/main/resources/mapper/NewsArticleMapper.xml

@@ -10,7 +10,6 @@
         <result column="create_time" property="createTime"/>
         <result column="update_time" property="updateTime"/>
         <result column="activated" property="activated"/>
-        <result column="navigation_bar_id" property="navigationBarId"/>
         <result column="photoUrl" property="photoUrl"/>
     </resultMap>
 
@@ -19,7 +18,6 @@
         title,
         news_abstract,
         photo_id,
-        navigation_bar_id,
         create_time,
         update_time,
         activated

+ 42 - 0
src/main/resources/mapper/NewsArticleNavigationBarMapper.xml

@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.jkcredit.sysnews.mapper.NewsArticleNavigationBarMapper">
+    <resultMap id="baseResultMap" type="com.jkcredit.sysnews.model.po.newsArticleNavigationBar.NewsArticleNavigationBarPo">
+        <id column="id" property="id"/>
+        <result column="news_article_id" property="newsArticleId"/>
+        <result column="navigation_bar_id" property="navigationBarId"/>
+        <result column="create_time" property="createTime"/>
+        <result column="update_time" property="updateTime"/>
+        <result column="activated" property="activated"/>
+    </resultMap>
+
+    <sql id="newsArticleNavigationBar">
+        id,
+        news_article_id,
+        navigation_bar_id,
+        create_time,
+        update_time,
+        activated
+    </sql>
+
+    <select id="getArticleNavigationBarByNewsId" resultMap="baseResultMap">
+        select
+            <include refid="newsArticleNavigationBar"/>
+        from
+            news_article_navigation_bar as newsArticleNavigationBar
+        where
+            newsArticleNavigationBar.activated = 1
+            and newsArticleNavigationBar.news_article_id = #{id}
+    </select>
+
+    <select id="getArticleNavigationBarId" resultType="java.lang.Long">
+        select
+            id
+        from
+            news_article_navigation_bar as newsArticleNavigationBar
+        where
+            newsArticleNavigationBar.activated = 1
+            and newsArticleNavigationBar.news_article_id = #{articleId}
+            and newsArticleNavigationBar.navigation_bar_id = #{navigationBarId}
+    </select>
+</mapper>